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());