diff --git a/client/src/com/mirth/connect/client/ui/FirstLoginDialog.java b/client/src/com/mirth/connect/client/ui/FirstLoginDialog.java
index fbfa5e90d..8d340c0bf 100644
--- a/client/src/com/mirth/connect/client/ui/FirstLoginDialog.java
+++ b/client/src/com/mirth/connect/client/ui/FirstLoginDialog.java
@@ -9,6 +9,9 @@
package com.mirth.connect.client.ui;
+import static com.mirth.connect.client.core.BrandingConstants.CENTRAL_USER_REGISTRATION;
+import static com.mirth.connect.client.core.BrandingConstants.MANDATORY_USER_REGISTRATION;
+
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.Point;
@@ -47,10 +50,14 @@ public FirstLoginDialog(User currentUser) {
finishButton.setEnabled(false);
userEditPanel.setUser(this, currentUser);
- userEditPanel.setRequiredFields(false, true);
- if (currentUser.getId() == 1) {
- registerCheckBox.setVisible(false);
- }
+
+ final boolean isRegistrationMandatory = CENTRAL_USER_REGISTRATION && MANDATORY_USER_REGISTRATION && currentUser.getId() == 1;
+ registerCheckBox.setSelected(isRegistrationMandatory);
+ registerCheckBox.setEnabled(!isRegistrationMandatory);
+ registerCheckBox.setVisible(CENTRAL_USER_REGISTRATION);
+ registerCheckBoxActionPerformed(null);
+ userConsentCheckBox.setVisible(CENTRAL_USER_REGISTRATION);
+ contentTextPane.setVisible(CENTRAL_USER_REGISTRATION);
jLabel2.setForeground(UIConstants.HEADER_TITLE_TEXT_COLOR);
setModal(true);
@@ -151,7 +158,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jScrollPane1.setViewportView(jTextPane1);
registerCheckBox.setBackground(new java.awt.Color(255, 255, 255));
- registerCheckBox.setSelected(true);
registerCheckBox.setText(String.format("Register user with %s", BrandingConstants.COMPANY_NAME));
registerCheckBox.setToolTipText(String.format("Register your user information with %s to help us
improve the product and provide better service.", BrandingConstants.COMPANY_NAME));
registerCheckBox.addActionListener(new java.awt.event.ActionListener() {
@@ -161,7 +167,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
});
userConsentCheckBox.setBackground(new java.awt.Color(255, 255, 255));
- userConsentCheckBox.setSelected(true);
userConsentCheckBox.setText(String.format("I consent to receive email updates and marketing messages from %s.", BrandingConstants.COMPANY_NAME));
userConsentCheckBox.setToolTipText("");
@@ -273,7 +278,7 @@ private void finishButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-
return;
}
- if (registerCheckBox.isSelected()) {
+ if (registerCheckBox.isSelected() && CENTRAL_USER_REGISTRATION) {
parent.registerUser(user);
}
@@ -316,7 +321,7 @@ private void registerCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//
userConsentCheckBox.setSelected(false);
userConsentCheckBox.setEnabled(false);
}
- userEditPanel.setRequiredFields(false, true);
+ userEditPanel.setRequiredFields(allRequired, true);
}//GEN-LAST:event_registerCheckBoxActionPerformed
public boolean getResult() {
diff --git a/client/src/com/mirth/connect/client/ui/Frame.java b/client/src/com/mirth/connect/client/ui/Frame.java
index 717803561..ea33bcfda 100644
--- a/client/src/com/mirth/connect/client/ui/Frame.java
+++ b/client/src/com/mirth/connect/client/ui/Frame.java
@@ -9,6 +9,10 @@
package com.mirth.connect.client.ui;
+import static com.mirth.connect.client.core.BrandingConstants.CENTRAL_USER_REGISTRATION;
+import static com.mirth.connect.client.core.BrandingConstants.CHECK_FOR_NOTIFICATIONS;
+import static com.mirth.connect.client.core.BrandingConstants.SEND_USAGE_STATISTICS;
+
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Color;
@@ -1250,7 +1254,9 @@ private void createOtherPane() {
otherPane.setTitle("Other");
otherPane.setName(TaskConstants.OTHER_KEY);
otherPane.setFocusable(false);
- addTask(TaskConstants.OTHER_NOTIFICATIONS, UIConstants.VIEW_NOTIFICATIONS, String.format("View notifications from %s.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/flag_orange.png")), otherPane, null);
+ if (CHECK_FOR_NOTIFICATIONS) {
+ addTask(TaskConstants.OTHER_NOTIFICATIONS, UIConstants.VIEW_NOTIFICATIONS, String.format("View notifications from %s.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/flag_orange.png")), otherPane, null);
+ }
addTask(TaskConstants.OTHER_VIEW_USER_API, "View User API", String.format("View documentation for the %s User API.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/page_white_text.png")), otherPane, null);
addTask(TaskConstants.OTHER_VIEW_CLIENT_API, "View Client API", String.format("View documentation for the %s Client API.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/page_white_text.png")), otherPane, null);
addTask(TaskConstants.OTHER_HELP, "Help", String.format("View help for %s.", BrandingConstants.PRODUCT_NAME), "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/help.png")), otherPane, null);
@@ -1268,6 +1274,10 @@ public JXTaskPane getOtherPane() {
}
public void updateNotificationTaskName(int notifications) {
+ if (!CHECK_FOR_NOTIFICATIONS) {
+ return;
+ }
+
String taskName = UIConstants.VIEW_NOTIFICATIONS;
if (notifications > 0) {
taskName += " (" + notifications + ")";
@@ -1949,6 +1959,10 @@ public User getCurrentUser(Component parentComponent, boolean alertOnFailure) {
}
public void registerUser(final User user) {
+ if (!CENTRAL_USER_REGISTRATION) {
+ return;
+ }
+
final String workingId = startWorking("Registering user...");
SwingWorker worker = new SwingWorker() {
@@ -1972,6 +1986,10 @@ public void done() {
}
public void sendUsageStatistics() {
+ if (!SEND_USAGE_STATISTICS) {
+ return;
+ }
+
UpdateSettings updateSettings = null;
try {
updateSettings = mirthClient.getUpdateSettings();
diff --git a/client/src/com/mirth/connect/client/ui/LoginPanel.java b/client/src/com/mirth/connect/client/ui/LoginPanel.java
index d1c6bfef7..5a78f8614 100644
--- a/client/src/com/mirth/connect/client/ui/LoginPanel.java
+++ b/client/src/com/mirth/connect/client/ui/LoginPanel.java
@@ -9,6 +9,8 @@
package com.mirth.connect.client.ui;
+import static com.mirth.connect.client.core.BrandingConstants.CHECK_FOR_NOTIFICATIONS;
+
import java.awt.Color;
import java.awt.Cursor;
import java.util.Collections;
@@ -609,7 +611,8 @@ private boolean handleSuccess(LoginStatus loginStatus) throws ClientException {
// Check for new notifications from update server if enabled
String checkForNotifications = userPreferences.getProperty("checkForNotifications");
- if (checkForNotifications == null || BooleanUtils.toBoolean(checkForNotifications)) {
+ if (CHECK_FOR_NOTIFICATIONS
+ && (checkForNotifications == null || BooleanUtils.toBoolean(checkForNotifications))) {
Set archivedNotifications = new HashSet();
String archivedNotificationString = userPreferences.getProperty("archivedNotifications");
if (archivedNotificationString != null) {
diff --git a/client/src/com/mirth/connect/client/ui/SettingsPanelServer.java b/client/src/com/mirth/connect/client/ui/SettingsPanelServer.java
index c277a3d60..bd1d523a7 100644
--- a/client/src/com/mirth/connect/client/ui/SettingsPanelServer.java
+++ b/client/src/com/mirth/connect/client/ui/SettingsPanelServer.java
@@ -9,6 +9,8 @@
package com.mirth.connect.client.ui;
+import static com.mirth.connect.client.core.BrandingConstants.SEND_USAGE_STATISTICS;
+
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Font;
@@ -81,8 +83,12 @@ public SettingsPanelServer(String tabName) {
addTask(TaskConstants.SETTINGS_SERVER_RESTORE, "Restore Config", "Restore your server configuration from a server configuration XML file. This will remove and restore your channels, alerts, code templates, server properties, global scripts, and plugin properties.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/report_go.png")));
addTask(TaskConstants.SETTINGS_CLEAR_ALL_STATS, "Clear All Statistics", "Reset the current and lifetime statistics for all channels.", "", new ImageIcon(com.mirth.connect.client.ui.Frame.class.getResource("images/chart_bar_delete.png")));
- provideUsageStatsMoreInfoLabel.setToolTipText(BrandingConstants.PRIVACY_TOOLTIP);
- provideUsageStatsMoreInfoLabel.setCursor(new Cursor(Cursor.HAND_CURSOR));
+ if (!SEND_USAGE_STATISTICS) {
+ provideUsageStatsLabel.setVisible(false);
+ provideUsageStatsYesRadio.setVisible(false);
+ provideUsageStatsNoRadio.setVisible((false));
+ provideUsageStatsMoreInfoLabel.setVisible(false);
+ }
queueBufferSizeField.setDocument(new MirthFieldConstraints(8, false, false, true));
smtpTimeoutField.setDocument(new MirthFieldConstraints(0, false, false, false));
administratorAutoLogoutIntervalField.setDocument(new MirthFieldConstraints(2, false, false, true));
@@ -728,8 +734,8 @@ public void actionPerformed(ActionEvent evt) {
provideUsageStatsButtonGroup.add(provideUsageStatsNoRadio);
provideUsageStatsMoreInfoLabel = new JLabel("More Info");
- provideUsageStatsMoreInfoLabel.setEnabled(false);
- provideUsageStatsMoreInfoLabel.setVisible(false);
+ provideUsageStatsMoreInfoLabel.setToolTipText(BrandingConstants.PRIVACY_TOOLTIP);
+ provideUsageStatsMoreInfoLabel.setCursor(new Cursor(Cursor.HAND_CURSOR));
provideUsageStatsMoreInfoLabel.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
provideUsageStatsMoreInfoLabelMouseClicked(evt);
diff --git a/server/src/com/mirth/connect/client/core/BrandingConstants.java b/server/src/com/mirth/connect/client/core/BrandingConstants.java
index b9d5cfe50..d7cc29761 100644
--- a/server/src/com/mirth/connect/client/core/BrandingConstants.java
+++ b/server/src/com/mirth/connect/client/core/BrandingConstants.java
@@ -9,4 +9,12 @@ public class BrandingConstants {
public static final String CLIENT_CONNECTION_HEADER = "openintegrationengine-client";
public static final String SERVER_CERTIFICATE_CN = "oie-engine";
+
+ public static final String CONNECT_SERVER_URL = "https://connect.openintegrationengine.org";
+ public static final String NOTIFICATIONS_URL = "https://api.github.com/repos/openintegrationengine/engine/releases";
+
+ public static final boolean CENTRAL_USER_REGISTRATION = false;
+ public static final boolean MANDATORY_USER_REGISTRATION = false;
+ public static final boolean CHECK_FOR_NOTIFICATIONS = true;
+ public static final boolean SEND_USAGE_STATISTICS = false;
}
diff --git a/server/src/com/mirth/connect/client/core/ConnectServiceUtil.java b/server/src/com/mirth/connect/client/core/ConnectServiceUtil.java
index 426629f96..ea7e1efa3 100644
--- a/server/src/com/mirth/connect/client/core/ConnectServiceUtil.java
+++ b/server/src/com/mirth/connect/client/core/ConnectServiceUtil.java
@@ -51,21 +51,27 @@
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
+
import com.github.zafarkhaja.semver.Version;
+
import com.mirth.connect.model.User;
import com.mirth.connect.model.converters.ObjectXMLSerializer;
import com.mirth.connect.model.notification.Notification;
import com.mirth.connect.util.MirthSSLUtil;
public class ConnectServiceUtil {
- private final static String URL_CONNECT_SERVER = "https://connect.mirthcorp.com";
+ private final static String URL_CONNECT_SERVER = BrandingConstants.CONNECT_SERVER_URL;
private final static String URL_REGISTRATION_SERVLET = "/RegistrationServlet";
private final static String URL_USAGE_SERVLET = "/UsageStatisticsServlet";
- private static String URL_NOTIFICATIONS = "https://api.github.com/repos/openintegrationengine/engine/releases";
+ private static String URL_NOTIFICATIONS = BrandingConstants.NOTIFICATIONS_URL;
private final static int TIMEOUT = 10000;
public final static Integer MILLIS_PER_DAY = 86400000;
public static void registerUser(String serverId, String mirthVersion, User user, String[] protocols, String[] cipherSuites) throws ClientException {
+ if (!BrandingConstants.CENTRAL_USER_REGISTRATION) {
+ throw new UnsupportedOperationException("User Registration is disabled");
+ }
+
CloseableHttpClient httpClient = null;
CloseableHttpResponse httpResponse = null;
NameValuePair[] params = { new BasicNameValuePair("serverId", serverId),
@@ -107,6 +113,10 @@ public static void registerUser(String serverId, String mirthVersion, User user,
* @throws Exception should anything fail dealing with the web request and the handling of its response
*/
public static List getNotifications(String serverId, String mirthVersion, Map extensionVersions, String[] protocols, String[] cipherSuites) throws Exception {
+ if (!BrandingConstants.CHECK_FOR_NOTIFICATIONS) {
+ throw new UnsupportedOperationException("Checking for Notifications is disabled.");
+ }
+
List validNotifications = Collections.emptyList();
Optional parsedMirthVersion = Version.tryParse(mirthVersion);
if (!parsedMirthVersion.isPresent()) {
@@ -208,6 +218,10 @@ protected static Notification toNotification(JsonNode node) {
}
public static int getNotificationCount(String serverId, String mirthVersion, Map extensionVersions, Set archivedNotifications, String[] protocols, String[] cipherSuites) {
+ if (!BrandingConstants.CHECK_FOR_NOTIFICATIONS) {
+ throw new UnsupportedOperationException("Checking for Notifications is disabled.");
+ }
+
Long notificationCount = 0L;
try {
notificationCount = getNotifications(serverId, mirthVersion, extensionVersions, protocols, cipherSuites)
@@ -222,6 +236,10 @@ public static int getNotificationCount(String serverId, String mirthVersion, Map
}
public static boolean sendStatistics(String serverId, String mirthVersion, boolean server, String data, String[] protocols, String[] cipherSuites) {
+ if (!BrandingConstants.SEND_USAGE_STATISTICS) {
+ throw new UnsupportedOperationException("Sending Usage Statistics is disabled.");
+ }
+
if (data == null) {
return false;
}
diff --git a/server/src/com/mirth/connect/server/Mirth.java b/server/src/com/mirth/connect/server/Mirth.java
index 24c64874a..5e8cacfcf 100644
--- a/server/src/com/mirth/connect/server/Mirth.java
+++ b/server/src/com/mirth/connect/server/Mirth.java
@@ -401,8 +401,10 @@ public void startup() {
printSplashScreen();
// schedule usage statistics to be sent at startup and every 24 hours
- Timer timer = new Timer();
- timer.schedule(new UsageSenderTask(), 0, ConnectServiceUtil.MILLIS_PER_DAY);
+ if (BrandingConstants.SEND_USAGE_STATISTICS) {
+ Timer timer = new Timer();
+ timer.schedule(new UsageSenderTask(), 0, ConnectServiceUtil.MILLIS_PER_DAY);
+ }
}
/**