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 4f519b9  [OPENMEETINGS-2562] fixes issue #119: config to globally 
disable recordings
4f519b9 is described below

commit 4f519b9a6f13a1121f2c64d18c2fb68dd5dc813d
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Wed Jan 27 15:27:40 2021 +0700

    [OPENMEETINGS-2562] fixes issue #119: config to globally disable recordings
---
 .../org/apache/openmeetings/core/remote/StreamProcessor.java   |  5 +++--
 .../org/apache/openmeetings/db/dao/basic/ConfigurationDao.java |  9 +++++++++
 .../main/java/org/apache/openmeetings/backup/BackupImport.java |  2 ++
 .../org/apache/openmeetings/installation/ImportInitvalues.java |  2 ++
 .../org/apache/openmeetings/util/OpenmeetingsVariables.java    | 10 ++++++++++
 .../java/org/apache/openmeetings/web/admin/rooms/RoomForm.java |  3 ++-
 .../java/org/apache/openmeetings/web/common/MainPanel.java     |  7 +++++--
 .../apache/openmeetings/web/common/tree/OmTreeProvider.java    |  5 +++--
 8 files changed, 36 insertions(+), 7 deletions(-)

diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
index be483e0..58eab69 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/StreamProcessor.java
@@ -24,6 +24,7 @@ import static 
org.apache.openmeetings.core.remote.KurentoHandler.PARAM_ICE;
 import static 
org.apache.openmeetings.core.remote.KurentoHandler.activityAllowed;
 import static org.apache.openmeetings.core.remote.KurentoHandler.newKurentoMsg;
 import static org.apache.openmeetings.core.remote.KurentoHandler.sendError;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.isRecordingsEnabled;
 
 import java.util.Collection;
 import java.util.HashSet;
@@ -456,11 +457,11 @@ public class StreamProcessor implements IStreamProcessor {
 
        public boolean hasRightsToRecord(Client c) {
                Room r = c.getRoom();
-               return r != null && r.isAllowRecording() && 
c.hasRight(Right.MODERATOR);
+               return isRecordingsEnabled() && r != null && 
r.isAllowRecording() && c.hasRight(Right.MODERATOR);
        }
 
        public boolean recordingAllowed(Client c) {
-               if (!kHandler.isConnected()) {
+               if (!kHandler.isConnected() || !isRecordingsEnabled()) {
                        return false;
                }
                Room r = c.getRoom();
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 35d68c7..257ce13 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
@@ -47,6 +47,7 @@ import org.apache.openmeetings.db.dao.server.OAuth2Dao;
 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.OpenmeetingsVariables;
 import org.apache.openmeetings.util.crypt.CryptProvider;
 import org.apache.wicket.Application;
 import org.apache.wicket.csp.CSPDirective;
@@ -348,6 +349,9 @@ public class ConfigurationDao implements 
IDataProviderDao<Configuration> {
                        case CONFIG_APPOINTMENT_PRE_START_MINUTES:
                                reloadAppointmentSettings();
                                break;
+                       case CONFIG_RECORDING_ENABLED:
+                               reloadRecordingEnabled();
+                               break;
                }
                return entity;
        }
@@ -486,6 +490,10 @@ public class ConfigurationDao implements 
IDataProviderDao<Configuration> {
                
setAppointmentReminderMinutes(getInt(CONFIG_APPOINTMENT_REMINDER_MINUTES, 15));
        }
 
+       private void reloadRecordingEnabled() {
+               
OpenmeetingsVariables.setRecordingsEnabled(getBool(CONFIG_RECORDING_ENABLED, 
true));
+       }
+
        public void reinit() {
                reloadMaxUpload();
                reloadCrypt();
@@ -512,6 +520,7 @@ public class ConfigurationDao implements 
IDataProviderDao<Configuration> {
                reloadMyRoomsEnabled();
                reloadMailSettings();
                reloadAppointmentSettings();
+               reloadRecordingEnabled();
 
                updateCsp();
        }
diff --git 
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
 
b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 3bf6aa4..b9906d3 100644
--- 
a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ 
b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -118,6 +118,7 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_FFM
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_IMAGEMAGIC;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_OFFICE;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_SOX;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RECORDING_ENABLED;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_FRONTEND;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_OAUTH;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_SOAP;
@@ -309,6 +310,7 @@ public class BackupImport {
                        , entry(CONFIG_MIC_ECHO, Configuration.Type.BOOL)
                        , entry(CONFIG_MIC_NOISE, Configuration.Type.BOOL)
                        , entry(CONFIG_EXT_PROCESS_TTL, 
Configuration.Type.NUMBER)
+                       , entry(CONFIG_RECORDING_ENABLED, 
Configuration.Type.BOOL)
                        );
        private static final Pattern UUID_PATTERN = 
Pattern.compile("^[\\da-f]{8}(?:-[\\da-f]{4}){3}-[\\da-f]{12}$");
 
diff --git 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
index f424ed5..e44bbe4 100644
--- 
a/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
+++ 
b/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
@@ -81,6 +81,7 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_FFM
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_IMAGEMAGIC;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_OFFICE;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_PATH_SOX;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_RECORDING_ENABLED;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REDIRECT_URL_FOR_EXTERNAL;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_FRONTEND;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_REGISTER_OAUTH;
@@ -394,6 +395,7 @@ public class ImportInitvalues {
                addCfg(list, CONFIG_PASS_CHECK_SPECIAL, String.valueOf(true), 
Configuration.Type.BOOL, "Whether or not Password MUST contain special 
character", VER_5_0_1);
                addCfg(list, CONFIG_APPOINTMENT_PRE_START_MINUTES, 
String.valueOf(getAppointmentPreStartMinutes()), Configuration.Type.NUMBER
                                , "How many minutes before the start the room 
should be open (default: " + getAppointmentPreStartMinutes() + ")", VER_5_0_1);
+               addCfg(list, CONFIG_RECORDING_ENABLED, String.valueOf(true), 
Configuration.Type.BOOL, "Whether or not recording functionality is enabled", 
"6.0.0");
                return list;
        }
        public void loadConfiguration(InstallationConfig cfg) {
diff --git 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
index d08d9b7..83c3ad6 100644
--- 
a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
+++ 
b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
@@ -112,6 +112,7 @@ public class OpenmeetingsVariables {
        public static final String CONFIG_CSP_SCRIPT = "header.csp.script";
        public static final String CONFIG_CSP_STYLE = "header.csp.style";
        public static final String CONFIG_CSP_ENABLED = "header.csp.enabled";
+       public static final String CONFIG_RECORDING_ENABLED = 
"recording.enabled";
 
        public static final int RECENT_ROOMS_COUNT = 5;
        public static final int USER_LOGIN_MINIMUM_LENGTH = 4;
@@ -177,6 +178,7 @@ public class OpenmeetingsVariables {
        private static boolean mailAddReplyTo;
        private static int appointmentReminderMinutes = 15;
        private static int appointmentPreStartMinutes = 5;
+       private static boolean recordingsEnabled = true;
 
        private OpenmeetingsVariables() {}
 
@@ -600,4 +602,12 @@ public class OpenmeetingsVariables {
        public static void setAppointmentReminderMinutes(int minutes) {
                appointmentReminderMinutes = minutes;
        }
+
+       public static boolean isRecordingsEnabled() {
+               return recordingsEnabled;
+       }
+
+       public static void setRecordingsEnabled(boolean enabled) {
+               recordingsEnabled = enabled;
+       }
 }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index f0ddae8..afde3de 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.admin.rooms;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.isRecordingsEnabled;
 import static 
org.apache.openmeetings.web.admin.AdminUserChoiceProvider.PAGE_SIZE;
 import static org.apache.openmeetings.web.app.Application.kickUser;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
@@ -222,7 +223,7 @@ public class RoomForm extends AdminBaseForm<Room> {
                add(new CheckBox("closed"));
                add(new TextField<String>("redirectURL"));
                add(new CheckBox("waitRecording"));
-               add(new CheckBox("allowRecording"));
+               add(new 
CheckBox("allowRecording").setEnabled(isRecordingsEnabled()));
                add(new CheckBox("chatModerated"));
 
                add(new Select2MultiChoice<>("hiddenElements", null, new 
ChoiceProvider<RoomElement>() {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
index 82ec8dd..7020e06 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
@@ -44,6 +44,7 @@ import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.user.PrivateMessage;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.openmeetings.web.app.ClientManager;
 import org.apache.openmeetings.web.app.WebSession;
@@ -312,8 +313,10 @@ public class MainPanel extends Panel {
                List<INavbarComponent> mmenu = new ArrayList<>();
                createDashboardMenu(mmenu);
                createRoomsMenu(mmenu);
-               // Recording Menu Points
-               mmenu.add(getSubItem("395", "1452", MenuActions.RECORD));
+               if (OpenmeetingsVariables.isRecordingsEnabled()) {
+                       // Recording Menu Points
+                       mmenu.add(getSubItem("395", "1452", 
MenuActions.RECORD));
+               }
                createSettingsMenu(mmenu);
                Set<Right> r = WebSession.getRights();
                boolean isAdmin = hasAdminLevel(r);
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
index f24e46d..bf5e52c 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/OmTreeProvider.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.web.common.tree;
 
 import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
+import static 
org.apache.openmeetings.util.OpenmeetingsVariables.isRecordingsEnabled;
 import static org.apache.openmeetings.web.app.WebSession.getRights;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
@@ -84,7 +85,7 @@ public class OmTreeProvider implements 
ITreeProvider<BaseFileItem> {
                        r.setRoomId(roomId);
                        fRoot.add(r);
                }
-               if (all) {
+               if (all && isRecordingsEnabled()) {
                        {
                                BaseFileItem r = 
createRoot(Application.getString("860"), RECORDINGS_MY, true);
                                r.setOwnerId(getUserId());
@@ -98,7 +99,7 @@ public class OmTreeProvider implements 
ITreeProvider<BaseFileItem> {
                for (GroupUser gu : userDao.get(getUserId()).getGroupUsers()) {
                        Group g = gu.getGroup();
                        boolean readOnly = g.isRestricted() && 
!hasAdminLevel(getRights()) && !gu.isModerator();
-                       if (all) {
+                       if (all && isRecordingsEnabled()) {
                                BaseFileItem r = createRoot(String.format("%s 
(%s)", lblGroupRec, g.getName()), String.format(RECORDINGS_GROUP, g.getId()), 
true);
                                r.setReadOnly(readOnly);
                                r.setGroupId(g.getId());

Reply via email to