This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 5b8cfe9b7 [OPENMEETINGS-2830] code is unified
5b8cfe9b7 is described below

commit 5b8cfe9b7272a7180d2a8051643e666c7dcdec36
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu Aug 27 13:05:55 2026 +0700

    [OPENMEETINGS-2830] code is unified
---
 .../db/dao/basic/ConfigurationDao.java             | 17 +-----------
 .../openmeetings/util/crypt/CryptProvider.java     | 30 ++++++++++++++++------
 2 files changed, 23 insertions(+), 24 deletions(-)

diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
index 09a3f4008..27fc9bc94 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java
@@ -25,7 +25,6 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.*;
 import static org.apache.wicket.csp.CSPDirectiveSrcValue.SELF;
 import static org.apache.wicket.csp.CSPDirectiveSrcValue.STRICT_DYNAMIC;
 
-import java.lang.reflect.Constructor;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Date;
@@ -50,7 +49,6 @@ import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.basic.Configuration;
 import org.apache.openmeetings.db.util.DaoHelper;
 import org.apache.openmeetings.util.crypt.CryptProvider;
-import org.apache.openmeetings.util.crypt.ICrypt;
 import org.apache.wicket.Application;
 import org.apache.wicket.csp.CSPDirective;
 import org.apache.wicket.csp.CSPHeaderConfiguration;
@@ -233,20 +231,7 @@ public class ConfigurationDao implements 
IDataProviderDao<Configuration> {
                                log.error("An attempt to delete '" + 
CONFIG_CRYPT + "' is blocked");
                                return entity;
                        }
-                       boolean validClass = false;
-                       try {
-                               Class<?> clazz = Class.forName(value);
-                               if (ICrypt.class.isAssignableFrom(clazz)) {
-                                       Constructor<?> constr = 
clazz.getDeclaredConstructor();
-                                       constr.setAccessible(true);
-                                       Object crypt = constr.newInstance();
-                                       validClass = crypt instanceof ICrypt;
-                               }
-                       } catch (Exception e) {
-                               // no-op
-                       }
-                       if (!validClass) {
-                               log.error("An attempt to set '" + value + "' as 
'" + CONFIG_CRYPT + "' is blocked");
+                       if (CryptProvider.fromClass(value) == null) {
                                return entity;
                        }
                }
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/CryptProvider.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/CryptProvider.java
index a89b0afd2..405d3f1b7 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/CryptProvider.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/CryptProvider.java
@@ -18,8 +18,11 @@
  */
 package org.apache.openmeetings.util.crypt;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CRYPT;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getCryptClassName;
 
+import java.lang.reflect.Constructor;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -31,14 +34,7 @@ public class CryptProvider {
 
        public static synchronized ICrypt get() {
                if (crypt == null) {
-                       String clazz = getCryptClassName();
-                       try {
-                               log.debug("get:: configKeyCryptClassName: {}", 
clazz);
-
-                               crypt = clazz == null ? null : (ICrypt) 
Class.forName(clazz).getDeclaredConstructor().newInstance();
-                       } catch (Exception err) {
-                               log.error("[get]", err);
-                       }
+                       crypt = fromClass(getCryptClassName());
                }
                return crypt;
        }
@@ -46,4 +42,22 @@ public class CryptProvider {
        public static synchronized void reset() {
                crypt = null;
        }
+
+       public static ICrypt fromClass(String className) {
+               ICrypt inst = null;
+               try {
+                       Class<?> clazz = Class.forName(className);
+                       if (ICrypt.class.isAssignableFrom(clazz)) {
+                               Constructor<?> constr = 
clazz.getDeclaredConstructor();
+                               constr.setAccessible(true);
+                               inst = (ICrypt)constr.newInstance();
+                       }
+               } catch (Exception e) {
+                       // no-op
+               }
+               if (inst == null) {
+                       log.error("Error while attempting to get ICrypt from '" 
+ className + "' as '" + CONFIG_CRYPT + "'");
+               }
+               return inst;
+       }
 }

Reply via email to