pax_global_header00006660000000000000000000000064137163223530014517gustar00rootroot0000000000000052 comment=1d0fd7696ab70045434ed809da3106ca3c81c217 authres_status-0.6.2/000077500000000000000000000000001371632235300146025ustar00rootroot00000000000000authres_status-0.6.2/.gitignore000066400000000000000000000000571371632235300165740ustar00rootroot00000000000000.git *.bak composer.lock vendor config.inc.php authres_status-0.6.2/.tx/000077500000000000000000000000001371632235300153135ustar00rootroot00000000000000authres_status-0.6.2/.tx/config000066400000000000000000000003441371632235300165040ustar00rootroot00000000000000[main] host = https://www.transifex.com lang_map = be: be_BE, sr: sr_CS, fa: fa_AF, lb: lb_LU, fr: fr_FR [roundcube-webmail.plugin-authres_status] file_filter = localization/.inc source_lang = en_US type = PHP_ALT_ARRAY authres_status-0.6.2/LICENSE000077500000000000000000000012711371632235300156130ustar00rootroot00000000000000authres_status plugin for Roundcube Webmail IMAP Client Copyright (C) 2016, pimlie This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . authres_status-0.6.2/README.md000077500000000000000000000054321371632235300160700ustar00rootroot00000000000000# authres_status plugin for roundcube This plugin checks the Authentication-Results headers that were added by your MTA and displays an icon to show the verification status. Parsing of the Authentication-Results headers is more or less done according to [RFC5451](https://tools.ietf.org/html/rfc5451) which supports DKIM, DomainKeys, SPF, Sender-ID, iprev and SMTP AUTH result values. This plugin is partially based on [dkimstatus](https://github.com/jvehent/dkimstatus) by jvehent, which was based on a plugin by [Vladimir Mach](http://www.wladik.net). Icons by [brankic1979](http://brankic1979.com/icons); ## Install If not using composer, copy all files to your plugins/ folder and add 'authres_status' to your $config['plugins'] array in config/main.inc.php or config/config.inc.php. ## Configuration If you want to enable the results column in your message list, enable this in your settings. You can also choose which statuses you would like to see/ignore. As of version 0.2 you can also enable an internal DKIM verifier ([php-dkim](https://github.com/pimlie/php-dkim) by angrychimp) if your MTA did not add a Authentication-Results header. You could experience some slow down because we need to retrieve the whole message body of each message for which we run the verifier. ### Trusted mta's (since v0.3) An email can be passed through many mta's before it finally ends up in your mailbox. Each mta can add additional headers to the email, thus also Authentication-Result headers. This makes it possible for a malicious mta to add a Authentication-Result header that has a passing result, eventhough the signature is invalid (or not existing). Section [2.2](https://tools.ietf.org/html/rfc5451#section-2.2) of RFC5451 states that every Authentication-Result headers should start with an authserv-id which has a similar syntax as a fully-qualified domain name. Often the authserv-id is equal to the fqdn of the mta. Since version 0.3 you can add a comma separated list of authserv-id's that you trust, then only results from those mta's will be displayed. If you are not sure what the authserv-id from your mta is, toggle the 'raw message headers' display in the preview pane and look for a **Authentication-Results** header. It should look like: ``` Authentication-Results: example.com; sender-id=hardfail header.from=example.com; dkim=pass (good signature) header.i=sender@example.com ``` The text between `Authentication-Results:` and the first `;` is the authserv-id, in the example above it is `example.com`. ## Tested Tested on Roundcube 1.0.0+, let me know if it works on previous version as well ## Known issues - After changing layouts (e.g. from list to widescreen) you need to refresh the page to correctly show the authentication status column authres_status-0.6.2/authres_status.js000077500000000000000000000016701371632235300202250ustar00rootroot00000000000000/* * authres_status plugin * @author pimlie */ var authres_status = { initColumn: function() { $('#rcmauthres_status span').html(' '); var li = ''; $("#listoptions-columns ul.proplist").append('
  • '+li+'
  • '); }, insertrow: function(evt) { if (typeof(rcmail.env.authres_flags[evt.uid]) !== "undefined") { $('.fromto', evt.row.obj).prepend($('').html(rcmail.env.authres_flags[evt.uid])); } } }; window.rcmail && rcmail.addEventListener('init', function(evt) { if (rcmail.env.layout == 'widescreen') { if (rcmail.gui_objects.messagelist) { rcmail.addEventListener('insertrow', authres_status.insertrow); } } else { authres_status.initColumn(); } }); authres_status-0.6.2/authres_status.php000077500000000000000000000542461371632235300204070ustar00rootroot00000000000000 self::STATUS_NOSIG, "pass" => self::STATUS_PASS, "fail" => self::STATUS_FAIL, "policy" => self::STATUS_FAIL, "neutral" => self::STATUS_WARN, "temperror" => self::STATUS_WARN, "permerror" => self::STATUS_FAIL, "hardfail" => self::STATUS_FAIL, "softfail" => self::STATUS_WARN ); private static $RFC5451_ptypes = array("smtp", "header", "body", "policy"); private static $RFC5451_properties = array("auth", "d", "i", "from", "sender", "iprev", "mailfrom", "helo"); private $override; private $img_status; private $message_headers_done = false; private $trusted_mtas = []; public function init() { $this->add_texts('localization', true); $rcmail = rcmail::get_instance(); $this->load_config(); $this->add_hook('storage_init', array($this, 'storage_init')); $this->add_hook('messages_list', array($this, 'messages_list')); $this->add_hook('message_headers_output', array($this, 'message_headers')); $this->add_hook('template_object_messagesummary', array($this, 'message_summary')); $dont_override = $rcmail->config->get('dont_override', array()); $this->override = array( 'list_cols' => !in_array('list_cols', $dont_override), 'column' => !in_array('enable_authres_status_column', $dont_override), 'fallback' => !in_array('use_fallback_verifier', $dont_override), 'statuses' => !in_array('show_statuses', $dont_override), 'trusted_mtas' => !in_array('trusted_mtas', $dont_override), ); if ($this->override['list_cols']) { $this->include_stylesheet($this->local_skin_path() . '/authres_status.css'); if ($rcmail->config->get('enable_authres_status_column')) { $this->include_script('authres_status.js'); } if ($this->override['column'] || $this->override['fallback'] || $this->override['statuses']) { $this->add_hook('preferences_list', array($this, 'preferences_list')); $this->add_hook('preferences_sections_list', array($this, 'preferences_section')); $this->add_hook('preferences_save', array($this, 'preferences_save')); } } $this->trusted_mtas = $rcmail->config->get('trusted_mtas', array()); } public function storage_init($p) { $p['fetch_headers'] = trim($p['fetch_headers'] . ' ' . strtoupper('Authentication-Results') . ' ' . strtoupper('X-DKIM-Authentication-Results') . ' ' . strtoupper('X-Spam-Status') . ' ' . strtoupper('DKIM-Signature') . ' ' . strtoupper('DomainKey-Signature')); return $p; } public function preferences_list($args) { if ($args['section'] == 'authres_status') { $rcmail = rcmail::get_instance(); if ($this->override['column'] || $this->override['fallback']) { $args['blocks']['authrescolumn']['name'] = $this->gettext('title_enable_column'); if ($this->override['column']) { $args['blocks']['authrescolumn']['options']['enable']['title'] = $this->gettext('label_enable_column'); $input = new html_checkbox(array('name' => '_enable_authres_status_column', 'id' => 'enable_authres_status_column', 'value' => 1)); $args['blocks']['authrescolumn']['options']['enable']['content'] = $input->show($rcmail->config->get('enable_authres_status_column')); } if ($this->override['fallback']) { $args['blocks']['authrescolumn']['options']['fallback']['title'] = $this->gettext('label_fallback_verifier'); $input = new html_checkbox(array('name' => '_use_fallback_verifier', 'id' => 'use_fallback_verifier', 'value' => 1)); $args['blocks']['authrescolumn']['options']['fallback']['content'] = $input->show($rcmail->config->get('use_fallback_verifier')); } } if ($this->override['trusted_mtas']) { $args['blocks']['authrestrusted']['name'] = $this->gettext('title_trusted_mtas'); $args['blocks']['authrestrusted']['options']['trusted_mtas']['title'] = $this->gettext('label_trusted_mtas'); $input = new html_inputfield(array('name' => '_trusted_mtas', 'id' => 'trusted_mtas')); $args['blocks']['authrestrusted']['options']['trusted_mtas']['content'] = $input->show(implode(",", (array)$rcmail->config->get('trusted_mtas'))); } if ($this->override['statuses']) { $statuses = array(1, 2, 4, 8, 16, 32, 64); $show_statuses = $rcmail->config->get('show_statuses'); if ($show_statuses === null) { $show_statuses = array_sum($statuses) - self::STATUS_NOSIG; } foreach ($statuses as $status) { $args['blocks']['authresstatus']['name'] = $this->gettext('title_include_status'); $args['blocks']['authresstatus']['options']['enable' . $status]['title'] = $this->gettext('label_include_status' . $status); $input = new html_checkbox(array('name' => '_show_statuses[]', 'id' => 'enable_authres_status_' . $status, 'value' => $status)); $args['blocks']['authresstatus']['options']['enable' . $status]['content'] = $input->show(($show_statuses & $status)); } } } return $args; } public function preferences_section($args) { $args['list']['authres_status'] = array( 'id' => 'authres_status', 'section' => rcube_utils::rep_specialchars_output($this->gettext('section_title')) ); return $args; } public function preferences_save($args) { if ($args['section'] == 'authres_status') { $args['prefs']['enable_authres_status_column'] = isset($_POST["_enable_authres_status_column"]) && $_POST["_enable_authres_status_column"] == 1; $list_cols = rcmail::get_instance()->config->get('list_cols'); $args['prefs']['use_fallback_verifier'] = isset($_POST["_use_fallback_verifier"]) && $_POST["_use_fallback_verifier"] == 1; if (isset($_POST['_trusted_mtas'])) { $trusted_mtas = array_map(function($value) { return trim($value); }, explode(",", $_POST["_trusted_mtas"])); $args['prefs']['trusted_mtas'] = array_diff($trusted_mtas, array("")); } else { $args['prefs']['trusted_mtas'] = array(); } if (!is_array($list_cols)) { $list_cols = array(); } if ($args['prefs']['enable_authres_status_column']) { if (!in_array('authres_status', $list_cols)) { $list_cols[] = 'authres_status'; } } else { $list_cols = array_diff($list_cols, array('authres_status')); } $args['prefs']['list_cols'] = $list_cols; if (is_array($_POST["_show_statuses"])) { $args['prefs']['show_statuses'] = (int)array_sum($_POST["_show_statuses"]); } } return $args; } public function messages_list($p) { if (!empty($p['messages'])) { $rcmail = rcmail::get_instance(); if ($rcmail->config->get('enable_authres_status_column')) { $layout = $rcmail->config->get('layout'); if ($layout == 'widescreen') { $authres_flags = array(); } $show_statuses = (int)$rcmail->config->get('show_statuses'); foreach ($p['messages'] as $index => $message) { $img_status = $this->get_authentication_status($message, $show_statuses, $message->uid); if ($layout == 'widescreen') { $authres_flags[$message->uid] = $img_status; } else { $p['messages'][$index]->list_cols['authres_status'] = $img_status; } } if ($layout == 'widescreen') { $rcmail->output->set_env('authres_flags', $authres_flags); } } } return $p; } private function populate_message_headers($p){ /* We only have to check the headers once and this method is executed more than once, /* so let's cache the result */ if (!$this->message_headers_done) { $this->message_headers_done = true; $show_statuses = (int)rcmail::get_instance()->config->get('show_statuses'); $this->img_status = $this->get_authentication_status($p['headers'], $show_statuses, (int)$_GET["_uid"]); } } public function message_headers($p) { $this->populate_message_headers($p); $p['output']['from']['value'] = $this->img_status . $p['output']['from']['value']; $p['output']['from']['html'] = true; return $p; } public function message_summary($p){ return array('content' => preg_replace('/(.*)()/', '$1' . $this->img_status . ' $2 ', $p['content'])); } /* See https://tools.ietf.org/html/rfc5451 */ public function rfc5451_extract_authresheader($headers) { if (!is_array($headers)) { $headers = array($headers); } //rfc2822 token setup $crlf = "(?:\r\n)"; $wsp = "[\t ]"; $text = "[\\x01-\\x09\\x0B\\x0C\\x0E-\\x7F]"; $quoted_pair = "(?:\\\\$text)"; $fws = "(?:(?:$wsp*$crlf)?$wsp+)"; $ctext = "[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F" . "!-'*-[\\]-\\x7F]"; $comment = "(\\((?:$fws?(?:$ctext|$quoted_pair|(?1)))*" . "$fws?\\))"; $cfws = "(?:(?:$fws?$comment)*(?:(?:$fws?$comment)|$fws))" . "?"; $atom = "[a-z0-9!#$%&\'*+-\/=?^_`{|}~]+"; $results = array(); foreach ($headers as $header) { $authservid = false; if (preg_match('/^' . $cfws . '((?=.{1,254}$)((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}(\/[^\s]*)?)' . $cfws . '(\(.*?\))?' . $cfws . ';/i', trim($header), $m)) { $authservid = $m[3]; $header = substr($header, strlen($m[0])); } if (!$authservid || !count($this->trusted_mtas) || in_array($authservid, $this->trusted_mtas)) { $resinfos = array(); $header_parts = explode(";", $header); while (count($header_parts)) { $header_part = array_shift($header_parts); // check whether part is not from within comment, eg 'dkim=pass (1024-bit key; insecure key)' should be matched as one if (preg_match('/\([^)]*$/', $header_part)) { $resinfos[] = trim($header_part . ';' . array_shift($header_parts)); } else { $resinfos[] = trim($header_part); } } foreach ($resinfos as $resinfo) { if (preg_match('/^(' . implode("|", self::$RFC5451_authentication_methods) . ')' . $cfws . '=' . $cfws . '(' . implode("|", array_keys(self::$RFC5451_authentication_results)) . ')' . $cfws . '(\(.*?\))?/i', $resinfo, $m, PREG_OFFSET_CAPTURE)) { $parsed_resinfo = array( 'title' => trim($m[0][0]), 'method' => $m[1][0], 'result' => $m[6][0], 'reason' => isset($m[7]) ? $m[7][0] : '', 'props' => array() ); $propspec = trim(($m[0][1] > 0 ? substr($resinfo, 0, $m[0][1]) : '') . substr($resinfo, strlen($m[0][0]))); if ($propspec) { if (preg_match_all('/(' . implode("|", self::$RFC5451_ptypes) . ')' . $cfws . '\.' . $cfws . '(' . implode("|", self::$RFC5451_properties) . ')' . $cfws . '=' . $cfws . '([^\s]*)/i', $propspec, $m)) { foreach ($m[0] as $k => $v) { if (!isset($parsed_resinfo['props'][$m[1][$k]])) { $parsed_resinfo['props'][$m[1][$k]] = array(); } $parsed_resinfo['props'][$m[1][$k]] [$m[6][$k]] = $m[11][$k]; } } } $results[] = $parsed_resinfo; } } } } return $results; } public function get_authentication_status($headers, $show_statuses = 0, $uid = 0) { /* If dkimproxy did not find a signature, stop here */ if (($results = $headers->others['x-dkim-authentication-results']) && strpos($results, 'none') !== false) { $status = self::STATUS_NOSIG; } else { if ($headers->others['authentication-results']) { $results = $this->rfc5451_extract_authresheader($headers->others['authentication-results']); $status = 0; $title = ''; foreach ($results as $result) { $status = $status | (isset(self::$RFC5451_authentication_results[$result['result']]) ? self::$RFC5451_authentication_results[$result['result']] : self::STATUS_FAIL); $title .= ($title ? '; ' : '') . $result['title']; } if ($status == self::STATUS_PASS) { /* Verify if its an author's domain signature or a third party */ if (preg_match("/[@]([a-zA-Z0-9]+([.][a-zA-Z0-9]+)?\.[a-zA-Z]{2,4})/", $headers->from, $m)) { $title = ''; $authorDomain = $m[1]; $authorDomainFound = false; foreach ($results as $result) { if ($result['method'] == 'dkim' || $result['method'] == 'domainkeys') { if (is_array($result['props']) && isset($result['props']['header'])) { $pvalue = ''; // d is required, but still not always present if (isset($result['props']['header']['d'])) { $pvalue = $result['props']['header']['d']; } elseif (isset($result['props']['header']['i'])) { $pvalue = substr($result['props']['header']['i'], strpos($result['props']['header']['i'], '@') + 1); } if ($pvalue == $authorDomain || substr($authorDomain, -1 * strlen($pvalue)) == $pvalue) { $authorDomainFound = true; if ($status != self::STATUS_PASS) { $status = self::STATUS_PASS; $title = $result['title']; } else { $title.= ($title ? '; ' : '') . $result['title']; } } else { if ($status == self::STATUS_THIRD) { $title .= '; ' . $this->gettext('for') . ' ' . $pvalue . ' ' . $this->gettext('by') . ' ' . $result['title']; } elseif (!$authorDomainFound) { $status = self::STATUS_THIRD; $title = $pvalue . ' ' . $this->gettext('by') . ' ' . $result['title']; } } } } } } } if (!$status) { $status = self::STATUS_NOSIG; } /* Check for spamassassin's X-Spam-Status */ } elseif ($headers->others['x-spam-status']) { $status = self::STATUS_NOSIG; /* DKIM_* are defined at: http://search.cpan.org/~kmcgrail/Mail-SpamAssassin-3.3.2/lib/Mail/SpamAssassin/Plugin/DKIM.pm */ $results = $headers->others['x-spam-status']; if (is_array($results)) { $results = end($results); // Should we take first or last header found? Last has probably been added by our own MTA } if (preg_match_all('/DKIM_[^,=]+/', $results, $m)) { if (array_search('DKIM_SIGNED', $m[0]) !== false) { if (array_search('DKIM_VALID', $m[0]) !== false) { if (array_search('DKIM_VALID_AU', $m[0])) { $status = self::STATUS_PASS; $title = 'DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU'; } else { $status = self::STATUS_THIRD; $title = 'DKIM_SIGNED, DKIM_VALID'; } } else { $status = self::STATUS_FAIL; $title = 'DKIM_SIGNED'; } } } } elseif ($headers->others['dkim-signature'] || $headers->others['domainkey-signature']) { $status = 0; if ($uid) { $rcmail = rcmail::get_instance(); if ($headers->others['dkim-signature'] && $rcmail->config->get('use_fallback_verifier')) { if (!class_exists('Crypt_RSA')) { $autoload = require __DIR__ . "/../../vendor/autoload.php"; $autoload->loadClass('Crypt_RSA'); // Preload for use in DKIM_Verify } try { $dkimVerify = new DKIM_Verify($rcmail->imap->get_raw_body($uid)); $results = $dkimVerify->validate(); } catch(Exception $e) { $results = array(); $status = self::STATUS_NOSIG; $title = "Exception thrown by internal verifier: " . $e->getMessage(); } if (count($results)) { $status = 0; $title = ''; foreach ($results as $result) { foreach ($result as $res) { if (count($res)) { $status = $status | (isset(self::$RFC5451_authentication_results[$res['status']]) ? self::$RFC5451_authentication_results[$res['status']] : self::STATUS_FAIL); if ($res['status'] == 'pass') { $title .= ($title ? '; ' : '') . "dkim=pass (internal verifier)"; } } } } if (!$title) { $title = $res['reason']; } } } } if (!$status) { $status = self::STATUS_NORES; } } else { $status = self::STATUS_NOSIG; } } if ($status == self::STATUS_NOSIG) { $image = 'status_nosig.png'; $alt = 'nosignature'; } elseif ($status == self::STATUS_NORES) { $image = 'status_nores.png'; $alt = 'noauthresults'; } elseif ($status == self::STATUS_PASS) { $image = 'status_pass.png'; $alt = 'signaturepass'; } else { // at least one auth method was passed, show partial pass if (($status & self::STATUS_PASS)) { $status = self::STATUS_PARS; $image = 'status_partial_pass.png'; $alt = 'partialpass'; } elseif ($status >= self::STATUS_FAIL) { $image = 'status_fail.png'; $alt = 'invalidsignature'; } elseif ($status >= self::STATUS_WARN) { $image = 'status_warn.png'; $alt = 'temporaryinvalid'; } elseif ($status >= self::STATUS_THIRD) { $image = 'status_third.png'; $alt = 'thirdparty'; } } if (!$show_statuses || ($show_statuses & $status)) { return '' . $alt . ' '; } return ''; } } authres_status-0.6.2/composer.json000077500000000000000000000026441371632235300173350ustar00rootroot00000000000000{ "name": "pimlie/authres_status", "type": "roundcube-plugin", "description": "This authres_status plugin checks the Authentication-Results headers of your emails and displays the verification status. The verification status is displayed when you read an email, but you can also add a column to your message list.", "keywords": ["authentication","results","dkim","domainkeys","spf","sender-id","rfc5451"], "homepage": "https://github.com/pimlie/authres_status", "license": "GPL-3.0+", "version": "0.6.2", "authors": [ { "name": "pimlie", "email": "pimlie@hotmail.com", "role": "Author" } ], "require": { "roundcube/plugin-installer": ">=0.1.3", "pimlie/php-dkim": ">=0.2.2" }, "require-dev": { "phpunit/phpunit": "^6.1", "squizlabs/php_codesniffer": "3.*" }, "autoload-dev": { "psr-4": { "": "./", "AuthresStatusTest\\": "tests/" } }, "support": { "email": "pimlie@hotmail.com", "issues": "https://github.com/pimlie/authres_status/issues", "source": "https://github.com/pimlie/authres_status" }, "extra": { "roundcube": { "min-version": "1.0.0" } }, "scripts": { "test": "vendor/bin/phpunit", "cs": "vendor/bin/phpcs ./" } } authres_status-0.6.2/config.inc.php.dist000066400000000000000000000027411371632235300202760ustar00rootroot00000000000000 Show an icon for emails without a signature // STATUS_NORES -> Show an icon for emails with a signature but no authentication results header // STATUS_PASS -> Show an icon if all signatures have passed validation // STATUS_PARS -> Show an icon if at least one signature passed validation // STATUS_THIRD -> Show an icon for third party signatures // STATUS_WARN -> Show an icon when the signature temporary failed // STATUS_FAIL -> Show an icon when the signature permanently failed // STATUS_ALL -> Show an icon for all statuses // // statuses should be prefixed by 'authres_status::' // // default value: authres_status::STATUS_ALL & ~authres_status::STATUS_NOSIG // //$config['show_statuses'] = authres_status::STATUS_ALL & ~authres_status::STATUS_NOSIG; // To only show authentication results from mta's you trust, add their authserv-id's here //$config['trusted_mtas'] = array('your.mta.hostname'); authres_status-0.6.2/images/000077500000000000000000000000001371632235300160475ustar00rootroot00000000000000authres_status-0.6.2/images/status_fail.png000077500000000000000000000006571371632235300211060ustar00rootroot00000000000000PNG  IHDRH-gAMA7tEXtSoftwareAdobe ImageReadyqe<AIDATxb?2׍RQ@lB@| qGOaa `>qP,F&Q 0@LPN;&s.)ފnZ$@H@b >'mқ|f d fb7 jZ4XHj\AМ Ļ;P&&Ehˁ4~SBGz`Lj ).bO1T&@M$D@b~$5X edI$>ȢxںH/a y 2JP@a=Cӭ%4Z`it7P;d5gQQfrIENDB`authres_status-0.6.2/images/status_nores.png000077500000000000000000000006471371632235300213200ustar00rootroot00000000000000PNG  IHDRH-gAMA7tEXtSoftwareAdobe ImageReadyqe<9IDATxtJAb+Bl,$JQlJ , kZVDE"ÿ9ρۙvvf<ϓ`o{,-؄5CN߿BlY.謁WhUetu[F 0>t3OϠ Iok Q }}MǶ$܂[g&aVaBʎH#bTٍJ qSlMA7Qq%J\+v(aWi䱵b[ڡ>vzЎz@ nnVrs)sd܆(0r جFC~ϐC#xyfɷIENDB`authres_status-0.6.2/images/status_nosig.png000077500000000000000000000006461371632235300213100ustar00rootroot00000000000000PNG  IHDRH-gAMA7tEXtSoftwareAdobe ImageReadyqe<8IDATxt1kAVR*!J2@딀U~@ V4Bؽy3i(? 85BTJ` sc5!8 !j`uZ?}ax`tӖ7# @oZ VfZ=ZPxp+3  AϤ5^Y%d#cK=× TɊI㜱K 'LK%f'L۴CcvRTsD1=ruUef.U6DӓYϐ?C~`xyL}IENDB`authres_status-0.6.2/images/status_partial_pass.png000077500000000000000000000007161371632235300226510ustar00rootroot00000000000000PNG  IHDRH-gAMA7tEXtSoftwareAdobe ImageReadyqe<`IDATxtMDDQߛR"jC4I* }lJD)ͦ!"Ѫm 1JY Rj(Jl^s޹~w\{L:nxׇsm#Y®Y,I2mN5]B0zk;L3?",;4c9Nd;N/ qSi00`0A qpi0_;FUsEv=Ee6}QA(g>1 Iv1:h ѣ1]7Pr;${&WwdIV` yJ/aMlB Td /ZN^УH'>"x@ %R@`tZ:> Ŀb PH0kz ĜPq$G +.iG2 ># {An@M_phbq۵9hݰdŗ`D ʩHr841@SF 0h!ͦ\ډi¡m PdL@/fxiraIENDB`authres_status-0.6.2/images/status_third.png000077500000000000000000000006061371632235300212770ustar00rootroot00000000000000PNG  IHDRH-gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?:H[HC߁xj55. Vd f\#PSjd3PF&?Fe 6d~` dlb @6`7cIENDB`authres_status-0.6.2/images/status_warn.png000077500000000000000000000005541371632235300211360ustar00rootroot00000000000000PNG  IHDRH-gAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?2x& ҳ^ͅcijR؞7ĉ@^55."Mj3 lbr4>>P"d,d3:d:SȐc ȁl` 4~! tMVǥ ĢX1CsH C Fa(bEx<Nhx SN A|. G $C %@a& M(i]`d(za0S_ɏIENDB`authres_status-0.6.2/localization/000077500000000000000000000000001371632235300172725ustar00rootroot00000000000000authres_status-0.6.2/localization/ar.inc000066400000000000000000000035061371632235300203730ustar00rootroot00000000000000 authres_status-0.6.2/localization/ar_SA.inc000066400000000000000000000035671371632235300207650ustar00rootroot00000000000000 authres_status-0.6.2/localization/ast.inc000066400000000000000000000036641371632235300205650ustar00rootroot00000000000000 authres_status-0.6.2/localization/az_AZ.inc000066400000000000000000000034441371632235300207760ustar00rootroot00000000000000 authres_status-0.6.2/localization/be_BE.inc000066400000000000000000000046511371632235300207270ustar00rootroot00000000000000 authres_status-0.6.2/localization/bg_BG.inc000066400000000000000000000057131371632235300207330ustar00rootroot00000000000000 authres_status-0.6.2/localization/bn_BD.inc000066400000000000000000000034441371632235300207360ustar00rootroot00000000000000 authres_status-0.6.2/localization/br.inc000066400000000000000000000037571371632235300204040ustar00rootroot00000000000000 authres_status-0.6.2/localization/bs_BA.inc000066400000000000000000000036261371632235300207420ustar00rootroot00000000000000 authres_status-0.6.2/localization/ca_ES.inc000066400000000000000000000040631371632235300207420ustar00rootroot00000000000000 authres_status-0.6.2/localization/cs_CZ.inc000066400000000000000000000035611371632235300207730ustar00rootroot00000000000000 authres_status-0.6.2/localization/cy_GB.inc000066400000000000000000000035551371632235300207600ustar00rootroot00000000000000 authres_status-0.6.2/localization/da_DK.inc000066400000000000000000000034761371632235300207410ustar00rootroot00000000000000 authres_status-0.6.2/localization/de_CH.inc000066400000000000000000000036621371632235300207360ustar00rootroot00000000000000 authres_status-0.6.2/localization/de_DE.inc000066400000000000000000000040771371632235300207350ustar00rootroot00000000000000 authres_status-0.6.2/localization/el_GR.inc000066400000000000000000000055621371632235300207650ustar00rootroot00000000000000 authres_status-0.6.2/localization/en_CA.inc000066400000000000000000000034461371632235300207410ustar00rootroot00000000000000 authres_status-0.6.2/localization/en_GB.inc000066400000000000000000000034361371632235300207450ustar00rootroot00000000000000 authres_status-0.6.2/localization/en_NZ.inc000066400000000000000000000034441371632235300210030ustar00rootroot00000000000000 authres_status-0.6.2/localization/en_US.inc000077500000000000000000000034441371632235300210060ustar00rootroot00000000000000 authres_status-0.6.2/localization/eo.inc000066400000000000000000000034441371632235300203750ustar00rootroot00000000000000 authres_status-0.6.2/localization/es.inc000066400000000000000000000034441371632235300204010ustar00rootroot00000000000000 authres_status-0.6.2/localization/es_419.inc000066400000000000000000000037201371632235300207730ustar00rootroot00000000000000 authres_status-0.6.2/localization/es_AR.inc000066400000000000000000000040031371632235300207530ustar00rootroot00000000000000 authres_status-0.6.2/localization/es_ES.inc000066400000000000000000000040111371632235300207570ustar00rootroot00000000000000 authres_status-0.6.2/localization/es_MX.inc000066400000000000000000000034441371632235300210050ustar00rootroot00000000000000 authres_status-0.6.2/localization/es_UY.inc000066400000000000000000000034441371632235300210160ustar00rootroot00000000000000 authres_status-0.6.2/localization/et_EE.inc000066400000000000000000000036211371632235300207500ustar00rootroot00000000000000 authres_status-0.6.2/localization/eu_ES.inc000066400000000000000000000037411371632235300207720ustar00rootroot00000000000000 authres_status-0.6.2/localization/fa_AF.inc000066400000000000000000000034441371632235300207260ustar00rootroot00000000000000 authres_status-0.6.2/localization/fa_IR.inc000066400000000000000000000035171371632235300207530ustar00rootroot00000000000000 authres_status-0.6.2/localization/fi_FI.inc000066400000000000000000000040111371632235300207350ustar00rootroot00000000000000 authres_status-0.6.2/localization/fo_FO.inc000066400000000000000000000036401371632235300207600ustar00rootroot00000000000000 authres_status-0.6.2/localization/fr_FR.inc000066400000000000000000000042071371632235300207660ustar00rootroot00000000000000 authres_status-0.6.2/localization/fy_NL.inc000066400000000000000000000037211371632235300207770ustar00rootroot00000000000000 authres_status-0.6.2/localization/ga_IE.inc000066400000000000000000000035271371632235300207400ustar00rootroot00000000000000 authres_status-0.6.2/localization/gl_ES.inc000066400000000000000000000040531371632235300207600ustar00rootroot00000000000000 authres_status-0.6.2/localization/he_IL.inc000066400000000000000000000042361371632235300207520ustar00rootroot00000000000000 authres_status-0.6.2/localization/hi_IN.inc000066400000000000000000000034441371632235300207600ustar00rootroot00000000000000 authres_status-0.6.2/localization/hr_HR.inc000066400000000000000000000034441371632235300207740ustar00rootroot00000000000000 authres_status-0.6.2/localization/hu_HU.inc000066400000000000000000000042441371632235300210010ustar00rootroot00000000000000 authres_status-0.6.2/localization/hy_AM.inc000066400000000000000000000034441371632235300207670ustar00rootroot00000000000000 authres_status-0.6.2/localization/ia.inc000066400000000000000000000041771371632235300203670ustar00rootroot00000000000000 authres_status-0.6.2/localization/id_ID.inc000066400000000000000000000036571371632235300207500ustar00rootroot00000000000000 authres_status-0.6.2/localization/is_IS.inc000066400000000000000000000035351371632235300210010ustar00rootroot00000000000000 authres_status-0.6.2/localization/it_IT.inc000066400000000000000000000037341371632235300210040ustar00rootroot00000000000000 authres_status-0.6.2/localization/ja_JP.inc000066400000000000000000000041031371632235300207460ustar00rootroot00000000000000 authres_status-0.6.2/localization/ka_GE.inc000066400000000000000000000034441371632235300207400ustar00rootroot00000000000000 authres_status-0.6.2/localization/km_KH.inc000066400000000000000000000034441371632235300207630ustar00rootroot00000000000000 authres_status-0.6.2/localization/kn.inc000066400000000000000000000034441371632235300204020ustar00rootroot00000000000000 authres_status-0.6.2/localization/kn_IN.inc000066400000000000000000000034441371632235300207700ustar00rootroot00000000000000 authres_status-0.6.2/localization/ko_KR.inc000066400000000000000000000037311371632235300207760ustar00rootroot00000000000000 authres_status-0.6.2/localization/ku.inc000066400000000000000000000034611371632235300204100ustar00rootroot00000000000000 authres_status-0.6.2/localization/ku_IQ.inc000066400000000000000000000034441371632235300210020ustar00rootroot00000000000000 authres_status-0.6.2/localization/lb_LU.inc000066400000000000000000000034441371632235300207670ustar00rootroot00000000000000 authres_status-0.6.2/localization/lt_LT.inc000066400000000000000000000037271371632235300210140ustar00rootroot00000000000000 authres_status-0.6.2/localization/lv_LV.inc000066400000000000000000000034731371632235300210160ustar00rootroot00000000000000 authres_status-0.6.2/localization/mk_MK.inc000066400000000000000000000054551371632235300207740ustar00rootroot00000000000000 authres_status-0.6.2/localization/ml_IN.inc000066400000000000000000000034441371632235300207700ustar00rootroot00000000000000 authres_status-0.6.2/localization/mn_MN.inc000066400000000000000000000050271371632235300207750ustar00rootroot00000000000000 authres_status-0.6.2/localization/mr_IN.inc000066400000000000000000000034441371632235300207760ustar00rootroot00000000000000 authres_status-0.6.2/localization/ms_MY.inc000066400000000000000000000034441371632235300210160ustar00rootroot00000000000000 authres_status-0.6.2/localization/my_MM.inc000066400000000000000000000034441371632235300210100ustar00rootroot00000000000000 authres_status-0.6.2/localization/nb_NO.inc000066400000000000000000000034551371632235300207670ustar00rootroot00000000000000 authres_status-0.6.2/localization/ne_NP.inc000066400000000000000000000034441371632235300207710ustar00rootroot00000000000000 authres_status-0.6.2/localization/nl_BE.inc000066400000000000000000000034441371632235300207510ustar00rootroot00000000000000 authres_status-0.6.2/localization/nl_NL.inc000077500000000000000000000040661371632235300210000ustar00rootroot00000000000000 authres_status-0.6.2/localization/nn_NO.inc000066400000000000000000000034441371632235300210010ustar00rootroot00000000000000 authres_status-0.6.2/localization/nqo.inc000066400000000000000000000034441371632235300205670ustar00rootroot00000000000000 authres_status-0.6.2/localization/oc.inc000066400000000000000000000034441371632235300203730ustar00rootroot00000000000000 authres_status-0.6.2/localization/om.inc000066400000000000000000000034441371632235300204050ustar00rootroot00000000000000 authres_status-0.6.2/localization/pl_PL.inc000066400000000000000000000037311371632235300207770ustar00rootroot00000000000000 authres_status-0.6.2/localization/ps.inc000066400000000000000000000034441371632235300204140ustar00rootroot00000000000000 authres_status-0.6.2/localization/pt_BR.inc000066400000000000000000000040251371632235300207740ustar00rootroot00000000000000 authres_status-0.6.2/localization/pt_PT.inc000066400000000000000000000040711371632235300210150ustar00rootroot00000000000000 authres_status-0.6.2/localization/ro_RO.inc000066400000000000000000000036041371632235300210100ustar00rootroot00000000000000 authres_status-0.6.2/localization/ru_RU.inc000066400000000000000000000055341371632235300210300ustar00rootroot00000000000000 authres_status-0.6.2/localization/si_LK.inc000066400000000000000000000034441371632235300207730ustar00rootroot00000000000000 authres_status-0.6.2/localization/sk_SK.inc000066400000000000000000000040441371632235300210010ustar00rootroot00000000000000 authres_status-0.6.2/localization/sl_SI.inc000066400000000000000000000041341371632235300210000ustar00rootroot00000000000000 authres_status-0.6.2/localization/sq_AL.inc000066400000000000000000000040561371632235300207710ustar00rootroot00000000000000 authres_status-0.6.2/localization/sr_CS.inc000066400000000000000000000047451371632235300210100ustar00rootroot00000000000000 authres_status-0.6.2/localization/sv_SE.inc000066400000000000000000000035621371632235300210120ustar00rootroot00000000000000 authres_status-0.6.2/localization/ta_IN.inc000066400000000000000000000034441371632235300207640ustar00rootroot00000000000000 authres_status-0.6.2/localization/te_IN.inc000066400000000000000000000034441371632235300207700ustar00rootroot00000000000000 authres_status-0.6.2/localization/th_TH.inc000066400000000000000000000034441371632235300210000ustar00rootroot00000000000000 authres_status-0.6.2/localization/ti.inc000066400000000000000000000034441371632235300204060ustar00rootroot00000000000000 authres_status-0.6.2/localization/tr_TR.inc000066400000000000000000000040261371632235300210210ustar00rootroot00000000000000 authres_status-0.6.2/localization/tzl.inc000066400000000000000000000034441371632235300206030ustar00rootroot00000000000000 authres_status-0.6.2/localization/tzm.inc000066400000000000000000000034441371632235300206040ustar00rootroot00000000000000 authres_status-0.6.2/localization/ug@Arab.inc000066400000000000000000000034441371632235300212730ustar00rootroot00000000000000 authres_status-0.6.2/localization/uk_UA.inc000066400000000000000000000052541371632235300207770ustar00rootroot00000000000000 authres_status-0.6.2/localization/ur_PK.inc000066400000000000000000000034441371632235300210120ustar00rootroot00000000000000 authres_status-0.6.2/localization/uz.inc000066400000000000000000000034441371632235300204300ustar00rootroot00000000000000 authres_status-0.6.2/localization/vi_VN.inc000066400000000000000000000041131371632235300210050ustar00rootroot00000000000000 authres_status-0.6.2/localization/zh_CN.inc000066400000000000000000000031761371632235300207750ustar00rootroot00000000000000 authres_status-0.6.2/localization/zh_TW.inc000066400000000000000000000034111371632235300210170ustar00rootroot00000000000000 authres_status-0.6.2/phpcs.xml000066400000000000000000000003311371632235300164360ustar00rootroot00000000000000 A basic coding standard. vendor/* ./ authres_status-0.6.2/phpunit.xml000066400000000000000000000012611371632235300170130ustar00rootroot00000000000000 tests/ ./ authres_status-0.6.2/skins/000077500000000000000000000000001371632235300157315ustar00rootroot00000000000000authres_status-0.6.2/skins/autumn-larry/000077500000000000000000000000001371632235300203715ustar00rootroot00000000000000authres_status-0.6.2/skins/autumn-larry/authres_status.css000066400000000000000000000014521371632235300241630ustar00rootroot00000000000000/* Autumn-Larry */ .webkit .messagelist tr > .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/autumn-larry/badge.png000066400000000000000000000032061371632235300221420ustar00rootroot00000000000000PNG  IHDRkFI iCCPICC profile(}=H@_S"-vPqP8J`Zu0ChҐ8 ?.κ: "ƃ~{2S͎q@,#܊xE ` !z"wQ}R&|", xxz9YIRωG #e8xfȤb6f%C%"(FBeg\e{r4"HB*6P()&R:$drmc?,LNIb@`hlض'ZJ$"G@6pq=r%Cr$?MPr@-гnC`Hkn3~pFr'bKGD pHYs.#.#x?vtIME8$HtEXtCommentCreated with GIMPW]IDAT8˭kLWƟo/R"[@/X21!kc*8i::9\p582 PPс r\: 腾gjrr?oRJ)0̝uV pQY =r7_ܹp谩nT;_П J;)'ޢ[ mdPۑIp2=͍IpN{m|vkʃ8HBKF ^wn] -)cO@/߱nPBn0ݼ[qd\۸J s:C`CtcHG.@l!jO'F>[E:3-c$S gdhdӘu_)~LB/ێi#D&!#p"$Ѱc^>tmh >15 6v`E8 UN51"e b͖57kV"|R9Iݞ-?>sgnxA([Ir#ޔR.l>~Y容l "̵R5/R*}7=|)8xzKpu TWeWHiQV%ވ*SOz8fy8YE D'wtJ?^M~`%0q-]ߘҤtcRS꿉x,]罢JYኄt3:/m@YwQN[8^C c52'^!O6+գqWqOs^gQCۢVC͑IU|f-U9gR/b#k5Qg׌ܨ?7 9޿3rn_=]{K ]FoKɍX҉j;ЧRϜywv~3k;g9O|!eL'bߢ!67e=p׻> s>|^~;.}w3*m`aFeAӾOrWcfYk%5kg7gY) Ɩ}9OnqrL7c G'9s\4?I QnBW~Yyθ7]e;n?{\ZKΙfM2d9}22tz~@ seݎ{/lu-nGFqBr}q@Vԝ>D?ȀK/&cP mNqZ=KDrCi*~J`bJ)jj琣r.Y鶗PbI%RjiPcM5Rkm7ljkwܹgӹsfFiQFm |fiYfmWXʫ(Id$K*Mk;λoY{枬)eܣ9x&32#E3VilTEL2ineM|-w2Oy391o32s'oFһ}m{*Ԙ@qM1= &7زF2[԰].K{Evaط ^#b'^yk_= l=ɘeZVbFtSGv*F1ֳzvs8*[6`-S@Y,t36N yKY5 Ow3y)yOvEӶGk_#@ו"Zdg˦%+ÖcX mM9^qy5,6dEX5iܟ2:'ܣE(9 Šg;e<[!TtSc*EQ/^(gPk81~n~jQv6n,BI&Rf98~ڔ-!Ր"$3{ \.BgU\MJUDѪ{E|4ͮQ)p0댋 ÆߩF- DDH|䉊Q@yJV ?cqdΎԥ*Y\rRio jjV_]@Zzj pqCa6'2es4_}0@aZ-ѕ%Vlŕ$Sh(.HHs(V*A[etIj=FNI=193X[kY`Xc]Ky-,\cYA=Z:0%t{P$3,v[FMGz7J"TM-.xS"-cZǽQxq`51[g]kVEy'Nc1<ɚtėẆgiEH{P}7:u 0R|v Vz-TrζFb)Tv#LgT| ^Ʃ:h2M]ԌFb>/Zt@o`3Awۜ-3{c:lM)3ft{H_5H\ݕ6Bm(!ٜ.PΌgw9Զ9"n[SS枪+RAsc[bF !5J.ڍigi+ގEeMcԯ&i@v?'1JÓOᚂ^nL2} fdmA.]Pt`,L #VZեGwc)Ѷ[ё.&א4v\= F:ZUjD'Wdoe` VE&,΁'KuG?"M(??L'2|fҞ+zJuOTh gӊE-Q%3Vn g1q|J'Cj/ rv{{>Zze)Gs6ӊb[p"qF~:j4R?w5V C^Xk}zauuZl@0xyXю].,qWo㣖^nվ/gPcBw $I})I06f"|(c*>RǴ1 OXcNJGp7%v3ц ~Dan]=u_4H$/>vƑa&w{jma7¤3S.ihS ˃l7F)YDHh?/y̗%)u-.Ǎܓ↖9Tq0u/D¢6 F{1o5ُ+]t/Qka 5 b ΁0uZa< B~",tUo;[v"݂)&\>MzSn7Q~ zz7mӹYb~p5 33ٹ5^0$E! F>{ѩT*lZR5R+.>/ { LP`\Kw WG0#2z 1@(T޲q`!AH;ky^kBn&{OJٹ ~,Qv#64U<&'NYag;.kf{\k0if¶mwMeb T,: ]nK oZG:g}ڜu#yw2sB?P}|tҥ P8JI 0."TQՙH߰\psh-=JgXc13s? Kʷm9(%8O[. * A;EXp";0?xzC:h}I ]&m/ǬH{N/Л͍]ERى&XYjzJ^CI7NjsJÌ/JJx Ǩ)PgC]/'ZoY":S(tRcrؾͳ'ҭl&Vhxʀ=f-6Dds cwyګ&uW7:=MikhҎ+0/Qd<oӛ!@ ުWţ[u-:L**at$=qmwXp DCє>&0>ͳ\?"(IC3 g'p38氃?ɲ:=1 bp>& n掍6y@BitW!@0/sm^]u谠FA0ۢUFu&j;M65#FB'N|S^芨aFSoq4 !Ѭ 1| F>3# IT _E pbw;iCCPICC profilex}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1r)PbKGD pHYs otIME (&]tEXtCommentCreated with GIMPWIDAT(ύ?lMa{n dD-nXDM*"=M+*5:T@/58iNş7'ռ48#xxf2bD{qp>tY<RژꄻvAB( E؂x ߌf,p_A(oWkyi'Xѥ5bYJ%17kc ~9">t:v>b1{w| 4ۘFU3im Xέ7| !ƳhJ:VUx XJϦֆn%bKqe\.<Φp>G{ .8bo™7?v9IENDB`authres_status-0.6.2/skins/black-larry/000077500000000000000000000000001371632235300201345ustar00rootroot00000000000000authres_status-0.6.2/skins/black-larry/authres_status.css000066400000000000000000000014511371632235300237250ustar00rootroot00000000000000/* Black-Larry */ .webkit .messagelist tr > .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/black-larry/badge.png000066400000000000000000000072511371632235300217110ustar00rootroot00000000000000PNG  IHDR;֕J zTXtRaw profile type exifxڥYv:D^1Ab87σ\(S$Hgs.&\RM'P]CO h?7o_8NyY}~rq{n:/ȕ{NJ=\ywrϜjpߧ۷q} >́ஜSsqWmB\rLoԱ&7~/g6~kݟ#K`zv^oʶn:|MO4H>?ގޘ[Qo+ _dêk ظ: u@l6C57]\c=W}岯~:Tuk{-v[|6Rg*~zW.k-%k͝34 Y"\"vA;GBz ;̅ KhuInǹ_ Y@p%&{e粵PWq>8,ؐLm'}G%A"loB?98Ԣ!Ƙb%ؒOa)r۲!ǜ2knŗPbI%RjiUJ:Rkm9#d7Έ/A$RJЧ{깗^{nA4(6J3hfyYg[pmV\iUV] /_foFJoq6s4/ ij"bvS:":af Ƈi]\ n&?^E(t'r73;ܞ6lB>ijy|x5-[ېm$c6)fԳiI_Y:Sb$+A{\6G~aow5Ҫ.t)\+jyz_#3]^Q 0KV"G7rߚ _O\iʈQW>jس;?hXw%x!廸9f%!k/_dA4 aEI]]inجW†w~r(cHѲHʫ6ڀ:5@Jc 7)o$&8*Շhf'_{]WMHT^\L^d_bڎ*i ȍFd"]+e<=.=kAlj(SeTn0{=6wȖǹwY];V|>Q5[O4f5M?R٪{Y=ʱlt0uvV^4!TwvUDBF m= gWqxkrvb5@~{4y CW֮[hy99m// n(mI\5AK v -q4nH!X5{dOx&5#ERju kJ xy II\J)R?IΙGA5̰͖Ƨ]a BoG@y/~V!;.>CRh8IMG*Uj7(mWFSA7~Sx9\f c XATf6LѦe~ڷi6׋KIwIhr+A0X#Ln_t*-M]|U' ɸPzÝ|*{y۫%kVQL؂1ze}[iXj͌5@ĞڲvHˑqt8m4FQ>w_~4Yo)ٌjN ?jMl #/h6Ӑ&PIH$LR金JIC)AQJLu iȨ߅i48mᩩ @$#2G5uȢ#qS! j76S;6?$մ:1绊Hԛ !J@=}9錊cEHҏ[EŅ0E8[(Ad)'',._-R&|ęWk!he٘КNrZԾU` ugsFU kp*Yc{+~!,jTaHnULeLD _9赴6vΟ *miCCPICC profilex}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1r)PbKGD pHYs otIME9utEXtCommentCreated with GIMPWiIDAT(ύҿkQʊ0`/lDP066kbc!BDHβhc,RDicj)"B6f";wܓ4U$pXoMoRRe`?pX<^a-"^w3c?:EGģn_ lFcyLx 0{DĭsQl&.ޅ? G F=0C,ـZn74!N{}uܫ,"``4\k̶N|M[IENDB`authres_status-0.6.2/skins/black-larry/badge2.png000066400000000000000000000075161371632235300217770ustar00rootroot00000000000000PNG  IHDR;֕J zTXtRaw profile type exifxڭYv:D^gxNcl{rJ@ `n~B $%ל-?'^?|;{ݼ\ gu>qӛo7=/&=sE.~O5wV$W΋QTC{5чQM~.mf=w1_k ޾]ś|8~c~;އƇ0>_xåpLX$eb΢U^} =Z]%{Q8s~ϮAp^|ĹOSHAM;s^m:' l~ycV$P \{wgtw 4~<ޚKΙ;g4 ENy Dܾy07lɽV8@Kv2u c\]H.;+ދs8Ps}ɳ 6$Sw_aIHM bLďB RL)$Z92,gJMDIEHVB%\RK8UұZkkexqz. |Fi!:3Lx):rPZq%UV]mk;[vunT?}~Q)}N^Pu4'^D11"@@{W3[=Yf k6w*!Z "3hGz:uB9 =şy|G$Hމ*0/]ysrKB"ąN\B{*̻ i sZFv C` Q:F5Ki6Rx:~cS/8|qo9<)3#ޛV3K0zMNK@VN86.o~-t5*A='ϔ3n}[ݱQS( R/MN Cc3~69_᝹C7`_}#/}D|2 ZdКsC^Z͸Mʐ[+#wvE@~4/*<&Ŧ*ݟ*{{:|2m -)] R fJwQhZ/Lx݉bz K*~ٽ@ui= TTڍ#4 OP*5`7m8fhM{ۉCzJӱbnXWo/x TJSX&zYmT XSbKNxYh:ZjO*I)WRڦȔSb:1ubp;jތ4Z3[s⫪nim6/:{YJDJ8tj1OFC˞JRf}}W6~WNq#":'šn1E+ O 4NR7`,)^Tr)(7$3L/ ,X_UBCI_mB9Yf,>AqҚڄ|BB)X4-Oa٢c鴦C`qqᗦ@$BPf(BFQSJ36'#F4Vh 7_ Jf];Ԫh% dmZzD.IS4|v|!@2nյ@}OXa3gIEk'b"i[?\'v fScrJ#MZDj.pfԪExgxnrrhYniۨsEMh&jZcOt L\M_?ey縡*FOqM#R"*8w|b^bĖ$?HHDj¹2!ÛK?amq0!r_?޼FY x()F5/miCCPICC profilex}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1r)PbKGD pHYs otIME+3:6tEXtCommentCreated with GIMPWlIDAT(ύұkQ'_ A 8( ')8PťXpq 9AU Pš88&SqC*AMr+ Hͻ\s༕Qe9y%%GQRReY\MG 8lboz~OTnLcqncEiTk/"VsӫXFTz"vR.kB5͔U[`IeYVp.;uq߰U q𹈈>V?+nJD\[û#U̮MX.Uɡ)nw уb#c .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge2.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/blue-larry/badge.png000066400000000000000000000032451371632235300215630ustar00rootroot00000000000000PNG  IHDRkFI iCCPICC profile(}=H@_S"-vPqP8J`Zu0ChҐ8 ?.κ: "ƃ~{2S͎q@,#܊xE ` !z"wQ}R&|", xxz9YIRωG #e8xfȤb6f%C%"(FBeg\e{r4"HB*6P()&R:$drmc?,LNIb@`hlض'ZJ$"G@6pq=r%Cr$?MPr@-гnC`Hkn3~pFr'bKGD pHYs.#.#x?vtIMEЌ-tEXtCommentCreated with GIMPW|IDAT8˭kLW9}ZZ(7Q 8H& nU38NDJm) /;PqsDTPAdb\ZhӞbtfc /uگd{o$!ʘ : dM.y2ۈShᖱ=% )Ng?𷫏T..].}dE|X}xb t»W =] te;L=TBXJDIl[66VrWa6Spk`滵[ 2cS]۵sla_# J9iE0+Vb7\0M4yٹkBF[X=g]KcE# z?-f_?n>G!7nӌ "8yXixSp%gSZ @-"[Ng Ŭ^:(|?h ֩țcICws]mMQD~xK{X9|!^3VI ].7%:BRΩW^#`5lБmC [01QTn sb9$#I?}dSX2ap o,8jJރK':%߰ZNۛ7Q!;jG63؉H5i*64_v4Q#K>Q5(T5uLjW:?KDўNo V8_ysz(Pej{]pL6i .>*35s˟R+oˁ i/:ps_]iB ߡ2#gS9Sj`-T8V)ϖ D6oa.=Y[Q2PZV9oKlܭ_<^hT_cmm.qγp'վ8MJ4}ݪӁ-}O&/5l) 00خ~ѓc+DKor6PމH W$˥ޫ,$U|IO&c@nʹ'G%DJnjh$+~40RH1jj9`XΚMn4jѪK*h)V} qбZkkܳ1rˮq}L=S]{鵷|Fi䡣:3Lx({%q^sTN2-yۙZDġ\75KKNu7"X·Gg/Lx*[:2 zpQ wU[}Mő]XeQtyqK-L >bi.U*a:⼺Ujy焤S&Hj*֪vk@]4NGr&.e*i,n'+jQfwM|G {b2bڛ1-x6J[Tv݆!x0=Y^|e9J0lՔ4,`̄+uPz8A`mj{1 ϲJ%ly>ˠ"Zgde=d$冂K p8y̿) Ev~l vQ68jL}І/7'uSBf:܏hXPZɍn9FO^)s_#' d">{ V [b6*ꉭCL6p| ͡/[aQG;SlܧeB[ (2gDѓj%9`Z-7 vz4[cSG/f{p1n SfHSz { e=tp+~'zq2Au"uiIr#"׋{@:#1dU۾ͰԦ"Ei'aJENm%Z#Ly"Ί` kfȓPt \LkAzèZ!V^WQLTȤό ͽAcGtؾ[wsI_ށ )[^rtL*lւY 8& zl@ m,>o-۟BRfA!vɃX;^$@Wɤd=Y࿧ih;F- WF7De%Zm_m+/W|7Vnm(!pu)}t2A#pEcωḙy, { Csӗ!qX=NbY6U wy{4"@ ^n&Gˤ[aNȃCP x6Ȏ.<Ę̄\(is{Ҫ"Y<]wo˲wSD`?7sAh& ?/[X'Qoe`gн+y0ץ>dhw} dE?43='g֏$z@DT*Y{2e`C),w/kN5ۘVK)f4IQbW* Tu^LEq9Ti=W">j{pvl>ZjN-KSA:k f:@Mk$Q1[4DTVE:d9UHr$(+ ahVRĤ)d8iJQZ\=S@[%@t9XKXih l[GlE'g-kdھNs R63>"8h_(AbQONJ{=m?~l} Y{\&ZuP oo`Kb6U~ض G;Vadx3QT{\]t2$Ʈ ^o{\f=XA_~>4&V1@yMh hHRLfpwÍ $5ZCϾ>: Cqߘ0ɵivЃ\TW4K1ctae ݆"3]@pEWtCdB.sL2哄mvb2$mM a#AEtKMbt&GWU1zzZy%}5Ģ (RL~Z*SStx0Mo 1Wm$`=*Ө%t@(g#-3ݑCN[m[w\*X*n5[BYvP R = ;a6 ۝R]|uaubK~ :Ԡ>e޶h2Һmȃ8JPiܬtLc Cp[MG۽{bH*<ڦT.:  2Eƌ"= .uVw+^2C#8d}/UJQn6 lIj:&4v 2zcm|U7uΤؤA|R|9أYj4Ћ,36 ;:gJk`ZsYGX  $,g;k0sex ^#* b˧dILg /IHk_/lv RIhX~Qkq"-þ8- * m[}-4int l}I;6:V>6f*@'G]u^G 1xӟEkMzMm&fߕm\(_{WPBv n'ח=ٗ6(5m϶1l+s׬+b f0.! {iCCPICC profilex}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1r)PbKGD pHYs otIME FtEXtCommentCreated with GIMPWIDAT(ύ=HqKAFi/TC RSWZ ЖnW( $phn@/-4HCCK6ڠ!A? g~9pZ(5AOd20b\\ͦYV\Ѕ؄elAHic2~ 7y!U xa6wP.QHM !ޠMrqm]y )â3;r#*Rb14jw pSXE'LeE:pC6_.a%J͸<1<7Z\ˬg &,\iUBFϒ<\ rq_Ά ױT%a~bC~n>|u&>[W a͓6?2CIENDB`authres_status-0.6.2/skins/classic/000077500000000000000000000000001371632235300173525ustar00rootroot00000000000000authres_status-0.6.2/skins/classic/authres_status.css000077500000000000000000000007221371632235300231460ustar00rootroot00000000000000 .messagelist tr td.authres_status { width: 17px; padding: 0 0 0 3px; } .messagelist tr td.authres_status span { display: inline-block; vertical-align: middle; width: 14px; background: url(badge.png) center no-repeat; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/classic/badge.png000077500000000000000000000012471371632235300211310ustar00rootroot00000000000000PNG  IHDRtgAMA7tEXtSoftwareAdobe ImageReadyqe<9IDATxڌRˋq#Y ( W00 cD" XgTrhljeuZ a:|T*}D vA,CV],t:A&U*u\b6Q?`;'(GH$FN~ sD-!ء\.g1 vT*V(J u]8~HGhټj8U0 pra% ^7l f{K+x$6NR,h4a8ՑӀd'K xtCpjOs)2 B`&˃r IENDB`authres_status-0.6.2/skins/elastic/000077500000000000000000000000001371632235300173555ustar00rootroot00000000000000authres_status-0.6.2/skins/elastic/authres_status.css000066400000000000000000000012661371632235300231520ustar00rootroot00000000000000.listing.iconized tr.authres_status>td.section:before { content: "\f3ed" } .webkit .messagelist tr > .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/green-larry/000077500000000000000000000000001371632235300201605ustar00rootroot00000000000000authres_status-0.6.2/skins/green-larry/authres_status.css000066400000000000000000000014511371632235300237510ustar00rootroot00000000000000/* Green-Larry */ .webkit .messagelist tr > .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/green-larry/badge.png000066400000000000000000000017361371632235300217370ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME tEXtCommentCreated with GIMPWIDAT(ϕkqFsUP\E'V'D7E\APqqjE!KFlc &uIK U뙟s.%?W($$B ,SnGrw]9nQ=9 1=A1;P[_(?[(wmOΞy*;&Tzʔ7Q =d'2̠G^;0q6\27Ai@ XW3lXWkpf !bB߁}b?c 7Y:v:K"` @ aWys xAjHXt-v+|[o)2lv{";aoosQ iН٩ϖ}OtuF8- xR:T~Z+áSGIENDB`authres_status-0.6.2/skins/green-larry/badge2.png000066400000000000000000000017211371632235300220130ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME ZtEXtCommentCreated with GIMPWIDAT(ϕ=OQsffǝU0n K +[m%LT1Ơ fK,,l ~U4 A,`%Yuf@D]}nrsX?p ρ74ڛ3clv\МCD@'f錓kOFOi@/7RI Q$j'`x#8:ۮ۷/5 DQ)&}g VƖmV]Vwu@@<k Tvr<ދ!b`XR3XJY7QDDl%/ܒ/KEgfC`wOH78 .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/grey-larry/badge.png000066400000000000000000000017041371632235300216000ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME )ltEXtCommentCreated with GIMPWIDAT(ύҽK B;QAdKCKmZ4VD-C -4HHCK.6 `CrO%a峞{^xNdnjjf`,"e{weY~Ff̼k8X!x]TF;f=\1DW1a|ƫxRd(qZTQW#&5۟͟=VSF#;xhh(0/777,Eb/#8ReIUժ|ln4 d \tDLCVkJݾ;eYZ۟ qw~owWQ< ltr]jrvv6axxED./5ۛ%Qch~IENDB`authres_status-0.6.2/skins/grey-larry/badge2.png000066400000000000000000000016371371632235300216670ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME:\ 5RtEXtCommentCreated with GIMPWwIDAT(ύҿkQϽD: 8 tRMnbUqqת"С.&q4m`CE: hY9RJkauu\YK+~6t:B8KS؇؏sJ:^#!}?9gBh!FQԦRJWpHoŐT:bRX7`I9,`=bAN0Ոe|D!i|r켎hb-EItw;,Z/E܃8PM09~NR"x{]Žnwkzl*eY6. &* SGIENDB`authres_status-0.6.2/skins/larry/000077500000000000000000000000001371632235300170625ustar00rootroot00000000000000authres_status-0.6.2/skins/larry/authres_status.css000077500000000000000000000015331371632235300226570ustar00rootroot00000000000000/* Larry */ .webkit .messagelist tr > .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/larry/badge.png000077500000000000000000000016451371632235300206430ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME 7ktEXtCommentCreated with GIMPW}IDAT(ύ?lMq9ЁAbdD- [IZADAcpVCXX E*b?9}}kA?yg$`H{pU|&1)8Å⁕յ8cxju:w%Y} IENDB`authres_status-0.6.2/skins/larry/badge2.png000066400000000000000000000017211371632235300207150ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME".tEXtCommentCreated with GIMPWIDAT(ύ=Ha}u4$)Zl Rh¥"j =44T6h%cp*Ty )%KSlhH4%JnH);$CAoE} c_XE&Nb;’w"ÉalH[;V@.޵Hs)ѝVg lh{=L,"PY |+$(>O7%s`4`&48ߟUa_р ȑ}*Q>x7XYy }*l6p+amKGY\d|)aWM-u # -_Y)vbV+{=Hx8z~rYc &IENDB`authres_status-0.6.2/skins/pink-larry/000077500000000000000000000000001371632235300200215ustar00rootroot00000000000000authres_status-0.6.2/skins/pink-larry/authres_status.css000066400000000000000000000014501371632235300236110ustar00rootroot00000000000000/* Pink-Larry */ .webkit .messagelist tr > .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/pink-larry/badge.png000066400000000000000000000032151371632235300215720ustar00rootroot00000000000000PNG  IHDRkFI iCCPICC profile(}=H@_S"-vPqP8J`Zu0ChҐ8 ?.κ: "ƃ~{2S͎q@,#܊xE ` !z"wQ}R&|", xxz9YIRωG #e8xfȤb6f%C%"(FBeg\e{r4"HB*6P()&R:$drmc?,LNIb@`hlض'ZJ$"G@6pq=r%Cr$?MPr@-гnC`Hkn3~pFr'bKGD pHYs.#.#x?vtIME5;}tEXtCommentCreated with GIMPWdIDAT8˭kPeϳ/"` +7mITdBPGM)R̦ $R ()Vnb+B\bU.qmM1Np7sfc ]xdw?Qʹbb`l.HUuZqSxڢ)/3.+J tuoN6:w S3meٍ?U_G?.ˎ2< fr==7ڙQv-F + W5pdr.%q,&\KpВ ^剴 Fة J>P~ ~5ٗ\Nxc ް O@>M C_fXOY:{s(ʩ4i硅Af b=xጶ+DT'IS}"*jR@ F_W]G@v-m* T{S¦kqD>lh.\I0`N/F_l]In);tQE,FH,s, ?~**mP;30/m6O o-qj&oM4Xř8F dPMuʹ\P'^1Y ;uS UDŪf G>.2%tX8f NFG0Clg) Da}dTyGSNH"o$ b FƒDCoKlZqV~fL),-^H]pL$S-ôқeF8S~ ƸѢ .ljh4"D=3nx@Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIMEʜtEXtCommentCreated with GIMPWtIDAT(ύҿkQIa _ Xو``l,lb\EIZ Ɋ A,"I,,lcX$Z`nE&"fOsw' !(Uo`Wqoo"V&!z31 N E,"&/'1K8ybs؇ODn_ gE>a\D!k}跋"WC)wo,Zetz[fѿb =.ߏ_#z4,1<ĵ870y7 wz >{x_S髴wtoqq]WPt[h' ӏ .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge2.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/plata-larry/badge.png000066400000000000000000000017041371632235300217330ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME 8XtEXtCommentCreated with GIMPWIDAT(ύҽK B;QAdKCKmZ4VD-C -4HHCK.6 `CrO%a峞{^xNdnjjf`,"e{weY~Ff̼k8X!x]TF;f=\1DW1a|ƫxRd(qZTQW#&5۟͟=VSF#;xhh(0/777,Eb/#8ReIUժ|ln4 d \tDLCVkJݾ;eYZ۟ qw~owWQ< ltr]jrvv6axxED./5ۛ%Qch~IENDB`authres_status-0.6.2/skins/plata-larry/badge2.png000066400000000000000000000016241371632235300220160ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME)8htEXtCommentCreated with GIMPWlIDAT(ύ?kTAߌ "aѹMlcc`eV_"~XDBM"ו،s9{Bٸ9\)3I)}c("?#`rkUUBn<#][!Y\|]/BӘŅ”_XjfS&TJ)͈5 &8^: B8Ո/Xp{lĔsUs|.4l{pgwb-?˸YxM611~Fqy[RbiV:nN'C3N:5Zv >}"iϮIENDB`authres_status-0.6.2/skins/summer-larry/000077500000000000000000000000001371632235300203705ustar00rootroot00000000000000authres_status-0.6.2/skins/summer-larry/authres_status.css000066400000000000000000000014521371632235300241620ustar00rootroot00000000000000/* Summer-Larry */ .webkit .messagelist tr > .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/summer-larry/badge.png000066400000000000000000000032301371632235300221360ustar00rootroot00000000000000PNG  IHDRkFI iCCPICC profile(}=H@_S"-vPqP8J`Zu0ChҐ8 ?.κ: "ƃ~{2S͎q@,#܊xE ` !z"wQ}R&|", xxz9YIRωG #e8xfȤb6f%C%"(FBeg\e{r4"HB*6P()&R:$drmc?,LNIb@`hlض'ZJ$"G@6pq=r%Cr$?MPr@-гnC`Hkn3~pFr'bKGD pHYs.#.#x?vtIME:,xutEXtCommentCreated with GIMPWoIDAT8˭kPTeƟ=gwn A"PS٠TFr mT h"&36WFR.,ax@A$잳O449>?c Oq0 ?vv)দ"<2P#Qs.,sQ)9"_Yl;\p* )>3q-oޘ{h1 q\Mcttü֐K,ʞ$1z= x8(q{13ﷴB.: J0>"+ʹ[hrV>UQ#ԆT|9I4:]hImBt=AjiW$\D tO^$ic~=xra ʁG:0#BMtLb4f\;Gv-33 ;]<@ zaM9 Wos0CàpǏH *Cc %h5g/;& ~J&[;T6V{cd1ԖWޮWzϫ?, %#{d(?,ָzȌMlƾ67 _#Q=4q1Vgv~GHB[-z8;PrOrmF#KyYى 9S\Ea Y;ȶeWdgoY&mR"pPOo--Adɰ~$fΧ?$Tݮ_^gF*`wkZ7'Cu]-=xTfFdyUJ CCtt<3wu@:ړ!7k|Žsil\wwaؓ}ۓNy;b7Xf<3;bA@N!DETbl27ek`zsmuH7{}j"CXشuغ]G,-SA6hB}JEoyD^+\+IɋBٿL3JHҫIENDB`authres_status-0.6.2/skins/summer-larry/badge2.png000066400000000000000000000016421371632235300222250ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME3w-tEXtCommentCreated with GIMPWzIDAT(ύ?lqADb@q#I*i$w8P -P~_x*g~'~:0Fp"ˋeoBi5R)G_ }aOIO5/nNb'xSHQC~a9ˋi8_ۀ!Q1{wC X25Z!KbAN+O/S`[q0fL>xi=Lۿ#ׇ1>E/<;بFφ͇;J$,&cFBWyX.p+\lv)^J:vk"%0<{Yn;s:}?I?IENDB`authres_status-0.6.2/skins/teal-larry/000077500000000000000000000000001371632235300200055ustar00rootroot00000000000000authres_status-0.6.2/skins/teal-larry/authres_status.css000066400000000000000000000014501371632235300235750ustar00rootroot00000000000000/* Teal-Larry */ .webkit .messagelist tr > .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/teal-larry/badge.png000066400000000000000000000032441371632235300215600ustar00rootroot00000000000000PNG  IHDRkFI iCCPICC profile(}=H@_S"-vPqP8J`Zu0ChҐ8 ?.κ: "ƃ~{2S͎q@,#܊xE ` !z"wQ}R&|", xxz9YIRωG #e8xfȤb6f%C%"(FBeg\e{r4"HB*6P()&R:$drmc?,LNIb@`hlض'ZJ$"G@6pq=r%Cr$?MPr@-гnC`Hkn3~pFr'bKGD pHYs.#.#x?vtIME;&k*tEXtCommentCreated with GIMPW{IDAT8˭kLW9O/XR`8E(23QEAQ[pSd+[T"ܼ5 VEN)H,iW,,3|_7cJFg8g#*Cx;m*j `G&MRxu Z*<52wΡCn%nd{(@za*ٶ2FWFgN%uLd fFDLUDݡZI#Gٛԏ7B-AbѨ>b+lX&Sυb T[zVl :~|c I4ST*# p<;"9ڿ3+}<PTr6K넗Je%L|vYFyvo&&>[.č!E%H˴gn6gKz bZ\d0dvj÷K$ hY^{ #w%s4O#dʲo3$fA}=\(9_]stnd9W7W{ f̒zlnu8ٯ={\R0:ZQ)-(2mOƢ UFݽkZ6:h,ZeUO8aSa]ZARD>2}i{)p~ZAzj讃)-[gKnI ^?O޶$\Sczt.)wmDo?|j1iL[o쫖H8c5 __m_9&~YY8q|P<+ [cB HIENDB`authres_status-0.6.2/skins/teal-larry/badge2.png000066400000000000000000000016541371632235300216450ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME ˝tEXtCommentCreated with GIMPWIDAT(ύҽkqki:'"ŀ"C+&(ՄJT$PfkACE\K*|=pOcԭ y3K?u{b:F|Ft0,$ǯ8FIx8x'(vJ3KgFq SԏAQ#KbX:1= ,Qc~,r"ڽ#j)`zD[qc؃W B#Kۘ꿨 .authres_status { width: 20px; } .messagelist tr > .authres_status { width: 20px; padding: 2px 3px; text-align: center; } .messagelist tr > .authres_status span { display: inline-block; vertical-align: middle; background: url(badge.png) center no-repeat; } #sections-table tbody #rcmrowauthres_status td.section { background-image: url(badge.png); background-position: 10px 5px; } #sections-table tbody #rcmrowauthres_status.selected td.section { background-image: url(badge2.png); background-repeat: no-repeat; background-position: 10px 5px; } .authres-status-img { vertical-align: top; height: 14px; width: 14px; } .widescreen .authres-status-img { position: relative; top: -1px; height: 12px; width: 12px; } authres_status-0.6.2/skins/violet-larry/badge.png000066400000000000000000000032151371632235300221330ustar00rootroot00000000000000PNG  IHDRkFI iCCPICC profile(}=H@_S"-vPqP8J`Zu0ChҐ8 ?.κ: "ƃ~{2S͎q@,#܊xE ` !z"wQ}R&|", xxz9YIRωG #e8xfȤb6f%C%"(FBeg\e{r4"HB*6P()&R:$drmc?,LNIb@`hlض'ZJ$"G@6pq=r%Cr$?MPr@-гnC`Hkn3~pFr'bKGD pHYs.#.#x?vtIME xtEXtCommentCreated with GIMPWdIDAT8˭kPU"\+J"%3$B%ce 1)&ҠQtB ĥQaָ , =W49c Ou^I$w !]8ro95j3R*;91ȕ$~Xr)f {b z\%)wz._Cr ;OG~ '͛rUMvkJ$C+c; Z\Ԃ[҄$ʍ~/ywgJ~~͙՛#i.8@xV!k5 V ^089".Ak%<ʢZ\˺ g88(oq 'g< 2"Vʆ;d\W"DS xEJݬ6?]ĎPՅ٧މHeطd*<1]Pb[K=,ܒ|Vc|lk. :6 ,Dь<v4B׮Oa U:p C*=Ư\d'OmGReH4R(' 2liO;pD i132Љ Rp3yܑ72TVsSif܉\l>ΎpuogkKqZ%/ tOfs,[k1ŗO$qjuȪ^׌V͂(~xN Ԛ&Js6nlΐ%U9lĹ̮t5vjۮMrKj6`=,TvYEc׼.^!~VAs'ҶZ6T~69V{[ySZ.V[<ފ )vGWoiFWъJb2W荽q4麕۳g}vVr|aSeLP,$y[D/̽:km.ݰkToHsfO }0uSA>pzkybG}LRl hVU:Xw=)EE%s:;LI~X/? 0/A7IENDB`authres_status-0.6.2/skins/violet-larry/badge2.png000066400000000000000000000016341371632235300222200ustar00rootroot00000000000000PNG  IHDR;֕JiCCPICC profile(}=H@_S" 8NDEEP :\MGbYWWAqrtRtZxp܏ww^f1e$cQ1]$fb>Ex?G3nX3y8ĊB|N7e[g M]-X=ۿg1rZ޺bKGD pHYs.#.#x?vtIME?tEXtCommentCreated with GIMPWtIDAT(ύ/hQ{ؐ@0YD0(82/ "oŠA߭dWTXXaWDa nqu-A&àQމ_8=YQUFk8#xxUת71j6Z{18b c(nvo$v!|(a"+E`'0> DE[O1`ueXXDhe؟K m8/Xa[| Ew0D¥t;!.XiX2#pcsib(6JQ`+x;n.~ZJߍ=ri]Skqgldz͝\DIENDB`authres_status-0.6.2/tests/000077500000000000000000000000001371632235300157445ustar00rootroot00000000000000authres_status-0.6.2/tests/DomainStatusTest.php000066400000000000000000000100541371632235300217300ustar00rootroot00000000000000create_header_object('mail.domain.net; dkim=pass (1024-bit key; secure) header.d=email.com header.i=@email.com header.b=XXXXXXXX; dkim-atps=neutral', 'Test '); $plugin = new authres_status(); $result = $plugin->get_authentication_status($headers); $expected = << EOT; $this->assertEquals($expected, $result); } public function test_pass_single_signature() { $headers = $this->create_header_object('mail.domain.net; dkim=pass (1024-bit key; secure) header.d=email.com header.i=@email.com header.b=XXXXXXXX; dkim-atps=neutral'); $plugin = new authres_status(); $result = $plugin->get_authentication_status($headers); $expected = << EOT; $this->assertEquals($expected, $result); } public function test_pass_multiple_signatures() { $headers = $this->create_header_object('mail.domain.net; dkim=pass header.i=@smtpcorp.com; dkim=pass header.i=@email.com; dkim=pass header.i=@email.com'); $plugin = new authres_status(); $result = $plugin->get_authentication_status($headers); $expected = << EOT; $this->assertEquals($expected, $result); } public function test_third_signature() { $headers = $this->create_header_object('mail.domain.net; dkim=pass (1024-bit key; unprotected) header.d=mail.3rdparty.com header.i=@mail.3rdparty.com header.b=XXXXXXXX;'); $plugin = new authres_status(); $result = $plugin->get_authentication_status($headers); $expected = << EOT; $this->assertEquals($expected, $result); } public function test_smtp_auth_signature() { $headers = $this->create_header_object('auth=pass smtp.auth=sendonly smtp.mailfrom=mail@example.com'); $plugin = new authres_status(); $result = $plugin->get_authentication_status($headers); $expected = << EOT; $this->assertEquals($expected, $result); } public function test_arc_header() { $headers = $this->create_header_object('arc=fail (signature failed)'); $plugin = new authres_status(); $result = $plugin->get_authentication_status($headers); $expected = << EOT; $this->assertEquals($expected, $result); } protected function create_header_object($authres_header, $from = 'Test ') { $headers = new stdClass; $headers->from = $from; $headers->others = array( 'x-dkim-authentication-results' => false, 'authentication-results' => $authres_header ); return $headers; } } authres_status-0.6.2/tests/rcube_plugin.php000066400000000000000000000003511371632235300211320ustar00rootroot00000000000000