You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2021/01/27 08:27:54 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2562] fixes issue #119: config to globally disable recordings

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 <so...@gmail.com>
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());