[pkg-nagios-changes] [Git][nagios-team/nagvis][upstream] New upstream version 1.9.49

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Tue Mar 31 13:08:04 BST 2026



Bas Couwenberg pushed to branch upstream at Debian Nagios Maintainer Group / nagvis


Commits:
3328eed8 by Bas Couwenberg at 2026-03-31T14:04:21+02:00
New upstream version 1.9.49
- - - - -


10 changed files:

- + .github/workflows/release.yml
- ChangeLog
- + nagvis-release-key.asc
- share/frontend/nagvis-js/js/ElementLine.js
- share/frontend/nagvis-js/js/NagVisStatefulObject.js
- share/frontend/nagvis-js/js/ajaxActions.js
- share/server/core/classes/CoreBackendMgmt.php
- share/server/core/classes/CoreLogonModule.php
- share/server/core/defines/global.php
- share/server/core/defines/matches.php


Changes:

=====================================
.github/workflows/release.yml
=====================================
@@ -0,0 +1,57 @@
+name: Release
+
+on:
+  push:
+    tags:
+      - 'nagvis-*'
+
+jobs:
+  release:
+    runs-on: ubuntu-latest
+    permissions:
+      contents: write
+
+    steps:
+      - uses: actions/checkout at v4
+
+      - name: Extract version from tag
+        id: version
+        run: echo "version=${GITHUB_REF_NAME#nagvis-}" >> $GITHUB_OUTPUT
+
+      - name: Build tarball
+        run: |
+          git archive \
+            --format=tar \
+            --prefix=nagvis-${{ steps.version.outputs.version }}/ \
+            HEAD \
+          | gzip > nagvis-${{ steps.version.outputs.version }}.tar.gz
+
+      - name: Generate checksums
+        run: |
+          sha256sum nagvis-${{ steps.version.outputs.version }}.tar.gz \
+            > nagvis-${{ steps.version.outputs.version }}.tar.gz.sha256
+
+      - name: Import GPG key
+        run: |
+          echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import
+          FINGERPRINT=$(gpg --list-secret-keys --with-colons | grep '^fpr' | head -1 | cut -d: -f10)
+          echo "${FINGERPRINT}:6:" | gpg --import-ownertrust
+
+      - name: Sign tarball
+        run: |
+          gpg --batch \
+              --yes \
+              --local-user "${{ secrets.GPG_KEY_ID }}" \
+              --detach-sign \
+              --armor \
+              nagvis-${{ steps.version.outputs.version }}.tar.gz
+
+      - name: Create GitHub Release
+        uses: softprops/action-gh-release at v2
+        with:
+          name: NagVis ${{ steps.version.outputs.version }}
+          draft: true
+          files: |
+            nagvis-${{ steps.version.outputs.version }}.tar.gz
+            nagvis-${{ steps.version.outputs.version }}.tar.gz.asc
+            nagvis-${{ steps.version.outputs.version }}.tar.gz.sha256


=====================================
ChangeLog
=====================================
@@ -1,3 +1,10 @@
+1.9.49
+  * FIX: Prevent fatal autoloader error when backend has empty or missing backendtype
+  * FIX: Fix creating users during first login in some cases (#294)
+  * FIX: Fix if parseInt() interpret "auto" as NaN (#416 Thanks to ArminRadmueller)
+  * FIX: URL-encode object names and service descriptions in map links to handle special characters like '#'
+  * FIX: Allow double quotes in service descriptions to support Checkmk if64 interface names
+
 1.9.48
   * FIX: Fix exclude_members related PHP 8.1 compatibility issue (#400 Thanks to ekapsner-ne)
   * FIX: misaligned labels on state changes


=====================================
nagvis-release-key.asc
=====================================
@@ -0,0 +1,29 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mQINBGnLXT4BEADNbJ+BzzZD5JbsiHYxqQ1RiQfYlODgsjVxX/jTnmoxAZgDfhSz
+7VXo1ytico9Jy9Hu5Ulbn6GDtkA31KQVZprcLO60vQ32X6zbGxHp2KDc2B5UmSrD
+3ZOnFprAl3OY03Fs3WT1IWlwHDMFtWAunKtH+dwjQ9cpyjHvA5FtBtN+WZh0DKrO
+G2LLllJlFZpM9B7RbYECxQHTR5/VMStwiufk1qqOQms7b6uNs+4Cj9n4Of3xHSPU
+AKgiJre3fK/lQp9PvZz4cxzVueICjQsTOBt+4uQe68pyGwee/mBwHb0PdpVO8SeC
+g8dGlVkQmOGGPgO4emwxTBgXncvzN46OWx0RTdNG2w6d2VDvmn2kOupVBfhVVBLn
+1qPddKrWYtnmBfqEvmG9pwFty47FjeCWbzWKpzu2Ch9DIcbrtRSK1lX/VZH7ohbl
+hVMH8QmcT4+kD/d0KasWxjk61VjDDHSjFC6sq4zhGrM9WWXpBcX7yC5fK1vDqQw9
+PmBLUJYlfjlwO+8ElsYJZ1taZJoWz+oUMmAnfQR2krsFnYrHLteRFsjVQaWctycv
+5bP8hmZmEmhPHawYBClA4zgVpLn51VjVIIpymZKPQ5l6yMSkLj+JbmzfXz9SD43g
+XYGabdLXhb5rNUuRybovXXBUKhkopEwaHmoOSSNY05SmdfjacHD3xY9SNQARAQAB
+tCxOYWdWaXMgUmVsZWFzZSBTaWduaW5nIDxyZWxlYXNlc0BuYWd2aXMub3JnPokC
+WAQTAQoAQhYhBB6hXkTN2tiMejx2GkOOkQBfXsEiBQJpy10+AxsvBAUJA8JnAAUL
+CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBDjpEAX17BIjpwEAC44EFoMvok
+lSvMhVj+OumtRdtveRaCNrnwIC9QDnKwh2GP9cmNondxvaX5Ai/zFCk48PjGWb87
+2NyO2XTPsX/R3fnhbD5eo6mnXEjAQ/m2txgmCOjpMnHm0yfKItnVJVf5YFPsnqhZ
+Wn1spf9ZoYF8Lc+soMD1s1/wAquIjkogpqfoQQJivh2H96aawlZsRINoUP317SBS
+vKcEhwLhJXmBylmj7/EccEDYXa3ahrW/fPc46+mwrTT3AjRuFSAsIyAidXiZvzoZ
+S0ekOb1yQh6d4IYhC7HSTj70KNiBgtcg0+Ydc4QtSlPIFa8lrj02bU6AipSJXPNn
+6jfg00P3ZOSSvsa3P+G/EsUAij5oJI3/LGIE4wvhRqUiB2jp31sF13nRpLVHa52o
+Jn9jlxxx4AI8Ia59vAj8plFPAgerV0G8MtGVbZYCDDIgVgq5kd4Oer0MLB6gBJM8
+s2IMSE234/ArO8rWwejtYhZ2FtF/wKK7mQd6MP2Jsr9Z18cpMdetpsGFCShFJnRy
+Vd8kuGV9yiaLbwSVC4sfkJF5OTSyQm/ZrTPR2r1jKTuHjrXhi0tIwiNkGEp6Kqe9
+y7BR1n+AiSLwJaGIsiSq5SxhLUVPVB3vhhYP4x2Y9yHZ3HwV2slD0MxFHVCXHLrG
+1+TjmeWH9w7Tq1tB02MCUBtSynZx2XUoKA==
+=Hapw
+-----END PGP PUBLIC KEY BLOCK-----


=====================================
share/frontend/nagvis-js/js/ElementLine.js
=====================================
@@ -817,8 +817,9 @@ var ElementLine = Element.extend({
 
         // Checkmk if/if64 checks support switching between bytes/bits.
         var display_bits = false;
+        var reBits = /\bIn(?:\s+average\s+[^:]+)?:\s*[0-9][0-9.,]*\s*\S*Bit\/s\b[\s\S]*?\bOut(?:\s+average\s+[^:]+)?:\s*[0-9][0-9.,]*\s*\S*Bit\/s\b/i;
 
-        if (output.match('In: [0-9].*(Bit|bit)/s.*Out: [0-9]+')) {
+        if (output.match(reBits)) {
             display_bits=true;
         }
 


=====================================
share/frontend/nagvis-js/js/NagVisStatefulObject.js
=====================================
@@ -415,13 +415,13 @@ var NagVisStatefulObject = NagVisObject.extend({
 
             this.conf.url = this.conf.url.replace(getRegEx('htmlbase', '\\[htmlbase\\]', 'g'), oGeneralProperties.path_base);
 
-            this.conf.url = this.conf.url.replace(getRegEx(name, '\\['+name+'\\]', 'g'), this.conf.name);
+            this.conf.url = this.conf.url.replace(getRegEx(name, '\\['+name+'\\]', 'g'), encodeURIComponent(this.conf.name));
             if(this.conf.type == 'service') {
-                this.conf.url = this.conf.url.replace(getRegEx('service_description', '\\[service_description\\]', 'g'), this.conf.service_description);
+                this.conf.url = this.conf.url.replace(getRegEx('service_description', '\\[service_description\\]', 'g'), encodeURIComponent(this.conf.service_description));
             }
 
             if(this.conf.type != 'map') {
-                this.conf.url = this.conf.url.replace(getRegEx('backend_id', '\\[backend_id\\]', 'g'), this.conf.backend_id);
+                this.conf.url = this.conf.url.replace(getRegEx('backend_id', '\\[backend_id\\]', 'g'), encodeURIComponent(this.conf.backend_id));
             }
         }
     },


=====================================
share/frontend/nagvis-js/js/ajaxActions.js
=====================================
@@ -6,7 +6,9 @@ function getMidOfAnchor(oObj) {
 function saveObjectAttr(objId, attr) {
     var urlPart = '';
     for (var key in attr)
-        urlPart += '&' + key + '=' + escapeUrlValues(attr[key]);
+        // parseInt() returned NaN, because value was set to "auto"
+        if ( ! isNaN(attr[key]) )
+            urlPart += '&' + key + '=' + escapeUrlValues(attr[key]);
 
     call_ajax(oGeneralProperties.path_server + '?mod=Map&act=modifyObject&map='
               + escapeUrlValues(oPageProperties.map_name) + '&id=' + escapeUrlValues(objId) + urlPart);


=====================================
share/server/core/classes/CoreBackendMgmt.php
=====================================
@@ -567,12 +567,13 @@ class CoreBackendMgmt {
      */
     public function checkBackendExists($backendId, $printErr) {
         global $CORE;
-        if($CORE->checkExisting(cfg('paths','class').'GlobalBackend'.cfg('backend_'.$backendId,'backendtype').'.php', false))
+        $backendType = cfg('backend_'.$backendId,'backendtype');
+        if($backendType != '' && $CORE->checkExisting(cfg('paths','class').'GlobalBackend'.$backendType.'.php', false))
             return true;
 
         if($printErr == 1)
             throw new NagVisException(l('backendNotExists', Array('BACKENDID'   => $backendId,
-                                                                  'BACKENDTYPE' => cfg('backend_'.$backendId,'backendtype'))));
+                                                                  'BACKENDTYPE' => $backendType)));
         return false;
     }
 
@@ -673,7 +674,7 @@ class CoreBackendMgmt {
      */
     public function checkBackendFeature($backendId, $feature, $printErr = 1) {
         $backendClass = 'GlobalBackend'.cfg('backend_'.$backendId, 'backendtype');
-        if(method_exists($backendClass, $feature)) {
+        if(class_exists($backendClass, false) && method_exists($backendClass, $feature)) {
             return true;
         } else {
             if($printErr == 1) {


=====================================
share/server/core/classes/CoreLogonModule.php
=====================================
@@ -33,7 +33,7 @@ class CoreLogonModule {
         $AUTH->createUser($username, (time() * rand(1, 10)));
         if($role !== '') {
             $A = new CoreAuthorisationHandler();
-            $A->parsePermissions();
+            $A->parsePermissions($username);
             $A->updateUserRoles($A->getUserId($username), Array($A->getRoleId($role)));
         }
     }


=====================================
share/server/core/defines/global.php
=====================================
@@ -23,16 +23,19 @@
  *****************************************************************************/
  
 // NagVis Version
-define('CONST_VERSION', '1.9.48');
+define('CONST_VERSION', '1.9.49');
 
 // Set PHP error handling to standard level
 // Different levels for php versions below 5.1 because PHP 5.1 reports
 // some annoying strict messages which are OK for us. From version 5.2
-// everything is OK when using E_STRICT.
-if(version_compare(PHP_VERSION, '5.2') >= 0)
-	error_reporting(E_ALL ^ E_STRICT);
+// everything is OK when using E_STRICT and use for compatibility issues
+// from version 8.0 and above E_DEPRECATED
+if (version_compare(PHP_VERSION, '8.0') >= 0)
+    error_reporting(E_ALL & ~E_DEPRECATED);
+elseif (version_compare(PHP_VERSION, '5.2') >= 0)
+    error_reporting(E_ALL ^ E_STRICT);
 else
-	error_reporting(E_ALL);
+    error_reporting(E_ALL);
 
 /**
  * Set the search path for included files


=====================================
share/server/core/defines/matches.php
=====================================
@@ -77,7 +77,7 @@ define('MATCH_BACKEND_ID', '/^[0-9a-z._-]*$/iu');
 define('MATCH_DOC_DIR', '/^([a-z]{2}_[A-Z]{2})/');
 define('MATCH_MAINCFG_FILE', '/^.+\.ini\.php$/i');
 
-define('MATCH_SERVICE_DESCRIPTION', '/^[0-9a-zа-яё\p{L}\s:+[\]()_.,\'\-\*?!#@=\/\\\]+$/iu');
+define('MATCH_SERVICE_DESCRIPTION', '/^[0-9a-zа-яё\p{L}\s:+[\]()_.,\'\-\*?!#@=\/\\"]+$/iu');
 define('MATCH_MAP_NAME', '/^[0-9A-Za-z_\-]+$/');
 define('MATCH_MAP_NAME_EMPTY', '/^[0-9A-Za-z_-]*$/');
 define('MATCH_ROTATION_NAME', '/^[0-9A-Za-z_-]+$/');



View it on GitLab: https://salsa.debian.org/nagios-team/nagvis/-/commit/3328eed8347d770e7a7ab485023328592bac2c3c

-- 
View it on GitLab: https://salsa.debian.org/nagios-team/nagvis/-/commit/3328eed8347d770e7a7ab485023328592bac2c3c
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-nagios-changes/attachments/20260331/3b7fb5df/attachment-0001.htm>


More information about the pkg-nagios-changes mailing list