From ab364e0fc70475ec61abc0c83697986b64f2170a Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Thu, 28 Sep 2017 15:36:52 +0200 Subject: [PATCH] Remove unsupported livestatus functionality Signed-off-by: Eric Lippmann --- .../files/modules/monitoring/backends.ini | 5 - .../Resource/LivestatusResourceForm.php | 86 ---- .../forms/Config/ResourceConfigForm.php | 4 - .../locale/ar_SA/LC_MESSAGES/icinga.mo | Bin 66172 -> 65965 bytes .../locale/ar_SA/LC_MESSAGES/icinga.po | 250 ++++------ .../locale/de_DE/LC_MESSAGES/icinga.mo | Bin 68246 -> 68075 bytes .../locale/de_DE/LC_MESSAGES/icinga.po | 12 +- .../locale/fi_FI/LC_MESSAGES/icinga.mo | Bin 25414 -> 25255 bytes .../locale/fi_FI/LC_MESSAGES/icinga.po | 10 +- .../locale/it_IT/LC_MESSAGES/icinga.mo | Bin 57011 -> 57045 bytes .../locale/it_IT/LC_MESSAGES/icinga.po | 12 +- .../locale/pt_BR/LC_MESSAGES/icinga.mo | Bin 27164 -> 26980 bytes .../locale/pt_BR/LC_MESSAGES/icinga.po | 14 +- .../locale/ru_RU/LC_MESSAGES/icinga.mo | Bin 8395 -> 8595 bytes .../locale/ru_RU/LC_MESSAGES/icinga.po | 10 +- .../views/scripts/config/resource.phtml | 3 - doc/04-Resources.md | 4 +- doc/99-Vagrant.md | 2 +- library/Icinga/Data/ResourceFactory.php | 6 +- .../Icinga/Protocol/Livestatus/Connection.php | 445 ----------------- library/Icinga/Protocol/Livestatus/Query.php | 470 ------------------ .../Protocol/Livestatus/ResponseRow.php | 19 - .../forms/Config/BackendConfigForm.php | 4 - .../application/forms/Setup/BackendPage.php | 1 - .../forms/Setup/LivestatusResourcePage.php | 83 ---- .../locale/pt_BR/LC_MESSAGES/monitoring.mo | Bin 59334 -> 59255 bytes .../locale/pt_BR/LC_MESSAGES/monitoring.po | 16 +- .../Backend/Livestatus/LivestatusBackend.php | 10 - .../Livestatus/Query/DowntimeQuery.php | 45 -- .../Livestatus/Query/HostgroupQuery.php | 19 - .../Livestatus/Query/ServicegroupQuery.php | 36 -- .../Backend/Livestatus/Query/StatusQuery.php | 259 ---------- .../Livestatus/Query/StatusSummaryQuery.php | 64 --- .../library/Monitoring/BackendStep.php | 15 - .../library/Monitoring/MonitoringWizard.php | 11 +- .../library/Monitoring/Object/Host.php | 3 - .../Monitoring/Object/MonitoredObject.php | 20 - 37 files changed, 144 insertions(+), 1794 deletions(-) delete mode 100644 application/forms/Config/Resource/LivestatusResourceForm.php delete mode 100644 library/Icinga/Protocol/Livestatus/Connection.php delete mode 100644 library/Icinga/Protocol/Livestatus/Query.php delete mode 100644 library/Icinga/Protocol/Livestatus/ResponseRow.php delete mode 100644 modules/monitoring/application/forms/Setup/LivestatusResourcePage.php delete mode 100644 modules/monitoring/library/Monitoring/Backend/Livestatus/LivestatusBackend.php delete mode 100644 modules/monitoring/library/Monitoring/Backend/Livestatus/Query/DowntimeQuery.php delete mode 100644 modules/monitoring/library/Monitoring/Backend/Livestatus/Query/HostgroupQuery.php delete mode 100644 modules/monitoring/library/Monitoring/Backend/Livestatus/Query/ServicegroupQuery.php delete mode 100644 modules/monitoring/library/Monitoring/Backend/Livestatus/Query/StatusQuery.php delete mode 100644 modules/monitoring/library/Monitoring/Backend/Livestatus/Query/StatusSummaryQuery.php diff --git a/.puppet/profiles/icingaweb2_dev/files/modules/monitoring/backends.ini b/.puppet/profiles/icingaweb2_dev/files/modules/monitoring/backends.ini index 55f8e3115d..dd446be205 100644 --- a/.puppet/profiles/icingaweb2_dev/files/modules/monitoring/backends.ini +++ b/.puppet/profiles/icingaweb2_dev/files/modules/monitoring/backends.ini @@ -5,8 +5,3 @@ resource = ido-mysql [ido-pgsql] type = ido resource = ido-pgsql - -[livestatus] -disabled = 1 -type = livestatus -resource = livestatus diff --git a/application/forms/Config/Resource/LivestatusResourceForm.php b/application/forms/Config/Resource/LivestatusResourceForm.php deleted file mode 100644 index 9fc975f099..0000000000 --- a/application/forms/Config/Resource/LivestatusResourceForm.php +++ /dev/null @@ -1,86 +0,0 @@ -setName('form_config_resource_livestatus'); - } - - /** - * @see Form::createElements() - */ - public function createElements(array $formData) - { - $this->addElement( - 'text', - 'name', - array( - 'required' => true, - 'label' => $this->translate('Resource Name'), - 'description' => $this->translate('The unique name of this resource') - ) - ); - $this->addElement( - 'text', - 'socket', - array( - 'required' => true, - 'label' => $this->translate('Socket'), - 'description' => $this->translate('The path to your livestatus socket used for querying monitoring data'), - 'value' => '/var/run/icinga2/cmd/livestatus' - ) - ); - - return $this; - } - - /** - * Validate that the current configuration points to a valid resource - * - * @see Form::onSuccess() - */ - public function onSuccess() - { - if (false === static::isValidResource($this)) { - return false; - } - } - - /** - * Validate the resource configuration by trying to connect with it - * - * @param Form $form The form to fetch the configuration values from - * - * @return bool Whether validation succeeded or not - */ - public static function isValidResource(Form $form) - { - try { - $resource = ResourceFactory::createResource(new ConfigObject($form->getValues())); - $resource->connect()->disconnect(); - } catch (Exception $_) { - $form->addError( - $form->translate('Connectivity validation failed, connection to the given resource not possible.') - ); - return false; - } - - return true; - } -} diff --git a/application/forms/Config/ResourceConfigForm.php b/application/forms/Config/ResourceConfigForm.php index 818f749489..95316aa924 100644 --- a/application/forms/Config/ResourceConfigForm.php +++ b/application/forms/Config/ResourceConfigForm.php @@ -15,7 +15,6 @@ use Icinga\Forms\Config\Resource\DbResourceForm; use Icinga\Forms\Config\Resource\FileResourceForm; use Icinga\Forms\Config\Resource\LdapResourceForm; -use Icinga\Forms\Config\Resource\LivestatusResourceForm; use Icinga\Forms\Config\Resource\SshResourceForm; use Icinga\Web\Form; use Icinga\Web\Notification; @@ -59,8 +58,6 @@ public function getResourceForm($type) return new DbResourceForm(); } elseif ($type === 'ldap') { return new LdapResourceForm(); - } elseif ($type === 'livestatus') { - return new LivestatusResourceForm(); } elseif ($type === 'file') { return new FileResourceForm(); } elseif ($type === 'ssh') { @@ -262,7 +259,6 @@ public function createElements(array $formData) $resourceTypes = array( 'file' => $this->translate('File'), - 'livestatus' => 'Livestatus', 'ssh' => $this->translate('SSH Identity'), ); if ($resourceType === 'ldap' || Platform::hasLdapSupport()) { diff --git a/application/locale/ar_SA/LC_MESSAGES/icinga.mo b/application/locale/ar_SA/LC_MESSAGES/icinga.mo index c65cf3d7fa12c35eae8460c73a708f015432c8f6..97f8d63b1dcf218bce18da6a5261762826352619 100644 GIT binary patch delta 11030 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 J{&Mxu{{zC!@B{z= diff --git a/application/locale/ar_SA/LC_MESSAGES/icinga.po b/application/locale/ar_SA/LC_MESSAGES/icinga.po index 44e1e9719d..7f1e72d363 100644 --- a/application/locale/ar_SA/LC_MESSAGES/icinga.po +++ b/application/locale/ar_SA/LC_MESSAGES/icinga.po @@ -8,16 +8,16 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: dev@icinga.com\n" "POT-Creation-Date: 2016-05-23 20:16+0300\n" -"PO-Revision-Date: 2016-06-02 10:02+0300\n" -"Last-Translator: Munzir Taha \n" +"PO-Revision-Date: 2017-09-28 15:05+0200\n" +"Last-Translator: Michael Friedrich \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 &&" -" n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" -"X-Generator: Lokalize 2.0\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && " +"n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" +"X-Generator: Poedit 2.0.3\n" #: /usr/share/php/Icinga/Web/Form/Validator/InArray.php:16 #, php-format @@ -180,7 +180,7 @@ msgstr "إضافة مستخدم جديد" #: /usr/share/php/Icinga/Web/Widget/FilterEditor.php:410 msgid "Add another filter" -msgstr "إضافة مرشِّح جديد" +msgstr "إضافة مرشِّح جديد" #: /usr/share/php/Icinga/Web/Widget/FilterWidget.php:80 msgid "Add filter..." @@ -205,8 +205,8 @@ msgid "" "All configured authentication methods failed. Please check the system log or " "Icinga Web 2 log for more information." msgstr "" -"فشلت جميع طرق التحقق. رجاء قم بفحص سجلات النظام أو سجلات إسنجا وب 2 للمزيد" -" من المعلومات." +"فشلت جميع طرق التحقق. رجاء قم بفحص سجلات النظام أو سجلات إسنجا وب 2 للمزيد من " +"المعلومات." #: /usr/share/icingaweb2/application/forms/Security/RoleForm.php:68 #, php-format @@ -234,8 +234,8 @@ msgid "" "An additional filter to use when looking up groups using the specified " "connection. Leave empty to not to use any additional filter rules." msgstr "" -"مرشح إضافة لاستخدامه عند البحث عن المجموعات باستخدام الاتصال المحدد. دعه" -" فارغا حتى لا تستخدم أي قوانين مرشحات إضافية." +"مرشح إضافة لاستخدامه عند البحث عن المجموعات باستخدام الاتصال المحدد. دعه " +"فارغا حتى لا تستخدم أي قوانين مرشحات إضافية." #: /usr/share/icingaweb2/application/forms/Config/UserGroup/LdapUserGroupBackendForm.php:228 #: /usr/share/icingaweb2/application/forms/Config/UserBackend/LdapBackendForm.php:153 @@ -243,8 +243,8 @@ msgid "" "An additional filter to use when looking up users using the specified " "connection. Leave empty to not to use any additional filter rules." msgstr "" -"مرشح إضافة لاستخدامه عند البحث عن المستخدمين باستخدام الاتصال المحدد. دعه" -" فارغا حتى لا تستخدم أي قوانين مرشحات إضافية." +"مرشح إضافة لاستخدامه عند البحث عن المستخدمين باستخدام الاتصال المحدد. دعه " +"فارغا حتى لا تستخدم أي قوانين مرشحات إضافية." #: /usr/share/php/Icinga/Web/Menu.php:274 #: /usr/share/php/Icinga/Application/Web.php:318 @@ -282,15 +282,15 @@ msgstr "خدمة المصادقة \"%s\" لا توجد" #: /usr/share/icingaweb2/application/forms/Config/UserBackendReorderForm.php:65 msgid "Authentication order updated" -msgstr "حُدِّث ترتيب المصادقة" +msgstr "حُدِّث ترتيب المصادقة" #: /usr/share/icingaweb2/application/forms/AutoRefreshForm.php:44 msgid "Auto refresh successfully disabled" -msgstr "عُطِّل التحديث التلقائي" +msgstr "عُطِّل التحديث التلقائي" #: /usr/share/icingaweb2/application/forms/AutoRefreshForm.php:41 msgid "Auto refresh successfully enabled" -msgstr "فُعِّل التحديث التلقائي" +msgstr "فُعِّل التحديث التلقائي" #: /usr/share/php/Icinga/Web/Wizard.php:626 #: /usr/share/php/Icinga/Web/Wizard.php:650 @@ -384,8 +384,7 @@ msgstr "لا يمكن البحث هنا" #: /usr/share/php/Icinga/Repository/IniRepository.php:91 #: /usr/share/php/Icinga/Repository/IniRepository.php:108 #, php-format -msgid "" -"Cannot update. Column \"%s\" holds a section's name which must be unique" +msgid "Cannot update. Column \"%s\" holds a section's name which must be unique" msgstr "تعذر التحديث. العمود \"%s\" يحوي اسم المقطع الذي يجب أن يكون وحيدا" #: /usr/share/php/Icinga/Repository/IniRepository.php:123 @@ -407,8 +406,8 @@ msgid "" "Check this box for disallowing users to change the theme. If a default theme " "is set, it will be used nonetheless" msgstr "" -"اختر هذا المربع لمنع المستخدمين من تغيير السمة. إذا تم تعيين سمة افتراضية،" -" سيتم استخدامها في جميع الحالات" +"اختر هذا المربع لمنع المستخدمين من تغيير السمة. إذا تم تعيين سمة افتراضية، " +"سيتم استخدامها في جميع الحالات" #: /usr/share/icingaweb2/application/forms/Config/Resource/DbResourceForm.php:154 msgid "" @@ -417,8 +416,8 @@ msgid "" "experimental" msgstr "" "حدد هذا المربع لاتصالات قاعدة البيانات الثابتة. لا يتم إغلاق الاتصالات " -"المستمرة في نهاية الطلب، ولكنها تخزن في ذاكرة مؤقتة ويعاد " -"استخدامها. وهذه خاصية تجريبية" +"المستمرة في نهاية الطلب، ولكنها تخزن في ذاكرة مؤقتة ويعاد استخدامها. وهذه " +"خاصية تجريبية" #: /usr/share/icingaweb2/application/forms/Dashboard/DashletForm.php:101 msgid "Check this box if you want to add the dashlet to a new dashboard" @@ -486,8 +485,7 @@ msgstr "تأكيد الإزالة" #: /usr/share/icingaweb2/application/forms/Config/Resource/LivestatusResourceForm.php:79 msgid "" -"Connectivity validation failed, connection to the given resource not " -"possible." +"Connectivity validation failed, connection to the given resource not possible." msgstr "فشل التحقق من الاتصال، الاتصال بالمورد المعطى غير ممكن." #: /usr/share/php/Icinga/Chart/GridChart.php:90 @@ -505,10 +503,9 @@ msgid "" "be symlinked in the module folder, but won't show up in the list of disabled " "modules." msgstr "" -"يحتوي على المجلدات التي سيتم البحث فيها عن الوحدات المتاحة، " -"مفصولة بنقطتين. الوحدات التي لا وجود لها في هذه المجلدات يظل " -"بالإمكان ربطها من مجلد الوحدة، لكنها لن تظهر في قائمة الوحدات " -"المعطلة." +"يحتوي على المجلدات التي سيتم البحث فيها عن الوحدات المتاحة، مفصولة بنقطتين. " +"الوحدات التي لا وجود لها في هذه المجلدات يظل بالإمكان ربطها من مجلد الوحدة، " +"لكنها لن تظهر في قائمة الوحدات المعطلة." #: /usr/share/icingaweb2/application/views/scripts/about/index.phtml:25 msgid "Copyright" @@ -519,8 +516,8 @@ msgid "" "Could not find any valid user backend resources. Please configure a resource " "for authentication first." msgstr "" -"لا يمكن العثور على أي موارد لخلفية المستخدم صالحة. يرجى إعداد مورد " -"للمصادقة أولا." +"لا يمكن العثور على أي موارد لخلفية المستخدم صالحة. يرجى إعداد مورد للمصادقة " +"أولا." #: /usr/share/icingaweb2/application/views/scripts/dashboard/error.phtml:2 msgid "Could not persist dashboard" @@ -563,8 +560,8 @@ msgid "" "Create a new backend for authenticating your users. This backend will be " "added at the end of your authentication order." msgstr "" -"إنشاء خلفية جديدة لمصادقة المستخدمين. ستضاف هذه الخلفية " -"في نهاية ترتيب المصادقة الخاصة بك." +"إنشاء خلفية جديدة لمصادقة المستخدمين. ستضاف هذه الخلفية في نهاية ترتيب " +"المصادقة الخاصة بك." #: /usr/share/icingaweb2/application/controllers/UsergroupbackendController.php:42 msgid "Create a new backend to associate users and groups with." @@ -629,8 +626,8 @@ msgid "" "Currently there is no dashlet available. This might change once you enabled " "some of the available %s." msgstr "" -"لا يوجد حاليا لوحة مصغرة متاحة. يمكن لهذا أن يتغير بمجرد " -"تفعيلك لبعض الـ %s المتوفرة." +"لا يوجد حاليا لوحة مصغرة متاحة. يمكن لهذا أن يتغير بمجرد تفعيلك لبعض الـ %s " +"المتوفرة." #: /usr/share/icingaweb2/application/forms/Dashboard/DashletForm.php:120 #: /usr/share/icingaweb2/application/controllers/DashboardController.php:257 @@ -710,8 +707,8 @@ msgid "" "Details can be found in the application log. (If you don't have access to " "this log, call your administrator in this case)" msgstr "" -"يمكن الاطلاع على التفاصيل في سجل التطبيق. (إذا لم يكن لديك " -"وصولا إلى هذا السجل، اتصل بالمسؤول في هذه الحالة)" +"يمكن الاطلاع على التفاصيل في سجل التطبيق. (إذا لم يكن لديك وصولا إلى هذا " +"السجل، اتصل بالمسؤول في هذه الحالة)" #: /usr/share/icingaweb2/application/forms/AutoRefreshForm.php:65 msgid "Disable auto refresh" @@ -818,9 +815,8 @@ msgid "" "Enter url being loaded in the dashlet. You can paste the full URL, including " "filters." msgstr "" -"أدخل الرابط الذي تم تحميله في اللوحة المصغرة. يمكنك لصق عنوان URL الكامل، بما" -" في ذلك " -"المرشحات." +"أدخل الرابط الذي تم تحميله في اللوحة المصغرة. يمكنك لصق عنوان URL الكامل، بما " +"في ذلك المرشحات." #: /usr/share/icingaweb2/application/controllers/ErrorController.php:109 msgid "Error" @@ -894,8 +890,8 @@ msgid "" "Failed to fully parse navigation configuration. Ensure that all referenced " "parents are existing navigation items: %s" msgstr "" -"فشل في إجراء تحليل كامل لإعداد التنقل. تأكد من أن جميع الآباء المشار " -"لهم هم عناصر تنقل موجودة: %s" +"فشل في إجراء تحليل كامل لإعداد التنقل. تأكد من أن جميع الآباء المشار لهم هم " +"عناصر تنقل موجودة: %s" #: /usr/share/php/Icinga/Repository/IniRepository.php:72 #, php-format @@ -970,7 +966,7 @@ msgstr "تصفية هذه القائمة" #: /usr/share/php/Icinga/Web/Widget/FilterWidget.php:93 msgid "Filtered" -msgstr "مُرشَّح" +msgstr "مُرشَّح" #: /usr/share/php/Icinga/Web/Wizard.php:662 msgid "Finish" @@ -1117,21 +1113,19 @@ msgstr "أيقونة" #: /usr/share/icingaweb2/application/views/scripts/authentication/logout.phtml:15 msgid "" -"If this message does not disappear, it might be necessary to quit the " -"current session manually by clearing the cache, or by closing the current " -"browser session." +"If this message does not disappear, it might be necessary to quit the current " +"session manually by clearing the cache, or by closing the current browser " +"session." msgstr "" -"إذا لم تختفي هذه الرسالة، فقد يكون من اللازم إنهاء " -"الجلسة الحالية يدويا بتنظيف الذاكرة المخبأة أو بإغلاق " -"جلسة المتصفح الحالية." +"إذا لم تختفي هذه الرسالة، فقد يكون من اللازم إنهاء الجلسة الحالية يدويا " +"بتنظيف الذاكرة المخبأة أو بإغلاق جلسة المتصفح الحالية." #: /usr/share/icingaweb2/application/views/scripts/showConfiguration.phtml:21 msgid "" "In case you can access the file by yourself, you can open it and insert the " "config manually:" msgstr "" -"في حال كان بإمكانك الوصول إلى الملف بنفسك، يمكنك فتحه وإدراج " -"الإعداد يدويا:" +"في حال كان بإمكانك الوصول إلى الملف بنفسك، يمكنك فتحه وإدراج الإعداد يدويا:" #: /usr/share/icingaweb2/application/views/scripts/user/show.phtml:33 msgid "Inactive" @@ -1165,10 +1159,10 @@ msgid "" "authentication method by following the instructions in the %1$sdocumentation" "%3$s or by using our %2$sweb-based setup-wizard%3$s." msgstr "" -"يبدو أنك لم تقوم بإعداد إسنجا الويب 2 بعد لذلك فأنه من غير الممكن " -"الدخول دون أي أسلوب مصادقة معرف. يرجى تعريف أسلوب " -"مصادقة من خلال اتباع التعليمات في %1$sdocumentation " -"%3$s أو عن طريق استخدام معالج التثبيت%3$s المبني على الوب الخاص بنا%2$" +"يبدو أنك لم تقوم بإعداد إسنجا الويب 2 بعد لذلك فأنه من غير الممكن الدخول دون " +"أي أسلوب مصادقة معرف. يرجى تعريف أسلوب مصادقة من خلال اتباع التعليمات في " +"%1$sdocumentation %3$s أو عن طريق استخدام معالج التثبيت%3$s المبني على الوب " +"الخاص بنا%2$" #: /usr/share/icingaweb2/application/forms/Config/UserBackend/LdapBackendForm.php:210 msgid "LDAP Base DN" @@ -1514,8 +1508,8 @@ msgid "" "No authentication methods available. Did you create authentication.ini when " "setting up Icinga Web 2?" msgstr "" -"لا يُوجد طرق مصادقة متوفرة. هل قمت بإنشاء authentication.ini " -"عند إعداد إسنجا وب 2؟" +"لا يُوجد طرق مصادقة متوفرة. هل قمت بإنشاء authentication.ini عند إعداد إسنجا " +"وب 2؟" #: /usr/share/icingaweb2/application/views/scripts/group/list.phtml:22 msgid "No backend found which is able to list user groups" @@ -1572,11 +1566,11 @@ msgstr "بلا" #: /usr/share/icingaweb2/application/forms/Config/UserGroup/UserGroupForm.php:63 msgid "" -"Note that all users that are currently a member of this group will have " -"their membership cleared automatically." +"Note that all users that are currently a member of this group will have their " +"membership cleared automatically." msgstr "" -"لاحظ أن جميع المستخدمين الذين هم حاليا أعضاء في هذه المجموعة ستحذف " -"عضويتهم تلقائيا." +"لاحظ أن جميع المستخدمين الذين هم حاليا أعضاء في هذه المجموعة ستحذف عضويتهم " +"تلقائيا." #: /usr/share/icingaweb2/application/forms/Config/ResourceConfigForm.php:96 msgid "Old resource name missing" @@ -1648,8 +1642,8 @@ msgid "" "Please note that not all authentication methods were available. Check the " "system log or Icinga Web 2 log for more information." msgstr "" -"يرجى ملاحظة أن ليس كل أساليب المصادقة متاحة. تحقق من سجل " -"النظام أو سجل إسنجا الويب 2 لمزيد من المعلومات." +"يرجى ملاحظة أن ليس كل أساليب المصادقة متاحة. تحقق من سجل النظام أو سجل إسنجا " +"الويب 2 لمزيد من المعلومات." #: /usr/share/icingaweb2/application/forms/Config/UserGroup/AddMemberForm.php:143 msgid "" @@ -1709,8 +1703,7 @@ msgid "" "Push this button to update the form to reflect the change that was made in " "the field on the left" msgstr "" -"ضغط هذا الزر لتحديث النموذج لعكس التغيير الذي تم إجراؤه في " -"الحقل على اليسار" +"ضغط هذا الزر لتحديث النموذج لعكس التغيير الذي تم إجراؤه في الحقل على اليسار" #: /usr/share/php/Icinga/Web/Form/Decorator/Autosubmit.php:119 msgid "" @@ -1922,8 +1915,7 @@ msgstr "تقييد المجموعات التي يمكن لهذا الدور أن #: /usr/share/icingaweb2/application/forms/Security/RoleForm.php:53 msgid "Restrict which users this role can share items and information with" -msgstr "" -"تقييد المستخدمين الذين يمكن لهذا الدور أن يشارك معهم العناصر والمعلومات" +msgstr "تقييد المستخدمين الذين يمكن لهذا الدور أن يشارك معهم العناصر والمعلومات" #: /usr/share/icingaweb2/application/views/scripts/config/module.phtml:68 msgid "Restrictions" @@ -2037,8 +2029,8 @@ msgid "" "Set whether to show an exception's stacktrace by default. This can also be " "set in a user's preferences with the appropriate permission." msgstr "" -"اختيار هل يظهر تتبع مكدس الاستثناء بشكل افتراضي. يمكن أيضا " -"تعيينه في تفضيلات المستخدم مع الإذن المناسب." +"اختيار هل يظهر تتبع مكدس الاستثناء بشكل افتراضي. يمكن أيضا تعيينه في تفضيلات " +"المستخدم مع الإذن المناسب." #: /usr/share/icingaweb2/application/forms/PreferenceForm.php:224 msgid "Set whether to show an exception's stacktrace." @@ -2251,16 +2243,16 @@ msgid "" "The filter needs to be expressed as standard LDAP expression, without outer " "parentheses. (e.g. &(foo=bar)(bar=foo) or foo=bar)" msgstr "" -"يحتاج المرشح أن يعبر عنه كتعبير LDAP قياسي، دون الأقواس " -"الخارجية. (مثلا: &(foo=bar)(bar=foo) or foo=bar)" +"يحتاج المرشح أن يعبر عنه كتعبير LDAP قياسي، دون الأقواس الخارجية. (مثلا: " +"&(foo=bar)(bar=foo) or foo=bar)" #: /usr/share/icingaweb2/application/forms/Config/UserBackend/LdapBackendForm.php:157 msgid "" -"The filter needs to be expressed as standard LDAP expression. (e.g. " -"&(foo=bar)(bar=foo) or foo=bar)" +"The filter needs to be expressed as standard LDAP expression. (e.g. &(foo=bar)" +"(bar=foo) or foo=bar)" msgstr "" -"يحتاج المرشح أن يعبر عنه كتعبير LDAP قياسي، " -"(مثلا: &(foo=bar)(bar=foo) or foo=bar)" +"يحتاج المرشح أن يعبر عنه كتعبير LDAP قياسي، (مثلا: &(foo=bar)(bar=foo) or " +"foo=bar)" #: /usr/share/icingaweb2/application/forms/Config/UserBackend/ExternalBackendForm.php:54 msgid "The filter pattern must be a valid regular expression." @@ -2271,8 +2263,8 @@ msgid "" "The filter to use to strip specific parts off from usernames. Leave empty if " "you do not want to strip off anything." msgstr "" -"الفلتر المستخدم لتجريد أجزاء معينة من من أسماء المستخدمين. دعه فارغا إذا " -"كنت لا تريد تجريد أي شيء." +"الفلتر المستخدم لتجريد أجزاء معينة من من أسماء المستخدمين. دعه فارغا إذا كنت " +"لا تريد تجريد أي شيء." #: /usr/share/icingaweb2/application/forms/Config/General/LoggingConfigForm.php:116 msgid "The full path to the log file to write messages to." @@ -2292,11 +2284,9 @@ msgstr "اسم المضيف أو العنوان لخادم LDAP لاستخدام #: /usr/share/icingaweb2/application/forms/Navigation/NavigationItemForm.php:70 msgid "" -"The icon of this navigation item. Leave blank if you do not want a icon " -"being displayed" -msgstr "" -"أيقونة عنصر التنقل هذا. دعها فارغة إن لم ترد " -"عرض الأيقونة" +"The icon of this navigation item. Leave blank if you do not want a icon being " +"displayed" +msgstr "أيقونة عنصر التنقل هذا. دعها فارغة إن لم ترد عرض الأيقونة" #: /usr/share/icingaweb2/application/forms/Config/General/LoggingConfigForm.php:54 msgid "The maximum logging level to emit." @@ -2323,17 +2313,13 @@ msgstr "اسم الدور" msgid "" "The name of this authentication provider that is used to differentiate it " "from others" -msgstr "" -"اسم مزود المصادقة لاستخدامه في التفرقة " -"بينه وبين الآخرين" +msgstr "اسم مزود المصادقة لاستخدامه في التفرقة بينه وبين الآخرين" #: /usr/share/icingaweb2/application/forms/Config/UserBackend/LdapBackendForm.php:59 msgid "" "The name of this authentication provider that is used to differentiate it " "from others." -msgstr "" -"اسم مزود المصادقة لاستخدامه في التفرقة " -"بينه وبين الآخرين." +msgstr "اسم مزود المصادقة لاستخدامه في التفرقة بينه وبين الآخرين." #: /usr/share/icingaweb2/application/forms/Navigation/NavigationConfigForm.php:584 msgid "" @@ -2345,9 +2331,7 @@ msgstr "اسم عنصر التنقل لاستخدامه في التفرقة بي msgid "" "The name of this user group backend that is used to differentiate it from " "others" -msgstr "" -"اسم خلفية مجموعة المستخدم لاستخدامه في التفرقة بينه وبين " -"الآخرين" +msgstr "اسم خلفية مجموعة المستخدم لاستخدامه في التفرقة بينه وبين الآخرين" #: /usr/share/icingaweb2/application/forms/Config/UserGroup/LdapUserGroupBackendForm.php:123 msgid "The object class used for storing groups on the LDAP server." @@ -2363,16 +2347,16 @@ msgid "" "The parent item to assign this navigation item to. Select \"None\" to make " "this a main navigation item" msgstr "" -"العنصر الأصل لتعيين بند التنقل هذا إليه. اختر \"بلا\" لجعل " -"بند التنقل هذا رئيسيا" +"العنصر الأصل لتعيين بند التنقل هذا إليه. اختر \"بلا\" لجعل بند التنقل هذا " +"رئيسيا" #: /usr/share/icingaweb2/application/forms/Navigation/MenuItemForm.php:27 msgid "" "The parent menu to assign this menu entry to. Select \"None\" to make this a " "main menu entry" msgstr "" -"القائمة الأم لتعيين مدخل القائمة هذا إليه. اختر \"بلا\" لجعل " -"مدخل القائمة هذا رئيسيا" +"القائمة الأم لتعيين مدخل القائمة هذا إليه. اختر \"بلا\" لجعل مدخل القائمة هذا " +"رئيسيا" #: /usr/share/icingaweb2/application/forms/Config/Resource/DbResourceForm.php:138 msgid "The password to use for authentication" @@ -2382,18 +2366,13 @@ msgstr "كلمة المرور لاستخدامها في المصادقة" msgid "The password to use for querying the ldap server" msgstr "كلمة المرور لاستخدامها في الاستعلام عن خادم ldap" -#: /usr/share/icingaweb2/application/forms/Config/Resource/LivestatusResourceForm.php:45 -msgid "The path to your livestatus socket used for querying monitoring data" -msgstr "" -"المسار إلى مقبس livestatus الخاصة بك لاستخدامه في الاستعلام عن بيانات المراقبة" - #: /usr/share/icingaweb2/application/forms/Config/UserGroup/LdapUserGroupBackendForm.php:192 msgid "" "The path where groups can be found on the LDAP server. Leave empty to select " "all users available using the specified connection." msgstr "" -"المسار حيث يمكن العثور على مجموعات على خادم LDAP. اتركه فارغا لتحديد " -"جميع المستخدمين المتوفرين باستخدام الاتصال المحدد." +"المسار حيث يمكن العثور على مجموعات على خادم LDAP. اتركه فارغا لتحديد جميع " +"المستخدمين المتوفرين باستخدام الاتصال المحدد." #: /usr/share/icingaweb2/application/forms/Config/UserGroup/LdapUserGroupBackendForm.php:273 #: /usr/share/icingaweb2/application/forms/Config/UserBackend/LdapBackendForm.php:212 @@ -2401,8 +2380,8 @@ msgid "" "The path where users can be found on the LDAP server. Leave empty to select " "all users available using the specified connection." msgstr "" -"المسار حيث يمكن العثور على مستخدمين على خادم LDAP. اتركه فارغا لتحديد " -"جميع المستخدمين المتوفرين باستخدام الاتصال المحدد." +"المسار حيث يمكن العثور على مستخدمين على خادم LDAP. اتركه فارغا لتحديد جميع " +"المستخدمين المتوفرين باستخدام الاتصال المحدد." #: /usr/share/icingaweb2/application/forms/Config/Resource/FileResourceForm.php:59 msgid "The pattern by which to identify columns." @@ -2436,8 +2415,8 @@ msgid "" "\"%s\". Removing the resource can result in noone being able to log in any " "longer." msgstr "" -"المورد \"%s\" يستخدم حاليا للمصادقة من قبل خلفية المستخدم \"%s\". " -"إزالة المورد يؤدي إلى عدم قدرة أي أحد على الدخول لفترة أطول." +"المورد \"%s\" يستخدم حاليا للمصادقة من قبل خلفية المستخدم \"%s\". إزالة " +"المورد يؤدي إلى عدم قدرة أي أحد على الدخول لفترة أطول." #: /usr/share/icingaweb2/application/forms/Navigation/NavigationItemForm.php:39 msgid "The target where to open this navigation item's url" @@ -2482,17 +2461,16 @@ msgid "" "identifier (e.g. http://example.tld)" msgstr "" "عنوان الموقع في بند التنقل هذا. اتركه فارغا إذا كنت تريد فقط للاسم أن يُعرض. " -"لعناوين المواقع الخارجية، تأكد من إلحاقها بمعرف بروتوكول مناسب " -"(مثل: http: //example.tld)" +"لعناوين المواقع الخارجية، تأكد من إلحاقها بمعرف بروتوكول مناسب (مثل: http: //" +"example.tld)" #: /usr/share/icingaweb2/application/forms/Navigation/DashletForm.php:29 msgid "" "The url to load in the dashlet. For external urls, make sure to prepend an " "appropriate protocol identifier (e.g. http://example.tld)" msgstr "" -"عنوان الموقع لتحميله في اللوحة الصغيرة. لعناوين المواقع الخارجية، تأكد من" -" إلحاقها " -"بمعرف بروتوكول مناسب (مثل: http://example.tld)" +"عنوان الموقع لتحميله في اللوحة الصغيرة. لعناوين المواقع الخارجية، تأكد من " +"إلحاقها بمعرف بروتوكول مناسب (مثل: http://example.tld)" #: /usr/share/icingaweb2/application/forms/Config/UserGroup/LdapUserGroupBackendForm.php:78 msgid "The user backend to link with this user group backend." @@ -2503,9 +2481,8 @@ msgid "" "The user dn to use for querying the ldap server. Leave the dn and password " "empty for attempting an anonymous bind" msgstr "" -"الاسم المميز للمستخدم لاستخدامه في استعلام خادم ldap. اترك الاسم المميز وكلمة" -" المرور " -"فارغين لمحاولة الربط المجهول" +"الاسم المميز للمستخدم لاستخدامه في استعلام خادم ldap. اترك الاسم المميز وكلمة " +"المرور فارغين لمحاولة الربط المجهول" #: /usr/share/icingaweb2/application/forms/Config/Resource/DbResourceForm.php:128 msgid "The user name to use for authentication" @@ -2539,8 +2516,8 @@ msgid "" "This is a child of the navigation item %1$s. You can only unshare this item " "by unsharing %1$s" msgstr "" -"هذا تابع لعنصر التنقل %1$s. يمكنك فقط إلغاء مشارك هذا العنصر " -"بإلغاء مشاركة %1$s" +"هذا تابع لعنصر التنقل %1$s. يمكنك فقط إلغاء مشارك هذا العنصر بإلغاء مشاركة " +"%1$s" #: /usr/share/icingaweb2/application/views/scripts/config/module.phtml:50 msgid "This module has no dependencies" @@ -2555,8 +2532,7 @@ msgid "" "This option allows you to enable or to disable the global page content auto " "refresh" msgstr "" -"هذا الخيار يسمح لك بتفعيل أو تعطيل التحديث " -"التلقائي لمحتوى الصفحة الكامل" +"هذا الخيار يسمح لك بتفعيل أو تعطيل التحديث التلقائي لمحتوى الصفحة الكامل" #: /usr/share/icingaweb2/application/forms/Navigation/NavigationConfigForm.php:603 msgid "Tick this box to share this item with others" @@ -2581,11 +2557,9 @@ msgstr "واجهة مستخدم تصحيح الأخطاء" #: /usr/share/icingaweb2/application/forms/Navigation/NavigationConfigForm.php:486 #, php-format msgid "" -"Unable to delete navigation item \"%s\". There are other items dependent " -"from it: %s" -msgstr "" -"غير قادر على حذف عنصر التنقل \"%s\". هناك عناصر أخرى " -"تابعة له: %s" +"Unable to delete navigation item \"%s\". There are other items dependent from " +"it: %s" +msgstr "غير قادر على حذف عنصر التنقل \"%s\". هناك عناصر أخرى تابعة له: %s" #: /usr/share/icingaweb2/application/forms/Navigation/NavigationConfigForm.php:526 #, php-format @@ -2593,8 +2567,8 @@ msgid "" "Unable to unshare navigation item \"%s\". It is dependent from item \"%s\". " "Dependent items can only be unshared by unsharing their parent" msgstr "" -"غير قادر على إلغاء مشاركة عنصر التنقل \"%s\". فهو تابع للعنصر \"%s\". " -"العناصر التابعة يمكن إلغاء مشاركتها فقط بإلغاء مشاركة أصلها" +"غير قادر على إلغاء مشاركة عنصر التنقل \"%s\". فهو تابع للعنصر \"%s\". العناصر " +"التابعة يمكن إلغاء مشاركتها فقط بإلغاء مشاركة أصلها" #: /usr/share/icingaweb2/application/views/scripts/navigation/index.phtml:54 #: /usr/share/icingaweb2/application/views/scripts/navigation/shared.phtml:42 @@ -2653,18 +2627,14 @@ msgstr "تحديث خلفية مجموعة مستخدم" msgid "" "Upon any of this form's fields were changed, this page is being updated " "automatically." -msgstr "" -" عند تغيير أي من حقول هذا النموذج، فإن هذه الصفحة يتم تحديثها " -"تلقائيا." +msgstr " عند تغيير أي من حقول هذا النموذج، فإن هذه الصفحة يتم تحديثها تلقائيا." #: /usr/share/php/Icinga/Web/Form.php:951 #: /usr/share/php/Icinga/Web/Form/Decorator/Autosubmit.php:100 msgid "" "Upon its value has changed, this field issues an automatic update of this " "page." -msgstr "" -"عند تغيير قيمتها، فإن هذا الحقل يصدر تحديث تلقائي لهذه " -"الصفحة." +msgstr "عند تغيير قيمتها، فإن هذا الحقل يصدر تحديث تلقائي لهذه الصفحة." #: /usr/share/icingaweb2/application/views/scripts/dashboard/settings.phtml:14 #: /usr/share/icingaweb2/application/forms/Navigation/NavigationItemForm.php:54 @@ -2808,8 +2778,8 @@ msgid "" "User to log in as on the remote Icinga instance. Please note that key-based " "SSH login must be possible for this user" msgstr "" -"الاسم المستخدم لتسجيل الدخول به لحالة إسنجا البعيدة. يرجى ملاحظة أن " -"دخول SSH القائم على مفتاح يجب أن يكون متاحا لهذا المستخدم" +"الاسم المستخدم لتسجيل الدخول به لحالة إسنجا البعيدة. يرجى ملاحظة أن دخول SSH " +"القائم على مفتاح يجب أن يكون متاحا لهذا المستخدم" #: /usr/share/php/Icinga/Web/Menu.php:294 msgid "Usergroups" @@ -2882,8 +2852,8 @@ msgid "" "Whether to encrypt communication. Choose STARTTLS or LDAPS for encrypted " "communication or none for unencrypted communication" msgstr "" -"سواء لتشفير الاتصالات أو عدمه. اختر STARTTLS أو LDAPS للاتصال " -"المشفر أو \"بلا\" للاتصال غير المشفر" +"سواء لتشفير الاتصالات أو عدمه. اختر STARTTLS أو LDAPS للاتصال المشفر أو \"بلا" +"\" للاتصال غير المشفر" #: /usr/share/icingaweb2/application/views/scripts/joystickPagination.phtml:70 #: /usr/share/icingaweb2/application/views/scripts/joystickPagination.phtml:96 @@ -2913,11 +2883,10 @@ msgstr "ليس لديك أذونات في نظام الملفات للكتابة #: /usr/share/icingaweb2/application/controllers/UserController.php:229 msgid "" -"You'll need to configure at least one user group backend first that allows " -"to create new memberships" +"You'll need to configure at least one user group backend first that allows to " +"create new memberships" msgstr "" -"ستحتاج لإعداد خلفية مجموعة مستخدم واحدة على الأقل أولا تسمح " -"بإنشاء عضوية جديدة" +"ستحتاج لإعداد خلفية مجموعة مستخدم واحدة على الأقل أولا تسمح بإنشاء عضوية جديدة" #: /usr/share/icingaweb2/application/forms/Authentication/LoginForm.php:138 msgid "" @@ -2925,9 +2894,8 @@ msgid "" "authentication mechanisms. Make sure you'll configure such, otherwise you'll " "not be able to login." msgstr "" -"لا يمكنك حاليا المصادقة باستخدام أي من آليات مصادقة " -"خادم الوب. تأكد من أنك سوف تقوم بإعداد واحدة، " -"وإلا فسوف لن تكون قادرا على الدخول." +"لا يمكنك حاليا المصادقة باستخدام أي من آليات مصادقة خادم الوب. تأكد من أنك " +"سوف تقوم بإعداد واحدة، وإلا فسوف لن تكون قادرا على الدخول." #: /usr/share/icingaweb2/application/forms/PreferenceForm.php:197 msgid "Your Current Language" @@ -3011,5 +2979,3 @@ msgstr "منذ %s" #: /usr/share/icingaweb2/application/views/scripts/config/devtools.phtml:5 msgid "toggle" msgstr "تبديل" - - diff --git a/application/locale/de_DE/LC_MESSAGES/icinga.mo b/application/locale/de_DE/LC_MESSAGES/icinga.mo index 695a92a16c7ad88fd6c2f00d558d80e36ae224da..ba880eae4d69f3c49341db3a093960422b4fb4fe 100644 GIT binary patch delta 12122 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 SPDsih_s)s*{C9tOSn+>jIz?ar delta 12275 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\n" +"PO-Revision-Date: 2017-09-28 15:04+0200\n" +"Last-Translator: Michael Friedrich \n" "Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -17,7 +17,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Basepath: .\n" "Language-Team: \n" -"X-Generator: Poedit 1.8.11\n" +"X-Generator: Poedit 2.0.3\n" "X-Poedit-SearchPath-0: .\n" #: ../../../../library/Icinga/Web/Form/Validator/InArray.php:16 @@ -2732,12 +2732,6 @@ msgstr "Das Kennwort welches zur Authentifizierung benutzt werden soll" msgid "The password to use for querying the ldap server" msgstr "Das Kennwort welches zum Abfragen des LDAP-Servers benutzt werden soll" -#: ../../../../application/forms/Config/Resource/LivestatusResourceForm.php:45 -msgid "The path to your livestatus socket used for querying monitoring data" -msgstr "" -"Der Pfad zu Ihrem Live-Status Socket, über welchen Monitoring-Daten " -"abgefragt werden sollen" - #: ../../../../application/forms/Config/UserGroup/LdapUserGroupBackendForm.php:210 msgid "" "The path where groups can be found on the LDAP server. Leave empty to select " diff --git a/application/locale/fi_FI/LC_MESSAGES/icinga.mo b/application/locale/fi_FI/LC_MESSAGES/icinga.mo index d90fec0e094c96e6c066f78f39dbf74d094e23e7..9da39f411de21cbfb09fecfdbcca3e8289e4f141 100644 GIT binary patch delta 6312 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 CxUO9Q delta 6464 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\n" +"PO-Revision-Date: 2017-09-28 15:06+0200\n" +"Last-Translator: Michael Friedrich \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.7.1\n" +"X-Generator: Poedit 2.0.3\n" "Language: fi_FI\n" #: /usr/share/icingaweb2/library/Icinga/Web/Menu/MonitoringMenuItemRenderer.php:40 @@ -1097,10 +1097,6 @@ msgstr "Tunnistautumiseen käytettävä salasana" msgid "The password to use for querying the ldap server" msgstr "LDAP-palvelinkyselyihin käytettävä salasana" -#: /usr/share/icingaweb2/application/forms/Config/Resource/LivestatusResourceForm.php:45 -msgid "The path to your livestatus socket used for querying monitoring data" -msgstr "Polku livestatus-socketiin valvontadatan kyselyä varten" - #: /usr/share/icingaweb2/application/forms/Config/Authentication/LdapBackendForm.php:111 msgid "" "The path where users can be found on the ldap server. Leave empty to select all users " diff --git a/application/locale/it_IT/LC_MESSAGES/icinga.mo b/application/locale/it_IT/LC_MESSAGES/icinga.mo index d2d2e549c3914ee66cec618c3ac11966bb3e3e0e..b1d09e8cedcff283ea457b2dc86f2607a032e383 100644 GIT binary patch delta 11027 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 ShE6-WG%WA8Bl^&iu>Syw$%-!k delta 10982 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 Pn>ewea&O+z+R*<2Q_gug diff --git a/application/locale/it_IT/LC_MESSAGES/icinga.po b/application/locale/it_IT/LC_MESSAGES/icinga.po index c78bd48a59..bf14919a6f 100644 --- a/application/locale/it_IT/LC_MESSAGES/icinga.po +++ b/application/locale/it_IT/LC_MESSAGES/icinga.po @@ -4,6 +4,13 @@ msgstr "" "MIME-Version: 1.0\n" "Language: it_IT\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Michael Friedrich \n" +"Language-Team: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.3\n" #, php-format msgid "\"%s\" is not in the list of allowed values." @@ -1780,11 +1787,6 @@ msgstr "Password da usare per l'autenticazione" msgid "The password to use for querying the ldap server" msgstr "Password da usare per interrogare il server ldap" -msgid "The path to your livestatus socket used for querying monitoring data" -msgstr "" -"Percorso del socket di livestatus usato per il recupero dei dati di " -"monitoraggio" - msgid "" "The path where groups can be found on the LDAP server. Leave empty to select " "all users available using the specified connection." diff --git a/application/locale/pt_BR/LC_MESSAGES/icinga.mo b/application/locale/pt_BR/LC_MESSAGES/icinga.mo index e36da883956ef316623e2f13f94de23c55d51903..db366cf04f8292e8f6430a318d802fdb76202ef5 100644 GIT binary patch delta 5619 zcmYk=33OD|9mnxIWFZSAB$LTxB@;qINScsh=7WS_WR4bdOF9;=id9?+~t4&?`4j^ zeaCa`fG2n)KD5*D8RRi04W~vL^8ob~@#-~Zdy+AJ+=2b^AnMXLn1a#C#w1`4syza^ zWTs(1Twt%?g?(vv;zC@H(Z&RgpKry|k%by~7=~dD#^6LO$LZEi>t4*JKQfi?;tX1E{8!;4bN8K01KDg2P0`_Kpv#qCM%u0sDU$3J1j*lbTn%G38-Xju>IF#IPHZ4gYH1L+m2-z%7tH9 zS7I3LM^QPj78S9#Q4uI?_rC0JqG3s8^aJ*Xpk7=3LJ^yu7l;!hr2(Ga0S8)mL53v&)e&#OV6h_lNi`tPXAUcqNTHrL)5lu%O z-L4gQze3$F|R+&RB8Q0AAD%haqb+Bdyn2S7KlKw_Eq1 zo{Gb$ke@|89Z~F3Z`1?~D#<2O(S_-#c9XT;8blqz3REb6WBXTIHz6-S^CD`({irwK zr>IDT6}b!RgG$yE)O=SI5r2-$G|-`)Eww&?dMZ{~pGOV!25RSfQ46|&%4Scod)6gbR#M$w<1HCH;_Cu9>PY>1WgeYO*jd)fN7{u z&OjyGy_ks0QGY(yp>}WtqdiPQr;m1kzp-*SY9SL*8>_W0z=5eRSYs~7I@HeAqR##~yasn; zf`@Tx+@D@$3_g$kn=u;?;~?xcKIp!&@)%XwItDdRJ?e%w)C8TVfj8hS7{V&`2D=^8 za4Bjdzeh!8E9xlTLVdp*lktS@51-)nCkLsdb0HUXW;NEC$UDb$pdO!1s55>EJ8=hU z;(EfM2|6$i@3rktRIY45ZDbo};m5WeO?YS04i2NDY<&oO<2qExpF-{6@78~zCOBi; zVZ2QuXeVJLW}+YSQMpoW`zK&1?Wq`s4X8KYEX>sN?@-Z1FQIn!2F}H6CcBTzE>yPv z6Lay5HSG#F2gYI_`X53)Eo-c=p+bHbwXm;H5sRsH7m|@J|rs@GL+=p!(Pb{cAcYSjIg+w1k1LHh<&?kvYk@HrfaAK?a!nCAK{YWykn z#9yJfy54;!&%+Yh_hAUWhMI5(#^Rf(i4I~Mo<~I>`f4|{x!8~P81!PDZ8zKYA{opuO|N4RQ^nd9*<+Fc0_|aVWG7W>=eOmme1!M-PXyC!98%Co3NYr8iwqgM9Mm=WhQ1?HBHMk8markui)$B#xHwm?X zdJJGQDsszE6F-UCaPSXQbms4%7I4Vka0<2ZuQ3TDXYhLs2OxQB+EGci8+GRAuo9Da zs|2tf$yc)ol{;@^Eq;l5jH`K_vXP)^r9yN}5H-O;EWp9D+@IC;_$ciMk#~>Do$dDD zjN0KdsD-?WOYtPG#P&w_7gFzQ-3^Sx6#8eQ9?!)Xr|16(Dtc^Q##FqB%G%^P{H4N5 zEW^x;el z!G)*=-HIB>!Jf0na@yN)1fIuIEScvfUmGe1mS8b1LoH}4DtUKe4StA0-nJ&QnUHw+ z)rxO1WUS)T8mE#A_;z0}92mh!1{(d!TEPtRE= zIU#?n`blbYkdjGn4CM&*EfjLLXJbD4o~M4C5>Nd(?4~Fm4pF{w?oX)pg>q#!Ep}_B zQZi`!oudhAIqFOGc$|wqfBKg_z5KMoR?1hDU)sKtPH|#JdIX~=9rb?> z_1W*zlj~nNZHYtTKBk8^bWhTyb61%2Y+`=$1$$qj{hpeAsGoOECwd2;u~&aY3H})+ zz#YG{of-JGQ{W%rNpf2JRSmIrq`vqn*IuTiQs0eFQua{vIYs%Qr)JFkc$$*Ked}!B z7(779we4`nljQY$=lGI_q<>DIQgtU~E9H91D#|v>Cr)FM-xKZJmXzx0*VUP{CAG`B zWLad$oCR%8|H`Vlr3FRh1w+dM#U&L*rTIlei;AKqHZJTanA+Yre_?B5$Ab2Xz@(Nr z*EKe^25Q<{n&!6C2#joVy9($1*fpwUPRsn}#zMxeWQ6(6H#asnRRnJAm^EgK(_OjR fH?***aM({*3Z^zSwp9eW?x?ym&{aG8Z;}54AIG6{ delta 5763 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 diff --git a/application/locale/pt_BR/LC_MESSAGES/icinga.po b/application/locale/pt_BR/LC_MESSAGES/icinga.po index fbd9c2fea7..43bad96d4a 100644 --- a/application/locale/pt_BR/LC_MESSAGES/icinga.po +++ b/application/locale/pt_BR/LC_MESSAGES/icinga.po @@ -8,15 +8,15 @@ msgstr "" "Project-Id-Version: Icinga Web 2 (None)\n" "Report-Msgid-Bugs-To: dev@icinga.com\n" "POT-Creation-Date: 2014-12-03 09:11-0200\n" -"PO-Revision-Date: 2014-12-03 09:19-0300\n" -"Last-Translator: Carlos Cesario \n" +"PO-Revision-Date: 2017-09-28 15:07+0200\n" +"Last-Translator: Michael Friedrich \n" "Language: pt_BR\n" -"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 2.0.3\n" +"Language-Team: \n" #: /usr/local/icingaweb/library/Icinga/Web/Menu/MonitoringMenuItemRenderer.php:41 #, php-format @@ -1172,12 +1172,6 @@ msgstr "A senha a ser utilizada para a autenticação" msgid "The password to use for querying the ldap server" msgstr "A senha a ser utilizada para consultar o servidor ldap" -#: /usr/local/icingaweb/application/forms/Config/Resource/LivestatusResourceForm.php:46 -msgid "The path to your livestatus socket used for querying monitoring data" -msgstr "" -"O caminho para o soquete livestatus utilizado para consultar os dados de " -"monitoramento" - #: /usr/local/icingaweb/application/forms/Config/Authentication/LdapBackendForm.php:109 msgid "" "The path where users can be found on the ldap server. Leave empty to select " diff --git a/application/locale/ru_RU/LC_MESSAGES/icinga.mo b/application/locale/ru_RU/LC_MESSAGES/icinga.mo index 5ca5449a17e7e51de59a8364d948ee3937a98f64..65418f3bfff61cb0d8588eb0ea720d399deeb65b 100644 GIT binary patch delta 986 zcmXxi&uG984ZnQ&{U zOA~*AI5|l6P;QQXL?a|bA`%V~>7fodIEe3KwtLvmywCg2`#jJ4&Z`r1*~blaQA>?T zx>;m}h-6zt*5VL$;RPJQd)R=VumiuNh4t%1)?g>@z{8lp^T-k@;xt}Ieg7A3#oAVp zUAVnfBI)E|kbrJ{1$%K8Z{y3VBkM(0GJbXC^Q0Lol16rsFk6=Fz;6A*A zydv|c>t83MxZ?K&w16+zhJSH4CK*tJ97R2uF=R>#cmQvrcKoOspGWO%0kyH8sD*S; zmAVHtaW`tA$0GhSJmgW2W)8K&3hG8LP!lZS1pYzY$k`Ylv4=W;3&|ySu^k^&=bvFC z<9Dcuzv5n8!~mn@rnvJNoFVWKzhRnP(%8na_&A77_yo1U=cpTf#zVM@`#8t9)Q5S- z_qXtU;1XWO-&M!yvX1cr(n}<7dDu^25qq%RiccbkERYcO?q*T%{3&YU54aO+x5XWH zqMl4Q>Xl_tJI_)0bV5JKSR-!XqGKklfxtDzfPvLpjzg)5<R_3Fc=^{QM{yk8Ny5lImXqK%MfY#JMphzjvoG@O!H5Q}0} zti?h?G!~XZZJPKC#7b-|%Ffd7bI-|Selv5-r-h$q7sX$oYz(>ni+SCnh6YW z1^06kM``W2!91CVRN}d6H{UUL{G%LSWbUjYNN#K!Gm$f;=a~ynG84U3Xf!ltm`Ag~ z%Zi}fni?Y9%jH<<`KUv-+!Pf@tLdmt$hEN-TIva&4mZKMZeB#EJihQ=O6ii z-}#dl2mKcu6YUD8S>R0SmZbfux z>@-m40iLE3k5oR0*UY<{XWscA=EBvXhz)EocR0a3nMvlAO)-yphH{QsX5#ND&;QSf Pn5$H-cg`K|Jyrb&Hs?po diff --git a/application/locale/ru_RU/LC_MESSAGES/icinga.po b/application/locale/ru_RU/LC_MESSAGES/icinga.po index 2306c0a6c8..e6303bf8a6 100644 --- a/application/locale/ru_RU/LC_MESSAGES/icinga.po +++ b/application/locale/ru_RU/LC_MESSAGES/icinga.po @@ -3,6 +3,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "MIME-Version: 1.0\n" "Language: ru_RU\n" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Michael Friedrich \n" +"Language-Team: \n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.0.3\n" #, php-format msgid "\"%s\" is not in the list of allowed values." @@ -1685,9 +1692,6 @@ msgstr "Пароль для аутентификации" msgid "The password to use for querying the ldap server" msgstr "" -msgid "The path to your livestatus socket used for querying monitoring data" -msgstr "" - msgid "" "The path where groups can be found on the LDAP server. Leave empty to select " "all users available using the specified connection." diff --git a/application/views/scripts/config/resource.phtml b/application/views/scripts/config/resource.phtml index ec9c0c7ea3..317c115aba 100644 --- a/application/views/scripts/config/resource.phtml +++ b/application/views/scripts/config/resource.phtml @@ -32,9 +32,6 @@ case 'ldap': $icon = 'sitemap'; break; - case 'livestatus': - $icon = 'flash'; - break; case 'ssh': $icon = 'user'; break; diff --git a/doc/04-Resources.md b/doc/04-Resources.md index 5685c43e53..aa5012da56 100644 --- a/doc/04-Resources.md +++ b/doc/04-Resources.md @@ -6,9 +6,9 @@ different files, when the information about a data source changes. ## Configuration -Each section in `config/resources.ini` represents a data source with the section name being the identifier used to +Each section in `resources.ini` represents a data source with the section name being the identifier used to reference this specific data source. Depending on the data source type, the sections define different directives. -The available data source types are *db*, *ldap*, *ssh* and *livestatus* which will described in detail in the following +The available data source types are `db`, `ldap` and `ssh` which will described in detail in the following paragraphs. ### Database diff --git a/doc/99-Vagrant.md b/doc/99-Vagrant.md index 2c5e9ad6e2..31df7fe17b 100644 --- a/doc/99-Vagrant.md +++ b/doc/99-Vagrant.md @@ -21,7 +21,7 @@ Parallels requires the additional provider plugin The Icinga Web 2 project ships with a Vagrant virtual machine that integrates the source code with various services and example data in a controlled -environment. This enables developers and users to test Livestatus, +environment. This enables developers and users to test MySQL and PostgreSQL backends as well as the LDAP authentication. All you have to do is install Vagrant and run: diff --git a/library/Icinga/Data/ResourceFactory.php b/library/Icinga/Data/ResourceFactory.php index 2721a8e463..5b477c7ab2 100644 --- a/library/Icinga/Data/ResourceFactory.php +++ b/library/Icinga/Data/ResourceFactory.php @@ -7,7 +7,6 @@ use Icinga\Util\ConfigAwareFactory; use Icinga\Exception\ConfigurationError; use Icinga\Data\Db\DbConnection; -use Icinga\Protocol\Livestatus\Connection as LivestatusConnection; use Icinga\Protocol\Ldap\LdapConnection; use Icinga\Protocol\File\FileReader; @@ -110,9 +109,6 @@ public static function createResource(ConfigObject $config) $resource = new LdapConnection($config); break; - case 'livestatus': - $resource = new LivestatusConnection($config->socket); - break; case 'file': $resource = new FileReader($config); break; @@ -133,7 +129,7 @@ public static function createResource(ConfigObject $config) * Create a resource from name * * @param string $resourceName - * @return DbConnection|LdapConnection|LivestatusConnection + * @return DbConnection|LdapConnection */ public static function create($resourceName) { diff --git a/library/Icinga/Protocol/Livestatus/Connection.php b/library/Icinga/Protocol/Livestatus/Connection.php deleted file mode 100644 index 0177da0bef..0000000000 --- a/library/Icinga/Protocol/Livestatus/Connection.php +++ /dev/null @@ -1,445 +0,0 @@ - - * $lconf = new Connection((object) array( - * 'hostname' => 'localhost', - * 'root_dn' => 'dc=monitoring,dc=...', - * 'bind_dn' => 'cn=Mangager,dc=monitoring,dc=...', - * 'bind_pw' => '***' - * )); - * - * - * @copyright Copyright (c) 2013 Icinga-Web Team - * @author Icinga-Web Team - * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License - */ -class Connection -{ - const TYPE_UNIX = 1; - const TYPE_TCP = 2; - - const FIELD_SEPARATOR = '`'; - - protected $bytesRead = 0; - protected $responseSize; - protected $status; - protected $headers; - - // List of available Livestatus tables. Kept here as we otherwise get no - // useful error message - protected $available_tables = array( - 'hosts', // hosts - 'services', // services, joined with all data from hosts - 'hostgroups', // hostgroups - 'servicegroups', // servicegroups - 'contactgroups', // contact groups - 'servicesbygroup', // all services grouped by service groups - 'servicesbyhostgroup', // all services grouped by host groups - 'hostsbygroup', // all hosts grouped by host groups - 'contacts', // contacts - 'commands', // defined commands - 'timeperiods', // time period definitions (currently only name - // and alias) - 'downtimes', // all scheduled host and service downtimes, - // joined with data from hosts and services. - 'comments', // all host and service comments - 'log', // a transparent access to the nagios logfiles - // (include archived ones)ones - 'status', // general performance and status information. - // This table contains exactly one dataset. - 'columns', // a complete list of all tables and columns - // available via Livestatus, including - // descriptions! - 'statehist', // 1.2.1i2 sla statistics for hosts and services, - // joined with data from hosts, services and log. - ); - - protected $socket_path; - protected $socket_host; - protected $socket_port; - protected $socket_type; - protected $connection; - - /** - * Whether the given table name is valid - * - * @param string $name table name - * - * @return bool - */ - public function hasTable($name) - { - return in_array($name, $this->available_tables); - } - - public function __construct($socket = '/var/lib/icinga/rw/live') - { - $this->assertPhpExtensionLoaded('sockets'); - if ($socket[0] === '/') { - if (! is_writable($socket)) { - throw new SystemPermissionException( - 'Cannot write to livestatus socket "%s"', - $socket - ); - } - $this->socket_type = self::TYPE_UNIX; - $this->socket_path = $socket; - } else { - if (! preg_match('~^tcp://([^:]+):(\d+)~', $socket, $m)) { - throw new ConfigurationError( - 'Invalid TCP socket syntax: "%s"', - $socket - ); - } - // TODO: Better config syntax checks - $this->socket_host = $m[1]; - $this->socket_port = (int) $m[2]; - $this->socket_type = self::TYPE_TCP; - } - } - - /** - * Count unlimited rows matching the query filter - * - * TODO: Currently hardcoded value, as the old variant was stupid - * Create a working variant doing this->execute(query->renderCount())... - * - * @param Query $query the query object - * - * @return int - */ - public function count(Query $query) - { - return 100; - $count = clone($query); - // WTF? $count->count(); - Benchmark::measure('Sending Livestatus Count Query'); - $this->execute($query); - $data = $this->fetchRowFromSocket(); - Benchmark::measure('Got Livestatus count result'); - return $data[0][0]; - } - - /** - * Fetch a single row - * - * TODO: Currently based on fetchAll, that's bullshit - * - * @param Query $query the query object - * - * @return object the first result row - */ - public function fetchRow(Query $query) - { - $all = $this->fetchAll($query); - return array_shift($all); - } - - /** - * Fetch key/value pairs - * - * TODO: Currently slow, needs improvement - * - * @param Query $query the query object - * - * @return array - */ - public function fetchPairs(Query $query) - { - $res = array(); - $all = $this->fetchAll($query); - foreach ($all as $row) { - // slow - $keys = array_keys((array) $row); - $res[$row->{$keys[0]}] = $row->{$keys[1]}; - } - return $res; - } - - /** - * Fetch all result rows - * - * @param Query $query the query object - * - * @return array - */ - public function fetchAll(Query $query) - { - Benchmark::measure('Sending Livestatus Query'); - $this->execute($query); - Benchmark::measure('Got Livestatus Data'); - - if ($query->hasColumns()) { - $headers = $query->getColumnAliases(); - } else { - // TODO: left this here, find out how to handle it better - die('F*** no data'); - $headers = array_shift($data); - } - $result = array(); - $filter = $query->filterIsSupported() ? null : $query->getFilter(); - - while ($row = $this->fetchRowFromSocket()) { - $r = new ResponseRow($row, $query); - $res = $query->resultRow($row); - if ($filter !== null && ! $filter->matches($res)) { - continue; - } - $result[] = $res; - } - - if ($query->hasOrder()) { - usort($result, array($query, 'compare')); - } - if ($query->hasLimit()) { - $result = array_slice( - $result, - $query->getOffset(), - $query->getLimit() - ); - } - Benchmark::measure('Data sorted, limits applied'); - - return $result; - } - - protected function hasBeenExecuted() - { - return $this->status !== null; - } - - protected function execute($query) - { - // Reset state - $this->status = null; - $this->responseSize = null; - $this->bytesRead = 0; - - $raw = $query->toString(); - - Benchmark::measure($raw); - - // "debug" - // echo $raw . "\n
"; - $this->writeToSocket($raw); - $header = $this->readLineFromSocket(); - - if (! preg_match('~^(\d{3})\s\s*(\d+)$~', $header, $m)) { - $this->disconnect(); - throw new Exception( - sprintf('Got invalid header. First 16 Bytes: %s', $header) - ); - } - $this->status = (int) $m[1]; - $this->bytesRead = 0; - $this->responseSize = (int) $m[2]; - if ($this->status !== 200) { - // "debug" - //die(var_export($raw, 1)); - throw new Exception( - sprintf( - 'Error %d while querying livestatus: %s %s', - $this->status, - $raw, - $this->readLineFromSocket() - ) - ); - } - $this->discoverColumnHeaders($query); - } - - protected function discoverColumnHeaders($query) - { - if ($query->hasColumns()) { - $this->headers = $query->getColumnAliases(); - } else { - $this->headers = $this->splitLine($this->readLineFromSocket()); - } - } - - protected function splitLine(& $line) - { - if ($this->headers === null) { - $res = array(); - } else { - $res = new SplFixedArray(count($this->headers)); - $size = count($res); - } - $start = 0; - $col = 0; - while (false !== ($pos = strpos($line, self::FIELD_SEPARATOR, $start))) { -// TODO: safety measure for not killing the SPL. To be removed once code is clean - if ($col > $size -1) { - return $res; // ??? - } - $res[$col] = substr($line, $start, $pos - $start); - $start = $pos + 1; - $col++; - } -// TODO: safety measure for not killing the SPL. To be removed once code is clean - if ($col > $size - 1) { - return $res; - } - $res[$col] = rtrim(substr($line, $start), "\r\n"); - return $res; - } - - public function fetchRowFromSocket() - { - $line = $this->readLineFromSocket(); - if (! $line) { - return false; - } - return $this->splitLine($line); - } - - protected function readLineFromSocket() - { - if ($this->bytesRead === $this->responseSize) { - return false; - } - $maxRowLength = 100 * 1024; - $row = socket_read($this->getConnection(), $maxRowLength, PHP_NORMAL_READ); - $this->bytesRead += strlen($row); - - if ($row === false) { - $this->socketError('Failed to read next row from livestatus socket'); - } - return $row; - } - - /** - * Write given string to livestatus socket - * - * @param string $data Data string to write to the socket - * - * @return boolean - */ - protected function writeToSocket($data) - { - $res = @socket_write($this->getConnection(), $data); - if ($res === false) { - $this->socketError('Writing to livestatus socket failed'); - } - return true; - } - - /** - * Raise an exception showing given message string and last socket error - * - * TODO: Find a better exception type for such errors - * - * @throws IcingaException - */ - protected function socketError($msg) - { - throw new IcingaException( - $msg . ': ' . socket_strerror(socket_last_error($this->connection)) - ); - } - - protected function assertPhpExtensionLoaded($name) - { - if (! extension_loaded($name)) { - throw new IcingaException( - 'The extension "%s" is not loaded', - $name - ); - } - } - - protected function getConnection() - { - if ($this->connection === null) { - Benchmark::measure('Establishing livestatus connection...'); - - if ($this->socket_type === self::TYPE_TCP) { - $this->establishTcpConnection(); - Benchmark::measure('...got TCP socket'); - } else { - $this->establishSocketConnection(); - Benchmark::measure('...got local socket'); - } - } - return $this->connection; - } - - /** - * Establish a TCP socket connection - */ - protected function establishTcpConnection() - { - $this->connection = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); - if (! @socket_connect($this->connection, $this->socket_host, $this->socket_port)) { - throw new IcingaException( - 'Cannot connect to livestatus TCP socket "%s:%d": %s', - $this->socket_host, - $this->socket_port, - socket_strerror(socket_last_error($this->connection)) - ); - } - socket_set_option($this->connection, SOL_TCP, TCP_NODELAY, 1); - } - - /** - * Establish a UNIX socket connection - */ - protected function establishSocketConnection() - { - $this->connection = socket_create(AF_UNIX, SOCK_STREAM, 0); - if (! socket_connect($this->connection, $this->socket_path)) { - throw new IcingaException( - 'Cannot connect to livestatus local socket "%s"', - $this->socket_path - ); - } - } - - public function connect() - { - if (!$this->connection) { - $this->getConnection(); - } - - return $this; - } - - /** - * Disconnect in case we are connected to a Livestatus socket - * - * @return $this - */ - public function disconnect() - { - if (is_resource($this->connection) - && get_resource_type($this->connection) === 'Socket') { - Benchmark::measure('Disconnecting livestatus...'); - socket_close($this->connection); - Benchmark::measure('...socket closed'); - } - return $this; - } - - /** - * Try to cleanly close the socket on shutdown - */ - public function __destruct() - { - $this->disconnect(); - } -} diff --git a/library/Icinga/Protocol/Livestatus/Query.php b/library/Icinga/Protocol/Livestatus/Query.php deleted file mode 100644 index d60ca9dde1..0000000000 --- a/library/Icinga/Protocol/Livestatus/Query.php +++ /dev/null @@ -1,470 +0,0 @@ - true, - ); - - /** - * Columns to be fetched for sorting / filtering, will not be returned - */ - protected $extraFiltercolumns = array(); - - /** - * All available columns. To be overridden by specific query implementations - */ - protected $available_columns = array(); - - protected $count = false; - - /** - * Headers for columns sent to Livestatus socket - */ - protected $preparedHeaders = array(); - - public function hasColumns() - { - return $this->columns !== null; - } - - public function getColumns() - { - return $this->columns; - } - - public function withHeaders(& $row) - { - return array_combine($this->preparedHeaders, $row->toArray()); - } - - /** - * Whether the named columns value is generated by a filter expression - */ - public function isFilterFlag($column) - { - return array_key_exists($column, $this->filter_flags); - } - - // completes a given row - public function resultRow(& $row) - { - // $row -> raw SplArray - // $res -> object - // $cv -> - // $result -> object to be returned - $result = (object) array(); - $res = $this->withHeaders($row); - $cv = array(); - if (array_key_exists('custom_variables', $res)) { - foreach ($this->parseArray($res['custom_variables']) as $cvp) { - $cv[$cvp[0]] = $cvp[1]; - } - } - - $combined = array(); - - foreach ($this->columns as $alias => $col) { - if (is_int($alias)) { - $alias = $col; - } - if ($col[0] === '_') { - $result->$alias = array_key_exists($alias, $cv) ? $cv[$alias] : null; - } else { - $func = 'mungeResult_' . $col; - if (method_exists($this, $func)) { - $this->$func($res[$this->available_columns[$col]], $result); - } elseif (is_array($this->available_columns[$col])) { - $combined[$alias] = $col; - $result->$alias = null; - } else { - if (strpos($this->available_columns[$col], ' ') === false) { - $result->$alias = $res[$this->available_columns[$col]]; - } else { - $result->$alias = $res[$alias]; - } - } - } - } - // TODO: Quite some redundancy here :( - if (! $this->filterIsSupported()) { - foreach ($this->filter->listFilteredColumns() as $col) { - if ($this->isFilterFlag($col)) { - $result->$col = (string) (int) $this->filterStringToFilter( - $this->filter_flags[$col] - )->matches((object) $res); - } else { - $func = 'combineResult_' . $col; - if (method_exists($this, $func)) { - $result->$col = $this->$func($result, $res); - } - } - } - } - - foreach ($combined as $alias => $col) { - if ($this->isFilterFlag($col)) { - $result->$alias = (string) (int) $this->filterStringToFilter( - $this->filter_flags[$col] - )->matches((object) $res); - continue; - } - $func = 'combineResult_' . $col; - if (method_exists($this, $func)) { - $result->$alias = $this->$func($result, $res); - } else { - $result->$alias = implode(' - ', $this->available_columns[$col]); - } - } - - - return $result; - } - - /** - * Parse the given encoded array - * - * @param string $str the encoded array string - * - * @return array - */ - public function parseArray($str) - { - if (empty($str)) { - return array(); - } - - $result = array(); - $entries = preg_split('/,/', $str); - foreach ($entries as $e) { - $result[] = preg_split('/;/', $e); - } - - return $result; - } - - public function getColumnAliases() - { - $this->columnsToString(); - return $this->preparedHeaders; - - // TODO: Remove once no longer needed: - $aliases = array(); - $hasCustom = false; - foreach ($this->getColumns() as $key => $val) { - if ($val[0] === '_') { - $this->customvars[$val] = null; - if (! $hasCustom) { - $aliases[] = 'custom_variables'; - $hasCustom = true; - } - continue; - } - if (is_int($key)) { - $aliases[] = $val; - } else { - $aliases[] = $key; - } - } - return $aliases; - } -/* - public function count() - { - $this->count = true; - return $this; - } -*/ - - /** - * Automagic string casting - * - * @return string - */ - public function __toString() - { - try { - return $this->toString(); - } catch (Exception $e) { - trigger_error( - sprintf( - '%s in %s on line %d', - $e->getMessage(), - $e->getFile(), - $e->getLine() - ), - E_USER_ERROR - ); - } - } - - /** - * Render query string - * - * @return string - */ - public function toString() - { - if ($this->table === null) { - throw new IcingaException('Table is required'); - } - - // Headers we always send - $default_headers = array( - // Our preferred output format is CSV as it allows us to fetch and - // process the result row by row - 'OutputFormat: csv', - 'ResponseHeader: fixed16', - // Tried to find a save list of separators, this might be subject to - // change and eventually be transforment into constants - 'Separators: ' . implode(' ', array(ord("\n"), ord('`'), ord(','), ord(';'))), - // We always use the keepalive feature, connection teardown happens - // in the connection destructor - 'KeepAlive: on' - ); - $parts = array( - sprintf('GET %s', $this->table) - ); - - // Fetch all required columns - $parts[] = $this->columnsToString(); - - // In case we need to apply a userspace filter as of Livestatus lacking - // support for some of them we also need to fetch all filtered columns - if ($this->filterIsSupported() && $filter = $this->filterToString()) { - $parts[] = $filter; - } - - // TODO: Old way of rendering a count query, this should definitively be - // improved - if ($this->count === true) { - $parts[] = 'Stats: state >= 0'; - } - - // TODO: Well... ordering is still missing - if (! $this->count && $this->hasLimit() && ! $this->hasOrder()) { - $parts[] = 'Limit: ' . ($this->getLimit() + $this->getOffset()); - } - $lql = implode("\n", $parts) - . "\n" - . implode("\n", $default_headers) - . "\n\n"; - - return $lql; - } - - /** - * Get all available columns - * - * @return array - */ - public function getAvailableColumns() - { - return $this->available_columns; - } - - protected function columnsToString() - { - $columns = array(); - $this->preparedHeaders = array(); - - - $usedColumns = $this->columns; - if (! $this->filterIsSupported()) { - foreach ($this->filter->listFilteredColumns() as $col) { - if (! in_array($col, $usedColumns)) { - $usedColumns[] = $col; - } - } - } - foreach ($usedColumns as $col) { -// TODO: No alias if filter??? - if (array_key_exists($col, $this->available_columns)) { - // Alias if such - $col = $this->available_columns[$col]; - } - if ($col[0] === '_') { - $columns['custom_variables'] = true; - } elseif (is_array($col)) { - foreach ($col as $k) { - $columns[$k] = true; - } - } else { - $columns[$col] = true; - } - } - - $this->preparedHeaders = array_keys($columns); - - if ($this->count === false && $this->columns !== null) { - return 'Columns: ' . implode(' ', array_keys($columns)); - } else { - return ''; // TODO: 'Stats: state >= 0'; when count - } - } - - /** - * Whether Livestatus is able to apply the current filter - * - * TODO: find a better method name - * TODO: more granular checks, also render filter-flag columns with lql - * - * @return bool - */ - public function filterIsSupported() - { - foreach ($this->filter->listFilteredColumns() as $column) { - if (is_array($this->available_columns[$column])) { - // Combined column, hardly filterable. Is it? May work! - return false; - } - } - return true; - } - - /** - * Create a Filter object for a given URL-like filter string. We allow - * for spaces as we do not search for custom string values here. This is - * internal voodoo. - * - * @param string $string Filter string - * - * @return Filter - */ - protected function filterStringToFilter($string) - { - return Filter::fromQueryString(str_replace(' ', '', $string)); - } - - /** - * Render the current filter to LQL - * - * @return string - */ - protected function filterToString() - { - return $this->renderFilter($this->filter); - } - - /** - * Filter rendering - * - * Happens recursively, useful for filters and for Stats expressions - * - * @param Filter $filter The filter that should be rendered - * @param string $type Filter type. Usually "Filter" or "Stats" - * @param int $level Nesting level during recursion. Don't touch - * @param bool $keylookup Whether to resolve alias names - * - * @return string - */ - protected function renderFilter(Filter $filter, $type = 'Filter', $level = 0, $keylookup = true) - { - $str = ''; - if ($filter instanceof FilterChain) { - if ($filter instanceof FilterAnd) { - $op = 'And'; - } elseif ($filter instanceof FilterOr) { - $op = 'Or'; - } elseif ($filter instanceof FilterNot) { - $op = 'Negate'; - } else { - throw new IcingaException( - 'Cannot render filter: %s', - $filter - ); - } - $parts = array(); - if (! $filter->isEmpty()) { - foreach ($filter->filters() as $f) { - $parts[] = $this->renderFilter($f, $type, $level + 1, $keylookup); - } - $str .= implode("\n", $parts); - if ($type === 'Filter') { - if (count($parts) > 1) { - $str .= "\n" . $op . ': ' . count($parts); - } - } else { - $str .= "\n" . $type . $op . ': ' . count($parts); - } - } - } else { - $str .= $type . ': ' . $this->renderFilterExpression($filter, $keylookup); - } - - return $str; - } - - /** - * Produce a safe regex string as required by LQL - * - * @param string $expression search expression - * - * @return string - */ - protected function safeRegex($expression) - { - return '^' . preg_replace('/\*/', '.*', $expression) . '$'; - } - - /** - * Render a single filter expression - * - * @param FilterExpression $filter the filter expression - * @param bool $keylookup whether to resolve alias names - * - * @return string - */ - public function renderFilterExpression(FilterExpression $filter, $keylookup = true) - { - if ($keylookup) { - $col = $this->available_columns[$filter->getColumn()]; - } else { - $col = $filter->getColumn(); - } - - $isArray = array_key_exists($col, $this->arrayColumns); - - $sign = $filter->getSign(); - if ($isArray && $sign === '=') { - $sign = '>='; - } - $expression = $filter->getExpression(); - if ($sign === '=' && strpos($expression, '*') !== false) { - return $col . ' ~~ ' . $this->safeRegex($expression); - } elseif ($sign === '!=' && strpos($expression, '*') !== false) { - return $col . ' !~~ ' . $this->safeRegex($expression); - } else { - return $col . ' ' . $sign . ' ' . $expression; - } - } - - public function __destruct() - { - unset($this->connection); - } -} diff --git a/library/Icinga/Protocol/Livestatus/ResponseRow.php b/library/Icinga/Protocol/Livestatus/ResponseRow.php deleted file mode 100644 index 0d180c3782..0000000000 --- a/library/Icinga/Protocol/Livestatus/ResponseRow.php +++ /dev/null @@ -1,19 +0,0 @@ -raw = $raw; - $this->query = $query; - } -} diff --git a/modules/monitoring/application/forms/Config/BackendConfigForm.php b/modules/monitoring/application/forms/Config/BackendConfigForm.php index e7fdba67ce..3e4a789d0b 100644 --- a/modules/monitoring/application/forms/Config/BackendConfigForm.php +++ b/modules/monitoring/application/forms/Config/BackendConfigForm.php @@ -200,10 +200,6 @@ public function createElements(array $formData) if ($resourceType === null) { $resourceType = key($resourceTypes); - } elseif ($resourceType === 'livestatus') { - throw new ConfigurationError( - 'We\'ve disabled livestatus support for now because it\'s not feature complete yet' - ); } $this->addElement( diff --git a/modules/monitoring/application/forms/Setup/BackendPage.php b/modules/monitoring/application/forms/Setup/BackendPage.php index 56a28d1061..d5c7efb1d3 100644 --- a/modules/monitoring/application/forms/Setup/BackendPage.php +++ b/modules/monitoring/application/forms/Setup/BackendPage.php @@ -34,7 +34,6 @@ public function createElements(array $formData) if (Platform::hasMysqlSupport() || Platform::hasPostgresqlSupport()) { $resourceTypes['ido'] = 'IDO'; } - // $resourceTypes['livestatus'] = 'Livestatus'; $this->addElement( 'select', diff --git a/modules/monitoring/application/forms/Setup/LivestatusResourcePage.php b/modules/monitoring/application/forms/Setup/LivestatusResourcePage.php deleted file mode 100644 index 42b560d17d..0000000000 --- a/modules/monitoring/application/forms/Setup/LivestatusResourcePage.php +++ /dev/null @@ -1,83 +0,0 @@ -setName('setup_monitoring_livestatus'); - $this->setTitle($this->translate('Monitoring Livestatus Resource', 'setup.page.title')); - $this->addDescription($this->translate( - 'Please fill out the connection details below to access the Livestatus' - . ' socket interface for your monitoring environment.' - )); - } - - public function createElements(array $formData) - { - $this->addElement( - 'hidden', - 'type', - array( - 'required' => true, - 'value' => 'livestatus' - ) - ); - - if (isset($formData['skip_validation']) && $formData['skip_validation']) { - $this->addSkipValidationCheckbox(); - } else { - $this->addElement( - 'hidden', - 'skip_validation', - array( - 'required' => true, - 'value' => 0 - ) - ); - } - - $livestatusResourceForm = new LivestatusResourceForm(); - $this->addElements($livestatusResourceForm->createElements($formData)->getElements()); - $this->getElement('name')->setValue('icinga_livestatus'); - } - - public function isValid($data) - { - if (false === parent::isValid($data)) { - return false; - } - - if (false === isset($data['skip_validation']) || $data['skip_validation'] == 0) { - if (false === LivestatusResourceForm::isValidResource($this)) { - $this->addSkipValidationCheckbox(); - return false; - } - } - - return true; - } - - /** - * Add a checkbox to the form by which the user can skip the connection validation - */ - protected function addSkipValidationCheckbox() - { - $this->addElement( - 'checkbox', - 'skip_validation', - array( - 'required' => true, - 'label' => $this->translate('Skip Validation'), - 'description' => $this->translate( - 'Check this to not to validate connectivity with the given Livestatus socket' - ) - ) - ); - } -} diff --git a/modules/monitoring/application/locale/pt_BR/LC_MESSAGES/monitoring.mo b/modules/monitoring/application/locale/pt_BR/LC_MESSAGES/monitoring.mo index e9b3ec712338d2df87b2677ab0c6046caa18c028..27723fa659295f9217cb867ac39bc36286e8e44c 100644 GIT binary patch delta 14378 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 diff --git a/modules/monitoring/application/locale/pt_BR/LC_MESSAGES/monitoring.po b/modules/monitoring/application/locale/pt_BR/LC_MESSAGES/monitoring.po index 05fc15ea71..f4cd56e769 100644 --- a/modules/monitoring/application/locale/pt_BR/LC_MESSAGES/monitoring.po +++ b/modules/monitoring/application/locale/pt_BR/LC_MESSAGES/monitoring.po @@ -8,15 +8,15 @@ msgstr "" "Project-Id-Version: Monitoring Module (2.0.0~alpha4)\n" "Report-Msgid-Bugs-To: dev@icinga.com\n" "POT-Creation-Date: 2014-12-03 09:10-0200\n" -"PO-Revision-Date: 2014-12-03 09:13-0300\n" -"Last-Translator: Carlos Cesario \n" +"PO-Revision-Date: 2017-09-28 15:31+0200\n" +"Last-Translator: Michael Friedrich \n" "Language: pt_BR\n" -"Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 2.0.3\n" +"Language-Team: \n" #: /usr/local/icingaweb/modules/monitoring/application/controllers/ChartController.php:278 msgid " Down Hosts (Handled)" @@ -1553,8 +1553,8 @@ msgstr "" #: /usr/local/icingaweb/modules/monitoring/application/forms/Command/Object/ScheduleServiceDowntimeCommandForm.php:73 msgid "" "If you work with other administrators, you may find it useful to share " -"information about the host or service that is having problems. Make sure " -"you enter a brief description of what you are doing." +"information about the host or service that is having problems. Make sure you " +"enter a brief description of what you are doing." msgstr "" "Se você trabalha com outros administradores, você pode achar isso útil para " "compartilhar informações sobre um host ou serviço que está tendo problemas. " @@ -1694,10 +1694,6 @@ msgstr "Listar todos" msgid "List all selected objects" msgstr "Listar todos objetos selecionados" -#: /usr/local/icingaweb/modules/monitoring/library/Monitoring/BackendStep.php:128 -msgid "Livestatus Resource" -msgstr "Recurso livestatus" - #: /usr/local/icingaweb/modules/monitoring/application/views/scripts/config/index.phtml:58 msgid "Local" msgstr "Local" diff --git a/modules/monitoring/library/Monitoring/Backend/Livestatus/LivestatusBackend.php b/modules/monitoring/library/Monitoring/Backend/Livestatus/LivestatusBackend.php deleted file mode 100644 index 1bc6b94e5a..0000000000 --- a/modules/monitoring/library/Monitoring/Backend/Livestatus/LivestatusBackend.php +++ /dev/null @@ -1,10 +0,0 @@ - '! fixed', - 'downtime_is_in_effect' => 'fixed | ! fixed', // just true - ); - - protected $available_columns = array( - 'downtime_author' => 'author', - 'downtime_comment' => 'comment', - 'downtime_entry_time' => 'entry_time', - 'downtime_is_fixed' => 'fixed', - 'downtime_is_flexible' => array('fixed'), - 'downtime_triggered_by_id' => 'triggered_by', - 'downtime_scheduled_start' => 'start_time', // ?? - 'downtime_scheduled_end' => 'end_time', // ?? - 'downtime_start' => 'start_time', - 'downtime_end' => 'end_time', - 'downtime_duration' => 'duration', - 'downtime_is_in_effect' => array('fixed'), - 'downtime_internal_id' => 'id', - 'downtime_host' => 'host_name', // #7278, #7279 - 'host' => 'host_name', - 'downtime_service' => 'service_description', - 'service' => 'service_description', // #7278, #7279 - 'downtime_objecttype' => array('is_service'), - 'downtime_host_state' => 'host_state', - 'downtime_service_state' => 'service_state' - ); - - public function combineResult_downtime_objecttype(& $row, & $res) - { - return $res['is_service'] ? 'service' : 'host'; - } -} diff --git a/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/HostgroupQuery.php b/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/HostgroupQuery.php deleted file mode 100644 index 5b41321bb5..0000000000 --- a/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/HostgroupQuery.php +++ /dev/null @@ -1,19 +0,0 @@ - 'name', - 'hostgroup_name' => 'name', - 'hostgroup_alias' => 'alias', - 'host' => 'members', - 'host_name' => 'members', - ); -} diff --git a/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/ServicegroupQuery.php b/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/ServicegroupQuery.php deleted file mode 100644 index 8086750f95..0000000000 --- a/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/ServicegroupQuery.php +++ /dev/null @@ -1,36 +0,0 @@ - 'name', - 'servicegroup_alias' => 'alias', - 'host' => array('members'), - 'host_name' => array('members'), - 'service' => array('members'), - 'service_host_name' => array('members'), - 'service_description' => array('members'), - ); - - public function xxcombineResult_service_host_name(& $row, & $res) - { - return; - var_dump($res); - die('Here you go'); - } - - - public function completeRow(& $row) - { - die('FU'); - $row->severity = 12; - } -} diff --git a/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/StatusQuery.php b/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/StatusQuery.php deleted file mode 100644 index fcd98546bd..0000000000 --- a/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/StatusQuery.php +++ /dev/null @@ -1,259 +0,0 @@ -mode = $mode; - } - - protected $table = 'services'; - - protected $filter_flags = array( - 'host_handled' => 'host_state > 0 & (host_acknowledged | host_in_downtime)', - 'host_problem' => 'host_state > 0', - 'service_problem' => 'service_state > 0', - 'service_handled' => 'service_state > 0 & (host_state > 0 | service_acknowledged | service_in_downtime)', - 'service_unhandled' => 'service_state > 0 & host_state = 0 & !service_acknowledged & !service_in_downtime', - ); - - protected $available_columns = array( - 'host' => 'host_name', - 'host_name' => 'host_name', - 'host_display_name' => 'host_display_name', - 'host_alias' => 'host_alias', - 'host_address' => 'host_address', - 'host_ipv4' => 'host_address', // TODO - 'host_icon_image' => 'host_icon_image', - 'host_contacts' => 'host_contacts', - 'host_problem' => array('host_state'), - 'host_handled' => array('host_state', 'host_acknowledged', 'host_scheduled_downtime_depth'), - 'service_problem' => array('state', 'acknowledged', 'scheduled_downtime_depth'), - 'service_handled' => array('host_state', 'state', 'acknowledged', 'scheduled_downtime_depth'), - 'service_unhandled' => array('host_state', 'state', 'acknowledged', 'scheduled_downtime_depth'), - - -// 'host_unhandled_services' => 'services_with_state', // Needs handler -// 'host_unhandled_services' => 'host_services_with_state', -> bringt nix, ist [service, state, has_been_checked] - 'host_unhandled_services' => 'state', // Needs handler - - 'host_severity' => array('host_state', 'host_acknowledged', 'host_scheduled_downtime_depth'), - 'service_severity' => array('host_state', 'state', 'acknowledged', 'scheduled_downtime_depth'), - - - - - -// TODO: Make these 1 if > 1 - 'host_in_downtime' => 'host_scheduled_downtime_depth', - 'service_in_downtime' => 'scheduled_downtime_depth', - - - 'host_check_latency' => 'host_latency', - 'host_check_execution_time' => 'host_execution_time', - - 'host_long_output' => 'host_long_plugin_output', - - - 'host_passive_checks_enabled_changed' => 'state', - 'host_obsessing' => 'state', - 'host_obsessing_changed' => 'state', - 'host_notifications_enabled_changed' => 'state', - 'host_event_handler_enabled_changed' => 'state', - 'host_flap_detection_enabled_changed' => 'state', - 'host_active_checks_enabled_changed' => 'state', - -// TODO: Do we need two of them? - 'host_current_check_attempt' => 'host_current_attempt', - 'host_attempt' => 'host_current_attempt', - - 'host_modified_host_attributes' => 'host_modified_attributes', - - 'service_modified_service_attributes' => 'modified_attributes', - - 'service_notifications_enabled_changed' => 'modified_attributes_list', - 'service_active_checks_enabled_changed' => 'modified_attributes_list', - 'service_passive_checks_enabled_changed' => 'modified_attributes_list', - 'service_flap_detection_enabled_changed' => 'modified_attributes_list', - 'service_event_handler_enabled_changed' => 'modified_attributes_list', - - 'service_check_execution_time' => 'execution_time', - 'service_check_latency' => 'latency', - 'service_obsessing' => 'state', - 'service_obsessing_changed' => 'state', - - 'service_hard_state' => 'state', - - 'service_attempt' => 'current_attempt', - 'service_current_check_attempt' => 'current_attempt', - - 'host' => 'host_name', - 'service_host_name' => 'host_name', - 'service' => 'description', - 'service_is_flapping' => 'is_flapping', - 'service_long_output' => 'long_plugin_output', - - 'service_icon_image' => 'icon_image', - 'service_action_url' => 'action_url', - 'service_notes_url' => 'notes_url', - 'host_max_check_attempts' => 'host_max_check_attempts', - 'service_max_check_attempts' => 'max_check_attempts', - - // Host comments - 'host_last_comment' => 'comments_with_info', - 'host_last_ack' => 'comments_with_info', - 'host_last_downtime' => 'comments_with_info', - 'host_check_command' => 'host_check_command', - // Host state - 'host_state' => 'host_state', - 'host_state_type' => 'host_state_type', - 'host_output' => 'host_plugin_output', - 'host_perfdata' => 'host_perf_data', - 'host_acknowledged' => 'host_acknowledged', - 'host_active_checks_enabled' => 'host_active_checks_enabled', - 'host_passive_checks_enabled' => 'host_accept_passive_checks', - 'host_last_state_change' => 'host_last_state_change', - - 'host_event_handler_enabled' => 'host_event_handler_enabled', - 'host_flap_detection_enabled' => 'host_flap_detection_enabled', - 'host_current_notification_number' => 'host_current_notification_number', - 'host_percent_state_change' => 'host_percent_state_change', - 'host_process_performance_data' => 'host_process_performance_data', - 'host_event_handler_enabled' => 'host_event_handler_enabled', - 'host_flap_detection_enabled' => 'host_flap_detection_enabled', - - 'service_percent_state_change' => 'percent_state_change', - - 'host_last_notification' => 'host_last_notification', - 'host_next_check' => 'host_next_check', - 'host_check_source' => 'state', - - // Service config - 'service_description' => 'description', - 'service_display_name' => 'display_name', - - // Service state - 'service_state' => 'state', - 'service_output' => 'plugin_output', - - - 'service_state_type' => 'state_type', - - 'service_perfdata' => 'perf_data', - 'service_acknowledged' => 'acknowledged', - 'service_active_checks_enabled' => 'active_checks_enabled', - 'service_passive_checks_enabled' => 'accept_passive_checks', - 'service_last_check' => 'last_check', - 'service_last_state_change' => 'last_state_change', - 'service_notifications_enabled' => 'notifications_enabled', - 'service_last_notification' => 'last_notification', - 'service_next_check' => 'next_check', - 'service_last_time_unknown' => 'last_time_unknown', - 'service_event_handler_enabled' => 'event_handler_enabled', - - // Service comments - 'service_last_comment' => 'comments_with_info', - 'service_last_ack' => 'comments_with_info', - 'service_last_downtime' => 'comments_with_info', - 'downtimes_with_info' => 'downtimes_with_info', - 'service_check_command' => 'check_command', - 'service_check_source' => 'state', - 'service_current_notification_number' => 'current_notification_number', - 'host_is_flapping' => 'host_is_flapping', - 'host_last_check' => 'host_last_check', - 'host_notifications_enabled' => 'host_notifications_enabled', - 'host_action_url' => 'host_action_url', - 'host_notes_url' => 'host_notes_url', - 'host_last_hard_state' => 'host_last_hard_state', - 'host_last_hard_state_change' => 'host_last_hard_state_change', - 'host_last_time_up' => 'host_last_time_up', - 'host_last_time_down' => 'host_last_time_down', - 'host_last_time_unreachable' => 'host_last_time_unreachable', - 'service_last_hard_state' => 'last_hard_state', - 'service_last_hard_state_change' => 'last_hard_state_change', - 'service_last_time_ok' => 'last_time_ok', - 'service_last_time_warning' => 'last_time_warning', - 'service_last_time_critical' => 'last_time_critical', - 'service_flap_detection_enabled' => 'flap_detection_enabled', - 'service_process_performance_data' => 'process_performance_data', - ); - - public function mungeResult_custom_variables($val, & $row) - { - $notseen = $this->customvars; - foreach ($val as $cv) { - $name = '_service_' . $cv[0]; - $row->$name = $cv[1]; - unset($notseen[$name]); - } - foreach ($notseen as $k => $v) { - $row->$k = $v; - } - } - - public function mungeResult_service_last_comment($val, & $row) - { - $this->mungeResult_comments_with_info($val, $row); - } - - public function mungeResult_service_last_ack($val, & $row) - { - $this->mungeResult_comments_with_info($val, $row); - } - - public function mungeResult_service_last_downtime($val, & $row) - { - $this->mungeResult_comments_with_info($val, $row); - } - - public function mungeResult_comments_with_info($val, & $row) - { - if (empty($val)) { - $row->service_last_comment = $row->service_last_ack - = $row->service_last_downtime = null; - } else { - $row->service_last_comment = $row->service_last_ack - = $row->service_last_downtime = preg_replace('/\n/', ' ', print_r($val, 1)); - } - } - - public function mungeResult_host_unhandled_services($val, & $row) - { - $cnt = 0; - foreach ($this->parseArray($val) as $service) { - if (! isset($service[1])) { - continue; - // TODO: More research is required here, on Icinga2 I got - // array(1) { [0]=> array(1) { [0]=> string(1) "2" } } - var_dump($this->parseArray($val)); - } - if ($service[1] > 0) { - $cnt++; - } - } - $row->host_unhandled_services = $cnt; - } -} diff --git a/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/StatusSummaryQuery.php b/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/StatusSummaryQuery.php deleted file mode 100644 index 13b1133e45..0000000000 --- a/modules/monitoring/library/Monitoring/Backend/Livestatus/Query/StatusSummaryQuery.php +++ /dev/null @@ -1,64 +0,0 @@ - 'host_name', - - 'services_total' => 'state != 9999', - 'services_problem' => 'state > 0', - 'services_problem_handled' => 'state > 0 & (scheduled_downtime_depth > 0 | acknowledged = 1 | host_state > 0)', - 'services_problem_unhandled' => 'state > 0 & scheduled_downtime_depth = 0 & acknowledged = 0 & host_state = 0', - 'services_ok' => 'state = 0', - 'services_ok_not_checked' => 'state = 0 & accept_passive_checks = 0 & active_checks_enabled = 0', - 'services_pending' => 'has_been_checked = 0', - 'services_pending_not_checked' => 'has_been_checked = 0 & accept_passive_checks = 0 & active_checks_enabled = 0', - 'services_warning' => 'state = 1', - 'services_warning_handled' => 'state = 1 & (scheduled_downtime_depth > 0 | acknowledged = 1 | host_state > 0)', - 'services_warning_unhandled' => 'state = 1 & scheduled_downtime_depth = 0 & acknowledged = 0 & host_state = 0', - 'services_warning_passive' => 'state = 1 & accept_passive_checks = 1 & active_checks_enabled = 0', - 'services_warning_not_checked' => 'state = 1 & accept_passive_checks = 0 & active_checks_enabled = 0', - 'services_critical' => 'state = 2', - 'services_critical_handled' => 'state = 2 & (scheduled_downtime_depth > 0 | acknowledged = 1 | host_state > 0)', - 'services_critical_unhandled' => 'state = 2 & scheduled_downtime_depth = 0 & acknowledged = 0 & host_state = 0', - 'services_critical_passive' => 'state = 2 & accept_passive_checks = 1 & active_checks_enabled = 0', - 'services_critical_not_checked' => 'state = 2 & accept_passive_checks = 0 & active_checks_enabled = 0', - 'services_unknown' => 'state = 3', - 'services_unknown_handled' => 'state = 3 & (scheduled_downtime_depth > 0 | acknowledged = 1 | host_state > 0)', - 'services_unknown_unhandled' => 'state = 3 & scheduled_downtime_depth = 0 & acknowledged = 0 & host_state = 0', - 'services_unknown_passive' => 'state = 3 & accept_passive_checks = 1 & active_checks_enabled = 0', - 'services_unknown_not_checked' => 'state = 3 & accept_passive_checks = 0 & active_checks_enabled = 0', - 'services_active' => 'active_checks_enabled = 1', - 'services_passive' => 'accept_passive_checks = 1 & active_checks_enabled = 0', - 'services_not_checked' => 'active_checks_enabled = 0 & accept_passive_checks = 0', - ); - - protected function columnsToString() - { - $parts = array(); - foreach ($this->columns as $col) { - if (! array_key_exists($col, $this->available_columns)) { - throw new ProgrammingError('No such column: %s', $col); - } - $filter = $this->filterStringToFilter($this->available_columns[$col]); - - //Filter::fromQueryString(str_replace(' ', '', $this->available_columns[$col])); - $parts[] = $this->renderFilter($filter, 'Stats', 0, false); - } - $this->preparedHeaders = $this->columns; - return implode("\n", $parts); - } - - protected function renderkkFilter($filter, $type = 'Filter', $level = 0, $keylookup = true) - { - return parent::renderFilter($filter, 'Stats', $level, $keylookup); - } -} diff --git a/modules/monitoring/library/Monitoring/BackendStep.php b/modules/monitoring/library/Monitoring/BackendStep.php index 3c66db3797..f87f64b2e8 100644 --- a/modules/monitoring/library/Monitoring/BackendStep.php +++ b/modules/monitoring/library/Monitoring/BackendStep.php @@ -153,21 +153,6 @@ public function getSummary() $resourceHtml .= '' . '' . ''; - } else { // $this->data['resourceConfig']['type'] === 'livestatus' - $resourceTitle = '

' . mt('monitoring', 'Livestatus Resource') . '

'; - $resourceHtml = '' - . '' - . '' - . '' - . '' - . '' - . '' - . '' - . '' - . '' - . '' - . '' - . '
' . t('Resource Name') . '' . $this->data['resourceConfig']['name'] . '
' . t('Socket') . '' . $this->data['resourceConfig']['socket'] . '
'; } return $pageTitle . '
' . $backendDescription . $resourceTitle . $resourceHtml . '
'; diff --git a/modules/monitoring/library/Monitoring/MonitoringWizard.php b/modules/monitoring/library/Monitoring/MonitoringWizard.php index 5e34fca2c4..2a814ba8d8 100644 --- a/modules/monitoring/library/Monitoring/MonitoringWizard.php +++ b/modules/monitoring/library/Monitoring/MonitoringWizard.php @@ -15,7 +15,6 @@ use Icinga\Module\Monitoring\Forms\Setup\SecurityPage; use Icinga\Module\Monitoring\Forms\Setup\TransportPage; use Icinga\Module\Monitoring\Forms\Setup\IdoResourcePage; -use Icinga\Module\Monitoring\Forms\Setup\LivestatusResourcePage; use Icinga\Module\Setup\Requirement\ClassRequirement; use Icinga\Module\Setup\Requirement\PhpModuleRequirement; @@ -32,7 +31,6 @@ public function init() $this->addPage(new WelcomePage()); $this->addPage(new BackendPage()); $this->addPage(new IdoResourcePage()); - $this->addPage(new LivestatusResourcePage()); $this->addPage(new TransportPage()); $this->addPage(new SecurityPage()); $this->addPage(new SummaryPage(array('name' => 'setup_monitoring_summary'))); @@ -52,7 +50,7 @@ public function setupPage(Form $page, Request $request) $page->setSummary($this->getSetup()->getSummary()); $page->setSubjectTitle(mt('monitoring', 'the monitoring module', 'setup.summary.subject')); } elseif ($this->getDirection() === static::FORWARD - && ($page->getName() === 'setup_monitoring_ido' || $page->getName() === 'setup_monitoring_livestatus') + && ($page->getName() === 'setup_monitoring_ido') ) { if ((($authDbResourceData = $this->getPageData('setup_auth_db_resource')) !== null && $authDbResourceData['name'] === $request->getPost('name')) @@ -85,9 +83,6 @@ protected function getNewPage($requestedPage, Form $originPage) if ($newPage->getName() === 'setup_monitoring_ido') { $backendData = $this->getPageData('setup_monitoring_backend'); $skip = $backendData['type'] !== 'ido'; - } elseif ($newPage->getName() === 'setup_monitoring_livestatus') { - $backendData = $this->getPageData('setup_monitoring_backend'); - $skip = $backendData['type'] !== 'livestatus'; } return $skip ? $this->skipPage($newPage) : $newPage; @@ -141,9 +136,7 @@ public function getSetup() $setup->addStep( new BackendStep(array( 'backendConfig' => $pageData['setup_monitoring_backend'], - 'resourceConfig' => isset($pageData['setup_monitoring_ido']) - ? array_diff_key($pageData['setup_monitoring_ido'], array('skip_validation' => null)) - : array_diff_key($pageData['setup_monitoring_livestatus'], array('skip_validation' => null)) + 'resourceConfig' => array_diff_key($pageData['setup_monitoring_ido'], array('skip_validation' => null)) //TODO: Prefer a new backend once implemented. )) ); diff --git a/modules/monitoring/library/Monitoring/Object/Host.php b/modules/monitoring/library/Monitoring/Object/Host.php index 7c6bd53242..f96f2fa8a4 100644 --- a/modules/monitoring/library/Monitoring/Object/Host.php +++ b/modules/monitoring/library/Monitoring/Object/Host.php @@ -140,9 +140,6 @@ protected function getDataView() 'host_state_type', 'instance_name' ); - if ($this->backend->getType() === 'livestatus') { - $columns[] = 'host_contacts'; - } return $this->backend->select()->from('hoststatus', $columns) ->where('host_name', $this->host); } diff --git a/modules/monitoring/library/Monitoring/Object/MonitoredObject.php b/modules/monitoring/library/Monitoring/Object/MonitoredObject.php index 1af5b8e4af..73381ddcd3 100644 --- a/modules/monitoring/library/Monitoring/Object/MonitoredObject.php +++ b/modules/monitoring/library/Monitoring/Object/MonitoredObject.php @@ -315,11 +315,6 @@ public function fetchAcknowledgement() */ public function fetchComments() { - if ($this->backend->is('livestatus')) { - $this->comments = array(); - return $this; - } - $commentsView = $this->backend->select()->from('comment', array( 'author' => 'comment_author_name', 'comment' => 'comment_data', @@ -377,11 +372,6 @@ public function fetchComments() */ public function fetchContactgroups() { - if ($this->backend->is('livestatus')) { - $this->contactgroups = array(); - return $this; - } - $contactsGroups = $this->backend->select()->from('contactgroup', array( 'contactgroup_name', 'contactgroup_alias' @@ -404,11 +394,6 @@ public function fetchContactgroups() */ public function fetchContacts() { - if ($this->backend->is('livestatus')) { - $this->contacts = array(); - return $this; - } - $contacts = $this->backend->select()->from('contact', array( 'contact_name', 'contact_alias', @@ -433,11 +418,6 @@ public function fetchContacts() */ public function fetchCustomvars() { - if ($this->backend->is('livestatus')) { - $this->customvars = array(); - return $this; - } - $blacklist = array(); $blacklistPattern = '';