From 80bfd4b587ee5adc86953ca0ea56c46b7f789d90 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Mon, 09 Sep 2024 09:05:44 +0000
Subject: [PATCH] [#376] FIX SNMP monitoring config (#381)
---
opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java | 9 +++-
opendj-server-legacy/src/main/assembly/opendj-archive-component.xml | 3 +
opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPConnectionHandler.java | 17 +++++---
opendj-doc-generated-ref/src/main/docbkx/admin-guide/chap-monitoring.xml | 11 +----
opendj-server-legacy/src/snmp/src/org/opends/server/snmp/DsTableEntryImpl.java | 5 ++
opendj-server-legacy/resource/bin/_script-util.bat | 5 +-
opendj-server-legacy/resource/bin/_script-util.sh | 6 +-
opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPMonitor.java | 5 +-
8 files changed, 35 insertions(+), 26 deletions(-)
diff --git a/opendj-doc-generated-ref/src/main/docbkx/admin-guide/chap-monitoring.xml b/opendj-doc-generated-ref/src/main/docbkx/admin-guide/chap-monitoring.xml
index 29a6758..e4c85d6 100644
--- a/opendj-doc-generated-ref/src/main/docbkx/admin-guide/chap-monitoring.xml
+++ b/opendj-doc-generated-ref/src/main/docbkx/admin-guide/chap-monitoring.xml
@@ -91,14 +91,9 @@
Server Monitoring MIB</link>.</para>
<para>OpenDJ SNMP-based monitoring depends on OpenDMK, which you must
- <link xlink:href="http://opendmk.java.net/download/" xlink:show="new">download
- separately</link>. Install the <link xlink:show="new"
- xlink:href="http://java.net/projects/opendmk/content/download/opendmk-1.0-b02-bin-dual-01-Oct-2007_19-17-46.jar"
- >Full Binary Bundle</link> by using the graphical installer, which requires
- that you accept the <link xlink:show="new"
- xlink:href="http://java.net/projects/opendmk/content/legal_notices/LICENSE_BINARY.txt"
- >Binary License for Project OpenDMK</link>. OpenDJ directory server that you
- download from ForgeRock is built with OpenDMK, but due to licensing OpenDMK
+ <link xlink:href="https://github.com/OpenIdentityPlatform/OpenDJ/raw/master/opendj-server-legacy/opendmk/jdmkrt.jar" xlink:show="new">download
+ separately</link>. OpenDJ directory server that you
+ download from GitHub is built with OpenDMK, but due to licensing OpenDMK
is not part of OpenDJ. SNMP is therefore not enabled by default.</para>
<para>To run the OpenDMK installer, use the self-extracting .jar.</para>
diff --git a/opendj-server-legacy/resource/bin/_script-util.bat b/opendj-server-legacy/resource/bin/_script-util.bat
index f0bc2fe..cfa7c0b 100644
--- a/opendj-server-legacy/resource/bin/_script-util.bat
+++ b/opendj-server-legacy/resource/bin/_script-util.bat
@@ -13,6 +13,7 @@
rem
rem Copyright 2008-2010 Sun Microsystems, Inc.
rem Portions Copyright 2011-2016 ForgeRock AS.
+rem Portions Copyright 2020-2024 3A Systems, LLC.
set SET_JAVA_HOME_AND_ARGS_DONE=false
set SET_ENVIRONMENT_VARS_DONE=false
@@ -170,9 +171,9 @@
set PATH=%SystemRoot%;%PATH%
set SCRIPT_NAME_ARG=-Dorg.opends.server.scriptName=%SCRIPT_NAME%
set SET_ENVIRONMENT_VARS_DONE=true
-"%OPENDJ_JAVA_BIN%" --add-exports java.base/sun.security.x509=ALL-UNNAMED --add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED --version > NUL 2>&1
+"%OPENDJ_JAVA_BIN%" --add-exports java.base/sun.security.x509=ALL-UNNAMED --add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --version > NUL 2>&1
set RESULT_CODE=%errorlevel%
-if %RESULT_CODE% == 0 set OPENDJ_JAVA_ARGS=%OPENDJ_JAVA_ARGS% --add-exports java.base/sun.security.x509=ALL-UNNAMED --add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED
+if %RESULT_CODE% == 0 set OPENDJ_JAVA_ARGS=%OPENDJ_JAVA_ARGS% --add-exports java.base/sun.security.x509=ALL-UNNAMED --add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED --add-opens java.base/jdk.internal.loader=ALL-UNNAMED
goto scriptBegin
:testJava
diff --git a/opendj-server-legacy/resource/bin/_script-util.sh b/opendj-server-legacy/resource/bin/_script-util.sh
index 76fd882..b1c98fc 100644
--- a/opendj-server-legacy/resource/bin/_script-util.sh
+++ b/opendj-server-legacy/resource/bin/_script-util.sh
@@ -14,7 +14,7 @@
#
# Copyright 2008-2010 Sun Microsystems, Inc.
# Portions Copyright 2010-2016 ForgeRock AS.
-
+# Portions Copyright 2019-2024 3A Systems, LLC.
#
# Display an error message
#
@@ -184,11 +184,11 @@
SCRIPT_NAME_ARG=-Dorg.opends.server.scriptName=${SCRIPT_NAME}
export SCRIPT_NAME_ARG
- "${OPENDJ_JAVA_BIN}" --add-exports java.base/sun.security.x509=ALL-UNNAMED --add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED --version > /dev/null 2>&1
+ "${OPENDJ_JAVA_BIN}" --add-exports java.base/sun.security.x509=ALL-UNNAMED --add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --version > /dev/null 2>&1
RESULT_CODE=${?}
if test ${RESULT_CODE} -eq 0
then
- export OPENDJ_JAVA_ARGS="$OPENDJ_JAVA_ARGS --add-exports java.base/sun.security.x509=ALL-UNNAMED --add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED"
+ export OPENDJ_JAVA_ARGS="$OPENDJ_JAVA_ARGS --add-exports java.base/sun.security.x509=ALL-UNNAMED --add-exports java.base/sun.security.tools.keytool=ALL-UNNAMED --add-opens java.base/jdk.internal.loader=ALL-UNNAMED"
fi
}
diff --git a/opendj-server-legacy/src/main/assembly/opendj-archive-component.xml b/opendj-server-legacy/src/main/assembly/opendj-archive-component.xml
index 6f86790..5ae64db 100644
--- a/opendj-server-legacy/src/main/assembly/opendj-archive-component.xml
+++ b/opendj-server-legacy/src/main/assembly/opendj-archive-component.xml
@@ -13,6 +13,7 @@
information: "Portions Copyright [year] [name of copyright owner]".
Copyright 2015-2016 ForgeRock AS.
+ Portions Copyright 2018-2024 3A Systems, LLC
-->
<!-- OpenDJ final archive content descriptor -->
<component>
@@ -382,7 +383,7 @@
</file>
<!-- Adds Generated config.ldif file -->
<file>
- <source>${basedir}/resource/config/config.ldif</source>
+ <source>${project.build.directory}/template/config/config.ldif</source>
<outputDirectory>template/config</outputDirectory>
</file>
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java b/opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java
index a3ae326..b452231 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/config/JMXMBean.java
@@ -13,7 +13,7 @@
*
* Portions Copyright 2006-2007-2008 Sun Microsystems, Inc.
* Portions Copyright 2013-2016 ForgeRock AS.
- * Portions Copyright 2023 3A Systems LLC.
+ * Portions Copyright 2023-2024 3A Systems LLC.
*/
package org.opends.server.config;
@@ -398,8 +398,11 @@
get(attributeName, configEntryDN, op.getErrorMessage());
throw new AttributeNotFoundException(message.toString());
}
-
- return getJmxAttribute(attributeName).getValue();
+ Attribute attr=getJmxAttribute(attributeName);
+ if (attr==null) {
+ throw new AttributeNotFoundException(attributeName);
+ }
+ return attr.getValue();
}
catch (AttributeNotFoundException e)
{
diff --git a/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/DsTableEntryImpl.java b/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/DsTableEntryImpl.java
index d299ea1..99ca0b9 100644
--- a/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/DsTableEntryImpl.java
+++ b/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/DsTableEntryImpl.java
@@ -13,6 +13,7 @@
*
* Copyright 2008-2009 Sun Microsystems, Inc.
* Portions Copyright 2014 ForgeRock AS.
+ * Portions Copyright 2024 3A Systems, LLC.
*/
package org.opends.server.snmp;
@@ -142,8 +143,10 @@
ObjectName name = (ObjectName) iter.next();
Object value = this.monitor.getAttribute(name,
"ds-backend-entry-count");
- if (value != null) {
+ if (value != null && value instanceof String) {
result = result + new Long((String) value);
+ }else if (value != null && value instanceof Long) {
+ result = result + (Long)value;
}
}
return SNMPMonitor.gauge32Value(result);
diff --git a/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPConnectionHandler.java b/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPConnectionHandler.java
index 7b78067..7c8704b 100644
--- a/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPConnectionHandler.java
+++ b/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPConnectionHandler.java
@@ -13,6 +13,7 @@
*
* Copyright 2008-2009 Sun Microsystems, Inc.
* Portions Copyright 2014-2016 ForgeRock AS.
+ * Portions Copyright 2024 3A Systems, LLC
*/
package org.opends.server.snmp;
@@ -249,12 +250,16 @@
try {
String url = "jar:" + file.toURI().toURL() + "!/";
URL u = new URL(url);
- URLClassLoader sysloader =
- (URLClassLoader)ClassLoader.getSystemClassLoader();
- Class sysclass = URLClassLoader.class;
- Method method = sysclass.getDeclaredMethod("addURL", URL.class);
- method.setAccessible(true);
- method.invoke(sysloader, u);
+ ClassLoader sysloader =ClassLoader.getSystemClassLoader();
+ try {
+ Method method = sysloader.getClass().getDeclaredMethod("addURL", URL.class);
+ method.setAccessible(true);
+ method.invoke(sysloader, u);
+ }catch (NoSuchMethodException e) {
+ Method method = sysloader.getClass().getDeclaredMethod("appendToClassPathForInstrumentation", String.class);
+ method.setAccessible(true);
+ method.invoke(sysloader, file.toString());
+ }
}
catch (Throwable t) {
}
diff --git a/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPMonitor.java b/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPMonitor.java
index ec87c06..5aef3b8 100644
--- a/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPMonitor.java
+++ b/opendj-server-legacy/src/snmp/src/org/opends/server/snmp/SNMPMonitor.java
@@ -13,6 +13,7 @@
*
* Copyright 2008 Sun Microsystems, Inc.
* Portions Copyright 2012-2014 ForgeRock AS.
+ * Portions Copyright 2024 3A Systems, LLC.
*/
package org.opends.server.snmp;
@@ -289,10 +290,10 @@
{
try
{
- Attribute attr = (Attribute) server.getAttribute(name, attribute);
+ Object attr = server.getAttribute(name, attribute);
if (attr != null)
{
- return attr.getValue();
+ return attr instanceof Attribute ? ((Attribute) attr).getValue(): attr;
}
}
catch (Exception ex)
--
Gitblit v1.10.0