edu.internet2.middleware.changelogconsumer.googleapps.utils.GoogleAppsSyncProperties Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of google-apps-provisioner Show documentation
Show all versions of google-apps-provisioner Show documentation
Google Apps Integration Library
/*******************************************************************************
* Copyright 2015 Internet2
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package edu.internet2.middleware.changelogconsumer.googleapps.utils;
import com.google.api.services.directory.DirectoryScopes;
import com.google.api.services.groupssettings.model.Groups;
import edu.internet2.middleware.grouper.app.loader.GrouperLoaderConfig;
import edu.internet2.middleware.grouper.util.GrouperUtil;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.util.Base64;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Collects all the various properties and makes them available to the consumer and fullSync.
*
* @author John Gasper, Unicon
*/
public class GoogleAppsSyncProperties {
private static final Logger LOG = LoggerFactory.getLogger(GoogleAppsSyncProperties.class);
private static final String PARAMETER_NAMESPACE = "changeLog.consumer.";
private String serviceAccountPKCS12FilePath;
private PrivateKey serviceAccountPrivateKey;
private String serviceAccountEmail;
private String serviceImpersonationUser;
private String googleDomain;
private String groupIdentifierExpression;
private String subjectIdentifierExpression;
/** how long should the Google caches be valid */
private int googleUserCacheValidity;
private int googleGroupCacheValidity;
/** should the Google caches be pre-filled at start-up to take advantage of bath queries */
private boolean prefillGoogleCachesForConsumer;
private boolean prefillGoogleCachesForFullSync;
private boolean retryOnError;
/** Whether or not to provision users. */
private boolean provisionUsers;
/** Whether or not to add external users to groups. */
private boolean addExternalUsersToGroups;
/** Whether or not to de-provision users. */
private boolean deprovisionUsers;
/** Whether to not use "split" to parse name or the subject API is used to get the name, see subjectGivenNameField and subjectSurnameField */
private boolean simpleSubjectNaming;
/** The givenName field to lookup with the Subject API */
private String subjectGivenNameField;
/** The surname field to lookup with the Subject API */
private String subjectSurnameField;
/** should the provisioned users be in the GAL*/
private Groups defaultGroupSettings = new Groups();
/** should the provisioned users be in the GAL*/
private boolean includeUserInGlobalAddressList;
/** What to do with deleted Groups: archive, delete, ignore (default) */
private String handleDeletedGroup;
/** Which type of privilege becomes an owner: none (default), admin, update, both */
private String whoCanManage;
/** A Java Expression Language (JExl) that returns 'MEMBER' or 'MANAGER' */
private String whoCanManageJexl;
private String googleGroupFilter;
private boolean ignoreExtraGoogleMembers;
private boolean ignoreExtraGoogleGroups;
private boolean useGroupSettings;
/** Newly deleted objects aren't always removed ASAP, nor are newly created/updated object ready immediately */
private int recentlyManipulatedQueueSize;
private int recentlyManipulatedQueueDelay;
private String[] directoryScopes;
public static final String[] defaultDirectoryScopes = {DirectoryScopes.ADMIN_DIRECTORY_USER, DirectoryScopes.ADMIN_DIRECTORY_GROUP};
/**
* Host to use for proxy, if necessary
*/
private String proxyHost;
/**
* Port to use for proxy, if necessary
*/
private int proxyPort;
public GoogleAppsSyncProperties(String consumerName) {
final String qualifiedParameterNamespace = PARAMETER_NAMESPACE + consumerName + ".";
LOG.debug("Google Apps Consumer - Setting properties for {} consumer/provisioner.", consumerName);
serviceAccountPKCS12FilePath =
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "serviceAccountPKCS12FilePath", null);
LOG.debug("Google Apps Consumer - Setting Google serviceAccountPKCS12FilePath to {}", serviceAccountPKCS12FilePath);
String serviceAccountPrivateKeyPEM = GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "serviceAccountPrivateKeyPEM", null);
if (StringUtils.isBlank(serviceAccountPKCS12FilePath) && StringUtils.isBlank(serviceAccountPrivateKeyPEM)) {
throw new RuntimeException("Must specify serviceAccountPKCS12FilePath or serviceAccountPrivateKeyPEM");
}
if (StringUtils.isNotBlank(serviceAccountPKCS12FilePath) && StringUtils.isNotBlank(serviceAccountPrivateKeyPEM)) {
throw new RuntimeException("Must specify serviceAccountPKCS12FilePath or serviceAccountPrivateKeyPEM");
}
if (!StringUtils.isBlank(serviceAccountPrivateKeyPEM)) {
serviceAccountPrivateKeyPEM = serviceAccountPrivateKeyPEM.replaceAll("\n", "").replace("-----BEGIN PRIVATE KEY-----", "").replace("-----END PRIVATE KEY-----", "");
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(serviceAccountPrivateKeyPEM));
KeyFactory kf;
try {
kf = KeyFactory.getInstance("RSA");
serviceAccountPrivateKey = kf.generatePrivate(keySpec);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
serviceAccountEmail =
GrouperLoaderConfig.retrieveConfig().propertyValueStringRequired(qualifiedParameterNamespace + "serviceAccountEmail");
LOG.debug("Google Apps Consumer - Setting Google serviceAccountEmail to {}", serviceAccountEmail);
serviceImpersonationUser =
GrouperLoaderConfig.retrieveConfig().propertyValueStringRequired(qualifiedParameterNamespace + "serviceImpersonationUser");
LOG.debug("Google Apps Consumer - Setting Google serviceImpersonationUser to {}", serviceImpersonationUser);
googleDomain =
GrouperLoaderConfig.retrieveConfig().propertyValueStringRequired(qualifiedParameterNamespace + "domain");
LOG.debug("Google Apps Consumer - Setting Google domain to {}", googleDomain);
groupIdentifierExpression =
GrouperLoaderConfig.retrieveConfig().propertyValueStringRequired(qualifiedParameterNamespace + "groupIdentifierExpression");
LOG.debug("Google Apps Consumer - Setting groupIdentifierExpression to {}", groupIdentifierExpression);
subjectIdentifierExpression =
GrouperLoaderConfig.retrieveConfig().propertyValueStringRequired(qualifiedParameterNamespace + "subjectIdentifierExpression");
LOG.debug("Google Apps Consumer - Setting subjectIdentifierExpression to {}", subjectIdentifierExpression);
provisionUsers =
GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "provisionUsers", false);
LOG.debug("Google Apps Consumer - Setting provisionUser to {}", provisionUsers);
addExternalUsersToGroups =
GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "addExternalUsersToGroups", true);
LOG.debug("Google Apps Consumer - Setting addExternalUsersToGroups to {}", addExternalUsersToGroups);
deprovisionUsers =
GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "deprovisionUsers", false);
LOG.debug("Google Apps Consumer - Setting deprovisionUser to {}", deprovisionUsers);
includeUserInGlobalAddressList =
GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "includeUserInGlobalAddressList", true);
LOG.debug("Google Apps Consumer - Setting includeUserInGlobalAddressList to {}", includeUserInGlobalAddressList);
simpleSubjectNaming =
GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "simpleSubjectNaming", true);
LOG.debug("Google Apps Consumer - Setting simpleSubjectNaming to {}", simpleSubjectNaming);
subjectGivenNameField =
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "subjectGivenNameField", "givenName");
LOG.debug("Google Apps Consumer - Setting subjectGivenNameField to {}", subjectGivenNameField);
subjectSurnameField =
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "subjectSurnameField" ,"sn");
LOG.debug("Google Apps Consumer - Setting subjectSurnameField to {}", subjectSurnameField);
googleUserCacheValidity =
GrouperLoaderConfig.retrieveConfig().propertyValueInt(qualifiedParameterNamespace + "googleUserCacheValidityPeriod", 30);
LOG.debug("Google Apps Consumer - Setting googleUserCacheValidityPeriod to {}", googleUserCacheValidity);
googleGroupCacheValidity =
GrouperLoaderConfig.retrieveConfig().propertyValueInt(qualifiedParameterNamespace + "googleGroupCacheValidityPeriod", 30);
LOG.debug("Google Apps Consumer - Setting googleGroupCacheValidityPeriod to {}", googleGroupCacheValidity);
prefillGoogleCachesForConsumer = GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "prefillGoogleCachesForConsumer", false);
LOG.debug("Google Apps Consumer - Setting prefillGoogleCachesForConsumer to {}", prefillGoogleCachesForConsumer);
prefillGoogleCachesForFullSync = GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "prefillGoogleCachesForFullSync", false);
LOG.debug("Google Apps Consumer - Setting prefillGoogleCachesForFullSync to {}", prefillGoogleCachesForFullSync);
handleDeletedGroup =
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "handleDeletedGroup", "ignore");
LOG.debug("Google Apps Consumer - Setting handleDeletedGroup to {}", handleDeletedGroup);
whoCanManage =
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanManage", "none");
LOG.debug("Google Apps Consumer - Setting whoCanManage to {}", whoCanManage);
whoCanManageJexl =
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanManageJexl", "");
LOG.debug("Google Apps Consumer - Setting whoCanManageJexl to {}", whoCanManage);
recentlyManipulatedQueueSize =
GrouperLoaderConfig.retrieveConfig().propertyValueInt(qualifiedParameterNamespace + "recentlyManipulatedQueueSize", 5);
LOG.debug("Google Apps Consumer - Setting recentlyManipulatedQueueSize to {}", recentlyManipulatedQueueSize);
recentlyManipulatedQueueDelay =
GrouperLoaderConfig.retrieveConfig().propertyValueInt(qualifiedParameterNamespace + "recentlyManipulatedQueueDelay", 2);
LOG.debug("Google Apps Consumer - Setting recentlyManipulatedQueueDelay to {}", recentlyManipulatedQueueDelay);
useGroupSettings =
GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "useGroupSettings", true);
LOG.debug("Google Apps Consumer - Setting useGroupSettings to {}", useGroupSettings);
defaultGroupSettings.setWhoCanJoin(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanJoin", "CAN_REQUEST_TO_JOIN"));
LOG.debug("Google Apps Consumer - Setting whoCanJoin to {}", defaultGroupSettings.getWhoCanJoin());
defaultGroupSettings.setWhoCanViewMembership(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanViewMembership", "ALL_IN_DOMAIN_CAN_VIEW"));
LOG.debug("Google Apps Consumer - Setting whoCanViewMembership to {}", defaultGroupSettings.getWhoCanViewMembership());
defaultGroupSettings.setWhoCanViewGroup(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanViewGroup", "ALL_MEMBERS_CAN_VIEW"));
LOG.debug("Google Apps Consumer - Setting whoCanViewGroup to {}", defaultGroupSettings.getWhoCanViewGroup());
defaultGroupSettings.setWhoCanInvite(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanInvite", "ALL_MANAGERS_CAN_INVITE"));
LOG.debug("Google Apps Consumer - Setting whoCanInvite to {}", defaultGroupSettings.getWhoCanInvite());
defaultGroupSettings.setWhoCanAdd(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanAdd", "NONE_CAN_ADD"));
LOG.debug("Google Apps Consumer - Setting whoCanAdd to {}", defaultGroupSettings.getWhoCanAdd());
defaultGroupSettings.setAllowExternalMembers(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "allowExternalMembers", "false"));
LOG.debug("Google Apps Consumer - Setting allowExternalMembers to {}", defaultGroupSettings.getAllowExternalMembers());
defaultGroupSettings.setWhoCanPostMessage(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanPostMessage", "ALL_IN_DOMAIN_CAN_POST"));
LOG.debug("Google Apps Consumer - Setting whoCanPostMessage to {}", defaultGroupSettings.getWhoCanPostMessage());
defaultGroupSettings.setWhoCanModerateMembers(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanModerateMembers", "OWNERS_AND_MANAGERS"));
LOG.debug("Google Apps Consumer - Setting whoCanModerateMembers to {}", defaultGroupSettings.getWhoCanModerateMembers());
defaultGroupSettings.setAllowWebPosting(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "allowWebPosting", "true"));
LOG.debug("Google Apps Consumer - Setting allowWebPosting to {}", defaultGroupSettings.getAllowWebPosting());
defaultGroupSettings.setPrimaryLanguage(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "primaryLanguage", "en"));
LOG.debug("Google Apps Consumer - Setting primaryLanguage to {}", defaultGroupSettings.getPrimaryLanguage());
defaultGroupSettings.setMaxMessageBytes(
GrouperLoaderConfig.retrieveConfig().propertyValueInt(qualifiedParameterNamespace + "maxMessageBytes", 10240));
LOG.debug("Google Apps Consumer - Setting maxMessageBytes to {}", defaultGroupSettings.getMaxMessageBytes());
defaultGroupSettings.setIsArchived(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "isArchived", "true"));
LOG.debug("Google Apps Consumer - Setting isArchived to {}", defaultGroupSettings.getIsArchived());
defaultGroupSettings.setMessageModerationLevel(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "messageModerationLevel", "MODERATE_NONE"));
LOG.debug("Google Apps Consumer - Setting messageModerationLevel to {}", defaultGroupSettings.getMessageModerationLevel());
defaultGroupSettings.setSpamModerationLevel(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "spamModerationLevel", "ALLOW"));
LOG.debug("Google Apps Consumer - Setting spamModerationLevel to {}", defaultGroupSettings.getSpamModerationLevel());
defaultGroupSettings.setReplyTo(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "replyTo", "REPLY_TO_IGNORE"));
LOG.debug("Google Apps Consumer - Setting replyTo to {}", defaultGroupSettings.getReplyTo());
defaultGroupSettings.setCustomReplyTo(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "customReplyTo", ""));
LOG.debug("Google Apps Consumer - Setting customReplyTo to {}", defaultGroupSettings.getCustomReplyTo());
defaultGroupSettings.setIncludeCustomFooter(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "includeCustomFooter", "false"));
LOG.debug("Google Apps Consumer - Setting includeCustomFooter to {}", defaultGroupSettings.getIncludeCustomFooter());
defaultGroupSettings.setCustomFooterText(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "customFooterText", ""));
LOG.debug("Google Apps Consumer - Setting customFooterText to {}", defaultGroupSettings.getCustomFooterText());
defaultGroupSettings.setSendMessageDenyNotification(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "sendMessageDenyNotification", "true"));
LOG.debug("Google Apps Consumer - Setting sendMessageDenyNotification to {}", defaultGroupSettings.getSendMessageDenyNotification());
defaultGroupSettings.setDefaultMessageDenyNotificationText(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "defaultMessageDenyNotificationText", "Your message has been denied."));
LOG.debug("Google Apps Consumer - Setting defaultMessageDenyNotificationText to {}", defaultGroupSettings.getDefaultMessageDenyNotificationText());
defaultGroupSettings.setShowInGroupDirectory(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "showInGroupDirectory", "false"));
LOG.debug("Google Apps Consumer - Setting showInGroupDirectory to {}", defaultGroupSettings.getShowInGroupDirectory());
defaultGroupSettings.setAllowGoogleCommunication(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "allowGoogleCommunication", "false"));
LOG.debug("Google Apps Consumer - Setting allowGoogleCommunication to {}", defaultGroupSettings.getAllowGoogleCommunication());
defaultGroupSettings.setMembersCanPostAsTheGroup(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "membersCanPostAsTheGroup", "false"));
LOG.debug("Google Apps Consumer - Setting membersCanPostAsTheGroup to {}", defaultGroupSettings.getMembersCanPostAsTheGroup());
defaultGroupSettings.setMessageDisplayFont(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "messageDisplayFont", "DEFAULT_FONT"));
LOG.debug("Google Apps Consumer - Setting messageDisplayFont to {}", defaultGroupSettings.getMessageDisplayFont());
defaultGroupSettings.setIncludeInGlobalAddressList(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "includeInGlobalAddressList", "true"));
LOG.debug("Google Apps Consumer - Setting includeInGlobalAddressList to {}", defaultGroupSettings.getIncludeInGlobalAddressList());
defaultGroupSettings.setWhoCanLeaveGroup(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanLeaveGroup", "NONE_CAN_LEAVE"));
LOG.debug("Google Apps Consumer - Setting whoCanLeaveGroup to {}", defaultGroupSettings.getWhoCanLeaveGroup());
defaultGroupSettings.setWhoCanContactOwner(
GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "whoCanContactOwner", "ALL_MEMBERS_CAN_CONTACT"));
LOG.debug("Google Apps Consumer - Setting whoCanContactOwner to {}", defaultGroupSettings.getWhoCanContactOwner());
retryOnError = GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "retryOnError", false);
LOG.debug("Google Apps Consumer - Setting retryOnError to {}", retryOnError);
googleGroupFilter = GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "googleGroupFilter", ".*");
LOG.debug("Google Apps Consumer - Setting googleGroupFilter to {}", googleGroupFilter);
ignoreExtraGoogleMembers = GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "ignoreExtraGoogleMembers", true);
LOG.debug("Google Apps Consumer - Setting ignoreExtraGoogleMembers to {}", ignoreExtraGoogleMembers);
ignoreExtraGoogleGroups = GrouperLoaderConfig.retrieveConfig().propertyValueBoolean(qualifiedParameterNamespace + "ignoreExtraGoogleGroups", false);
LOG.debug("Google Apps Consumer - Setting ignoreExtraGoogleGroups to {}", ignoreExtraGoogleGroups);
this.proxyHost = GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "proxyHost", null);
this.proxyPort = GrouperLoaderConfig.retrieveConfig().propertyValueInt(qualifiedParameterNamespace + "proxyPort", 0);
if (this.proxyHost != null && this.proxyPort != 0) {
LOG.debug("Google Apps Consumer - Setting proxy to {}:{}", this.proxyHost, this.proxyPort);
}
String scopesOverride = GrouperLoaderConfig.retrieveConfig().propertyValueString(qualifiedParameterNamespace + "directoryScopes", null);
if (StringUtils.isBlank(scopesOverride)) {
this.directoryScopes = defaultDirectoryScopes;
} else {
this.directoryScopes = GrouperUtil.splitTrim(scopesOverride, ",");
}
}
public boolean isRetryOnError() {
return retryOnError;
}
public String getHandleDeletedGroup() {
return handleDeletedGroup;
}
public boolean shouldIncludeUserInGlobalAddressList() {
return includeUserInGlobalAddressList;
}
public Groups getDefaultGroupSettings() {
return defaultGroupSettings;
}
public String getSubjectSurnameField() {
return subjectSurnameField;
}
public String getSubjectGivenNameField() {
return subjectGivenNameField;
}
public boolean useSimpleSubjectNaming() {
return simpleSubjectNaming;
}
public boolean shouldDeprovisionUsers() {
return deprovisionUsers;
}
public boolean shouldProvisionUsers() {
return provisionUsers;
}
public boolean getAddExternalUsersToGroups() {
return addExternalUsersToGroups;
}
public int getGoogleGroupCacheValidity() {
return googleGroupCacheValidity;
}
public int getGoogleUserCacheValidity() {
return googleUserCacheValidity;
}
public boolean getprefillGoogleCachesForConsumer() {
return prefillGoogleCachesForConsumer;
}
public boolean getprefillGoogleCachesForFullSync() {
return prefillGoogleCachesForFullSync;
}
public String getSubjectIdentifierExpression() {
return subjectIdentifierExpression;
}
public String getGroupIdentifierExpression() {
return groupIdentifierExpression;
}
public String getGoogleDomain() {
return googleDomain;
}
public String getServiceImpersonationUser() {
return serviceImpersonationUser;
}
public String getServiceAccountEmail() {
return serviceAccountEmail;
}
public String getServiceAccountPKCS12FilePath() {
return serviceAccountPKCS12FilePath;
}
public PrivateKey getServiceAccountPrivateKey() {
return serviceAccountPrivateKey;
}
public String getWhoCanManageJexl() {
return whoCanManageJexl;
}
public String getWhoCanManage() {
return whoCanManage;
}
public String getGoogleGroupFilter() { return googleGroupFilter; }
public boolean shouldIgnoreExtraGoogleMembers() { return ignoreExtraGoogleMembers; }
public boolean shouldIgnoreExtraGoogleGroups() { return ignoreExtraGoogleGroups; }
public boolean useGroupSettings() { return useGroupSettings; }
public int getRecentlyManipulatedQueueSize() {
return recentlyManipulatedQueueSize;
}
public int getRecentlyManipulatedQueueDelay() {
return recentlyManipulatedQueueDelay;
}
public String getProxyHost() {
return proxyHost;
}
public int getProxyPort() {
return proxyPort;
}
public String[] getDirectoryScopes() {
return directoryScopes;
}
}