Compare commits

...

198 Commits

Author SHA1 Message Date
Thomas Bruederli 1a7b603875 Bump version to 1.2.10 4 years ago
Aleksander Machniak cceeff2472 Fix CSRF bypass that could be used to log out an authenticated user (#7302) 4 years ago
Aleksander Machniak 33faaed63a Fix local file inclusion (and code execution) via crafted 'plugins' option 4 years ago
Aleksander Machniak 4694620a1e Fix remote code execution via crafted 'im_convert_path' or 'im_identify_path' settings 4 years ago
Aleksander Machniak 4312dc4efe Fix XSS issue in handling of CDATA in HTML messages 4 years ago
Aleksander Machniak d3f2759a6b Fix missing message-htmlpart1 class breaking inline CSS (#6493) 6 years ago
Thomas Bruederli 36043cb7bc Bump version to 1.2.9 and copyright to 2018 6 years ago
Aleksander Machniak 8d6d4a5de5 Fix regression where IMAP commands with '*' uidset argument wasn't working 6 years ago
Thomas Bruederli 7901047474 Check for non-empty uid post parameters
improve fix from commit 5b7e9a2c9
6 years ago
Thomas Bruederli c69b851b8a Fix regression in compressMessageSet() 6 years ago
Thomas Bruederli 9f91018a16 Bump version to 1.2.8 6 years ago
Thomas Bruederli 5b7e9a2c96 Fix check_request() bypass in places using get_uids() (#6238)
[CVE-2018-9846]
6 years ago
Thomas Bruederli cdeb6234a2 Fix possible IMAP command injection vulnerability (#6229)
[CVE-2018-9846]
6 years ago
Aleksander Machniak 8e7c2f61a3 Fix bug in remote content blocking on HTML image and style tags (#6178) 6 years ago
Thomas Bruederli 987856eee2 Bump version + add CVE ID 7 years ago
Aleksander Machniak c68f81e01d Update changelog 7 years ago
Aleksander Machniak 9be2224c77 Fix file disclosure vulnerability caused by insuficient input validation in relation with attachment plugins (#6026) 7 years ago
Aleksander Machniak cb3f44b1b9 Move "cursor" position on \r\n sequence after single-dot in a line (#5838) 7 years ago
Aleksander Machniak 24edb8de3e Fix parsing dot-staffed lines in multiline text (#5838) 7 years ago
Aleksander Machniak 1fd9ad242e Fix (again) bug where image data URIs in css style were treated as evil/remote in mail preview (#5580) 7 years ago
Aleksander Machniak ead587ad59 Fix bug where HTML messages could have been rendered empty on some systems (#5957)
Consistently use $nodeName instead of $tagName property.
7 years ago
Aleksander Machniak b786599fb0 Update changelog 7 years ago
Aleksander Machniak 5f0f579766 Ignore rewind() warnings (#5950) 7 years ago
Thomas Bruederli 3644b02d0b Bump version to 1.2.6 7 years ago
Aleksander Machniak d265b5756f Bring back rcmail_html_container_id global 7 years ago
Thomas Bruederli 5fd704ac9e Update Changelog 7 years ago
Thomas Bruederli 54a3712ada Modify links in html messages during Washtml DOM traversal
This is a more safe approach than using regex and mitigates
possible vulnerabilities using malformed html markup.
7 years ago
Thomas Bruederli fb43d2e608 Escape textarea contents in Washtml 7 years ago
Aleksander Machniak f9151f6830 Managesieve: Fix AM/PM suffix in vacation time selectors 7 years ago
Aleksander Machniak 822afb7afd Update changelog 7 years ago
Aleksander Machniak 507a1e9935 Don't ignore (global) userlogins/sendmail logs in per_user_logging mode 7 years ago
Aleksander Machniak 183f68f387 Fix uninitialized string offset in rcube_utils::bin2ascii() and make sure rcube_utils::random_bytes() result has always requested length (#5788) 7 years ago
Aleksander Machniak 3d498cd632 Fix bug where it wasn't possible to set timezone to auto-detected value (#5782) 7 years ago
Aleksander Machniak 913ffcfbbe Fix SQL syntax error on MariaDB 10.2 (#5774) 7 years ago
Aleksander Machniak 793bf96747 Enigma: Fix compatibility with assets_dir 7 years ago
Aleksander Machniak 58d7cdc3fc Fix addressbook searching by gender (#5757) 7 years ago
Aleksander Machniak 1b8d766447 Fix bug where it wasn't possible to scroll folders list in Edge (#5750) 7 years ago
Aleksander Machniak 9bfacb4d3c Fix bug where comment notation within style tag would cause the whole style to be ignored (#5747) 7 years ago
Thomas Bruederli e62a7d0dfa Bump version to 1.2.5 7 years ago
Aleksander Machniak fc557cacfa Add CVE ident 7 years ago
Aleksander Machniak 6e054a37d1 Password: Fix security issue in virtualmin and sasl drivers 7 years ago
Aleksander Machniak 22b34fc44b Fix bug where base_dn setting was ignored inside group_filters (#5720) 7 years ago
Thomas Bruederli 00874b7fbd Add CVE identifier to recent XSS fix 7 years ago
Aleksander Machniak cc3b79bf66 Fix re-positioning of the fixed header of messages list in Chrome when using minimal mode toggle and About dialog (#5711) 7 years ago
Aleksander Machniak b213ee9aa0 Merge branch 'release-1.2' of github.com:roundcube/roundcubemail into release-1.2 7 years ago
Aleksander Machniak 2f6ca6d672 Fix bug where namespace prefix could not be truncated on folders list if show_real_foldernames=true (#5695) 7 years ago
Aleksander Machniak 0fffea28c1 Fix regression in LDAP fuzzy search where it always used prefix search instead (#5713) 7 years ago
Aleksander Machniak 6a178b3a7f Remove redundant spaces from generated contact names 7 years ago
Aleksander Machniak d5be34ad17 Update changelog 7 years ago
Aleksander Machniak fa62496107 Fix so settings/upload.inc could not be used by plugins (#5694) 7 years ago
Thomas Bruederli cbd35626f7 Better fix for XSS in style tags (fa2824fdc) 7 years ago
Aleksander Machniak fa2824fdcd Fix XSS issue in handling of a style tag inside of an svg element 7 years ago
Aleksander Machniak 33586e4c87 Fix possible defect in handling \r\n in scripts (#5685) 7 years ago
Thomas Bruederli 85a750a068 Bump version to 1.2.4 7 years ago
Aleksander Machniak 04ed3846d3 Managesieve: Fix parser issue with empty lines between comments (#5657) 7 years ago
Aleksander Machniak 801f296872 Fix bug where it was too easy accidentally move a folder when using the subscription checkbox (#5655) 7 years ago
Aleksander Machniak e3484f9225 Add rewrite rule to disable access to /vendor/bin folder in .htaccess (#5630) 7 years ago
Aleksander Machniak b1a5b76445 Fix update of group name in the contacts list header on group rename (#5648) 7 years ago
Aleksander Machniak 528084ff37 Add note about PinEntry issues with SELinux (#5620) 7 years ago
Aleksander Machniak 49d24e973d Enigma: Fix handling of messages with nested PGP encrypted parts (#5634) 7 years ago
Aleksander Machniak 4bc337c460 Enigma: Fix missing require statement for Crypt_GPG_KeyGenerator (#5641) 7 years ago
Aleksander Machniak 4475037023 Rename $sql_arr variable to $record as it's not about sql only 7 years ago
Aleksander Machniak f51a101891 Fix regression where groups with email address were resolved to its members' addresses 7 years ago
Aleksander Machniak 3608e0c666 Fix visual glitch when using disabled_actions for items in Settings menu 7 years ago
Aleksander Machniak a336026142 Fix bug where signature couldn't be added above the quote in Firefox 51 (#5628) 7 years ago
Aleksander Machniak 9e75845193 Fix bug where some classic skin images were not displayed in IE/Edge (#5614)
Converted from png to gif according to file extension.
7 years ago
Aleksander Machniak 04025fb297 Fix bug where mail content frame couldn't be reset in some corner cases (#5608)
Conflicts:
	CHANGELOG
7 years ago
Aleksander Machniak 82b826faef Fix PHP error on update of a contact with multiple email addresses when using PHP 7.1 (#5587) 7 years ago
Aleksander Machniak 1568bd9e04 Fix bug where external content in src attribute of input/video tags was not secured (#5583) 7 years ago
Aleksander Machniak f90f22ffb8 Fix bug where image data URIs in css style were treated as evil/remote in mail preview (#5580) 7 years ago
Aleksander Machniak 58e63a6e70 Fix so group/addressbook selection is retained on page refresh 7 years ago
Aleksander Machniak c9b394bcad Fix some advanced search issues with multiple addressbooks (#5572) 7 years ago
Aleksander Machniak 088b0c6e85 Fix rsync error handling in installto.sh script (#5562) 8 years ago
Aleksander Machniak e0d7367f1f Fix adding images to new identity signatures
It already worked only on edits, because the image data for new identity
was stored in the wrong session item.
8 years ago
Aleksander Machniak 94feab652c Disable Print button for pdf attachments in Firefox (#5125)
Mozilla's PDF.js viewer does not allow printing from host page.
We try to detect such situation and disable the button to minimize
user confusion.
8 years ago
Aleksander Machniak d4f5804e40 Enigma: Add some notes to Known issues section (#5561) 8 years ago
Aleksander Machniak 69189ed21a Enigma: Fix PHP fatal error when decrypting a message with invalid signature (#5555) 8 years ago
Aleksander Machniak 79613c1e4f Fix variable substitution in ldap host for some use-cases, e.g. new_user_identity (#5544) 8 years ago
Aleksander Machniak bc826be106 Fix handling of scripts with nested rules (#5540) 8 years ago
Thomas Bruederli f04fc506b0 Bump version to 1.2.3 8 years ago
Aleksander Machniak e8fc8888a6 Remove leftower code from last few backports 8 years ago
Aleksander Machniak 31df33d4e0 Fix regression where LDAP results could be counted incorrectly when using VLV
... broken by d08bd0a51f where we added searching in users+groups in one request
8 years ago
dsoares 53ede465e3 Avoid PHP fatal error
After last change to file `rcube_ldap.php`, my roundcube instance was getting this error:
```
PHP Fatal error:  Cannot use object of type Net_LDAP3_Result as array in ...
```
In
```php
protected function extended_search($count = false)
```
`$result = $this->ldap->search()` returns a LDAP object (whatever package we use).
If the search returns no results (and if `$is_extended_search` is false), then it gets to line 971 trying to do a `usort()` and then a `count()` on an object, instead of an array.
8 years ago
Aleksander Machniak 6ccfcab17a Searching in both contacts and groups when LDAP addressbook with group_filters option is used
Conflicts:

	CHANGELOG
	program/steps/addressbook/search.inc
8 years ago
Aleksander Machniak 86b329b1fa Update localization 8 years ago
Aleksander Machniak f84233785d Fix vulnerability in handling of mail()'s 5th argument 8 years ago
Aleksander Machniak 6fa88c9814 Fix _from argument validation 8 years ago
Aleksander Machniak 2441456597 Fix displaying attached images with wrong Content-Type specified (#5527) 8 years ago
Aleksander Machniak 5162b20986 Fix missing content check when image resize fails on attachment thumbnail generation (#5485) 8 years ago
Aleksander Machniak 5dfacede3f Make sure $prefs property is an array (#5523) 8 years ago
Aleksander Machniak 7f04df9ec0 Fix storing "empty" values in rcube_cache/rcube_cache_shared (#5519) 8 years ago
Aleksander Machniak c633e605dd Support contact+group searches in all relevant places (T1360)
Before the search worked only in Addressbook, not also in Compose.
The point of the change is also to align group searches with contact searches
in that it now uses the same set of attributes. Previously groups
in Compose were searched by name only.
8 years ago
Aleksander Machniak 115d575421 Add convenient method to create new session records 8 years ago
Aleksander Machniak 7983a7d63f Fix "Illegal string offset" warning in rcube::log_bug() on PHP 7.1 (#5508) 8 years ago
Aleksander Machniak 455167b5f5 Fix recognizing Sent folder on search if current folder has been changed by plugins in meantime 8 years ago
Aleksander Machniak dcf68720c1 Fix regression where UI object could be not created on some pages (#5484) 8 years ago
Aleksander Machniak 9eac1dd513 Fix bug where it wasn't possible to store more that 2MB objects in memcache/apc (#5452)
Added memcache_max_allowed_packet and apc_max_allowed_packet settings
8 years ago
Aleksander Machniak d867ea98ed Fix bug where IMAP password could be exposed via error message (#5472) 8 years ago
Aleksander Machniak 4013e8fd41 Fix To: header encoding in mail sent with mail() method (#5475) 8 years ago
Aleksander Machniak 4480b2615f Fix bug where deleting folders with subfolders could fail in some cases (#5466) 8 years ago
Thomas Bruederli 57c59e7756 Update changelog 8 years ago
Thomas Bruederli 3f556c0f9d Fix flickering of header topline in min-mode (#5426) 8 years ago
Aleksander Machniak 75ce269311 Require Crypt_GPG 1.4.3 8 years ago
Aleksander Machniak 60ef7fd152 Update changelog 8 years ago
Aleksander Machniak bf6ef3f28e Update changelog 8 years ago
jpope 5fda4d21cb Fix class in keys list
The last few keys were being cut off due to a typo.
8 years ago
Aleksander Machniak 45a3a86791 Enigma: Fix encoding of a key search phrase (#5459) 8 years ago
Aleksander Machniak 41d72ca7da Fix regression where creation of default folders wasn't functioning without prefix (#5460) 8 years ago
Aleksander Machniak 5c206a5037 Update changelog 8 years ago
Aleksander Machniak 0c8419e31c Simplify mbstring code path in rcube_charset::convert() 8 years ago
Aleksander Machniak af4ddddb21 Fix bug where folders list would scroll to top when clicking on subscription checkbox (#5447) 8 years ago
Thomas Bruederli 444fdb6161 Bump version to 1.2.2 8 years ago
Aleksander Machniak 4378699663 Implemented rcube::sleep() method for disconnecting all external connection in long-running/sleeping scripts
Conflicts:

	program/lib/Roundcube/rcube_db.php
8 years ago
Aleksander Machniak 6d8245523d Fix so "Action disabled" error uses more appropriate 404 code (#5440) 8 years ago
Aleksander Machniak 41d1a6e532 Enigma: Make recipient key searches case-insensitive (#5434) 8 years ago
Aleksander Machniak d31e04f61c Use mb_strtoupper() instead of strtoupper() for localized texts 8 years ago
Aleksander Machniak fa462b5ab4 Fix displaying size of attachments with zero size 8 years ago
Aleksander Machniak d6f87f81c1 Fix so when moving to Trash we make sure the folder exists (#5192) 8 years ago
Aleksander Machniak b64e22e928 Fix so folders list is scrolled to the selected folder on page load (#5424) 8 years ago
Aleksander Machniak ed282b5358 Fix PHP warning when handling shared namespace with empty prefix (#5420) 8 years ago
Aleksander Machniak a4482d27f9 Fix error causing empty INBOX listing in Firefox when using an URL with user:password specified (#5400) 8 years ago
Aleksander Machniak bcf576c662 Fix bug where folder creation could fail if personal namespace contained more than one entry (#5403)
+ small code improvements
8 years ago
Aleksander Machniak fed6078b28 Fix so "All" messages selection is resetted on search reset (#5413) 8 years ago
Aleksander Machniak d885051fd7 Fix missing min-height on ui-autocomplete lists (T1428) 8 years ago
Aleksander Machniak 0e7d5a6756 Fix typo 8 years ago
Aleksander Machniak ea30e7b816 Fix bug where names of downloaded files could be mailformed when derived from the message subject (#5404) 8 years ago
Aleksander Machniak 2fdb9c43eb Fix E_DEPRECATED warning when using Auth_SASL::factory() (#5401) 8 years ago
Aleksander Machniak 393e42844d Fix bug where blocked.gif couldn't be attached to reply/forward with insecure content 8 years ago
Aleksander Machniak c2b44147b6 Fix bug where Message-ID domain part was tied to username instead of current identity (#5385) 8 years ago
Aleksander Machniak 2fb825490c Update changelog 8 years ago
DanCld 792dd40d90 Properly set the memcache debug log file name
Properly set the debug log file name ('memcache') as $this->type is undefined
8 years ago
Aleksander Machniak fc393e4ead Update changelog 8 years ago
Aleksander Machniak fcf1a988a1 Wash position:fixed style in HTML mail for better security (#5264) 8 years ago
Aleksander Machniak 5aa24a169a Use SymLinksIfOwnerMatch in .htaccess instead of FollowSymLinks disabled on some hosts for security reasons (#5370) 8 years ago
Aleksander Machniak cc15930548 Enigma: Fix signature verification with some IMAP servers, e.g. Gmail, DBMail (#5371) 8 years ago
Aleksander Machniak fa0769dc0e Better time handling in rcube_utils::clean_datestr() 8 years ago
Aleksander Machniak 0e15c9bd45 Remove debug code 8 years ago
Aleksander Machniak 4624b22967 Managesieve: Fix parsing of vacation date-time with non-default date_format (#5372)
Added new method rcube_utils::format_datestr() to convert date_format date
into ISO date format.
8 years ago
Aleksander Machniak 654d4e51fc Fix regression in resizing JPEG images with Imagick (#5376)
Conflicts:

	program/lib/Roundcube/rcube_image.php
8 years ago
Aleksander Machniak 0ec486473b Enigma: Add possibility to configure gpg-agent binary location (enigma_pgp_agent)
Conflicts:

	CHANGELOG
8 years ago
Thomas Bruederli 12813e9d43 Fix German tranlsation for 'open' (#5360) 8 years ago
Thomas Bruederli 00f2d54ac2 Add new release in Changelog 8 years ago
Thomas Bruederli 3a7a550518 Bump version to 1.2.1 8 years ago
Thomas Bruederli bd27c764c8 Updated localizations from Transifex 8 years ago
Aleksander Machniak 8ed954838b Fix javascript errors in IE on page with iframe that points to another domain 8 years ago
Aleksander Machniak 9fe1cf16b3 Fix handling of blockquote tags with mixed case on html2text conversion (#5363) 8 years ago
Aleksander Machniak 9a9a147c58 We already require PEAR, so it's not needed to check if PEAR class exists.
Sooner or later it will fail if PEAR does not exist, so better to do this sooner.
8 years ago
Aleksander Machniak 073961a1b6 Fix missing localization of HTML editor when assets_dir != INSTALL_PATH 8 years ago
fliespl 537aaa3d09 Remove deprecated function flattenImages
flattenImages in imagick is deprecated since php 5.6.
`PHP Deprecated:  Imagick::flattenImages method is deprecated and it's use should be avoided `

Proposed solution works with imagick 3.1.0+.
11 is used as an alternative to `Imagick::ALPHACHANNEL_REMOVE` which was added in imagick 3.2.0.
8 years ago
Aleksander Machniak a1e23a8967 Fix handling of 'mailto' and 'error' arguments in message_before_send hook (#5347)
Conflicts:
	program/lib/Roundcube/rcube.php
8 years ago
Aleksander Machniak 28090d38c1 Use contact_search_name format in popup on results in compose contacts search 8 years ago
Aleksander Machniak cd04cf4af0 Don't create multipart/alternative messages with empty text/plain part (#5283) 8 years ago
Thomas Bruederli 334b339bfe Avoid sending completely empty text parts for multipart/alternative messages (#5283) 8 years ago
Aleksander Machniak 412982aa06 Enigma: Add possibility to export private keys (#5321) 8 years ago
Aleksander Machniak a104be2d10 Require Crypt_GPG 1.4.2 with fix for #5304 8 years ago
Aleksander Machniak 58c1e092fc Explicitly require pear-core-minimal (#5319) 8 years ago
Aleksander Machniak 75e136f28e Support type=password in rcube_output::get_edit_field() 8 years ago
Aleksander Machniak 62f79fc9d8 Fix conflict in new_user_dialog and password_force_new_user settings (#5275) 8 years ago
Aleksander Machniak 25b651e0aa Update TinyMCE to version 4.3.13 (#5309)
Conflicts:
	CHANGELOG
8 years ago
Aleksander Machniak 2168a337c1 Remove unused code 8 years ago
Aleksander Machniak e2ca2e1d08 Trim error message 8 years ago
Aleksander Machniak 4dc138b8c1 Don't add HTTP response body/headers to the spellchecker error message (it is displayed to the user) 8 years ago
Aleksander Machniak b1217807f3 Fix bug where microsecond format in logged date didn't work in some cases 8 years ago
Aleksander Machniak 92df79b37b Fix subscription checkbox state on error in folder subscribe/unsubscribe action (#5243) 8 years ago
Aleksander Machniak 533af8784e Fix so upgrade script makes sure program/lib directory does not contain old libraries (#5287) 8 years ago
Aleksander Machniak 2913267c3a Enigma: Add possibility to configure gpg binary location (enigma_pgp_binary) 8 years ago
Aleksander Machniak 205233f93d Workaround PHP issue by calling closelog() on script shutdown when using log_driver=syslog (#5289) 8 years ago
Aleksander Machniak 9a732c1764 Enigma: Fix malformed signed messages with force_7bit=true (#5292) 8 years ago
Aleksander Machniak 06d09b23c6 Fix handling of --delete argument in moduserprefs.sh script (#5296) 8 years ago
Aleksander Machniak e2278a3c1c Fix searching by email address in contacts with multiple addresses (#5291) 8 years ago
Aleksander Machniak 8a3b80d394 Enigma: Fix keys import from inside of an encrypted message (#5285) 8 years ago
Thomas Bruederli fe1e2b27aa Add licence header to cloned PublicKey.js 8 years ago
Aleksander Machniak 053bba7458 Update changelog 8 years ago
Michael Herold 6612715f91 Fixes 'nobodywarning' on sending mailvelope mails 8 years ago
Aleksander Machniak 7a7c3fa8f2 Update localization, add Enigma plugin localizations
Conflicts:
	plugins/managesieve/localization/de_DE.inc
	plugins/managesieve/localization/pt_PT.inc
	plugins/managesieve/localization/sk_SK.inc
8 years ago
Aleksander Machniak 71a9ff311f Add Enigma plugin to Transifex config 8 years ago
Aleksander Machniak 17ca166727 Protect INBOX folder even if protected_default_folders=false 8 years ago
Aleksander Machniak e660f157c0 Fix multi-folder search issues in "this and subfolders" scope (#5282, #5259)
- Fix bug where multi-folder search could choose a wrong folder
- Fix bug where multi-folder search didn't work for unsubscribed INBOX
8 years ago
Aleksander Machniak 6987153469 Fix so subfolders of INBOX can be set as Archive (#5274) 8 years ago
Aleksander Machniak 3652c75374 Update copyright year in about page (#5269) 8 years ago
Aleksander Machniak da96071780 Fix redundant keep-alive requests when session_lifetime is greater than ~20000 (#5273) 8 years ago
Aleksander Machniak 77b5d7ee30 Fix priority icon(s) position 8 years ago
Aleksander Machniak e4d014917a Update changelog 8 years ago
Aleksander Machniak 2a352732b5 Use minified publickey.js (with cache-buster) when available (#5254) 8 years ago
Aleksander Machniak a80981cdca Remove application/x-tar file extension test as it might not exist in nginx config (#5253)
Use text/css instead
8 years ago
Aleksander Machniak fd902ce6f5 Add note about need for module name change in IfModule when using PHP7 (#5249) 8 years ago
Aleksander Machniak ea73d58913 Fix PHP warning when password_hosts is set, but is not an array (#5260) 8 years ago
Aleksander Machniak 2d12748662 Fix bug where message list columns could be in wrong order after column drag-n-drop and list sorting 8 years ago
Aleksander Machniak 7621c18b8e Fix bug where errors could have been not logged when per_user_logging=true
Conflicts:
	CHANGELOG
8 years ago
Thomas Bruederli 1d7be448f3 Some final localozation updates before release 8 years ago
Thomas Bruederli a7aecfee42 Update localizations from Transifex 8 years ago
Thomas Bruederli d2e2a8f32e Bump version to 1.2.0 (stable) 8 years ago
Thomas Bruederli bd13f92ffb Improve migration of the composer.json file when updating 8 years ago
Aleksander Machniak c7e14e87c0 Remove useless directives 8 years ago
Aleksander Machniak a5df27cc67 Add missing entry about Redis support for session 8 years ago
Aleksander Machniak 972f0bd886 Add note about removing some deprecated methods 8 years ago
Aleksander Machniak 12b7d5f1b5 Fix XSS issue in href attribute on area tag (#5240, #5241) 8 years ago
Aleksander Machniak 311c207d0a Fix redundant enigma.css link 8 years ago

@ -1,6 +1,4 @@
# AddDefaultCharset UTF-8
AddType text/x-component .htc
# WARNING: For PHP 7 the module name in the line below need to be modified!
<IfModule mod_php5.c>
php_flag display_errors Off
php_flag log_errors On
@ -25,7 +23,7 @@ php_value session.gc_probability 1
</IfModule>
<IfModule mod_rewrite.c>
Options +FollowSymLinks
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteRule ^favicon\.ico$ skins/larry/images/favicon.ico
@ -35,6 +33,8 @@ RewriteRule ^favicon\.ico$ skins/larry/images/favicon.ico
RewriteRule ^(?!installer|\.well-known\/|[a-zA-Z0-9]{16})(\.?[^\.]+)$ - [F]
# - deny access to some locations
RewriteRule ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|program\/(include|lib|localization|steps)) - [F]
# - deny access to composer binaries
RewriteRule ^/vendor\/bin\/.* - [F]
# - deny access to some documentation files
RewriteRule /?(README\.md|composer\.json-dist|composer\.json|package\.xml|Dockerfile)$ - [F]
</IfModule>

@ -28,6 +28,11 @@ file_filter = plugins/attachment_reminder/localization/<lang>.inc
source_file = plugins/attachment_reminder/localization/en_US.inc
source_lang = en_US
[roundcube-webmail.plugin-enigma]
file_filter = plugins/enigma/localization/<lang>.inc
source_file = plugins/enigma/localization/en_US.inc
source_lang = en_US
[roundcube-webmail.plugin-help]
file_filter = plugins/help/localization/<lang>.inc
source_file = plugins/help/localization/en_US.inc
@ -82,4 +87,3 @@ source_lang = en_US
file_filter = plugins/zipdownload/localization/<lang>.inc
source_file = plugins/zipdownload/localization/en_US.inc
source_lang = en_US

@ -1,12 +1,162 @@
CHANGELOG Roundcube Webmail
===========================
RELEASE 1.2.10
--------------
- Fix missing message-htmlpart1 class breaking inline CSS (#6493)
- Security: Fix XSS issue in handling of CDATA in HTML messages
- Security: Fix remote code execution via crafted 'im_convert_path' or 'im_identify_path' settings
- Security: Fix local file inclusion (and code execution) via crafted 'plugins' option
- Security: Fix CSRF bypass that could be used to log out an authenticated user (#7302)
RELEASE 1.2.9
-------------
- Fix regression where IMAP commands with '*' uidset argument wasn't working
RELEASE 1.2.8
-------------
- Fix check_request() bypass in places using get_uids() [CVE-2018-9846] (#6238)
- Fix possible IMAP command injection vulnerability [CVE-2018-9846] (#6229)
- Fix security issue in remote content blocking on HTML image and style tags (#6178)
RELEASE 1.2.7
-------------
- Fix rewind(): stream does not support seeking (#5950)
- Fix bug where HTML messages could have been rendered empty on some systems (#5957)
- Fix (again) bug where image data URIs in css style were treated as evil/remote in mail preview (#5580)
- Managesieve: Fix parsing dot-staffed lines in multiline text (#5838, #5959)
- Fix file disclosure vulnerability caused by insufficient input validation [CVE-2017-16651] (#6026)
RELEASE 1.2.6
-------------
- Don't ignore (global) userlogins/sendmail logging in per_user_logging mode
- Enigma: Fix compatibility with assets_dir
- Managesieve: Fix AM/PM suffix in vacation time selectors
- Fix bug where comment notation within style tag would cause the whole style to be ignored (#5747)
- Fix bug where it wasn't possible to scroll folders list in Edge (#5750)
- Fix addressbook searching by gender (#5757)
- Fix SQL syntax error on MariaDB 10.2 (#5774)
- Fix bug where it wasn't possible to set timezone to auto-detected value (#5782)
- Fix uninitialized string offset in rcube_utils::bin2ascii() and make sure rcube_utils::random_bytes() result has always requested length (#5788)
- Fix potential XSS vulnerability with malformed HTML message markup
RELEASE 1.2.5
-------------
- Fix re-positioning of the fixed header of messages list in Chrome when using minimal mode toggle and About dialog (#5711)
- Fix so settings/upload.inc could not be used by plugins (#5694)
- Fix regression in LDAP fuzzy search where it always used prefix search instead (#5713)
- Fix bug where namespace prefix could not be truncated on folders list if show_real_foldernames=true (#5695)
- Fix bug where base_dn setting was ignored inside group_filters (#5720)
- Password: Fix security issue in virtualmin and sasl drivers [CVE-2017-8114]
RELEASE 1.2.4
-------------
- Managesieve: Fix handling of scripts with nested rules (#5540)
- Managesieve: Fix parser issue with empty lines between comments (#5657)
- Managesieve: Fix possible defect in handling \r\n in scripts (#5685)
- Enigma: Fix handling of messages with nested PGP encrypted parts (#5634)
- Enigma: Fix PHP fatal error when decrypting a message with invalid signature (#5555)
- Enigma: Fix missing require statement for Crypt_GPG_KeyGenerator (#5641)
- Fix variable substitution in ldap host for some use-cases, e.g. new_user_identity (#5544)
- Fix adding images to new identity signatures
- Fix rsync error handling in installto.sh script (#5562)
- Fix some advanced search issues with multiple addressbooks (#5572)
- Fix so group/addressbook selection is retained on page refresh
- Fix bug where image data URIs in css style were treated as evil/remote in mail preview (#5580)
- Fix bug where external content in src attribute of input/video tags was not secured (#5583)
- Fix PHP error on update of a contact with multiple email addresses when using PHP 7.1 (#5587)
- Fix bug where mail content frame couldn't be reset in some corner cases (#5608)
- Fix bug where some classic skin images were not displayed in IE/Edge (#5614)
- Fix bug where signature couldn't be added above the quote in Firefox 51 (#5628)
- Fix regression where groups with email address were resolved to its members' addresses
- Fix update of group name in the contacts list header on group rename (#5648)
- Add rewrite rule to disable access to /vendor/bin folder in .htaccess (#5630)
- Fix bug where it was too easy accidentally move a folder when using the subscription checkbox (#5655)
- Fix XSS issue in handling of a style tag inside of an svg element (CVE-2017-6820)
RELEASE 1.2.3
-------------
- Searching in both contacts and groups when LDAP addressbook with group_filters option is used
- Fix vulnerability in handling of mail()'s 5th argument
- Fix To: header encoding in mail sent with mail() method (#5475)
- Fix flickering of header topline in min-mode (#5426)
- Fix bug where folders list would scroll to top when clicking on subscription checkbox (#5447)
- Fix decoding of GB2312/GBK text when iconv is not installed (#5448)
- Fix regression where creation of default folders wasn't functioning without prefix (#5460)
- Enigma: Fix bug where last records on keys list were hidden (#5461)
- Enigma: Fix key search with keyword containing non-ascii characters (#5459)
- Fix bug where deleting folders with subfolders could fail in some cases (#5466)
- Fix bug where IMAP password could be exposed via error message (#5472)
- Fix bug where it wasn't possible to store more that 2MB objects in memcache/apc,
Added memcache_max_allowed_packet and apc_max_allowed_packet settings (#5452)
- Fix "Illegal string offset" warning in rcube::log_bug() on PHP 7.1 (#5508)
- Fix storing "empty" values in rcube_cache/rcube_cache_shared (#5519)
- Fix missing content check when image resize fails on attachment thumbnail generation (#5485)
- Fix displaying attached images with wrong Content-Type specified (#5527)
RELEASE 1.2.2
-------------
- Enigma: Add possibility to configure gpg-agent binary location (enigma_pgp_agent)
- Enigma: Fix signature verification with some IMAP servers, e.g. Gmail, DBMail (#5371)
- Enigma: Make recipient key searches case-insensitive (#5434)
- Fix regression in resizing JPEG images with Imagick (#5376)
- Managesieve: Fix parsing of vacation date-time with non-default date_format (#5372)
- Use SymLinksIfOwnerMatch in .htaccess instead of FollowSymLinks disabled on some hosts for security reasons (#5370)
- Wash position:fixed style in HTML mail for better security (#5264)
- Fix bug where memcache_debug didn't work for session operations
- Fix bug where Message-ID domain part was tied to username instead of current identity (#5385)
- Fix bug where blocked.gif couldn't be attached to reply/forward with insecure content
- Fix E_DEPRECATED warning when using Auth_SASL::factory() (#5401)
- Fix bug where names of downloaded files could be malformed when derived from the message subject (#5404)
- Fix so "All" messages selection is resetted on search reset (#5413)
- Fix bug where folder creation could fail if personal namespace contained more than one entry (#5403)
- Fix error causing empty INBOX listing in Firefox when using an URL with user:password specified (#5400)
- Fix PHP warning when handling shared namespace with empty prefix (#5420)
- Fix so folders list is scrolled to the selected folder on page load (#5424)
- Fix so when moving to Trash we make sure the folder exists (#5192)
- Fix displaying size of attachments with zero size
- Fix so "Action disabled" error uses more appropriate 404 code (#5440)
RELEASE 1.2.1
-------------
- Update TinyMCE to version 4.3.13 (#5309)
- Fix bug where errors could have been not logged when per_user_logging=true
- Fix bug where message list columns could be in wrong order after column drag-n-drop and list sorting
- Fix so minified publickey.js (with cache-buster) is used when available (#5254)
- Fix (replace) application/x-tar file extension test as it might not exist in nginx config (#5253)
- Fix PHP warning when password_hosts is set, but is not an array (#5260)
- Fix redundant keep-alive requests when session_lifetime is greater than ~20000 (#5273)
- Fix so subfolders of INBOX can be set as Archive (#5274)
- Fix bug where multi-folder search could choose a wrong folder in "this and subfolders" scope (#5282)
- Fix bug where multi-folder search didn't work for unsubscribed INBOX (#5259)
- Fix bug where "no body" alert could be displayed when sending mailvelope email
- Enigma: Fix keys import from inside of an encrypted message (#5285)
- Enigma: Fix malformed signed messages with force_7bit=true (#5292)
- Enigma: Add possibility to configure gpg binary location (enigma_pgp_binary)
- Enigma: Add possibility to export private keys (#5321)
- Fix searching by email address in contacts with multiple addresses (#5291)
- Fix handling of --delete argument in moduserprefs.sh script (#5296)
- Workaround PHP issue by calling closelog() on script shutdown when using log_driver=syslog (#5289)
- Fix so upgrade script makes sure program/lib directory does not contain old libraries (#5287)
- Fix subscription checkbox state on error in folder subscribe/unsubscribe action (#5243)
- Fix bug where microsecond format in logged date didn't work in some cases
- Fix conflict in new_user_dialog and password_force_new_user settings (#5275)
- Don't create multipart/alternative messages with empty text/plain part (#5283)
- Use contact_search_name format in popup on results in compose contacts search
- Fix handling of 'mailto' and 'error' arguments in message_before_send hook (#5347)
- Fix missing localization of HTML editor when assets_dir != INSTALL_PATH
- Fix handling of blockquote tags with mixed case on html2text conversion (#5363)
- Fix javascript errors in IE on page with iframe that points to another domain
RELEASE 1.2.0
-------------
- Enigma: Added enigma_debug option
- Fix message list multi-select/deselect issue (#5219)
- Fix bug where getting HTML editor content could steal focus from other form controls (#5223)
- Fix bug where contact search menu fields where always unchecked in Larry skin
- Fix autoloading of 'html' class
- Fix bug where Encrypt button appears when switching editor to HTML (#5235)
- Fix XSS issue in href attribute on area tag (#5240)
RELEASE 1.2-rc
--------------
@ -49,6 +199,8 @@ RELEASE 1.2-rc
RELEASE 1.2-beta
----------------
- Update TinyMCE to version 4.2
- Added support for Redis session handler
- Removed some deprecated methods: https://github.com/roundcube/roundcubemail/commit/454b0b1c
- Remove backward compatibility "layer" of bc.php (#4902)
- Add possibility to define date format in write operations for ldap attributes (#3956)
- Display attachment size in compose (#1329)

@ -16,14 +16,14 @@ REQUIREMENTS
- PHP PDO with driver for either MySQL, PostgreSQL, SQL Server, Oracle or SQLite (required)
- Libiconv, Zip, Fileinfo, Intl, Exif (recommended)
- LDAP for LDAP addressbook support (optional)
* PEAR packages distributed with Roundcube or external:
* PEAR and PEAR packages distributed with Roundcube or external:
- Mail_Mime 1.10.0 or newer
- Net_SMTP 1.7.1 or newer
- Net_Socket 1.0.12 or newer
- Net_IDNA2 0.1.1 or newer
- Auth_SASL 1.0.6 or newer
- Net_Sieve 1.3.2 or newer (for managesieve plugin)
- Crypt_GPG 1.4.1 or newer (for enigma plugin)
- Crypt_GPG 1.4.3 or newer (for enigma plugin)
* php.ini options (see .htaccess file):
- error_reporting E_ALL & ~E_NOTICE (or lower)
- memory_limit > 16MB (increase as suitable to support large attachments)

@ -3,14 +3,6 @@ Roundcube Webmail
[roundcube.net](http://roundcube.net)
ATTENTION
---------
This is just a snapshot from the GIT repository and is **NOT A STABLE
version of Roundcube**. It's not recommended to replace an existing installation
of Roundcube with this version. Also using a separate database for this
installation is highly recommended.
INTRODUCTION
------------
Roundcube Webmail is a browser-based multilingual IMAP client with an

@ -5,7 +5,7 @@
| bin/installto.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2014, The Roundcube Dev Team |
| Copyright (C) 2014-2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -42,7 +42,6 @@ echo "Upgrading from $oldversion. Do you want to continue? (y/N)\n";
$input = trim(fgets(STDIN));
if (strtolower($input) == 'y') {
$err = false;
echo "Copying files to target location...";
// Save a copy of original .htaccess file (#1490623)
@ -55,15 +54,17 @@ if (strtolower($input) == 'y') {
$dirs[] = 'vendor';
}
foreach ($dirs as $dir) {
if (!system("rsync -avC " . INSTALL_PATH . "$dir/* $target_dir/$dir/")) {
$err = true;
break;
// @FIXME: should we use --delete for all directories?
$delete = in_array($dir, array('program', 'installer')) ? '--delete ' : '';
$command = "rsync -aC --out-format \"%n\" " . $delete . INSTALL_PATH . "$dir/* $target_dir/$dir/";
if (!system($command, $ret) || $ret > 0) {
rcube::raise_error("Failed to execute command: $command", false, true);
}
}
foreach (array('index.php','.htaccess','config/defaults.inc.php','composer.json-dist','CHANGELOG','README.md','UPGRADING','LICENSE','INSTALL') as $file) {
if (!system("rsync -av " . INSTALL_PATH . "$file $target_dir/$file")) {
$err = true;
break;
$command = "rsync -a --out-format \"%n\" " . INSTALL_PATH . "$file $target_dir/$file";
if (file_exists(INSTALL_PATH . $file) && (!system($command, $ret) || $ret > 0)) {
rcube::raise_error("Failed to execute command: $command", false, true);
}
}
@ -94,13 +95,12 @@ if (strtolower($input) == 'y') {
echo "done.\n\n";
}
if (!$err) {
echo "Running update script at target...\n";
system("cd $target_dir && php bin/update.sh --version=$oldversion");
echo "All done.\n";
}
echo "Running update script at target...\n";
system("cd $target_dir && php bin/update.sh --version=$oldversion");
echo "All done.\n";
}
else
else {
echo "Update cancelled. See ya!\n";
}
?>

@ -36,7 +36,7 @@ function print_usage()
// get arguments
$args = rcube_utils::get_opt(array(
'u' => 'user',
'd' => 'delete',
'd' => 'delete:bool',
't' => 'type',
'c' => 'config',
));
@ -45,7 +45,7 @@ if ($_SERVER['argv'][1] == 'help') {
print_usage();
exit;
}
else if (empty($args[0]) || (!isset($args[1]) && !$args['delete'])) {
else if (empty($args[0]) || (empty($args[1]) && empty($args['delete']))) {
print "Missing required parameters.\n";
print_usage();
exit;

@ -24,7 +24,7 @@ define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
require_once INSTALL_PATH . 'program/include/clisetup.php';
// get arguments
$opts = rcube_utils::get_opt(array('v' => 'version', 'y' => 'accept'));
$opts = rcube_utils::get_opt(array('v' => 'version', 'y' => 'accept:bool'));
// ask user if no version is specified
if (!$opts['version']) {
@ -169,14 +169,20 @@ if ($RCI->configured) {
// update the require section with the new dependencies
if (is_array($composer_data['require']) && is_array($composer_template['require'])) {
$composer_data['require'] = array_merge($composer_data['require'], $composer_template['require']);
/* TO BE ADDED LATER
$old_packages = array();
for ($old_packages as $pkg) {
if (array_key_exists($composer_data['require'], $pkg)) {
// remove obsolete packages
$old_packages = array(
'pear/mail_mime',
'pear/mail_mime-decode',
'pear/net_smtp',
'pear/net_sieve',
'pear-pear.php.net/net_sieve',
);
foreach ($old_packages as $pkg) {
if (array_key_exists($pkg, $composer_data['require'])) {
unset($composer_data['require'][$pkg]);
}
}
*/
}
// update the repositories section with the new dependencies
@ -190,12 +196,18 @@ if ($RCI->configured) {
$existing = false;
foreach ($composer_data['repositories'] as $k => $_repo) {
if ($rkey == $_repo['type'] . preg_replace('/^https?:/', '', $_repo['url']) . $_repo['package']['name']) {
// switch to https://
if (isset($_repo['url']) && strpos($_repo['url'], 'http://') === 0)
$composer_data['repositories'][$k]['url'] = 'https:' . substr($_repo['url'], 5);
$existing = true;
break;
}
// remove old repos
else if (strpos($_repo['url'], 'git://git.kolab.org') === 0) {
unset($composer_data['repositories'][$k]);
unset($composer_data['repositories'][$k]);
}
else if ($_repo['type'] == 'package' && $_repo['package']['name'] == 'Net_SMTP') {
unset($composer_data['repositories'][$k]);
}
}
if (!$existing) {

@ -22,13 +22,14 @@
],
"require": {
"php": ">=5.3.7",
"pear/pear-core-minimal": "~1.10.1",
"roundcube/plugin-installer": "~0.1.6",
"pear-pear.php.net/net_socket": "~1.0.12",
"pear-pear.php.net/auth_sasl": "~1.0.6",
"pear-pear.php.net/net_idna2": "~0.1.1",
"pear-pear.php.net/mail_mime": "~1.10.0",
"pear-pear.php.net/net_smtp": "~1.7.1",
"pear-pear.php.net/crypt_gpg": "~1.4.1",
"pear-pear.php.net/crypt_gpg": "~1.4.2",
"roundcube/net_sieve": "~1.5.0"
},
"require-dev": {

@ -307,6 +307,40 @@ $config['ldap_cache'] = 'db';
$config['ldap_cache_ttl'] = '10m';
// ----------------------------------
// CACHE(S)
// ----------------------------------
// Use these hosts for accessing memcached
// Define any number of hosts in the form of hostname:port or unix:///path/to/socket.file
$config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211', 'unix:///var/tmp/memcached.sock' );
// Controls the use of a persistent connections to memcache servers
// See http://php.net/manual/en/memcache.addserver.php
$config['memcache_pconnect'] = true;
// Value in seconds which will be used for connecting to the daemon
// See http://php.net/manual/en/memcache.addserver.php
$config['memcache_timeout'] = 1;
// Controls how often a failed server will be retried (value in seconds).
// Setting this parameter to -1 disables automatic retry.
// See http://php.net/manual/en/memcache.addserver.php
$config['memcache_retry_interval'] = 15;
// use these hosts for accessing Redis.
// Currently only one host is supported. cluster support may come in a future release.
// You can pass 4 fields, host, port, database and password.
// Unset fields will be set to the default values host=127.0.0.1, port=6379, database=0, password= (empty)
$config['redis_hosts'] = null; // e.g. array( 'localhost:6379' ); array( '192.168.1.1:6379:1:secret' );
// Maximum size of an object in memcache (in bytes). Default: 2MB
$config['memcache_max_allowed_packet'] = '2M';
// Maximum size of an object in APC cache (in bytes). Default: 2MB
$config['apc_max_allowed_packet'] = '2M';
// ----------------------------------
// SYSTEM
// ----------------------------------
@ -422,30 +456,6 @@ $config['session_path'] = null;
// Setting this value to 'php' will use the default session save handler configured in PHP
$config['session_storage'] = 'db';
// Use these hosts for accessing memcached
// Define any number of hosts in the form of hostname:port or unix:///path/to/socket.file
$config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211', 'unix:///var/tmp/memcached.sock' );
// Controls the use of a persistent connections to memcache servers
// See http://php.net/manual/en/memcache.addserver.php
$config['memcache_pconnect'] = true;
// Value in seconds which will be used for connecting to the daemon
// See http://php.net/manual/en/memcache.addserver.php
$config['memcache_timeout'] = 1;
// Controls how often a failed server will be retried (value in seconds).
// Setting this parameter to -1 disables automatic retry.
// See http://php.net/manual/en/memcache.addserver.php
$config['memcache_retry_interval'] = 15;
// use this for accessing redis
// currently only one host is supported. cluster support may come in a future release.
// you can pass 4 fields, host, port, database and password.
// unset fields will be set to the default values host=127.0.0.1, port=6379, database=0, password= (empty)
$config['redis_hosts'] = null; // e.g. array( 'localhost:6379' ); array( '192.168.1.1:6379:1:secret' );
// check client IP in session authorization
$config['ip_check'] = false;
@ -1022,11 +1032,11 @@ $config['addressbook_pagesize'] = 50;
// sort contacts by this col (preferably either one of name, firstname, surname)
$config['addressbook_sort_col'] = 'surname';
// the way how contact names are displayed in the list
// 0: display name
// 1: (prefix) firstname middlename surname (suffix)
// 2: (prefix) surname firstname middlename (suffix)
// 3: (prefix) surname, firstname middlename (suffix)
// The way how contact names are displayed in the list.
// 0: prefix firstname middlename surname suffix (only if display name is not set)
// 1: firstname middlename surname
// 2: surname firstname middlename
// 3: surname, firstname middlename
$config['addressbook_name_listing'] = 0;
// use this timezone to display date/time

@ -2,9 +2,9 @@
/**
+-------------------------------------------------------------------------+
| Roundcube Webmail IMAP Client |
| Version 1.2-git |
| Version 1.2.10 |
| |
| Copyright (C) 2005-2015, The Roundcube Dev Team |
| Copyright (C) 2005-2017, 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 |
@ -93,7 +93,9 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
$request_valid = $_SESSION['temp'] && $RCMAIL->check_request();
// purge the session in case of new login when a session already exists
$RCMAIL->kill_session();
if ($request_valid) {
$RCMAIL->kill_session();
}
$auth = $RCMAIL->plugins->exec_hook('authenticate', array(
'host' => $RCMAIL->autoselect_host(),
@ -168,13 +170,15 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
$RCMAIL->plugins->exec_hook('login_failed', array(
'code' => $error_code, 'host' => $auth['host'], 'user' => $auth['user']));
$RCMAIL->kill_session();
if (!isset($_SESSION['user_id'])) {
$RCMAIL->kill_session();
}
}
}
// end session
else if ($RCMAIL->task == 'logout' && isset($_SESSION['user_id'])) {
$RCMAIL->request_security_check($mode = rcube_utils::INPUT_GET);
$RCMAIL->request_security_check(rcube_utils::INPUT_GET | rcube_utils::INPUT_POST);
$userdata = array(
'user' => $_SESSION['username'],
@ -243,7 +247,7 @@ else {
$disabled_actions = (array) $RCMAIL->config->get('disabled_actions');
if (in_array($RCMAIL->task . '.' . ($RCMAIL->action ?: 'index'), $disabled_actions)) {
rcube::raise_error(array(
'code' => 403, 'type' => 'php',
'code' => 404, 'type' => 'php',
'message' => "Action disabled"), true, true);
}
}

@ -3,9 +3,9 @@
/**
+-------------------------------------------------------------------------+
| Roundcube Webmail setup tool |
| Version 1.2-git |
| Version 1.2.10 |
| |
| Copyright (C) 2009-2015, The Roundcube Dev Team |
| Copyright (C) 2009-2017, 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 |

@ -18,31 +18,81 @@
$labels['sharing'] = 'Rannañ';
$labels['myrights'] = 'Aotreoù mont e-barzh';
$labels['username'] = 'Implijer:';
$labels['newuser'] = 'Ouzhpenan un enporzh';
$labels['advanced'] = 'Mod kempleshoc\'h';
$labels['newuser'] = 'Ouzhpennañ un elfenn';
$labels['editperms'] = 'Embann an aotreoù';
$labels['actions'] = 'Aotreoù mont e-barzh';
$labels['anyone'] = 'An holl implijerien (neb hini)';
$labels['anonymous'] = 'pedet (dizanv)';
$labels['aclr'] = 'Kemennadoù lennet';
$labels['aclc'] = 'Krouiñ isrenkelloù';
$labels['aclk'] = 'Krouiñ isrenkelloù';
$labels['acld'] = 'Dilemel kemennadoù';
$labels['aclt'] = 'Dilemel kemennadoù';
$labels['aclx'] = 'Dilemel ar renkell';
$labels['aclread'] = 'Lennet';
$labels['anonymous'] = 'Kouvidi (dizanv)';
$labels['identifier'] = 'Naoudi';
$labels['acll'] = 'Taol sell';
$labels['aclr'] = 'Kemennadennoù lennet';
$labels['acls'] = 'Derc\'hel ar stad "Gwelet"';
$labels['aclw'] = 'Bannieloù skrivañ';
$labels['acli'] = 'Enlakaat (Eilañ an digoradur)';
$labels['aclp'] = 'Postañ';
$labels['aclc'] = 'Krouiñ isteuliadoù';
$labels['aclk'] = 'Krouiñ isteuliadoù';
$labels['acld'] = 'Dilemel kemennadennoù';
$labels['aclt'] = 'Dilemel kemennadennoù';
$labels['acle'] = 'Skarzhañ';
$labels['aclx'] = 'Dilemel an teuliad';
$labels['acla'] = 'Ardeiñ';
$labels['acln'] = 'Notennaouiñ kemennadennoù';
$labels['aclfull'] = 'Reoliadur a-bezh';
$labels['aclother'] = 'All';
$labels['aclread'] = 'Lenn';
$labels['aclwrite'] = 'Skrivañ';
$labels['acldelete'] = 'Dilemel';
$labels['shortacll'] = 'Teurel ur sell';
$labels['shortaclr'] = 'Lenn';
$labels['shortacls'] = 'Gwarezin';
$labels['shortacls'] = 'Derc\'hel';
$labels['shortaclw'] = 'Skrivañ';
$labels['shortacli'] = 'Enlakaat';
$labels['shortaclp'] = 'Postañ';
$labels['shortaclc'] = 'Krouiñ';
$labels['shortaclk'] = 'Krouiñ';
$labels['shortacld'] = 'Dilemel';
$labels['shortaclt'] = 'Dilemel';
$labels['shortacle'] = 'Dilemel pep tra';
$labels['shortaclx'] = 'Dilemel ar renkell';
$labels['shortaclother'] = 'traoù all';
$labels['shortacle'] = 'Skarzhañ';
$labels['shortaclx'] = 'Dilemel an teuliad';
$labels['shortacla'] = 'Ardeiñ';
$labels['shortacln'] = 'Notennaouiñ';
$labels['shortaclother'] = 'Traoù all';
$labels['shortaclread'] = 'Lenn';
$labels['shortaclwrite'] = 'Skrivañ';
$labels['shortacldelete'] = 'Dilemel';
$labels['longacll'] = 'Gwelus eo an teuliad-se er rolloù ha gallout a reer bezañ koumanantet dezhañ';
$labels['longaclr'] = 'Gallout a reer digeriñ an teuliad-mañ evit e lenn';
$labels['longacls'] = 'Gallout a reer kemmañ ar bannieloù "Kemennadenn gwelet"';
$labels['longaclw'] = 'Gallout a reer kemmañ an bannieloù kemennadennoù hag ar gerioù-alc\'hwez, war-bouez "Gwelet" ha "Dilamet"';
$labels['longacli'] = 'Gallout a ra ar c\'hemennadennoù bezañ skrivet be eilet en teuliad';
$labels['longaclp'] = 'Gallout a reer postañ kemennadennoù d\'an teuliad-mañ';
$labels['longaclc'] = 'Gallout a reer krouiñ (pe adenvel) teuliadoù en teuliad war-eeun';
$labels['longaclk'] = 'Gallout a reer krouiñ (pe adenvel) teuliadoù en teuliad war-eeun';
$labels['longacld'] = 'Gallout a reer kemmañ ar banniel ""Kemennadenn dilamet"';
$labels['longaclt'] = 'Gallout a reer kemmañ ar banniel ""Kemennadenn dilamet"';
$labels['longacle'] = 'Gallout a reer skarzhañ ar c\'hemennadennoù';
$labels['longaclx'] = 'Gallout a ra bezañ dilamet pe adanvet an teuliad';
$labels['longacla'] = 'Gallout a reer kemmañ aotreoù haeziñ an teuliad';
$labels['longacln'] = 'Metaroadennoù rannet (notennoù) ar c\'hemennadennoù a c\'hell bezañ kemmet';
$labels['longaclfull'] = 'Reoliadur a-bezh, ardeiñ an teuliad en o zouez';
$labels['longaclread'] = 'Gallout a reer digeriñ an teuliad evit e lenn';
$labels['longaclwrite'] = 'Gallout a reer merkañ, skrivañ pe eilañ kemennadennoù d\'an teuliad';
$labels['longacldelete'] = 'Gallout a reer dilemel ar c\'hemennadennoù';
$labels['longaclother'] = 'Aotreoù haeziñ all';
$labels['ariasummaryacltable'] = 'Roll an aotreoù haeziñ';
$labels['arialabelaclactions'] = 'Roll ar gweredoù';
$labels['arialabelaclform'] = 'Aotreoù haeziñ a-berzh';
$messages['deleting'] = 'O tilemel an aotreoù haeziñ...';
$messages['saving'] = 'Oc\'h enrollañ an aotreoù haeziñ...';
$messages['updatesuccess'] = 'Kemmet an aotreoù haeziñ gant berzh';
$messages['deletesuccess'] = 'Dilamet an aotreoù haeziñ gant berzh';
$messages['createsuccess'] = 'Ouzhpennet an aotreoù haeziñ gant berzh';
$messages['updateerror'] = 'N\'haller ket hizivaat an aotreoù haeziñ';
$messages['deleteerror'] = 'N\'haller ket dilemel an aotreoù haeziñ';
$messages['createerror'] = 'N\'haller ket ouzhpennañ aotreoù haeziñ';
$messages['deleteconfirm'] = 'Sur oc\'h e fell deoc\'h dilemel aotreoù haeziñ an arveriaded diuzet?';
$messages['norights'] = 'Aotre ebet erspizet!';
$messages['nouser'] = 'Anv arveriad ebet erspizet!';
?>

@ -21,7 +21,7 @@ $labels['username'] = 'Benutzer:';
$labels['advanced'] = 'Erweiterter Modus';
$labels['newuser'] = 'Eintrag hinzufügen';
$labels['editperms'] = 'Zugriffsrechte bearbeiten';
$labels['actions'] = 'Zugriffsrechte Aktionen...';
$labels['actions'] = 'Zugriffsrechteaktionen …';
$labels['anyone'] = 'Alle Benutzer (anyone)';
$labels['anonymous'] = 'Gäste (anonymous)';
$labels['identifier'] = 'Bezeichnung';

@ -38,6 +38,7 @@ $labels['aclt'] = 'Izbriši sporočila';
$labels['acle'] = 'Izbriši';
$labels['aclx'] = 'Izbriši mapo';
$labels['acla'] = 'Uredi';
$labels['acln'] = 'Komentarji';
$labels['aclfull'] = 'Popolno upravljanje';
$labels['aclother'] = 'Ostalo';
$labels['aclread'] = 'Preberi';
@ -56,6 +57,7 @@ $labels['shortaclt'] = 'Izbriši';
$labels['shortacle'] = 'Izbriši';
$labels['shortaclx'] = 'Izbriši mapo';
$labels['shortacla'] = 'Uredi';
$labels['shortacln'] = 'Dodaj komentar';
$labels['shortaclother'] = 'Ostalo';
$labels['shortaclread'] = 'Preberi';
$labels['shortaclwrite'] = 'Sestavi';
@ -73,10 +75,15 @@ $labels['longaclt'] = 'Oznako sporočila \'Izbrisano\' je mogoče spremeniti';
$labels['longacle'] = 'Sporočila so lahko izbrisana';
$labels['longaclx'] = 'Mapa je lahko izbrisana ali preimenovana';
$labels['longacla'] = 'Pravice na mapi so lahko spremenjene';
$labels['longacln'] = 'Metapodatke (komentarjev), ki so v skupni rabi, je mogoče spremeniti';
$labels['longaclfull'] = 'Popolno upravljanje, vključno z urejanjem map';
$labels['longaclread'] = 'Mapa je na voljo za branje';
$labels['longaclwrite'] = 'Sporočila je mogoče označiti, sestaviti ali kopirati v mapo';
$labels['longacldelete'] = 'Sporočila so lahko izbrisana';
$labels['longaclother'] = 'Ostale pravice dostopa';
$labels['ariasummaryacltable'] = 'Seznam pravic dostopa';
$labels['arialabelaclactions'] = 'Prikaži možnosti';
$labels['arialabelaclform'] = 'Obrazec za nastavitve pravic dostopa';
$messages['deleting'] = 'Brisanje pravic';
$messages['saving'] = 'Shranjevanje pravic';
$messages['updatesuccess'] = 'Pravice so bile uspešno spremenjene';

@ -15,11 +15,82 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/
*/
$labels['aclr'] = 'Lexo mesazhet';
$labels['aclwrite'] = 'Shkruaj';
$labels['myrights'] = 'Të drejta Hyrjeje';
$labels['username'] = 'Përdorues:';
$labels['advanced'] = 'Mënyra e përparuar';
$labels['newuser'] = 'Shtoni zë';
$labels['editperms'] = 'Përpunoni leje';
$labels['actions'] = 'Veprime të drejtash hyrjeje…';
$labels['anyone'] = 'Krejt përdoruesit (cilido)';
$labels['anonymous'] = 'Mysafirë (në mënyrë anonime)';
$labels['identifier'] = 'Identifikues';
$labels['acll'] = 'Kërkim';
$labels['aclr'] = 'Lexoni mesazhe';
$labels['acls'] = 'Mbaje gjendjen i Parë';
$labels['acli'] = 'Fut (Kopje te)';
$labels['aclp'] = 'Postim';
$labels['aclc'] = 'Krijo nëndosje';
$labels['aclk'] = 'Krijo nëndosje';
$labels['acld'] = 'Fshiji mesazhet';
$labels['aclt'] = 'Fshiji mesazhet';
$labels['acle'] = 'Spastroje';
$labels['aclx'] = 'Fshije dosjen';
$labels['acla'] = 'Administroni';
$labels['acln'] = 'Shto shënime te mesazhet';
$labels['aclfull'] = 'Kontroll i plotë';
$labels['aclother'] = 'Tjetër';
$labels['aclread'] = 'Leximi';
$labels['aclwrite'] = 'Shkrimi';
$labels['acldelete'] = 'Fshije';
$labels['shortaclc'] = 'Krijo';
$labels['shortaclk'] = 'Krijo';
$labels['shortacll'] = 'Kërkim';
$labels['shortaclr'] = 'Leximi';
$labels['shortacls'] = 'Mbaje';
$labels['shortaclw'] = 'Shkrimi';
$labels['shortacli'] = 'Fut';
$labels['shortaclp'] = 'Posto';
$labels['shortaclc'] = 'Krijoje';
$labels['shortaclk'] = 'Krijoje';
$labels['shortacld'] = 'Fshije';
$labels['shortaclt'] = 'Fshije';
$labels['shortacle'] = 'Spastro';
$labels['shortaclx'] = 'Fshirje dosjeje';
$labels['shortacla'] = 'Administro';
$labels['shortacln'] = 'Shto shënim';
$labels['shortaclother'] = 'Tjetër';
$labels['shortaclread'] = 'Leximi';
$labels['shortaclwrite'] = 'Shkrimi';
$labels['shortacldelete'] = 'Fshirjeje';
$labels['longacll'] = 'Dosja është e dukshme në lista dhe në të mund të pajtoheni';
$labels['longaclr'] = 'Dosja mund të hapet për lexim';
$labels['longacls'] = 'Mund të ndryshohet shenja Mesazhe të Parë';
$labels['longaclw'] = 'Mund të ndryshohen shenjat dhe fjalëkyçet për mesazhet, hiq të Parë dhe të Fshirë';
$labels['longacli'] = 'Mesazhet mund të shkruhen ose kopjohen në dosje';
$labels['longaclp'] = 'Mesazhet mund të postohen te kjo dosje';
$labels['longaclc'] = 'Dosjet mund të krijohen (ose riemërtohen) drejt e nën këtë dosje';
$labels['longaclk'] = 'Dosjet mund të krijohen (ose riemërtohen) drejt e nën këtë dosje';
$labels['longacld'] = 'Mund të ndryshohet shenja Mesazhe të Fshirë';
$labels['longaclt'] = 'Mund të ndryshohet shenja Mesazhe të Parë';
$labels['longacle'] = 'Mesazhet mund të spastrohen';
$labels['longaclx'] = 'Dosja mund të fshihet ose riemërtohet';
$labels['longacla'] = 'Mund të ndryshohen të drejta hyrjeje te dosja';
$labels['longacln'] = 'Mund të ndryshohen tejtëdhëna të përbashkëta (shënime) mesazhesh';
$labels['longaclfull'] = 'Kontroll i plotë, përfshi administrim dosjesh';
$labels['longaclread'] = 'Dosja mund të hapet për lexim';
$labels['longaclwrite'] = 'Mesazheve mund tu vihet shenjë, shkruhen ose kopjohen te dosja';
$labels['longacldelete'] = 'Mesazhet mund të fshihen';
$labels['longaclother'] = 'Të tjera të drejta hyrjesh';
$labels['ariasummaryacltable'] = 'Listë të drejtash hyrjeje';
$labels['arialabelaclactions'] = 'Paraqit veprime';
$labels['arialabelaclform'] = 'Formular të drejtash hyrjeje';
$messages['deleting'] = 'Po fshihen të drejta hyrjeje…';
$messages['saving'] = 'Po ruhen të drejtash hyrjeje…';
$messages['updatesuccess'] = 'U ndryshuan me sukses të drejta hyrjeje';
$messages['deletesuccess'] = 'U fshinë me sukses të drejta hyrjeje';
$messages['createsuccess'] = 'U shtuan me sukses të drejta hyrjeje';
$messages['updateerror'] = 'I pazoti të përditësojë të drejta hyrjeje';
$messages['deleteerror'] = 'I pazoti të fshijë të drejta hyrjeje';
$messages['createerror'] = 'I pazoti të shtojë të drejta hyrjeje';
$messages['deleteconfirm'] = 'Jeni i sigurt, doni ti hiqni të drejta hyrjeje përdoruesit(ve) të përzgjedhur?';
$messages['norights'] = 'Nuk janë specifikuar të drejta!';
$messages['nouser'] = 'Nuk është specifikuar emër përdoruesi!';
?>

@ -16,30 +16,30 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/
*/
$labels['sharing'] = 'Paylaşım';
$labels['myrights'] = 'Erişim Hakları';
$labels['myrights'] = 'Erişim İzinleri';
$labels['username'] = 'Kullanıcı:';
$labels['advanced'] = 'Gelişmiş mod';
$labels['newuser'] = 'Girdi ekle';
$labels['advanced'] = 'Gelişmiş kip';
$labels['newuser'] = 'Kayıt ekle';
$labels['editperms'] = 'İzinleri düzenle';
$labels['actions'] = 'Erişim hakları aksiyonları...';
$labels['anyone'] = 'Tüm kullanıcılar(kim olursa)';
$labels['anonymous'] = 'Ziyaretçiler(anonim)';
$labels['actions'] = 'Erişim izinleri işlemleri...';
$labels['anyone'] = 'Tüm kullanıcılar (kim olursa)';
$labels['anonymous'] = 'Ziyaretçiler (isimsiz)';
$labels['identifier'] = 'Tanımlayıcı';
$labels['acll'] = 'Arama';
$labels['aclr'] = 'Mesajları oku';
$labels['acls'] = 'Göründü durumunu muhafaza et';
$labels['aclw'] = 'Yazma bayrakları';
$labels['acli'] = 'Ekle(kopyala)';
$labels['aclr'] = 'İletileri oku';
$labels['acls'] = 'Okundu durumu korunsun';
$labels['aclw'] = 'Yazma işaretleri';
$labels['acli'] = 'Ekle (kopyala)';
$labels['aclp'] = 'Gönder';
$labels['aclc'] = 'Alt dizinler oluştur';
$labels['aclk'] = 'Alt dizinler oluştur';
$labels['acld'] = 'Mesajları sil';
$labels['aclt'] = 'Mesajları sil';
$labels['aclc'] = 'Alt klasörler oluştur';
$labels['aclk'] = 'Alt klasörler oluştur';
$labels['acld'] = 'İletileri sil';
$labels['aclt'] = 'İletileri sil';
$labels['acle'] = 'Sil';
$labels['aclx'] = 'Dizini sil';
$labels['aclx'] = 'Klasörü sil';
$labels['acla'] = 'Yönet';
$labels['acln'] = 'Mesajlara not ekle';
$labels['aclfull'] = 'Tam kontrol';
$labels['acln'] = 'İletilere not ekle';
$labels['aclfull'] = 'Tam denetim';
$labels['aclother'] = 'Diğer';
$labels['aclread'] = 'Oku';
$labels['aclwrite'] = 'Yaz';
@ -55,7 +55,7 @@ $labels['shortaclk'] = 'Oluştur';
$labels['shortacld'] = 'Sil';
$labels['shortaclt'] = 'Sil';
$labels['shortacle'] = 'Sil';
$labels['shortaclx'] = 'Dizin sil';
$labels['shortaclx'] = 'Klasörü sil';
$labels['shortacla'] = 'Yönet';
$labels['shortacln'] = 'Not ekle';
$labels['shortaclother'] = 'Diğer';
@ -63,36 +63,36 @@ $labels['shortaclread'] = 'Oku';
$labels['shortaclwrite'] = 'Yaz';
$labels['shortacldelete'] = 'Sil';
$labels['longacll'] = 'Klasör listesinde görülebilir ve abone olunabilir';
$labels['longaclr'] = 'Dizin yazma için okunabilir';
$labels['longacls'] = 'Mesajların göründü bayrağı değiştirilebilir';
$labels['longaclw'] = 'Görülme ve Silinme bayrakları hariç bayraklar ve anahtar kelimeler değiştirilebilir';
$labels['longacli'] = 'Mesajlar dizini yazılabilir veya kopyalanabilir';
$labels['longaclp'] = 'Mesajlar bu dizine gönderilebilir';
$labels['longaclc'] = 'Dizinler doğrudan bu klasör altında oluşturulabilir veya yeniden adlandırılabilir.';
$labels['longaclk'] = 'Dizinler doğrudan bu klasör altında oluşturulabilir veya yeniden adlandırılabilir.';
$labels['longacld'] = 'mesajları sil bayrakları değiştirilebilir';
$labels['longaclt'] = 'mesajları sil, bayraklar değiştirilebilir';
$labels['longacle'] = 'Mesajlar silinebilir';
$labels['longaclx'] = 'Klasörü silinebilir veya yeniden adlandırılabilir';
$labels['longacla'] = 'Dizin erişim hakları değiştirilebilir';
$labels['longacln'] = 'Mesajların paylaşılan üst verileri (notlar) değiştirilebilir';
$labels['longaclfull'] = 'Dizin yönetimi de dahil olmak üzere tam kontrol';
$labels['longaclread'] = 'Dizin yazma için okunabilir';
$labels['longaclwrite'] = 'Dizin yönetimi de dahil olmak üzere tam kontrol';
$labels['longacldelete'] = 'Mesajlar silinebilir';
$labels['longaclother'] = 'Diğer erişim hakları';
$labels['ariasummaryacltable'] = 'Erişim hakları listesi';
$labels['arialabelaclactions'] = 'Aksiyon listesi';
$labels['arialabelaclform'] = 'Erişim hakları formu';
$messages['deleting'] = 'Erişim hakları siliniyor...';
$messages['saving'] = 'Erişim hakları kaydediliyor...';
$messages['updatesuccess'] = 'Erişim hakları değiştirildi';
$messages['deletesuccess'] = 'Erişim hakları silindi';
$messages['createsuccess'] = 'Erişim hakları eklendi';
$messages['updateerror'] = 'Erişim hakları güncellenemedi';
$messages['deleteerror'] = 'Erişim haklarını silinemedi';
$messages['createerror'] = 'Erişim hakları eklenemedi';
$messages['deleteconfirm'] = 'Seçilen kullanıcılar için erişim haklarını silmek istediğinizden emin misiniz?';
$messages['norights'] = 'Hiçbir hak belirtilmemiş!';
$messages['nouser'] = 'Hbir kullanıcı belirtilmemiş!';
$labels['longaclr'] = 'Klasör okunmak üzere açılabilir';
$labels['longacls'] = 'İletilerin Okundu işareti değiştirilebilir';
$labels['longaclw'] = 'Okundu ve Silindi işaretleri dışındaki işaret ve anahtar sözcükler değiştirilebilir';
$labels['longacli'] = 'Klasöre iletiler yazılabilir ya da kopyalanabilir';
$labels['longaclp'] = 'İletiler bu klasöre gönderilebilir';
$labels['longaclc'] = 'Klasörler doğrudan bu klasör altında oluşturulabilir (ya da yeniden adlandırılabilir).';
$labels['longaclk'] = 'Klasörler doğrudan bu klasör altında oluşturulabilir (ya da yeniden adlandırılabilir).';
$labels['longacld'] = 'İleti Silindi işareti değiştirilebilir';
$labels['longaclt'] = 'İleti Silindi işareti değiştirilebilir';
$labels['longacle'] = 'İletiler silinebilir';
$labels['longaclx'] = 'Klasör silinebilir ya da yeniden adlandırılabilir';
$labels['longacla'] = 'Klasör erişim izinleri değiştirilebilir';
$labels['longacln'] = 'İletilerin paylaşılan üst verileri (notlar) değiştirilebilir';
$labels['longaclfull'] = 'Klasör yönetimi dahil tam denetim';
$labels['longaclread'] = 'Klasör okunmak üzere açılabilir';
$labels['longaclwrite'] = 'Klasöre iletiler işaretlenebilir, yazılabilir ya da kopyalanabilir';
$labels['longacldelete'] = 'İletiler silinebilir';
$labels['longaclother'] = 'Diğer erişim izinleri';
$labels['ariasummaryacltable'] = 'Erişim izinleri listesi';
$labels['arialabelaclactions'] = 'İşlem listesi';
$labels['arialabelaclform'] = 'Erişim izinleri formu';
$messages['deleting'] = 'Erişim izinleri siliniyor...';
$messages['saving'] = 'Erişim izinleri kaydediliyor...';
$messages['updatesuccess'] = 'Erişim izinleri değiştirildi';
$messages['deletesuccess'] = 'Erişim izinleri silindi';
$messages['createsuccess'] = 'Erişim izinleri eklendi';
$messages['updateerror'] = 'Erişim izinleri güncellenemedi';
$messages['deleteerror'] = 'Erişim izinleri silinemedi';
$messages['createerror'] = 'Erişim izinleri eklenemedi';
$messages['deleteconfirm'] = 'Seçilmiş kullanıcılar için erişim izinlerini silmek istediğinize emin misiniz?';
$messages['norights'] = 'Herhangi bir izin belirtilmemiş!';
$messages['nouser'] = 'Herhangi bir kullanıcı belirtilmemiş!';
?>

@ -1,6 +1,6 @@
/**
* Archive plugin script
* @version 2.3
* @version 2.4
*
* @licstart The following is the entire license notice for the
* JavaScript code in this file.

@ -6,7 +6,7 @@
* Plugin that adds a new button to the mailbox toolbar
* to move messages to a (user selectable) archive folder.
*
* @version 2.3
* @version 2.4
* @license GNU GPLv3+
* @author Andre Rodier, Thomas Bruederli, Aleksander Machniak
*/
@ -122,8 +122,10 @@ class archive extends rcube_plugin
$index = $storage->index(null, rcmail_sort_column(), rcmail_sort_order());
$messageset = array($current_mbox => $index->get());
}
else {
$messageset = rcmail::get_uids();
else if (!empty($uids)) {
$messageset = rcmail::get_uids($uids, $current_mbox);
} else {
$messageset = array();
}
foreach ($messageset as $mbox => $uids) {
@ -245,14 +247,22 @@ class archive extends rcube_plugin
$rcmail = rcmail::get_instance();
// load folders list when needed
if ($CURR_SECTION)
$select = $rcmail->folder_selector(array('noselection' => '---', 'realnames' => true,
'maxlength' => 30, 'exceptions' => array('INBOX'), 'folder_filter' => 'mail', 'folder_rights' => 'w'));
else
if ($CURR_SECTION) {
$select = $rcmail->folder_selector(array(
'noselection' => '---',
'realnames' => true,
'maxlength' => 30,
'folder_filter' => 'mail',
'folder_rights' => 'w',
'onchange' => "if ($(this).val() == 'INBOX') $(this).val('')",
));
}
else {
$select = new html_select();
}
$args['blocks']['main']['options']['archive_mbox'] = array(
'title' => $this->gettext('archivefolder'),
'title' => $this->gettext('archivefolder'),
'content' => $select->show($rcmail->config->get('archive_mbox'), array('name' => "_archive_mbox"))
);

@ -3,7 +3,7 @@
"type": "roundcube-plugin",
"description": "This adds a button to move the selected messages to an archive folder. The folder (and the optional structure of subfolders) can be selected in the settings panel.",
"license": "GPLv3+",
"version": "2.3",
"version": "2.4",
"authors": [
{
"name": "Thomas Bruederli",

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Месец (пр. Архив/2012/06)';
$labels['archivetypefolder'] = 'Оригинална папка';
$labels['archivetypesender'] = 'E-mail адрес на подател';
$labels['unkownsender'] = 'неизвестно';
$labels['readonarchive'] = 'Маркирай писмото като прочетено в архива';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -16,8 +16,16 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-archive/
*/
$labels['buttontext'] = 'Diell';
$labels['buttontitle'] = 'Dielliñ ar gemenadenn-mañ';
$labels['archived'] = 'Diellet gant berzh';
$labels['buttontitle'] = 'Diellaouiñ ar gemennadenn-mañ';
$labels['archived'] = 'Diellaouet gant berzh';
$labels['archivedreload'] = 'Diellaouet gant berzh. Adkargit ar bajenn da welet an teuliad dielloù nevez.';
$labels['archiveerror'] = 'Ul lodenn eus ar c\'hemennadennoù n\'hallont ket bezañ diellaouet';
$labels['archivefolder'] = 'Diell';
$labels['settingstitle'] = 'Diell';
$labels['archivetype'] = 'Rannañ an diell dre';
$labels['archivetypeyear'] = 'Bloaz (sk: Diell/2012)';
$labels['archivetypemonth'] = 'Miz (sk: Diell/2012/06)';
$labels['archivetypefolder'] = 'Teuliad orin';
$labels['archivetypesender'] = 'Postel ar c\'haser';
$labels['unkownsender'] = 'dianav';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Mis (e.g. Archif/2012/06)';
$labels['archivetypefolder'] = 'Ffolder gwreiddiol';
$labels['archivetypesender'] = 'Ebost anfonwr';
$labels['unkownsender'] = 'anhysbys';
$labels['readonarchive'] = 'Nodi\'r neges fel darllenwyd ar archif';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Måned (f.eks. Arkiv/2012/06)';
$labels['archivetypefolder'] = 'Original mappe';
$labels['archivetypesender'] = 'Afsenders email';
$labels['unkownsender'] = 'ukendt';
$labels['readonarchive'] = 'Marker denne meddelelse som læst i arkivet';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Monat (z.B. Archiv/2012/06)';
$labels['archivetypefolder'] = 'Originalordner';
$labels['archivetypesender'] = 'Absender';
$labels['unkownsender'] = 'unbekannt';
$labels['readonarchive'] = 'Nachrichten beim Archivieren als gelesen markieren';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -18,7 +18,7 @@
$labels['buttontext'] = 'Archiv';
$labels['buttontitle'] = 'Nachricht archivieren';
$labels['archived'] = 'Nachricht erfolgreich archiviert';
$labels['archivedreload'] = 'Erfolgreich archiviert. Seite aktualisieren um die neuen Archiv-Ordner zu sehen';
$labels['archivedreload'] = 'Erfolgreich archiviert. Bitte die Seite aktualisieren, um die neuen Archivordner zu sehen.';
$labels['archiveerror'] = 'Einige Nachrichten konnten nicht archiviert werden';
$labels['archivefolder'] = 'Archiv';
$labels['settingstitle'] = 'Archiv';
@ -26,6 +26,7 @@ $labels['archivetype'] = 'Archiv aufteilen nach';
$labels['archivetypeyear'] = 'Jahr (z.B. Archiv/2012)';
$labels['archivetypemonth'] = 'Monat (z.B. Archiv/2012/06)';
$labels['archivetypefolder'] = 'Originalordner';
$labels['archivetypesender'] = 'Absender E-Mail';
$labels['archivetypesender'] = 'Absender-E-Mail';
$labels['unkownsender'] = 'unbekannt';
$labels['readonarchive'] = 'Nachricht im Archiv als gelesen markieren';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Mes (p.ej. Archivo/2012/06)';
$labels['archivetypefolder'] = 'Bandeja original';
$labels['archivetypesender'] = 'Correo electrónico del remitente';
$labels['unkownsender'] = 'desconocido';
$labels['readonarchive'] = 'Marcar el mensaje como leído al archivar';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Kuukaudella (esim. Arkisto/2012/06)';
$labels['archivetypefolder'] = 'Alkuperäinen kansio';
$labels['archivetypesender'] = 'Lähettäjän osoite';
$labels['unkownsender'] = 'tuntematon';
$labels['readonarchive'] = 'Merkitse viesti luetuksi arkistoon';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Mois (ex. Archives/2012/06)';
$labels['archivetypefolder'] = 'Dossier original';
$labels['archivetypesender'] = 'Courriel de l\'expéditeur';
$labels['unkownsender'] = 'inconnu';
$labels['readonarchive'] = 'Marquer le courriel comme lu lors de l\'archivage';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'חודש ( לדוגמה, ארכיב/2012/96 )';
$labels['archivetypefolder'] = 'תיקיה מקורית';
$labels['archivetypesender'] = 'שולח ההודעה';
$labels['unkownsender'] = 'לא ידוע';
$labels['readonarchive'] = 'יש לסמן את ההודעה בארכיב כאילו נקראה';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Honap ( pl Arhívum/2012/06)';
$labels['archivetypefolder'] = 'Eredeti mappa';
$labels['archivetypesender'] = 'Feladó';
$labels['unkownsender'] = 'ismeretlen';
$labels['readonarchive'] = 'Üzenet olvasottként jelölése arhiváláskor';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Bulan (contoh: Arsip/2012/06)';
$labels['archivetypefolder'] = 'Folder asli';
$labels['archivetypesender'] = 'Email pengirim';
$labels['unkownsender'] = 'Tidak dikenal';
$labels['readonarchive'] = 'Tandai pesan telah dibaca di arsip';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = '月 (e.g. アーカイブ/2012/06)';
$labels['archivetypefolder'] = '元のフォルダー';
$labels['archivetypesender'] = '電子メールの送信者';
$labels['unkownsender'] = '不明';
$labels['readonarchive'] = 'アーカイブでメッセージを既読に設定';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = '월 (예: 보관/2012/06)';
$labels['archivetypefolder'] = '원본 폴더';
$labels['archivetypesender'] = '발송자 이메일';
$labels['unkownsender'] = '알 수 없음';
$labels['readonarchive'] = '편지 보관함에서 메시지를 읽음으로 표시';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Miesiąca (np. Archiwum/2012/06)';
$labels['archivetypefolder'] = 'Oryginalny folder';
$labels['archivetypesender'] = 'E-mail nadawcy';
$labels['unkownsender'] = 'nieznany';
$labels['readonarchive'] = 'Podczas archiwizowania oznacz wiadomość jako przeczytaną';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Mês (isto é, Arquivo/2012/06)';
$labels['archivetypefolder'] = 'Pasta original';
$labels['archivetypesender'] = 'E-mail do remetente';
$labels['unkownsender'] = 'desconhecido';
$labels['readonarchive'] = 'Marcar a mensagem como lida ao arquivar';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Mês (ex. Arquivo/2012/06)';
$labels['archivetypefolder'] = 'Pasta original';
$labels['archivetypesender'] = 'E-mail do remetente';
$labels['unkownsender'] = 'desconhecido';
$labels['readonarchive'] = 'Marcar a mensagem como lida ao arquivar';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Месяц (например, Архив/2012/06)
$labels['archivetypefolder'] = 'Исходная папка';
$labels['archivetypesender'] = 'Адрес отправителя';
$labels['unkownsender'] = 'неизвестно';
$labels['readonarchive'] = 'Помечать как прочитанное при архивировании';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'mesiacoch (napríklad Archív/2012/06)';
$labels['archivetypefolder'] = 'Pôvodný priečinok';
$labels['archivetypesender'] = 'E-mailová adresa odosielateľa';
$labels['unkownsender'] = 'neznámy';
$labels['readonarchive'] = 'Pri archivovaní označiť správu ako prečítanú';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -15,5 +15,18 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-archive/
*/
$labels['archivetypeyear'] = 'Viti (p.sh. Arkiv/2012)';
$labels['buttontext'] = 'Arkivoje';
$labels['buttontitle'] = 'Arkivoje këtë mesazh';
$labels['archived'] = 'U arkivua me sukses';
$labels['archivedreload'] = 'U arkivua me sukses. Ringarkoni faqen që të shihni dosjet e reja arkiv.';
$labels['archiveerror'] = 'Ca nga mesazhet su arkivuan dot';
$labels['archivefolder'] = 'Arkivoje';
$labels['settingstitle'] = 'Arkivoje';
$labels['archivetype'] = 'Ndaje arkivin sipas';
$labels['archivetypeyear'] = 'Vit (p.sh. Arkiv/2012)';
$labels['archivetypemonth'] = 'Muaj (p.sh. Arkiv/2012/06)';
$labels['archivetypefolder'] = 'Dosje origjinale';
$labels['archivetypesender'] = 'Email dërguesi';
$labels['unkownsender'] = 'e panjohur';
$labels['readonarchive'] = 'I vini shenjë si të lexuar mesazhit në arkiv';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Månad (ex. Arkiv/2012/06)';
$labels['archivetypefolder'] = 'Ursprunglig katalog';
$labels['archivetypesender'] = 'Avsändaradress';
$labels['unkownsender'] = 'Okänd';
$labels['readonarchive'] = 'Märk meddelande som läst vid arkivering';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -15,17 +15,18 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-archive/
*/
$labels['buttontext'] = 'Arşiv';
$labels['buttontitle'] = 'Bu postayı arşivle';
$labels['archived'] = 'Arşivleme başarılı.';
$labels['archivedreload'] = 'Arşivleme başarılı. Yeni arşiv dosyalarını görmek için sayfayı yenileyin.';
$labels['archiveerror'] = 'Bazı mesajlar arşivlenemedi.';
$labels['buttontext'] = 'Arşivle';
$labels['buttontitle'] = 'Bu iletiyi arşivle';
$labels['archived'] = 'Arşivlendi.';
$labels['archivedreload'] = 'Arşivlendi. Yeni arşiv klasörlerini görmek için sayfayı yenileyin.';
$labels['archiveerror'] = 'Bazı iletiler arşivlenemedi';
$labels['archivefolder'] = 'Arşiv';
$labels['settingstitle'] = 'Arşiv';
$labels['archivetype'] = 'Arşivi bununla böl';
$labels['archivetype'] = 'Arşivleme şuna göre yapılsın';
$labels['archivetypeyear'] = 'Yıl (Arşiv/2012)';
$labels['archivetypemonth'] = 'Ay(Arşiv/2012/06)';
$labels['archivetypemonth'] = 'Ay (Arşiv/2012/06)';
$labels['archivetypefolder'] = 'Özgün dosya';
$labels['archivetypesender'] = 'E-Posta Göndericisi';
$labels['archivetypesender'] = 'Gönderici adresi';
$labels['unkownsender'] = 'bilinmeyen';
$labels['readonarchive'] = 'Arşivdeki ileti okunmuş olarak işaretlensin';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -28,4 +28,5 @@ $labels['archivetypemonth'] = 'Місяць (наприклад Архів/2012/
$labels['archivetypefolder'] = 'Оригінальна тека';
$labels['archivetypesender'] = 'Відправник email';
$labels['unkownsender'] = 'невідомо';
$labels['readonarchive'] = 'Позначити повідомлення як прочитане по архіву';
?>

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -5,7 +5,7 @@
| plugins/archive/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, The Roundcube Dev Team |
| Copyright (C) 2016, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |

@ -0,0 +1,20 @@
<?php
/*
+-----------------------------------------------------------------------+
| plugins/attachment_reminder/localization/<lang>.inc |
| |
| Localization file of the Roundcube Webmail Archive plugin |
| Copyright (C) 2013, 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/
*/
$messages['forgotattachment'] = "Mos harruat të bashkëngjitni një kartelë?";
$messages['reminderoption'] = "Kujtoji për bashkëngjitje të harruara";
$messages['keywords'] = "bashkëngjitje,skedar,kartelë,bashkëngjite,bashkëngjitur,përfshirë,CV,letër shoqëruese";

@ -16,5 +16,5 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/
*/
$messages['forgotattachment'] = "Dosya eklemeyi mi unuttunuz?";
$messages['reminderoption'] = "Dosya ek(ler)i unutulduysa hatırlat.";
$messages['reminderoption'] = "Dosya ekleme unutulduysa hatırlatılsın";
$messages['keywords'] = "ekleme,dosya,ek,eklenildi,ekleniliyor,ekteki,CV,mektup";

@ -3,6 +3,10 @@
// By default this plugin stores attachments in filesystem
// and copies them into sql database.
// You can change it to use 'memcache' or 'apc'.
// -----------------------------------------------------------
// WARNING: Remember to set max_allowed_packet in database or
// config to match with expected max attachment size.
// -----------------------------------------------------------
$config['database_attachments_cache'] = 'db';
// Attachment data expires after specied TTL time in seconds (max.2592000).

@ -85,6 +85,8 @@ class database_attachments extends filesystem_attachments
if ($args['data'] === false) {
return $args;
}
$args['path'] = null;
}
$data = base64_encode($args['data']);
@ -131,10 +133,13 @@ class database_attachments extends filesystem_attachments
$cache = $this->get_cache();
$data = $cache->read($args['id']);
if ($data) {
if ($data !== null && $data !== false) {
$args['data'] = base64_decode($data);
$args['status'] = true;
}
else {
$args['status'] = false;
}
return $args;
}

@ -55,6 +55,12 @@ KNOWN ISSUES:
There are some know issues with accepting key passphrases on various
system configurations. This is caused by issues in PinEntry handling.
Make sure that vendor/bin/crypt-gpg-pinentry works from command line.
Possible reasons:
- non-supported GnuPG version, i.e. >= 2.1
- non-working loader in shebang (#! /usr/bin/env php)
Make sure it works for the user the php scripts are executed upon
(i.e. apache, www-date, etc.)
- SELinux setting, try command: setsebool -P httpd_unified 0
Note: for server use GnuPG developers still recommend version 1.4.

@ -3,7 +3,7 @@
"type": "roundcube-plugin",
"description": "PGP Encryption for Roundcube",
"license": "GPLv3+",
"version": "0.5",
"version": "0.6",
"authors": [
{
"name": "Aleksander Machniak",
@ -24,6 +24,6 @@
"require": {
"php": ">=5.3.0",
"roundcube/plugin-installer": "~0.1.6",
"pear-pear.php.net/crypt_gpg": "~1.4.1"
"pear-pear.php.net/crypt_gpg": "~1.4.2"
}
}

@ -16,6 +16,14 @@ $config['enigma_debug'] = false;
// Must be writeable by PHP process
$config['enigma_pgp_homedir'] = null;
// Location of gpg binary. By default it will be auto-detected.
// This is also a way to force gpg2 use if there are both 1.x and 2.x on the system.
$config['enigma_pgp_binary'] = '';
// Location of gpg-agent binary. By default it will be auto-detected.
// It's used with GnuPG 2.x.
$config['enigma_pgp_agent'] = '';
// Enables signatures verification feature.
$config['enigma_signatures'] = true;

@ -150,12 +150,50 @@ rcube_webmail.prototype.enigma_delete = function()
// Export key(s)
rcube_webmail.prototype.enigma_export = function(selected)
{
var keys = selected ? this.keys_list.get_selection().join(',') : '*';
var priv = false,
list = this.keys_list,
keys = selected ? list.get_selection().join(',') : '*',
args = {_a: 'export', _keys: keys};
if (!keys.length)
return;
this.goto_url('plugin.enigmakeys', {_a: 'export', _keys: keys}, false, true);
// find out wether selected keys are private
if (keys == '*')
priv = true;
else
$.each(list.get_selection(), function() {
flags = $(list.rows[this].obj).data('flags');
if (flags && flags.indexOf('p') >= 0) {
priv = true;
return false;
}
});
// ask the user about including private key in the export
if (priv)
return this.show_popup_dialog(
this.get_label('enigma.keyexportprompt'),
this.get_label('enigma.exportkeys'),
[{
text: this.get_label('enigma.onlypubkeys'),
click: function(e) {
rcmail.goto_url('plugin.enigmakeys', args, false, true);
$(this).remove();
}
},
{
text: this.get_label('enigma.withprivkeys'),
click: function(e) {
args._priv = 1;
rcmail.goto_url('plugin.enigmakeys', args, false, true);
$(this).remove();
}
}],
{width: 400}
);
this.goto_url('plugin.enigmakeys', args, false, true);
};
// Submit key(s) import form
@ -228,10 +266,10 @@ rcube_webmail.prototype.enigma_search = function(props)
props = this.gui_objects.qsearchbox.value;
if (props || this.env.search_request) {
var params = {'_a': 'search', '_q': urlencode(props)},
var params = {'_a': 'search', '_q': props},
lock = this.set_busy(true, 'searching');
// if (this.gui_objects.search_filter)
// addurl += '&_filter=' + this.gui_objects.search_filter.value;
// addurl += '&_filter=' + this.gui_objects.search_filter.value;
this.env.current_page = 1;
this.enigma_loadframe();
this.enigma_clear_list();
@ -318,6 +356,7 @@ rcube_webmail.prototype.enigma_add_list_row = function(r)
row.id = 'rcmrow' + r.id;
row.className = css_class;
if (r.flags) $(row).data('flags', r.flags);
col.innerHTML = r.name;
row.appendChild(col);
@ -446,17 +485,26 @@ rcube_webmail.prototype.enigma_password_submit = function(data)
return this.enigma_password_compose_submit(data);
}
var lock = this.set_busy(true, 'loading');
// message preview
var form = $('<form>').attr({method: 'post', action: location.href, style: 'display:none'})
var lock = this.set_busy(true, 'loading'),
form = $('<form>').attr({method: 'post', action: data.action || location.href, style: 'display:none'})
.append($('<input>').attr({type: 'hidden', name: '_keyid', value: data.key}))
.append($('<input>').attr({type: 'hidden', name: '_passwd', value: data.password}))
.append($('<input>').attr({type: 'hidden', name: '_token', value: this.env.request_token}))
.append($('<input>').attr({type: 'hidden', name: '_unlock', value: lock}))
.appendTo(document.body);
.append($('<input>').attr({type: 'hidden', name: '_unlock', value: lock}));
// Additional form fields for request parameters
$.each(data, function(i, v) {
if (i.indexOf('input') == 0)
form.append($('<input>').attr({type: 'hidden', name: i.substring(5), value: v}))
});
if (data.iframe) {
var name = 'enigma_frame_' + (new Date()).getTime(),
frame = $('<iframe>').attr({style: 'display:none', name: name}).appendTo(document.body);
form.attr('target', name);
}
form.submit();
form.appendTo(document.body).submit();
}
// submit entered password - in mail compose page

@ -462,9 +462,9 @@ class enigma extends rcube_plugin
*/
function import_file()
{
$this->load_engine();
$this->load_ui();
$this->engine->import_file();
$this->ui->import_file();
}
/**

@ -85,10 +85,11 @@ abstract class enigma_driver
* Key/Cert export.
*
* @param string Key ID
* @param bool Include private key
*
* @return mixed Key content or enigma_error
*/
abstract function export($key);
abstract function export($key, $with_private = false);
/**
* Keys listing.

@ -41,41 +41,57 @@ class enigma_driver_gnupg extends enigma_driver
{
$homedir = $this->rc->config->get('enigma_pgp_homedir', INSTALL_PATH . 'plugins/enigma/home');
$debug = $this->rc->config->get('enigma_debug');
$binary = $this->rc->config->get('enigma_pgp_binary');
$agent = $this->rc->config->get('enigma_pgp_agent');
if (!$homedir)
if (!$homedir) {
return new enigma_error(enigma_error::INTERNAL,
"Option 'enigma_pgp_homedir' not specified");
}
// check if homedir exists (create it if not) and is readable
if (!file_exists($homedir))
if (!file_exists($homedir)) {
return new enigma_error(enigma_error::INTERNAL,
"Keys directory doesn't exists: $homedir");
if (!is_writable($homedir))
}
if (!is_writable($homedir)) {
return new enigma_error(enigma_error::INTERNAL,
"Keys directory isn't writeable: $homedir");
}
$homedir = $homedir . '/' . $this->user;
// check if user's homedir exists (create it if not) and is readable
if (!file_exists($homedir))
if (!file_exists($homedir)) {
mkdir($homedir, 0700);
}
if (!file_exists($homedir))
if (!file_exists($homedir)) {
return new enigma_error(enigma_error::INTERNAL,
"Unable to create keys directory: $homedir");
if (!is_writable($homedir))
}
if (!is_writable($homedir)) {
return new enigma_error(enigma_error::INTERNAL,
"Unable to write to keys directory: $homedir");
}
$this->homedir = $homedir;
$options = array('homedir' => $this->homedir);
if ($debug) {
$options['debug'] = array($this, 'debug');
}
if ($binary) {
$options['binary'] = $binary;
}
if ($agent) {
$options['agent'] = $agent;
}
// Create Crypt_GPG object
try {
$this->gpg = new Crypt_GPG(array(
'homedir' => $this->homedir,
// 'binary' => '/usr/bin/gpg2',
'debug' => $debug ? array($this, 'debug') : false,
));
$this->gpg = new Crypt_GPG($options);
}
catch (Exception $e) {
return $this->get_error_from_exception($e);
@ -191,13 +207,21 @@ class enigma_driver_gnupg extends enigma_driver
* Key export.
*
* @param string Key ID
* @param bool Include private key
*
* @return mixed Key content or enigma_error
*/
public function export($keyid)
public function export($keyid, $with_private = false)
{
try {
return $this->gpg->exportPublicKey($keyid, true);
$key = $this->gpg->exportPublicKey($keyid, true);
if ($with_private) {
$priv = $this->gpg->exportPrivateKey($keyid, true);
$key .= $priv;
}
return $key;
}
catch (Exception $e) {
return $this->get_error_from_exception($e);
@ -257,6 +281,8 @@ class enigma_driver_gnupg extends enigma_driver
*/
public function gen_key($data)
{
require_once 'Crypt/GPG/KeyGenerator.php';
try {
$debug = $this->rc->config->get('enigma_debug');
$keygen = new Crypt_GPG_KeyGenerator(array(
@ -385,17 +411,20 @@ class enigma_driver_gnupg extends enigma_driver
*/
protected function parse_signature($sig)
{
$user = $sig->getUserId();
$data = new enigma_signature();
$data->id = $sig->getId();
$data->valid = $sig->isValid();
$data->fingerprint = $sig->getKeyFingerprint();
$data->created = $sig->getCreationDate();
$data->expires = $sig->getExpirationDate();
$data->name = $user->getName();
$data->comment = $user->getComment();
$data->email = $user->getEmail();
// In case of ERRSIG user may not be set
if ($user = $sig->getUserId()) {
$data->name = $user->getName();
$data->comment = $user->getComment();
$data->email = $user->getEmail();
}
return $data;
}

@ -126,6 +126,10 @@ class enigma_driver_phpssl extends enigma_driver
{
}
public function export($key, $with_private = false)
{
}
public function list_keys($pattern='')
{
}

@ -404,11 +404,6 @@ class enigma_engine
{
$part = $p['structure'];
// exit, if we're already inside a decrypted message
if (in_array($part->mime_id, $this->encrypted_parts)) {
return;
}
// Get message body from IMAP server
if ($body === null) {
$body = $this->get_part_body($p['object'], $part);
@ -626,23 +621,33 @@ class enigma_engine
$sig_part = $struct->parts[1];
// Get bodies
// Note: The first part body need to be full part body with headers
// it also cannot be decoded
if ($body !== null) {
// set signed part body
list($msg_body, $sig_body) = $this->explode_signed_body($body, $struct->ctype_parameters['boundary']);
if ($body === null) {
if (!$struct->body_modified) {
$body = $this->get_part_body($p['object'], $struct);
}
}
else {
$msg_body = $this->get_part_body($p['object'], $msg_part, true);
$sig_body = $this->get_part_body($p['object'], $sig_part);
$boundary = $struct->ctype_parameters['boundary'];
// when it is a signed message forwarded as attachment
// ctype_parameters property will not be set
if (!$boundary && $struct->headers['content-type']
&& preg_match('/boundary="?([a-zA-Z0-9\'()+_,-.\/:=?]+)"?/', $struct->headers['content-type'], $m)
) {
$boundary = $m[1];
}
// set signed part body
list($msg_body, $sig_body) = $this->explode_signed_body($body, $boundary);
// Verify
$sig = $this->pgp_verify($msg_body, $sig_body);
if ($sig_body && $msg_body) {
$sig = $this->pgp_verify($msg_body, $sig_body);
// Store signature data for display
$this->signatures[$struct->mime_id] = $sig;
$this->signatures[$msg_part->mime_id] = $sig;
// Store signature data for display
$this->signatures[$struct->mime_id] = $sig;
$this->signatures[$msg_part->mime_id] = $sig;
}
}
/**
@ -1051,7 +1056,7 @@ class enigma_engine
}
/**
* PGP keys/certs importing.
* PGP keys/certs import.
*
* @param mixed Import file name or content
* @param boolean True if first argument is a filename
@ -1071,7 +1076,7 @@ class enigma_engine
), true, false);
}
else {
$result['imported'] = $result['public_imported'] + $result['private_imported'];
$result['imported'] = $result['public_imported'] + $result['private_imported'];
$result['unchanged'] = $result['public_unchanged'] + $result['private_unchanged'];
}
@ -1079,42 +1084,18 @@ class enigma_engine
}
/**
* Handler for keys/certs import request action
*/
function import_file()
{
$uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST);
$mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST);
$mime_id = rcube_utils::get_input_value('_part', rcube_utils::INPUT_POST);
$storage = $this->rc->get_storage();
if ($uid && $mime_id) {
$storage->set_folder($mbox);
$part = $storage->get_message_part($uid, $mime_id);
}
if ($part && is_array($result = $this->import_key($part))) {
$this->rc->output->show_message('enigma.keysimportsuccess', 'confirmation',
array('new' => $result['imported'], 'old' => $result['unchanged']));
}
else
$this->rc->output->show_message('enigma.keysimportfailed', 'error');
$this->rc->output->send();
}
/**
* PGP keys/certs export..
* PGP keys/certs export.
*
* @param string Key ID
* @param resource Optional output stream
* @param bool Include private key
*
* @return mixed Key content or enigma_error
*/
function export_key($key, $fp = null)
function export_key($key, $fp = null, $include_private = false)
{
$this->load_pgp_driver();
$result = $this->pgp_driver->export($key, $fp);
$result = $this->pgp_driver->export($key, $include_private);
if ($result instanceof enigma_error) {
rcube::raise_error(array(
@ -1199,16 +1180,29 @@ class enigma_engine
*
* @param rcube_message Message object
* @param rcube_message_part Message part
* @param bool Return raw body with headers
*/
private function get_part_body($msg, $part, $full = false)
private function get_part_body($msg, $part)
{
// @TODO: Handle big bodies using file handles
if ($full) {
// This is a special case when we want to get the whole body
// using direct IMAP access, in other cases we prefer
// rcube_message::get_part_body() as the body may be already in memory
if (!$part->mime_id) {
// fake the size which may be empty for multipart/* parts
// otherwise get_message_part() below will fail
if (!$part->size) {
$reset = true;
$part->size = 1;
}
$storage = $this->rc->get_storage();
$body = $storage->get_raw_headers($msg->uid, $part->mime_id);
$body .= $storage->get_raw_body($msg->uid, null, $part->mime_id);
$body = $storage->get_message_part($msg->uid, $part->mime_id, $part,
null, null, true, 0, false);
if ($reset) {
$part->size = 0;
}
}
else {
$body = $msg->get_part_body($part->mime_id, false);

@ -91,6 +91,20 @@ class enigma_key
return false;
}
/**
* Returns true if any of subkeys is a private key
*/
function is_private()
{
$now = time();
foreach ($this->subkeys as $subkey)
if ($subkey->has_private)
return true;
return false;
}
/**
* Get key ID by user email
*/
@ -99,7 +113,7 @@ class enigma_key
$now = time();
foreach ($this->users as $user) {
if ($user->email === $email && $user->valid && !$user->revoked) {
if (strcasecmp($user->email, $email) === 0 && $user->valid && !$user->revoked) {
foreach ($this->subkeys as $subkey) {
if (!$subkey->revoked && (!$subkey->expires || $subkey->expires > $now)) {
if ($subkey->usage & $mode) {

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

Loading…
Cancel
Save