All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hazelcast.config.ManagementCenterConfig Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2008-2024, Hazelcast, Inc. All Rights Reserved.
 *
 * 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 com.hazelcast.config;

import static com.hazelcast.internal.util.Preconditions.isNotNull;
import static java.util.Collections.newSetFromMap;

import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Contains the configuration for Hazelcast Management Center.
 */
public final class ManagementCenterConfig implements TrustedInterfacesConfigurable {

    private boolean scriptingEnabled;

    private boolean consoleEnabled;

    private boolean dataAccessEnabled = true;

    private final Set trustedInterfaces = newSetFromMap(new ConcurrentHashMap<>());

    public ManagementCenterConfig() {
    }

    /**
     * Enables/disables scripting on the member. Management center allows to send a script for execution to a member. The script
     * can access the underlying system Hazelcast member is running on with permissions of user running the member. Disabling
     * scripting improves the member security.
     * 

* Default value for this config element is {@code false}. * * @param scriptingEnabled {@code true} to allow scripting on the member, {@code false} to disallow * @return this management center config instance * @since 3.12 */ public ManagementCenterConfig setScriptingEnabled(final boolean scriptingEnabled) { this.scriptingEnabled = scriptingEnabled; return this; } /** * Returns if scripting is allowed ({@code true}) or disallowed ({@code false}). */ public boolean isScriptingEnabled() { return scriptingEnabled; } /** * Enables/disables console commands execution on the member. Management center allows to send a console command for * execution to a member. The console command can access the underlying system Hazelcast member is running and * bypasses configured client permissions. * Disabling console commands execution improves the member security. *

* Default value for this config element is {@code false}. * * @param consoleEnabled {@code true} to allow console commands on the member, {@code false} to disallow * @return this management center config instance * @since 5.1 */ public ManagementCenterConfig setConsoleEnabled(final boolean consoleEnabled) { this.consoleEnabled = consoleEnabled; return this; } /** * Returns if executing console commands is allowed ({@code true}) or disallowed ({@code false}). */ public boolean isConsoleEnabled() { return consoleEnabled; } /** * Enables/disables access to contents of Hazelcast data structures (for instance map entries) for Management Center. * Management Center can't access the data if at least one member has the data access disabled. *

* Default value for this config element is {@code true}. * * @param dataAccessEnabled {@code true} to allow data access for Management Center, {@code false} to disallow * @return this management center config instance * @since 5.1 */ public ManagementCenterConfig setDataAccessEnabled(boolean dataAccessEnabled) { this.dataAccessEnabled = dataAccessEnabled; return this; } /** * Returns if Management Center is allowed to access contents of Hazelcast data structures * (for instance map entries) ({@code true}) or disallowed ({@code false}). */ public boolean isDataAccessEnabled() { return dataAccessEnabled; } /** * Gets the trusted interfaces. * * @return the trusted interfaces * @see #setTrustedInterfaces(java.util.Set) */ public Set getTrustedInterfaces() { return trustedInterfaces; } /** * Sets the trusted interfaces. *

* The interface is an IP address where the last octet can be a wildcard '*' or a range '10-20'. * * @param interfaces the new trusted interfaces * @return the updated MulticastConfig * @see IllegalArgumentException if interfaces is {@code null} */ public ManagementCenterConfig setTrustedInterfaces(Set interfaces) { isNotNull(interfaces, "interfaces"); trustedInterfaces.clear(); trustedInterfaces.addAll(interfaces); return this; } /** * Adds a trusted interface. * * @param ip the IP of the trusted interface * @throws IllegalArgumentException if IP is {@code null} * @see #setTrustedInterfaces(java.util.Set) */ public ManagementCenterConfig addTrustedInterface(final String ip) { trustedInterfaces.add(isNotNull(ip, "ip")); return this; } @Override public String toString() { return "ManagementCenterConfig{" + "scriptingEnabled=" + scriptingEnabled + "trustedInterfaces=" + trustedInterfaces + "}"; } @Override public int hashCode() { return Objects.hash(scriptingEnabled, consoleEnabled, dataAccessEnabled, trustedInterfaces); } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } ManagementCenterConfig other = (ManagementCenterConfig) obj; return scriptingEnabled == other.scriptingEnabled && consoleEnabled == other.consoleEnabled && dataAccessEnabled == other.dataAccessEnabled && Objects.equals(trustedInterfaces, other.trustedInterfaces); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy