Corrected translation key

This commit is contained in:
alext 2017-08-14 09:54:35 +02:00
parent 11ab8487cc
commit ae462c1efb
30 changed files with 449 additions and 120 deletions

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Страницата не е намерена.';
$lang['page_not_found_message'] = 'За съжаление търсената от Вас страница не съществува. Моля проверете интернет адреса или посетете друг сегмент като използвате бутоните по-долу.';
$lang['error'] = 'Грешка';
$lang['no_privileges'] = 'Без привилегии';
$lang['no_provileges_message'] = 'Не притежавате нужните привилегии за да достъпите тази страница. Моля посетете друг сегмент.';
$lang['no_privileges_message'] = 'Не притежавате нужните привилегии за да достъпите тази страница. Моля посетете друг сегмент.';
$lang['backend_calendar'] = 'Административен календар';
$lang['start_date_time'] = 'Начало Дата / Час';
$lang['end_date_time'] = 'Край Дата / Час';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = '页面没有找到';
$lang['page_not_found_message'] = '您所请求的页面不存在,请检查您的浏览器地址或返回.';
$lang['error'] = '错误';
$lang['no_privileges'] = '没有权限';
$lang['no_provileges_message'] = '您没有所需的权限去查看这个页面,请尝试其他页面.';
$lang['no_privileges_message'] = '您没有所需的权限去查看这个页面,请尝试其他页面.';
$lang['backend_calendar'] = '后台日历';
$lang['start_date_time'] = '开始日期/时间';
$lang['end_date_time'] = '结束日期/时间';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Siden ikke fundet';
$lang['page_not_found_message'] = 'Desværre, den side du søger eksistere ikke. Tjek din browser URL eller gå til en andet sted ved at bruge knappen nedenunder. ';
$lang['error'] = 'Error';
$lang['no_privileges'] = 'Ingen privilegium';
$lang['no_provileges_message'] = 'Du har ikke kravende til at bruge denne side. Vælg en anden gruppe.';
$lang['no_privileges_message'] = 'Du har ikke kravende til at bruge denne side. Vælg en anden gruppe.';
$lang['backend_calendar'] = 'Backend Kalender';
$lang['start_date_time'] = 'Start dato / Tid';
$lang['end_date_time'] = 'Slet dato / Tid';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] ='Pagina niet gevonden';
$lang['page_not_found_message'] ='Helaas bestaat de door u opgevraagde pagina niet. Controleer aub de locatie in uw browser of ga naar een andere locatie met behulp van de onderstaande knoppen.';
$lang['error'] ='Fout';
$lang['no_privileges'] ='Geen rechten';
$lang['no_provileges_message'] ='Je hebt niet de benodigde rechten om deze pagina te bekijken. Navigeer naar een andere sectie.';
$lang['no_privileges_message'] ='Je hebt niet de benodigde rechten om deze pagina te bekijken. Navigeer naar een andere sectie.';
$lang['backend_calendar'] ='Backend Kalender';
$lang['start_date_time'] ='Start datum/tijd';
$lang['end_date_time'] ='Eind datum/tijd';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Page Not Found';
$lang['page_not_found_message'] = 'Unfortunately the page you requested does not exist. Please check your browser URL or head to another location using the buttons below.';
$lang['error'] = 'Error';
$lang['no_privileges'] = 'No Privileges';
$lang['no_provileges_message'] = 'You do not have the required privileges to view this page. Please navigate to a different section.';
$lang['no_privileges_message'] = 'You do not have the required privileges to view this page. Please navigate to a different section.';
$lang['backend_calendar'] = 'Backend Calendar';
$lang['start_date_time'] = 'Start Date / Time';
$lang['end_date_time'] = 'End Date / Time';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Sivua ei löytynyt';
$lang['page_not_found_message'] = 'Valitettavasti sivua ei löytynyt. Tarkista selaimen osoiterivi tai siirry toiseen sijaintiin alla olevilla painikkeilla.';
$lang['error'] = 'Virhe';
$lang['no_privileges'] = 'Ei oikeuksia';
$lang['no_provileges_message'] = 'Sinulla ei ole oikeuksia katsella tätä sivua. Siirry toiseen osioon.';
$lang['no_privileges_message'] = 'Sinulla ei ole oikeuksia katsella tätä sivua. Siirry toiseen osioon.';
$lang['backend_calendar'] = 'Taustakalenteri';
$lang['start_date_time'] = 'Aloituspäivämäärä ja kellonaika';
$lang['end_date_time'] = 'Lopetus päivä ja kellonaika';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Seite Nicht Gefunden';
$lang['page_not_found_message'] = 'Leider ist die von Ihnen angeforderte Seite existiert nicht. Bitte überprüfen Sie Ihre Browser-URL oder navigieren Sie zu einem anderen Ort mit den Tasten unten.';
$lang['error'] = 'Fehler';
$lang['no_privileges'] = 'Unzureichende Berechtigungen';
$lang['no_provileges_message'] = 'Sie haben nicht die Berechtigung, diese Seite zu sehen. Bitte wechseln Sie zu einem anderen Abschnitt.';
$lang['no_privileges_message'] = 'Sie haben nicht die Berechtigung, diese Seite zu sehen. Bitte wechseln Sie zu einem anderen Abschnitt.';
$lang['backend_calendar'] = 'Backend Kalender';
$lang['start_date_time'] = 'Start Datum / Zeit';
$lang['end_date_time'] = 'Ende Datum / Zeit';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Η Σελίδα Δεν Βρέθηκε';
$lang['page_not_found_message'] = 'Δυστυχώς η σελίδα που ζητήσατε δεν υπάρχει. Παρακαλώ ελέγξτε την διεύθυνση του περιηγητή σας ή πηγαίνετε σε κάποια από τις παρακάτω τοποθεσίες.';
$lang['error'] = 'Σφάλμα';
$lang['no_privileges'] = 'Ανεπαρκή Δικαιώματα';
$lang['no_provileges_message'] = 'Δεν έχετε τα απαραίτητα δικαιώματα για να δείτε αυτήν την σελίδα. Παρακαλώ πλοηγηθείτε σε κάποιο άλλο τμήμα.';
$lang['no_privileges_message'] = 'Δεν έχετε τα απαραίτητα δικαιώματα για να δείτε αυτήν την σελίδα. Παρακαλώ πλοηγηθείτε σε κάποιο άλλο τμήμα.';
$lang['backend_calendar'] = 'Ημερολόγιο Backend';
$lang['start_date_time'] = 'Ημ. / Ώρα Έναρξης';
$lang['end_date_time'] = 'Ημ. / Ώρα Λήξης';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'पृष्ठ नहीं मिला';
$lang['page_not_found_message'] = 'दुर्भाग्य से आप का अनुरोध पृष्ठ मौजूद नहीं है। आपके ब्राउज़र URL की जाँच करें या नीचे बटन का उपयोग कर किसी अन्य स्थान पर चलें';
$lang['error'] = 'एरर';
$lang['no_privileges'] = 'विशेषाधिकार नहीं है';
$lang['no_provileges_message'] = 'आप इस पेज को देखने की आवश्यकता विशेषाधिकार नहीं है। एक अलग खंड पर नेविगेट करें';
$lang['no_privileges_message'] = 'आप इस पेज को देखने की आवश्यकता विशेषाधिकार नहीं है। एक अलग खंड पर नेविगेट करें';
$lang['backend_calendar'] = 'बैकएंड कैलेंडर';
$lang['start_date_time'] = 'दिनांक और समय शुरू';
$lang['end_date_time'] = 'अंत की तारीख और समय';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Nincs ilyen oldal. ';
$lang['page_not_found_message'] = 'Sajnos a keresett oldal nem létezik. Ellenőrizd a beírt URL-t vagy navigálj egy másik oldalra az alábbi gombok segítségével.';
$lang['error'] = 'Hiba';
$lang['no_privileges'] = 'Nincs jogosultságod. ';
$lang['no_provileges_message'] = 'Az oldal megtekintéséhez nincs megfelelő jogosultságod. Navigálj egy másik oldalra.';
$lang['no_privileges_message'] = 'Az oldal megtekintéséhez nincs megfelelő jogosultságod. Navigálj egy másik oldalra.';
$lang['backend_calendar'] = 'Backend Naptár';
$lang['start_date_time'] = 'Kezdés dátuma / ideje';
$lang['end_date_time'] = 'Befejezés dátuma / ideje';

View file

@ -222,7 +222,7 @@ $lang['page_not_found'] = 'Pagina non trovata';
$lang['page_not_found_message'] = 'Sfortunatamente la pagina richiesta non esiste. Controlla lo URL o naviga un indirizzo diverso usando i bottoni posti sotto.';
$lang['error'] = 'Errore';
$lang['no_privileges'] = 'Nessun privilegio';
$lang['no_provileges_message'] = 'Non hai i privilegi richiesti per visualizzare questa pagina. Naviga una sezione differente.';
$lang['no_privileges_message'] = 'Non hai i privilegi richiesti per visualizzare questa pagina. Naviga una sezione differente.';
$lang['backend_calendar'] = 'Calendario backend';
$lang['start_date_time'] = 'Inizio Data / Ora';
$lang['end_date_time'] = 'Fine Data / Ora';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'ページが見つかりません';
$lang['page_not_found_message'] = '要求されたページが見つかりませんでした。ブラウザーのURLを確認するか下のボタンで 別のページへ移動してください。';
$lang['error'] = 'エラー';
$lang['no_privileges'] = '権限がありません';
$lang['no_provileges_message'] = '該当のページを見るための権限がありません。別のページへ移動してください。';
$lang['no_privileges_message'] = '該当のページを見るための権限がありません。別のページへ移動してください。';
$lang['backend_calendar'] = '管理カレンダー';
$lang['start_date_time'] = '開始日/時間';
$lang['end_date_time'] = '終了日/時間';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Säit konnt net fonnt ginn';
$lang['page_not_found_message'] = 'Leider gëtt et déi vun Iech ugefuedert Säit net. Kontrolléiert w.e.g. Är Browser-URL oder navigéiert op eng aner Plaz.';
$lang['error'] = 'Fehler';
$lang['no_privileges'] = 'Net déi néideg Rechter';
$lang['no_provileges_message'] = 'Dir hutt net déi néideg Rechter fir dës Säit ze gesinn. Wisselt w.e.g. op eng aner Usicht.';
$lang['no_privileges_message'] = 'Dir hutt net déi néideg Rechter fir dës Säit ze gesinn. Wisselt w.e.g. op eng aner Usicht.';
$lang['backend_calendar'] = 'Backend Kalenner';
$lang['start_date_time'] = 'Ufanksdatum / Zäit';
$lang['end_date_time'] = 'Schlussdatum / Zäit';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Strona Nie Znaleziona';
$lang['page_not_found_message'] = 'Niestey nie znaleziono strony, sprawdź adres url...';
$lang['error'] = 'Błąd';
$lang['no_privileges'] = 'Brak uprawnień';
$lang['no_provileges_message'] = 'Nie masz odpowiednich uprawnień aby zobaczyć tą stronę. Nawiguj do innej sekcji.';
$lang['no_privileges_message'] = 'Nie masz odpowiednich uprawnień aby zobaczyć tą stronę. Nawiguj do innej sekcji.';
$lang['backend_calendar'] = 'Kalendarz funkcjonalny';
$lang['start_date_time'] = 'Data startu / Czas';
$lang['end_date_time'] = 'Data końca / Czas';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Página não encontrada ou página não existente';
$lang['page_not_found_message'] = 'Infelizmente a pagina solicitada não existe. Por favor verifique a URL ou siga outro local usando os botões abaixo.';
$lang['error'] = 'Erro';
$lang['no_privileges'] = 'Não tem permissão';
$lang['no_provileges_message'] = 'Não tem permissões para visualizar esta página. Por favor, selecione outra página.';
$lang['no_privileges_message'] = 'Não tem permissões para visualizar esta página. Por favor, selecione outra página.';
$lang['backend_calendar'] = 'Backend calendário';
$lang['start_date_time'] = 'Data / hora inicial';
$lang['end_date_time'] = 'Data / hora final';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Página não encontrada or página não existente';
$lang['page_not_found_message'] = 'Unfortunately the page you requested does not exist. Please check your browser URL or head to another location using the buttons below.';
$lang['error'] = 'Fechado';
$lang['no_privileges'] = 'Não tem permissão';
$lang['no_provileges_message'] = 'Não tem permissões para visualizar esta pagina. Por favor, selecione outra pagina.';
$lang['no_privileges_message'] = 'Não tem permissões para visualizar esta pagina. Por favor, selecione outra pagina.';
$lang['backend_calendar'] = 'Backend calendário';
$lang['start_date_time'] = 'Data / hora inicial';
$lang['end_date_time'] = 'Data / hora final';

View file

@ -222,7 +222,7 @@ $lang['page_not_found'] = 'Pagina negasita';
$lang['page_not_found_message'] = 'Din pacate pagina pe care ati cerut-o nu exista. Va rugam verificati adresa sau introduceti alta locatie folosind butoanele de mai jos.';
$lang['error'] = 'Eroare';
$lang['no_privileges'] = 'Fara drepturi';
$lang['no_provileges_message'] = 'Nu aveti drepturile necesare pentru a vizualiza aceasta pagina. Va rugam navigati spre alta sectiune.';
$lang['no_privileges_message'] = 'Nu aveti drepturile necesare pentru a vizualiza aceasta pagina. Va rugam navigati spre alta sectiune.';
$lang['backend_calendar'] = 'Calendar backend';
$lang['start_date_time'] = 'Start Data / Ora';
$lang['end_date_time'] = 'Sfarsit Data / Ora';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Страница не найдена';
$lang['page_not_found_message'] = 'К сожалению страница, которую вы запросили, не существует. Пожалуйста проверьте запрос в строке браузера или перейдите по ссылке используя меню и кнопки сайта.';
$lang['error'] = 'Ошибка';
$lang['no_privileges'] = 'Отсутствуют необходимые привилегии';
$lang['no_provileges_message'] = 'Вы не имеете необходимых разрешений на просмотр этой страницы. Пожалуйста используйте другие разделы.';
$lang['no_privileges_message'] = 'Вы не имеете необходимых разрешений на просмотр этой страницы. Пожалуйста используйте другие разделы.';
$lang['backend_calendar'] = 'бэкэнд Календарь';
$lang['start_date_time'] = 'Начало дата/время';
$lang['end_date_time'] = 'Окончание дата/время';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Stránka nenájdená';
$lang['page_not_found_message'] = 'Žiaľ Vami požadovaná stránka neexistuje. Prosím skontrolujte adresu URL prehliadača, alebo zmeňte umiestnenie pomocou tlačidiel nižšie.';
$lang['error'] = 'Chyba';
$lang['no_privileges'] = 'Nemáte oprávnenie';
$lang['no_provileges_message'] = 'Nemáte požadované oprávnenie na zobrazenie tejto stránky. Prejdite do inej sekcie.';
$lang['no_privileges_message'] = 'Nemáte požadované oprávnenie na zobrazenie tejto stránky. Prejdite do inej sekcie.';
$lang['backend_calendar'] = 'Administrácia - kalendár';
$lang['start_date_time'] = 'Dátum začatia / čas';
$lang['end_date_time'] = 'Dátum konca / čas';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'No se encontró la página';
$lang['page_not_found_message'] ='Lamentablemente, la página que Usted solicitó no existe. Por favor, verifique la dirección web de su navegador o utilice los botones de abajo para navegar hacia otra ubicación.';
$lang['error'] = 'Error';
$lang['no_privileges'] = 'Sin permisos';
$lang['no_provileges_message'] ='Usted no posee los permisos necesarios para ver esta página. Por favor, navegue hacia otra sección.';
$lang['no_privileges_message'] ='Usted no posee los permisos necesarios para ver esta página. Por favor, navegue hacia otra sección.';
$lang['backend_calendar'] = 'Calendario de gestión interna';
$lang['start_date_time'] = 'Fecha y hora de inicio';
$lang['end_date_time'] = 'Fecha y hora final';

View file

@ -216,7 +216,7 @@ $lang['page_not_found'] = 'Sayfa Bulunamadı';
$lang['page_not_found_message'] = 'Unfortunately the page you requested does not exist. Please check your browser URL or head to another location using the buttons below.';
$lang['error'] = 'Hata';
$lang['no_privileges'] = 'Yetki Yok';
$lang['no_provileges_message'] = 'Bu sayfayı görmek için gereken yetkiye sahip değilsiniz. Lütfen başka bir bölüme geçin.';
$lang['no_privileges_message'] = 'Bu sayfayı görmek için gereken yetkiye sahip değilsiniz. Lütfen başka bir bölüme geçin.';
$lang['backend_calendar'] = 'Arka uç Takvim';
$lang['start_date_time'] = 'Başlangıç Tarih / Zaman';
$lang['end_date_time'] = 'Bitiş Tarih / Zaman ';

View file

@ -4,4 +4,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420::getLoader();
return ComposerAutoloaderInit745c9af234090db98769aa0b5014bcf4::getLoader();

View file

@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420
class ComposerAutoloaderInit745c9af234090db98769aa0b5014bcf4
{
private static $loader;
@ -19,15 +19,15 @@ class ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420', 'loadClassLoader'), true, true);
spl_autoload_register(array('ComposerAutoloaderInit745c9af234090db98769aa0b5014bcf4', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit27b185dd281c9a16e18aefb1c9e2d420', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInit745c9af234090db98769aa0b5014bcf4', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require_once __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit27b185dd281c9a16e18aefb1c9e2d420::getInitializer($loader));
call_user_func(\Composer\Autoload\ComposerStaticInit745c9af234090db98769aa0b5014bcf4::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {

View file

@ -4,7 +4,7 @@
namespace Composer\Autoload;
class ComposerStaticInit9c38908245762ba05608594a95bb6a4f
class ComposerStaticInit745c9af234090db98769aa0b5014bcf4
{
public static $prefixLengthsPsr4 = array (
'p' =>
@ -539,10 +539,10 @@ class ComposerStaticInit9c38908245762ba05608594a95bb6a4f
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit9c38908245762ba05608594a95bb6a4f::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit9c38908245762ba05608594a95bb6a4f::$prefixDirsPsr4;
$loader->prefixesPsr0 = ComposerStaticInit9c38908245762ba05608594a95bb6a4f::$prefixesPsr0;
$loader->classMap = ComposerStaticInit9c38908245762ba05608594a95bb6a4f::$classMap;
$loader->prefixLengthsPsr4 = ComposerStaticInit745c9af234090db98769aa0b5014bcf4::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit745c9af234090db98769aa0b5014bcf4::$prefixDirsPsr4;
$loader->prefixesPsr0 = ComposerStaticInit745c9af234090db98769aa0b5014bcf4::$prefixesPsr0;
$loader->classMap = ComposerStaticInit745c9af234090db98769aa0b5014bcf4::$classMap;
}, null, ClassLoader::class);
}

View file

@ -1,4 +1,39 @@
[
{
"name": "codeigniter/framework",
"version": "3.1.5",
"version_normalized": "3.1.5.0",
"source": {
"type": "git",
"url": "https://github.com/bcit-ci/CodeIgniter.git",
"reference": "6c7a4266410070d30f8f6bcdf9c9e67f3d6478e3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/bcit-ci/CodeIgniter/zipball/6c7a4266410070d30f8f6bcdf9c9e67f3d6478e3",
"reference": "6c7a4266410070d30f8f6bcdf9c9e67f3d6478e3",
"shasum": ""
},
"require": {
"php": ">=5.3.7"
},
"require-dev": {
"mikey179/vfsstream": "1.1.*",
"phpunit/phpunit": "4.* || 5.*"
},
"suggest": {
"paragonie/random_compat": "Provides better randomness in PHP 5.x"
},
"time": "2017-06-19T08:33:58+00:00",
"type": "project",
"installation-source": "dist",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "The CodeIgniter framework",
"homepage": "https://codeigniter.com"
},
{
"name": "gregwar/captcha",
"version": "v1.1.1",
@ -51,30 +86,46 @@
},
{
"name": "phpmailer/phpmailer",
"version": "v5.2.16",
"version_normalized": "5.2.16.0",
"version": "v5.2.23",
"version_normalized": "5.2.23.0",
"source": {
"type": "git",
"url": "https://github.com/PHPMailer/PHPMailer.git",
"reference": "1d85f9ef3ecfc42bbc4f3c70d5e37ca9a65f629a"
"reference": "7115df4a6f76281109ebe352900c42403b728bb4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/1d85f9ef3ecfc42bbc4f3c70d5e37ca9a65f629a",
"reference": "1d85f9ef3ecfc42bbc4f3c70d5e37ca9a65f629a",
"url": "https://api.github.com/repos/PHPMailer/PHPMailer/zipball/7115df4a6f76281109ebe352900c42403b728bb4",
"reference": "7115df4a6f76281109ebe352900c42403b728bb4",
"shasum": ""
},
"require": {
"php": ">=5.0.0"
},
"require-dev": {
"phpdocumentor/phpdocumentor": "*",
"phpunit/phpunit": "4.7.*"
"doctrine/annotations": "1.2.*",
"jms/serializer": "0.16.*",
"phpdocumentor/phpdocumentor": "2.*",
"phpunit/phpunit": "4.8.*",
"symfony/debug": "2.8.*",
"symfony/filesystem": "2.8.*",
"symfony/translation": "2.8.*",
"symfony/yaml": "2.8.*",
"zendframework/zend-cache": "2.5.1",
"zendframework/zend-config": "2.5.1",
"zendframework/zend-eventmanager": "2.5.1",
"zendframework/zend-filter": "2.5.1",
"zendframework/zend-i18n": "2.5.1",
"zendframework/zend-json": "2.5.1",
"zendframework/zend-math": "2.5.1",
"zendframework/zend-serializer": "2.5.*",
"zendframework/zend-servicemanager": "2.5.*",
"zendframework/zend-stdlib": "2.5.1"
},
"suggest": {
"league/oauth2-google": "Needed for Google XOAUTH2 authentication"
},
"time": "2016-06-06T09:09:37+00:00",
"time": "2017-03-15T19:32:56+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -112,38 +163,141 @@
"description": "PHPMailer is a full-featured email creation and transfer class for PHP"
},
{
"name": "codeigniter/framework",
"version": "3.1.2",
"version_normalized": "3.1.2.0",
"name": "roave/security-advisories",
"version": "dev-master",
"version_normalized": "9999999-dev",
"source": {
"type": "git",
"url": "https://github.com/bcit-ci/CodeIgniter.git",
"reference": "2afa6b6b58a73fa26a7a93045ccb1fc8a087a141"
"url": "https://github.com/Roave/SecurityAdvisories.git",
"reference": "0b18b6bbeed070fb900ad78e81ffa1182a57a752"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/bcit-ci/CodeIgniter/zipball/2afa6b6b58a73fa26a7a93045ccb1fc8a087a141",
"reference": "2afa6b6b58a73fa26a7a93045ccb1fc8a087a141",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/0b18b6bbeed070fb900ad78e81ffa1182a57a752",
"reference": "0b18b6bbeed070fb900ad78e81ffa1182a57a752",
"shasum": ""
},
"require": {
"php": ">=5.2.4"
"conflict": {
"adodb/adodb-php": "<5.20.6",
"amphp/artax": ">=2,<2.0.6|<1.0.6",
"aws/aws-sdk-php": ">=3,<3.2.1",
"bugsnag/bugsnag-laravel": ">=2,<2.0.2",
"cakephp/cakephp": ">=3,<3.0.15|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=1.3,<1.3.18|>=2.7,<2.7.6|>=3.1,<3.1.4",
"cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
"cartalyst/sentry": "<2.1",
"codeigniter/framework": "<=3.0.6",
"composer/composer": "<=1.0.0-alpha11",
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
"contao/core": ">=2.11,<3.5.15",
"doctrine/annotations": ">=1,<1.2.7",
"doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
"doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
"doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2",
"doctrine/doctrine-bundle": "<1.5.2",
"doctrine/doctrine-module": "<=0.7.1",
"doctrine/mongodb-odm": ">=1,<1.0.2",
"doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
"doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1",
"dompdf/dompdf": ">=0.6,<0.6.2",
"drupal/core": ">=8,<8.3.4",
"drupal/drupal": ">=8,<8.3.4",
"firebase/php-jwt": "<2",
"friendsofsymfony/rest-bundle": ">=1.2,<1.2.2",
"friendsofsymfony/user-bundle": ">=1.2,<1.3.5",
"gregwar/rst": "<1.0.3",
"guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1",
"illuminate/auth": ">=4,<4.0.99|>=4.1,<4.1.26",
"illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29",
"joomla/session": "<1.3.1",
"laravel/framework": ">=4,<4.0.99|>=4.1,<4.1.29",
"laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
"magento/magento1ce": ">=1.5.0.1,<1.9.3.2",
"magento/magento1ee": ">=1.9,<1.14.3.2",
"magento/magento2ce": ">=2,<2.2",
"monolog/monolog": ">=1.8,<1.12",
"namshi/jose": "<2.2",
"onelogin/php-saml": "<2.10.4",
"oro/crm": ">=1.7,<1.7.4",
"oro/platform": ">=1.7,<1.7.4",
"phpmailer/phpmailer": ">=5,<5.2.22",
"pusher/pusher-php-server": "<2.2.1",
"sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9",
"shopware/shopware": "<4.4|>=5,<5.2.16",
"silverstripe/cms": ">=3.1,<3.1.11|>=3,<=3.0.11",
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
"silverstripe/framework": ">=3,<3.3",
"silverstripe/userforms": "<3",
"simplesamlphp/saml2": "<1.8.1|>=1.9,<1.9.1|>=1.10,<1.10.3|>=2,<2.3.3",
"simplesamlphp/simplesamlphp": "<1.14.12",
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"socalnick/scn-social-auth": "<1.15.2",
"squizlabs/php_codesniffer": ">=1,<2.8.1",
"swiftmailer/swiftmailer": ">=4,<5.4.5",
"symfony/dependency-injection": ">=2,<2.0.17",
"symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.7",
"symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2",
"symfony/http-foundation": ">=2,<2.3.27|>=2.4,<2.5.11|>=2.6,<2.6.6",
"symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8",
"symfony/routing": ">=2,<2.0.19",
"symfony/security": ">=2.3,<2.3.37|>=2.4,<2.6.13|>=2.7,<2.7.9|>=2,<2.0.25|>=2.1,<2.1.13|>=2.2,<2.2.9",
"symfony/security-core": ">=2.8,<2.8.6|>=3,<3.0.6|>=2.4,<2.6.13|>=2.7,<2.7.9",
"symfony/security-http": ">=2.4,<2.7.13|>=2.3,<2.3.41|>=2.8,<2.8.6|>=3,<3.0.6",
"symfony/serializer": ">=2,<2.0.11",
"symfony/symfony": ">=2,<2.3.41|>=2.4,<2.7.13|>=2.8,<2.8.6|>=3,<3.0.6",
"symfony/translation": ">=2,<2.0.17",
"symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3",
"symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4",
"symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
"thelia/thelia": ">=2.1.0-beta1,<2.1.3|>=2.1,<2.1.2",
"twig/twig": "<1.20",
"typo3/cms": ">=6.2,<6.2.30|>=8,<8.6.1|>=7,<7.6.16",
"typo3/flow": ">=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5|>=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1",
"typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4",
"willdurand/js-translation-bundle": "<2.1.1",
"yiisoft/yii": ">=1.1.14,<1.1.15",
"yiisoft/yii2": "<2.0.5",
"yiisoft/yii2-bootstrap": "<2.0.4",
"yiisoft/yii2-dev": "<2.0.4",
"yiisoft/yii2-gii": "<2.0.4",
"yiisoft/yii2-jui": "<2.0.4",
"zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3",
"zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
"zendframework/zend-diactoros": ">=1,<1.0.4",
"zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
"zendframework/zend-http": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.3,<2.3.8|>=2.4,<2.4.1",
"zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
"zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
"zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
"zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
"zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
"zendframework/zend-validator": ">=2.3,<2.3.6",
"zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
"zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
"zendframework/zendframework": ">=2,<2.4.11|>=2.5,<2.5.1",
"zendframework/zendframework1": "<1.12.20",
"zendframework/zendopenid": ">=2,<2.0.2",
"zendframework/zendxml": ">=1,<1.0.1",
"zf-commons/zfc-user": "<1.2.2",
"zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
"zfr/zfr-oauth2-server-module": "<0.1.2"
},
"require-dev": {
"mikey179/vfsstream": "1.1.*"
},
"suggest": {
"paragonie/random_compat": "Provides better randomness in PHP 5.x"
},
"time": "2016-10-28T15:13:14+00:00",
"type": "project",
"installation-source": "dist",
"time": "2017-06-22T16:43:17+00:00",
"type": "metapackage",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "The CodeIgniter framework",
"homepage": "https://codeigniter.com"
"authors": [
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com",
"role": "maintainer"
}
],
"description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it"
},
{
"name": "webmozart/assert",

View file

@ -1 +1 @@
5.2.16
5.2.23

View file

@ -31,7 +31,7 @@ class PHPMailer
* The PHPMailer Version number.
* @var string
*/
public $Version = '5.2.16';
public $Version = '5.2.23';
/**
* Email priority.
@ -201,6 +201,9 @@ class PHPMailer
/**
* An ID to be used in the Message-ID header.
* If empty, a unique id will be generated.
* You can set your own, but it must be in the format "<id@domain>",
* as defined in RFC5322 section 3.6.4 or it will be ignored.
* @see https://tools.ietf.org/html/rfc5322#section-3.6.4
* @var string
*/
public $MessageID = '';
@ -420,6 +423,13 @@ class PHPMailer
*/
public $DKIM_private = '';
/**
* DKIM private key string.
* If set, takes precedence over `$DKIM_private`.
* @var string
*/
public $DKIM_private_string = '';
/**
* Callback Action function name.
*
@ -681,16 +691,16 @@ class PHPMailer
} else {
$subject = $this->encodeHeader($this->secureHeader($subject));
}
//Can't use additional_parameters in safe_mode
//Can't use additional_parameters in safe_mode, calling mail() with null params breaks
//@link http://php.net/manual/en/function.mail.php
if (ini_get('safe_mode') or !$this->UseSendmailOptions) {
if (ini_get('safe_mode') or !$this->UseSendmailOptions or is_null($params)) {
$result = @mail($to, $subject, $body, $header);
} else {
$result = @mail($to, $subject, $body, $header, $params);
}
return $result;
}
/**
* Output debugging info via user-defined method.
* Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug).
@ -1284,9 +1294,11 @@ class PHPMailer
// Sign with DKIM if enabled
if (!empty($this->DKIM_domain)
&& !empty($this->DKIM_private)
&& !empty($this->DKIM_selector)
&& file_exists($this->DKIM_private)) {
&& (!empty($this->DKIM_private_string)
|| (!empty($this->DKIM_private) && file_exists($this->DKIM_private))
)
) {
$header_dkim = $this->DKIM_Add(
$this->MIMEHeader . $this->mailHeader,
$this->encodeHeader($this->secureHeader($this->Subject)),
@ -1352,19 +1364,24 @@ class PHPMailer
*/
protected function sendmailSend($header, $body)
{
if ($this->Sender != '') {
// CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.
if (!empty($this->Sender) and self::isShellSafe($this->Sender)) {
if ($this->Mailer == 'qmail') {
$sendmail = sprintf('%s -f%s', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
$sendmailFmt = '%s -f%s';
} else {
$sendmail = sprintf('%s -oi -f%s -t', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
$sendmailFmt = '%s -oi -f%s -t';
}
} else {
if ($this->Mailer == 'qmail') {
$sendmail = sprintf('%s', escapeshellcmd($this->Sendmail));
$sendmailFmt = '%s';
} else {
$sendmail = sprintf('%s -oi -t', escapeshellcmd($this->Sendmail));
$sendmailFmt = '%s -oi -t';
}
}
// TODO: If possible, this should be changed to escapeshellarg. Needs thorough testing.
$sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender);
if ($this->SingleTo) {
foreach ($this->SingleToArray as $toAddr) {
if (!@$mail = popen($sendmail, 'w')) {
@ -1410,6 +1427,40 @@ class PHPMailer
return true;
}
/**
* Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters.
*
* Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows.
* @param string $string The string to be validated
* @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report
* @access protected
* @return boolean
*/
protected static function isShellSafe($string)
{
// Future-proof
if (escapeshellcmd($string) !== $string
or !in_array(escapeshellarg($string), array("'$string'", "\"$string\""))
) {
return false;
}
$length = strlen($string);
for ($i = 0; $i < $length; $i++) {
$c = $string[$i];
// All other characters have a special meaning in at least one common shell, including = and +.
// Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here.
// Note that this does permit non-Latin alphanumeric characters based on the current locale.
if (!ctype_alnum($c) && strpos('@_-.', $c) === false) {
return false;
}
}
return true;
}
/**
* Send mail using the PHP mail() function.
* @param string $header The message headers
@ -1429,10 +1480,13 @@ class PHPMailer
$params = null;
//This sets the SMTP envelope sender which gets turned into a return-path header by the receiver
if (!empty($this->Sender)) {
$params = sprintf('-f%s', $this->Sender);
if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {
// CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.
if (self::isShellSafe($this->Sender)) {
$params = sprintf('-f%s', $this->Sender);
}
}
if ($this->Sender != '' and !ini_get('safe_mode')) {
if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) {
$old_from = ini_get('sendmail_from');
ini_set('sendmail_from', $this->Sender);
}
@ -1486,10 +1540,10 @@ class PHPMailer
if (!$this->smtpConnect($this->SMTPOptions)) {
throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);
}
if ('' == $this->Sender) {
$smtp_from = $this->From;
} else {
if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {
$smtp_from = $this->Sender;
} else {
$smtp_from = $this->From;
}
if (!$this->smtp->mail($smtp_from)) {
$this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));
@ -1681,6 +1735,19 @@ class PHPMailer
*/
public function setLanguage($langcode = 'en', $lang_path = '')
{
// Backwards compatibility for renamed language codes
$renamed_langcodes = array(
'br' => 'pt_br',
'cz' => 'cs',
'dk' => 'da',
'no' => 'nb',
'se' => 'sv',
);
if (isset($renamed_langcodes[$langcode])) {
$langcode = $renamed_langcodes[$langcode];
}
// Define full set of translatable strings in English
$PHPMAILER_LANG = array(
'authenticate' => 'SMTP Error: Could not authenticate.',
@ -1707,6 +1774,10 @@ class PHPMailer
// Calculate an absolute path so it can work if CWD is not here
$lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR;
}
//Validate $langcode
if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) {
$langcode = 'en';
}
$foundlang = true;
$lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php';
// There is no English translation file
@ -2000,6 +2071,8 @@ class PHPMailer
$result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
}
// Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4
// https://tools.ietf.org/html/rfc5322#section-3.6.4
if ('' != $this->MessageID and preg_match('/^<.*@.*>$/', $this->MessageID)) {
$this->lastMessageID = $this->MessageID;
} else {
@ -2105,6 +2178,14 @@ class PHPMailer
return rtrim($this->MIMEHeader . $this->mailHeader, "\n\r") . self::CRLF . self::CRLF . $this->MIMEBody;
}
/**
* Create unique ID
* @return string
*/
protected function generateId() {
return md5(uniqid(time()));
}
/**
* Assemble the message body.
* Returns an empty string on failure.
@ -2116,7 +2197,7 @@ class PHPMailer
{
$body = '';
//Create unique IDs and preset boundaries
$this->uniqueid = md5(uniqid(time()));
$this->uniqueid = $this->generateId();
$this->boundary[1] = 'b1_' . $this->uniqueid;
$this->boundary[2] = 'b2_' . $this->uniqueid;
$this->boundary[3] = 'b3_' . $this->uniqueid;
@ -2411,6 +2492,7 @@ class PHPMailer
/**
* Add an attachment from a path on the filesystem.
* Never use a user-supplied path to a file!
* Returns false if the file could not be found or read.
* @param string $path Path to the attachment.
* @param string $name Overrides the attachment name.
@ -2936,6 +3018,7 @@ class PHPMailer
* displayed inline with the message, not just attached for download.
* This is used in HTML messages that embed the images
* the HTML refers to using the $cid value.
* Never use a user-supplied path to a file!
* @param string $path Path to the attachment.
* @param string $cid Content ID of the attachment; Use this to reference
* the content when using an embedded image in HTML.
@ -3296,21 +3379,29 @@ class PHPMailer
}
/**
* Create a message from an HTML string.
* Automatically makes modifications for inline images and backgrounds
* and creates a plain-text version by converting the HTML.
* Overwrites any existing values in $this->Body and $this->AltBody
* Create a message body from an HTML string.
* Automatically inlines images and creates a plain-text version by converting the HTML,
* overwriting any existing values in Body and AltBody.
* Do not source $message content from user input!
* $basedir is prepended when handling relative URLs, e.g. <img src="/images/a.png"> and must not be empty
* will look for an image file in $basedir/images/a.png and convert it to inline.
* If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email)
* If you don't want to apply these transformations to your HTML, just set Body and AltBody directly.
* @access public
* @param string $message HTML message string
* @param string $basedir baseline directory for path
* @param string $basedir Absolute path to a base directory to prepend to relative paths to images
* @param boolean|callable $advanced Whether to use the internal HTML to text converter
* or your own custom converter @see PHPMailer::html2text()
* @return string $message
* @return string $message The transformed message Body
*/
public function msgHTML($message, $basedir = '', $advanced = false)
{
preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images);
if (array_key_exists(2, $images)) {
if (strlen($basedir) > 1 && substr($basedir, -1) != '/') {
// Ensure $basedir has a trailing /
$basedir .= '/';
}
foreach ($images[2] as $imgindex => $url) {
// Convert data URIs into embedded images
if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) {
@ -3328,18 +3419,24 @@ class PHPMailer
$message
);
}
} elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[a-z][a-z0-9+.-]*://#i', $url)) {
// Do not change urls for absolute images (thanks to corvuscorax)
continue;
}
if (
// Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
!empty($basedir)
// Ignore URLs containing parent dir traversal (..)
&& (strpos($url, '..') === false)
// Do not change urls that are already inline images
&& substr($url, 0, 4) !== 'cid:'
// Do not change absolute URLs, including anonymous protocol
&& !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url)
) {
$filename = basename($url);
$directory = dirname($url);
if ($directory == '.') {
$directory = '';
}
$cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2
if (strlen($basedir) > 1 && substr($basedir, -1) != '/') {
$basedir .= '/';
}
if (strlen($directory) > 1 && substr($directory, -1) != '/') {
$directory .= '/';
}
@ -3375,7 +3472,7 @@ class PHPMailer
* Convert an HTML string into plain text.
* This is used by msgHTML().
* Note - older versions of this function used a bundled advanced converter
* which was been removed for license reasons in #232
* which was been removed for license reasons in #232.
* Example usage:
* <code>
* // Use default conversion
@ -3675,7 +3772,7 @@ class PHPMailer
* @access public
* @param string $signHeader
* @throws phpmailerException
* @return string
* @return string The DKIM signature value
*/
public function DKIM_Sign($signHeader)
{
@ -3685,15 +3782,33 @@ class PHPMailer
}
return '';
}
$privKeyStr = file_get_contents($this->DKIM_private);
if ($this->DKIM_passphrase != '') {
$privKeyStr = !empty($this->DKIM_private_string) ? $this->DKIM_private_string : file_get_contents($this->DKIM_private);
if ('' != $this->DKIM_passphrase) {
$privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
} else {
$privKey = openssl_pkey_get_private($privKeyStr);
}
if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { //sha1WithRSAEncryption
openssl_pkey_free($privKey);
return base64_encode($signature);
//Workaround for missing digest algorithms in old PHP & OpenSSL versions
//@link http://stackoverflow.com/a/11117338/333340
if (version_compare(PHP_VERSION, '5.3.0') >= 0 and
in_array('sha256WithRSAEncryption', openssl_get_md_methods(true))) {
if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {
openssl_pkey_free($privKey);
return base64_encode($signature);
}
} else {
$pinfo = openssl_pkey_get_details($privKey);
$hash = hash('sha256', $signHeader);
//'Magic' constant for SHA256 from RFC3447
//@link https://tools.ietf.org/html/rfc3447#page-43
$t = '3031300d060960864801650304020105000420' . $hash;
$pslen = $pinfo['bits'] / 8 - (strlen($t) / 2 + 3);
$eb = pack('H*', '0001' . str_repeat('FF', $pslen) . '00' . $t);
if (openssl_private_encrypt($eb, $signature, $privKey, OPENSSL_NO_PADDING)) {
openssl_pkey_free($privKey);
return base64_encode($signature);
}
}
openssl_pkey_free($privKey);
return '';

View file

@ -80,6 +80,7 @@ class PHPMailerOAuth extends PHPMailer
* @uses SMTP
* @access public
* @return bool
* @throws phpmailerException
*/
public function smtpConnect($options = array())
{

View file

@ -34,7 +34,7 @@ class POP3
* @var string
* @access public
*/
public $Version = '5.2.16';
public $Version = '5.2.23';
/**
* Default POP3 port number.

View file

@ -30,7 +30,7 @@ class SMTP
* The PHPMailer SMTP version number.
* @var string
*/
const VERSION = '5.2.16';
const VERSION = '5.2.23';
/**
* SMTP line break constant.
@ -81,7 +81,7 @@ class SMTP
* @deprecated Use the `VERSION` constant instead
* @see SMTP::VERSION
*/
public $Version = '5.2.16';
public $Version = '5.2.23';
/**
* SMTP server port number.
@ -150,6 +150,17 @@ class SMTP
*/
public $Timelimit = 300;
/**
* @var array patterns to extract smtp transaction id from smtp reply
* Only first capture group will be use, use non-capturing group to deal with it
* Extend this class to override this property to fulfil your needs.
*/
protected $smtp_transaction_id_patterns = array(
'exim' => '/[0-9]{3} OK id=(.*)/',
'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/',
'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/'
);
/**
* The socket for the server connection.
* @var resource
@ -206,7 +217,7 @@ class SMTP
}
//Avoid clash with built-in function names
if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) {
call_user_func($this->Debugoutput, $str, $this->do_debug);
call_user_func($this->Debugoutput, $str, $level);
return;
}
switch ($this->Debugoutput) {
@ -220,8 +231,7 @@ class SMTP
preg_replace('/[\r\n]+/', '', $str),
ENT_QUOTES,
'UTF-8'
)
. "<br>\n";
) . "<br>\n";
break;
case 'echo':
default:
@ -231,7 +241,7 @@ class SMTP
"\n",
"\n \t ",
trim($str)
)."\n";
) . "\n";
}
}
@ -265,15 +275,16 @@ class SMTP
}
// Connect to the SMTP server
$this->edebug(
"Connection: opening to $host:$port, timeout=$timeout, options=".var_export($options, true),
"Connection: opening to $host:$port, timeout=$timeout, options=" .
var_export($options, true),
self::DEBUG_CONNECTION
);
$errno = 0;
$errstr = '';
if ($streamok) {
$socket_context = stream_context_create($options);
//Suppress errors; connection failures are handled at a higher level
$this->smtp_conn = @stream_socket_client(
set_error_handler(array($this, 'errorHandler'));
$this->smtp_conn = stream_socket_client(
$host . ":" . $port,
$errno,
$errstr,
@ -281,12 +292,14 @@ class SMTP
STREAM_CLIENT_CONNECT,
$socket_context
);
restore_error_handler();
} else {
//Fall back to fsockopen which should work in more places, but is missing some features
$this->edebug(
"Connection: stream_socket_client not available, falling back to fsockopen",
self::DEBUG_CONNECTION
);
set_error_handler(array($this, 'errorHandler'));
$this->smtp_conn = fsockopen(
$host,
$port,
@ -294,6 +307,7 @@ class SMTP
$errstr,
$timeout
);
restore_error_handler();
}
// Verify we connected properly
if (!is_resource($this->smtp_conn)) {
@ -348,14 +362,14 @@ class SMTP
}
// Begin encrypted connection
if (!stream_socket_enable_crypto(
set_error_handler(array($this, 'errorHandler'));
$crypto_ok = stream_socket_enable_crypto(
$this->smtp_conn,
true,
$crypto_method
)) {
return false;
}
return true;
);
restore_error_handler();
return $crypto_ok;
}
/**
@ -384,8 +398,7 @@ class SMTP
}
if (array_key_exists('EHLO', $this->server_caps)) {
// SMTP extensions are available. Let's try to find a proper authentication method
// SMTP extensions are available; try to find a proper authentication method
if (!array_key_exists('AUTH', $this->server_caps)) {
$this->setError('Authentication is not allowed at this stage');
// 'at this stage' means that auth may be allowed after the stage changes
@ -410,7 +423,7 @@ class SMTP
$this->setError('No supported authentication methods found');
return false;
}
self::edebug('Auth method selected: '.$authtype, self::DEBUG_LOWLEVEL);
self::edebug('Auth method selected: ' . $authtype, self::DEBUG_LOWLEVEL);
}
if (!in_array($authtype, $this->server_caps['AUTH'])) {
@ -474,7 +487,7 @@ class SMTP
$temp = new stdClass;
$ntlm_client = new ntlm_sasl_client_class;
//Check that functions are available
if (!$ntlm_client->Initialize($temp)) {
if (!$ntlm_client->initialize($temp)) {
$this->setError($temp->error);
$this->edebug(
'You need to enable some modules in your php.ini file: '
@ -484,7 +497,7 @@ class SMTP
return false;
}
//msg1
$msg1 = $ntlm_client->TypeMsg1($realm, $workstation); //msg1
$msg1 = $ntlm_client->typeMsg1($realm, $workstation); //msg1
if (!$this->sendCommand(
'AUTH NTLM',
@ -503,7 +516,7 @@ class SMTP
$password
);
//msg3
$msg3 = $ntlm_client->TypeMsg3(
$msg3 = $ntlm_client->typeMsg3(
$ntlm_res,
$username,
$realm,
@ -536,7 +549,7 @@ class SMTP
* Works like hash_hmac('md5', $data, $key)
* in case that function is not available
* @param string $data The data to hash
* @param string $key The key to hash with
* @param string $key The key to hash with
* @access protected
* @return string
*/
@ -879,7 +892,8 @@ class SMTP
$code_ex = (count($matches) > 2 ? $matches[2] : null);
// Cut off error code from each response line
$detail = preg_replace(
"/{$code}[ -]".($code_ex ? str_replace('.', '\\.', $code_ex).' ' : '')."/m",
"/{$code}[ -]" .
($code_ex ? str_replace('.', '\\.', $code_ex) . ' ' : '') . "/m",
'',
$this->last_reply
);
@ -1091,7 +1105,7 @@ class SMTP
// Now check if reads took too long
if ($endtime and time() > $endtime) {
$this->edebug(
'SMTP -> get_lines(): timelimit reached ('.
'SMTP -> get_lines(): timelimit reached (' .
$this->Timelimit . ' sec)',
self::DEBUG_LOWLEVEL
);
@ -1189,4 +1203,49 @@ class SMTP
{
return $this->Timeout;
}
/**
* Reports an error number and string.
* @param integer $errno The error number returned by PHP.
* @param string $errmsg The error message returned by PHP.
* @param string $errfile The file the error occurred in
* @param integer $errline The line number the error occurred on
*/
protected function errorHandler($errno, $errmsg, $errfile = '', $errline = 0)
{
$notice = 'Connection failed.';
$this->setError(
$notice,
$errno,
$errmsg
);
$this->edebug(
$notice . ' Error #' . $errno . ': ' . $errmsg . " [$errfile line $errline]",
self::DEBUG_CONNECTION
);
}
/**
* Will return the ID of the last smtp transaction based on a list of patterns provided
* in SMTP::$smtp_transaction_id_patterns.
* If no reply has been received yet, it will return null.
* If no pattern has been matched, it will return false.
* @return bool|null|string
*/
public function getLastTransactionID()
{
$reply = $this->getLastReply();
if (empty($reply)) {
return null;
}
foreach ($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) {
if (preg_match($smtp_transaction_id_pattern, $reply, $matches)) {
return $matches[1];
}
}
return false;
}
}