| Server IP : 103.161.17.216 / Your IP : 216.73.216.1 Web Server : nginx/1.18.0 System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/roundcube/plugins/enigma/lib/ |
Upload File : |
<?php
/**
+-------------------------------------------------------------------------+
| Signature class for the Enigma Plugin |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-------------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-------------------------------------------------------------------------+
*/
class enigma_signature
{
public $id;
public $valid;
public $fingerprint;
public $created;
public $expires;
public $name;
public $comment;
public $email;
// Set it to true if signature is valid, but part of the message
// was out of the signed block
public $partial;
/**
* Find key user id matching the email message sender
*
* @param enigma_engine $engine Enigma engine
* @param rcube_message $message Message object
* @param string $part_id Message part identifier
*
* @return string User identifier (name + email)
*/
public function get_sender($engine, $message, $part_id = null)
{
if (!$this->email) {
return $this->name;
}
if ($this->fingerprint && ($key = $engine->get_key($this->fingerprint))) {
$from = $message->headers->from;
$charset = $message->headers->charset;
// Get From: header from the parent part, if it's a forwarded message
if ($part_id && strpos($part_id, '.') !== false) {
$level = explode('.', $part_id);
$parts = $message->mime_parts();
while (array_pop($level) !== null) {
$parent = join('.', $level);
if (!empty($parts[$parent]) && $parts[$parent]->mimetype == 'message/rfc822') {
$from = $parts[$parent]->headers['from'];
$charset = $parts[$parent]->charset;
break;
}
}
}
$from = rcube_mime::decode_address_list($from, 1, true, $charset);
$from = (array) $from[1];
if (!empty($from)) {
// Compare name and email
foreach ($key->users as $user) {
if ($user->name == $from['name'] && $user->email == $from['mailto']) {
return sprintf('%s <%s>', $user->name, $user->email);
}
}
// Compare only email
foreach ($key->users as $user) {
if ($user->email === $from['mailto']) {
return sprintf('%s <%s>', $this->name, $user->email);
}
}
}
}
return sprintf('%s <%s>', $this->name, $this->email);
}
}