/* * Copyright (C) 2016 Savoir-faire Linux Inc. * * Author: Adrien Béraud <adrien.beraud@savoirfairelinux.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package cx.ring.model; import java.util.Arrays; import java.util.HashSet; import java.util.Set; public enum ConfigKey { MAILBOX("Account.mailbox"), REGISTRATION_EXPIRE("Account.registrationExpire"), CREDENTIAL_NUMBER("Credential.count"), ACCOUNT_DTMF_TYPE("Account.dtmfType"), RINGTONE_PATH("Account.ringtonePath"), RINGTONE_ENABLED("Account.ringtoneEnabled"), RINGTONE_CUSTOM("Account.ringtoneCustom"), KEEP_ALIVE_ENABLED("Account.keepAliveEnabled"), LOCAL_INTERFACE("Account.localInterface"), PUBLISHED_SAMEAS_LOCAL("Account.publishedSameAsLocal"), LOCAL_PORT("Account.localPort"), PUBLISHED_PORT("Account.publishedPort"), PUBLISHED_ADDRESS("Account.publishedAddress"), STUN_SERVER("STUN.server"), STUN_ENABLE("STUN.enable"), TURN_ENABLE("TURN.enable"), TURN_SERVER("TURN.server"), TURN_USERNAME("TURN.username"), TURN_PASSWORD("TURN.password"), TURN_REALM("TURN.realm"), AUDIO_PORT_MIN("Account.audioPortMin"), AUDIO_PORT_MAX("Account.audioPortMax"), ACCOUNT_USERAGENT("Account.useragent"), ACCOUNT_UPNP_ENABLE("Account.upnpEnabled"), ACCOUNT_ROUTESET("Account.routeset"), ACCOUNT_AUTOANSWER("Account.autoAnswer"), ACCOUNT_ALIAS("Account.alias"), ACCOUNT_HOSTNAME("Account.hostname"), ACCOUNT_USERNAME("Account.username"), ACCOUNT_PASSWORD("Account.password"), ACCOUNT_REALM("Account.realm"), ACCOUNT_TYPE("Account.type"), ACCOUNT_ENABLE("Account.enable"), ACCOUNT_ACTIVE("Account.active"), ACCOUNT_DEVICE_ID("Account.deviceID"), ACCOUNT_DEVICE_NAME("Account.deviceName"), VIDEO_ENABLED("Account.videoEnabled"), VIDEO_PORT_MIN("Account.videoPortMin"), VIDEO_PORT_MAX("Account.videoPortMax"), PRESENCE_ENABLE("Account.presenceEnabled"), ARCHIVE_PASSWORD("Account.archivePassword"), ARCHIVE_HAS_PASSWORD("Account.archiveHasPassword"), ARCHIVE_PIN("Account.archivePIN"), DISPLAY_NAME("Account.displayName"), ETH_ACCOUNT("ETH.account"), TLS_LISTENER_PORT("TLS.listenerPort"), TLS_ENABLE("TLS.enable"), TLS_CA_LIST_FILE("TLS.certificateListFile"), TLS_CERTIFICATE_FILE("TLS.certificateFile"), TLS_PRIVATE_KEY_FILE("TLS.privateKeyFile"), TLS_PASSWORD("TLS.password"), TLS_METHOD("TLS.method"), TLS_CIPHERS("TLS.ciphers"), TLS_SERVER_NAME("TLS.serverName"), TLS_VERIFY_SERVER("TLS.verifyServer"), TLS_VERIFY_CLIENT("TLS.verifyClient"), TLS_REQUIRE_CLIENT_CERTIFICATE("TLS.requireClientCertificate"), TLS_NEGOTIATION_TIMEOUT_SEC("TLS.negotiationTimeoutSec"), ACCOUNT_REGISTERED_NAME("Account.registredName"), ACCOUNT_REGISTRATION_STATUS("Account.registrationStatus"), ACCOUNT_REGISTRATION_STATE_CODE("Account.registrationCode"), ACCOUNT_REGISTRATION_STATE_DESC("Account.registrationDescription"), SRTP_ENABLE("SRTP.enable"), SRTP_KEY_EXCHANGE("SRTP.keyExchange"), SRTP_ENCRYPTION_ALGO("SRTP.encryptionAlgorithm"), SRTP_RTP_FALLBACK("SRTP.rtpFallback"), RINGNS_ACCOUNT("RingNS.account"), RINGNS_HOST("RingNS.host"), DHT_PORT("DHT.port"), DHT_PUBLIC_IN("DHT.PublicInCalls"); private static final Set<ConfigKey> TWO_STATES = new HashSet<>(Arrays.asList( ACCOUNT_ENABLE, VIDEO_ENABLED, RINGTONE_ENABLED, KEEP_ALIVE_ENABLED, PUBLISHED_SAMEAS_LOCAL, STUN_ENABLE, TURN_ENABLE, ACCOUNT_AUTOANSWER, ACCOUNT_UPNP_ENABLE, DHT_PUBLIC_IN)); private final String mKey; ConfigKey(String key) { mKey = key; } public String key() { return mKey; } public boolean equals(ConfigKey other) { return other != null && mKey.equals(other.mKey); } public boolean isTwoState() { return TWO_STATES.contains(this); } public static ConfigKey fromString(String stringKey) { for (ConfigKey confKey : ConfigKey.values()) { if (stringKey.contentEquals(confKey.mKey) || stringKey.equals(confKey.mKey)) { return confKey; } } return null; } }