Skip to content
Commits on Source (10)
......@@ -4,6 +4,22 @@ Please make sure to always read our [Upgrading](doc/80-Upgrading.md) documentati
## What's New
### What's New in Version 2.6.2
You can find issues and features related to this release on our [Roadmap](https://github.com/Icinga/icingaweb2/milestone/53?closed=1).
This bugfix release addresses the following topics:
* Database connections to MySQL 8 no longer fail
* LDAP connections now have a timeout configuration which defaults to 5 seconds
* User groups are now correctly loaded for externally authenticated users
* Filters are respected for all links in the host and service group overviews
* Fixed permission problems where host and service actions provided by modules were missing
* Fixed an SQL error in the contact list view when filtering for host groups
* Fixed time zone (DST) detection
* Fixed the contact details view if restrictions are active
* Doc parser and documentation fixes
### What's New in Version 2.6.1
You can find issues and features related to this release on our [Roadmap](https://github.com/Icinga/icingaweb2/milestone/51?closed=1).
......
......@@ -3,7 +3,7 @@
[![Build Status](https://travis-ci.org/Icinga/icingaweb2.png?branch=master)](https://travis-ci.org/Icinga/icingaweb2)
[![Github Tag](https://img.shields.io/github/tag/Icinga/icingaweb2.svg)](https://github.com/Icinga/icingaweb2)
![Icinga Logo](https://www.icinga.com/wp-content/uploads/2014/06/icinga_logo.png)
![Icinga Logo](https://icinga.com/wp-content/uploads/2014/06/icinga_logo.png)
1. [About](#about)
2. [License](#license)
......@@ -15,11 +15,11 @@
## About
**Icinga Web 2** is the next generation open source monitoring web interface, framework
and command-line interface developed by the [Icinga Project](https://www.icinga.com/), supporting Icinga 2,
and command-line interface developed by the [Icinga Project](https://icinga.com/), supporting Icinga 2,
Icinga Core and any other monitoring backend compatible with the IDO database.
![Icinga Web 2 with Graphite](https://www.icinga.com/wp-content/uploads/2017/11/Icinga-Web-2-graphite.png "Icinga Web 2 with Graphite")
![Icinga Web 2 Sidebar Collapsed](https://www.icinga.com/wp-content/uploads/2017/11/Icinga-Web-2-collapsed-sidebar.png "Icinga Web 2 Sidebar Collapsed")
![Icinga Web 2 with Graphite](https://icinga.com/wp-content/uploads/2017/11/Icinga-Web-2-graphite.png "Icinga Web 2 with Graphite")
![Icinga Web 2 Sidebar Collapsed](https://icinga.com/wp-content/uploads/2017/11/Icinga-Web-2-collapsed-sidebar.png "Icinga Web 2 Sidebar Collapsed")
## License
......@@ -29,17 +29,19 @@ COPYING file included in the source package.
## Installation
For installing Icinga Web 2 please read [doc/02-Installation.md](doc/02-Installation.md).
For installing Icinga Web 2 please check the [installation chapter](https://icinga.com/docs/icingaweb2/latest/doc/02-Installation/)
in the documentation.
## Documentation
The documentation is located in the [doc/](doc/) directory.
The documentation is located in the [doc/](doc/) directory and also available
on [icinga.com/docs](https://icinga.com/docs/icingaweb2/latest/).
## Support
Check the project website at https://www.icinga.com for status updates. Join the
[community channels](https://www.icinga.com/community/get-involved/) for questions
or ask an Icinga partner for [professional support](https://www.icinga.com/services/support/).
Check the [project website](https://icinga.com) for status updates. Join the
[community channels](https://icinga.com/community/) for questions
or ask an Icinga partner for [professional support](https://icinga.com/support/).
## Contributing
......
......@@ -185,10 +185,6 @@ git commit -av -m "Release 2.5.3-1"
git push
```
```
git commit -av -m "Release 2.5.3-1"
```
**Note for major releases**: Update release branch to latest.
`git checkout release && git pull && git merge master && git push`
......@@ -202,7 +198,7 @@ git commit -av -m "Release 2.5.3-1"
docker run -v `pwd`:/mnt/packaging -ti ubuntu:xenial bash
apt-get update
apt-get install git dev-tools vim
apt-get install git devscripts vim
cd /mnt/packaging
git config --global user.name "Eric Lippmann"
......@@ -231,8 +227,8 @@ Ask @bobapple to update the documentation at docs.icinga.com.
### Announcement <a id="announcement"></a>
* Create a new blog post on www.icinga.com/blog
* Social media: [Twitter](https://twitter.com/icinga), [Facebook](https://www.facebook.com/icinga), [G+](https://plus.google.com/+icinga), [Xing](https://www.xing.com/communities/groups/icinga-da4b-1060043), [LinkedIn](https://www.linkedin.com/groups/Icinga-1921830/about)
* Create a new blog post on icinga.com/blog
* Social media: [Twitter](https://twitter.com/icinga), [Facebook](https://www.facebook.com/icinga), [Xing](https://www.xing.com/communities/groups/icinga-da4b-1060043), [LinkedIn](https://www.linkedin.com/groups/Icinga-1921830/about)
* Update IRC channel topic
### Project Management <a id="project-management"></a>
......
b3e0b5d587c3587a09d82b3634dbe3a5dd315353 2018-08-02 12:46:39 +0200
63cb9d728338225833884fda2c312a5a9f431fd6 2018-11-21 09:19:00 +0100
......@@ -74,6 +74,7 @@ class AuthenticationController extends Controller
AuthenticationHook::triggerLogout($auth->getUser());
$auth->removeAuthorization();
if ($isExternalUser) {
$this->view->layout()->setLayout('external-logout');
$this->getResponse()->setHttpResponseCode(401);
} else {
$this->redirectToLogin();
......
......@@ -12,6 +12,7 @@ use Icinga\Application\Modules\Module;
use Icinga\Data\ResourceFactory;
use Icinga\Exception\ConfigurationError;
use Icinga\Exception\NotFoundError;
use Icinga\Forms\ActionForm;
use Icinga\Forms\Config\GeneralConfigForm;
use Icinga\Forms\Config\ResourceConfigForm;
use Icinga\Forms\Config\UserBackendConfigForm;
......@@ -122,7 +123,20 @@ class ConfigController extends Controller
$module = new Module($app, $name, $manager->getModuleDir($name));
}
$toggleForm = new ActionForm();
$toggleForm->setDefaults(['identifier' => $name]);
if (! $this->view->moduleData->enabled) {
$toggleForm->setAction(Url::fromPath('config/moduleenable'));
$toggleForm->setDescription(sprintf($this->translate('Enable the %s module'), $name));
} elseif ($this->view->moduleData->loaded) {
$toggleForm->setAction(Url::fromPath('config/moduledisable'));
$toggleForm->setDescription(sprintf($this->translate('Disable the %s module'), $name));
} else {
$toggleForm = null;
}
$this->view->module = $module;
$this->view->toggleForm = $toggleForm;
$this->view->tabs = $module->getConfigTabs()->activate('info');
$this->view->moduleGitCommitId = Version::getGitHead($module->getBaseDir());
} else {
......@@ -137,15 +151,20 @@ class ConfigController extends Controller
public function moduleenableAction()
{
$this->assertPermission('config/modules');
$module = $this->getParam('name');
$manager = Icinga::app()->getModuleManager();
try {
$manager->enableModule($module);
$form = new ActionForm();
$form->setOnSuccess(function (ActionForm $form) {
$module = $form->getValue('identifier');
Icinga::app()->getModuleManager()->enableModule($module);
Notification::success(sprintf($this->translate('Module "%s" enabled'), $module));
$this->rerenderLayout()->reloadCss()->redirectNow('config/modules');
});
try {
$form->handleRequest();
} catch (Exception $e) {
$this->view->exceptionMessage = $e->getMessage();
$this->view->moduleName = $module;
$this->view->moduleName = $form->getValue('name');
$this->view->action = 'enable';
$this->render('module-configuration-error');
}
......@@ -157,15 +176,20 @@ class ConfigController extends Controller
public function moduledisableAction()
{
$this->assertPermission('config/modules');
$module = $this->getParam('name');
$manager = Icinga::app()->getModuleManager();
try {
$manager->disableModule($module);
$form = new ActionForm();
$form->setOnSuccess(function (ActionForm $form) {
$module = $form->getValue('identifier');
Icinga::app()->getModuleManager()->disableModule($module);
Notification::success(sprintf($this->translate('Module "%s" disabled'), $module));
$this->rerenderLayout()->reloadCss()->redirectNow('config/modules');
});
try {
$form->handleRequest();
} catch (Exception $e) {
$this->view->exceptionMessage = $e->getMessage();
$this->view->moduleName = $module;
$this->view->moduleName = $form->getValue('name');
$this->view->action = 'disable';
$this->render('module-configuration-error');
}
......
<?php
/* Icinga Web 2 | (c) 2018 Icinga Development Team | GPLv2+ */
namespace Icinga\Forms;
use Icinga\Web\Form;
class ActionForm extends Form
{
/**
* The icon shown on the button
*
* @var string
*/
protected $icon = 'arrows-cw';
/**
* Set the icon to show on the button
*
* @param string $name
*
* @return $this
*/
public function setIcon($name)
{
$this->icon = (string) $name;
return $this;
}
public function init()
{
$this->setAttrib('class', 'inline');
$this->setUidDisabled(true);
$this->setDecorators(['FormElements', 'Form']);
}
public function createElements(array $formData)
{
$this->addElement(
'hidden',
'identifier',
[
'required' => true,
'decorators' => ['ViewHelper']
]
);
$this->addElement(
'button',
'btn_submit',
[
'escape' => false,
'type' => 'submit',
'class' => 'link-button spinner',
'value' => 'btn_submit',
'decorators' => ['ViewHelper'],
'label' => $this->getView()->icon($this->icon),
'title' => $this->getDescription()
]
);
}
}
......@@ -144,6 +144,17 @@ class LdapResourceForm extends Form
)
);
$this->addElement(
'number',
'timeout',
array(
'preserveDefault' => true,
'label' => $this->translate('Timeout'),
'description' => $this->translate('Connection timeout for every LDAP connection'),
'value' => 5 // see LdapConnection::__construct()
)
);
return $this;
}
}
<?php
use Icinga\Util\Translator;
$lang = Translator::splitLocaleCode()->language;
$showFullscreen = $this->layout()->showFullscreen;
$innerLayoutScript = $this->layout()->innerLayout . '.phtml';
?><!DOCTYPE html>
<!--[if IE 8]>
<html class="no-js ie8" lang="<?= $lang ?>"> <![endif]-->
<!--[if gt IE 8]><!-->
<html class="no-js" lang="<?= $lang ?>"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="google" value="notranslate">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="cleartype" content="on">
<title><?= $this->title ? $this->escape($this->title) : $this->defaultTitle ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="application-name" content="Icinga Web 2">
<meta name="apple-mobile-web-app-title" content="Icinga">
<link rel="mask-icon" href="<?= $this->baseUrl('img/website-icon.svg') ?>" color="#0096BF">
<link type="image/png" rel="shortcut icon" href="<?= $this->baseUrl('img/favicon.png') ?>" />
<link rel="apple-touch-icon" href="<?= $this->baseUrl('img/touch-icon.png') ?>">
</head>
<body id="body">
<div id="layout" class="default-layout<?php if ($showFullscreen): ?> fullscreen-layout<?php endif ?>">
<?= $this->render($innerLayoutScript); ?>
</div>
</body>
</html>
......@@ -21,7 +21,7 @@
<span>&copy; 2013-<?= date('Y') ?></span>
<?= $this->qlink(
$this->translate('The Icinga Project'),
'https://www.icinga.com',
'https://icinga.com',
null,
array(
'target' => '_blank'
......@@ -62,7 +62,7 @@
<div class="about-links">
<?= $this->qlink(
null,
'https://github.com/icinga/icingaweb2',
'https://github.com/icinga/icingaweb2/issues',
null,
array(
'target' => '_blank',
......@@ -72,7 +72,7 @@
) ?>
<?= $this->qlink(
null,
'https://www.icinga.com/support/',
'https://icinga.com/support/',
null,
array(
'target' => '_blank',
......@@ -82,7 +82,7 @@
) ?>
<?= $this->qlink(
null,
'https://www.icinga.com/about/get-involved/',
'https://icinga.com/community/',
null,
array(
'target' => '_blank',
......
......@@ -25,7 +25,7 @@
<?= $this->form ?>
<div id="login-footer">
<p>Icinga Web 2 &copy; 2013-<?= date('Y') ?></p>
<?= $this->qlink($this->translate('icinga.com'), 'https://www.icinga.com') ?>
<?= $this->qlink($this->translate('icinga.com'), 'https://icinga.com') ?>
</div>
</div>
</div>
......
......@@ -8,6 +8,7 @@
logged-in user this JavaScript provides a workaround to force a new authentication prompt in most browsers.
-->
<div class="content">
<div id="icinga-logo" aria-hidden="true"></div>
<div class="alert alert-warning" id="logout-status">
<b><?= $this->translate('Logging out...'); ?></b>
<br>
......@@ -19,7 +20,7 @@
</div>
<div class="container">
<a href="<?= $this->href('dashboard/index?renderLayout'); ?>"><?= $this->translate('Login'); ?></a>
<a href="<?= $this->href('dashboard'); ?>"><?= $this->translate('Login'); ?></a>
</div>
</div>
<script type="text/javascript">
......@@ -45,3 +46,34 @@
msg.className = 'alert alert-success';
});
</script>
<style type="text/css">
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
background-color: #0095bf;
color: white;
}
.content {
text-align: center;
}
#icinga-logo {
background-image: url('../img/icinga-logo-big.svg');
background-position: center bottom;
background-repeat: no-repeat;
background-size: contain;
height: 177px;
margin-top: 10em;
width: 100%;
}
#logout-status {
margin: 2em 0 1em;
font-size: 2em;
font-weight: bold;
}
.container a {
color: white;
font-size: 1.5em;
}
</style>
......@@ -18,21 +18,10 @@
</tr>
<tr>
<th><?= $this->translate('State') ?></th>
<td><?= $state ?><?php if ($state === 'enabled'): ?>
<?= $this->qlink(
$this->translate('disable'),
'config/moduledisable',
array('name' => $module->getName()),
array('title' => sprintf($this->translate('Disable the %s module'), $module->getName()), 'class' => 'action-link')
); ?>
<?php endif ?>
<?php if ($state === 'disabled'): ?>
<?= $this->qlink(
$this->translate('enable'),
'config/moduleenable',
array('name' => $module->getName()),
array('title' => sprintf($this->translate('Enable the %s module'), $module->getName()), 'class' => 'action-link')
); ?>
<td>
<?= $state ?>
<?php if (isset($this->toggleForm)): ?>
<?= $this->toggleForm ?>
<?php endif ?>
</td>
<tr>
......
......@@ -27,7 +27,7 @@
echo $this->qlink(
$module->name,
'config/module/',
'config/module',
array('name' => $module->name),
array(
'class' => 'rowaction',
......
icingaweb2 (2.6.2-2~bpo9+1) stretch-backports; urgency=medium
* Rebuild for stretch-backports.
-- Chris Boot <bootc@debian.org> Sun, 06 Jan 2019 16:40:59 +0000
icingaweb2 (2.6.2-2) unstable; urgency=medium
* Team upload.
* Add patch to fix Uncaught ErrorException with PHP 7.3.
(closes: #914457)
-- Bas Couwenberg <sebastic@debian.org> Fri, 23 Nov 2018 18:36:14 +0100
icingaweb2 (2.6.2-1) unstable; urgency=medium
* Team upload.
* New upstream release.
* Bump Standards-Version to 4.2.1, no changes.
* Update Homepage to icinga.com.
-- Bas Couwenberg <sebastic@debian.org> Fri, 23 Nov 2018 09:23:47 +0100
icingaweb2 (2.6.1-1~bpo9+1) stretch-backports; urgency=medium
* Rebuild for stretch-backports.
......
......@@ -9,10 +9,10 @@ Build-Depends: bash-completion,
php-cli,
node-uglify (>= 2) | yui-compressor,
node-source-map | yui-compressor
Standards-Version: 4.2.0
Standards-Version: 4.2.1
Vcs-Browser: https://salsa.debian.org/nagios-team/pkg-icingaweb2
Vcs-Git: https://salsa.debian.org/nagios-team/pkg-icingaweb2.git -b stretch-backports
Homepage: https://www.icinga.com
Homepage: https://icinga.com
Package: icingaweb2
Architecture: all
......
Description: Use continue <N> in case statements to fix ErrorException with PHP 7.3.
Fatal error: Uncaught ErrorException: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"?
Author: Bas Couwenberg <sebastic@debian.org>
Bug-Debian: https://bugs.debian.org/914457
Forwarded: https://github.com/Icinga/icingaweb2/pull/3634
--- a/library/Icinga/Application/Modules/Module.php
+++ b/library/Icinga/Application/Modules/Module.php
@@ -686,7 +686,7 @@ class Module
case 'depends':
if (strpos($val, ' ') === false) {
$metadata->depends[$val] = true;
- continue;
+ continue 2;
}
$parts = preg_split('/,\s+/', $val);
--- a/library/Icinga/File/Ini/IniParser.php
+++ b/library/Icinga/File/Ini/IniParser.php
@@ -64,7 +64,7 @@ class IniParser
switch ($state) {
case self::LINE_START:
if (ctype_space($s)) {
- continue;
+ continue 2;
}
switch ($s) {
case '[':
@@ -130,7 +130,7 @@ class IniParser
case self::DIRECTIVE_VALUE_START:
if (ctype_space($s)) {
- continue;
+ continue 2;
} elseif ($s === '"') {
$state = self::DIRECTIVE_VALUE_QUOTED;
} else {
break-continue.patch
......@@ -12,7 +12,7 @@ chapter.
## Installing Requirements <a id="installing-requirements"></a>
* [Icinga 2](https://www.icinga.com/products/icinga-2/) with the IDO database backend (MySQL or PostgreSQL)
* [Icinga 2](https://icinga.com/products/icinga-2/) with the IDO database backend (MySQL or PostgreSQL)
* A web server, e.g. Apache or Nginx
* PHP version >= 5.6.0
* The following PHP modules must be installed: cURL, gettext, intl, mbstring, OpenSSL and xml
......