package com.hdl.sdk.common.config; import android.text.TextUtils; import com.hdl.sdk.common.utils.SPUtils; /** * Created by jlchen on 11/11/21. * * @Description : AuthenticateConfig */ public class AuthenticateConfig { private static final String Authenticate_LS_KEY = "auth_ls_key"; private static final String AUTHENTICATE_GATEWAYID_KEY = "auth_gatewayid_key"; private static final String AUTHENTICATE_IPADDRESS_KEY = "auth_ipaddress_key"; private String localSecret;//本地加密密钥 private String gatewayId; private String ipAddress; private boolean isLocalEncrypt;//网关是否需要加密通讯 /** * instance */ private volatile static AuthenticateConfig instance; /** * getInstance * * @return AuthenticateConfig */ public static synchronized AuthenticateConfig getInstance() { if (instance == null) { synchronized (AuthenticateConfig.class) { if (instance == null) { instance = new AuthenticateConfig(); instance.loadConfig(); } } } return instance; } /** * 清空缓存 */ public void clearConfig() { this.gatewayId = ""; this.ipAddress = ""; this.localSecret = ""; SPUtils.remove(Authenticate_LS_KEY); SPUtils.remove(AUTHENTICATE_GATEWAYID_KEY); SPUtils.remove(AUTHENTICATE_IPADDRESS_KEY); } /** * 加载缓存 */ void loadConfig(){ localSecret = SPUtils.getString(Authenticate_LS_KEY, ""); } /** * 保存配置 * @param localSecret * @param gatewayId * @param ipAddress */ public void saveConfig(String localSecret, String gatewayId, String ipAddress) { this.localSecret = localSecret; this.gatewayId = gatewayId; this.ipAddress = ipAddress; SPUtils.put(Authenticate_LS_KEY, localSecret); SPUtils.put(AUTHENTICATE_GATEWAYID_KEY, gatewayId); SPUtils.put(AUTHENTICATE_IPADDRESS_KEY, ipAddress); } /** * 检测是否已经认证过 * @return */ public boolean checkIfCertified(){ //localSecret不为空并且长度等于16 return !TextUtils.isEmpty(localSecret) && localSecret.length() == 16; } public void setLocalSecret(String localSecret) { this.localSecret = localSecret; SPUtils.put(Authenticate_LS_KEY, localSecret); } public String getLocalSecret() { return localSecret; } public String getGatewayId() { return gatewayId; } public String getIpAddress() { return ipAddress; } public boolean isLocalEncrypt() { return isLocalEncrypt; } public void setLocalEncrypt(boolean localEncrypt) { isLocalEncrypt = localEncrypt; } /** * 判断当前主题数据是否需要加密 * @param topicStr 当前主题 * @return */ public boolean ifNeedEncrypt(String topicStr){ //过滤相关需要加密的主题 return (!topicStr.contains(TopicConstant.GATEWAY_AUTH_BROADCAST) //网关广播入网指令 && !topicStr.contains(TopicConstant.DEIVCE_AUTH_REQUEST) //入网认证 && !topicStr.contains(TopicConstant.GATEWAY_SEARCH) //搜索网关主题 && isLocalEncrypt//启用加密标志 ); } }