using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BF
{
public class BFGateInfo
{
public string mainDomain;
public int mainPort;
public string chatDomain;
public int chatPort;
public BFGateInfo(string mainDomain, int mainPort, string chatDomain, int chatPort)
{
this.mainDomain = mainDomain;
this.mainPort = mainPort;
this.chatDomain = chatDomain;
this.chatPort = chatPort;
}
}
public class BFHttpsInfo
{
public string mainDomain;
public int mainPort;
public BFHttpsInfo(string mainDomain, int mainPort)
{
this.mainDomain = mainDomain;
this.mainPort = mainPort;
}
}
///
/// 集群类型
///
public enum ClusterType
{
None = 0,
Normal = 1,
Review = 2,
Test = 3,
}
[Serializable]
public class CombineURL
{
public int cluster_type;
public string ugate_addr;
public string vsn_addr;
public string upay_addr;
public string uchat_addr;
public string community_web_addr;
public string community_srv_addr;
public string aics_http_addr;
public string aics_ws_addr;
public override string ToString()
{
return String.Format("cluster_type:{0} ugate_addr:{1} vsn_addr:{2} upay_addr:{3} uchat_addr:{4} community_web_addr:{5} community_srv_addr:{6} aics_http_addr:{7} aics_ws_addr:{8}", cluster_type, ugate_addr, vsn_addr, upay_addr, uchat_addr, community_web_addr, community_srv_addr, aics_http_addr, aics_ws_addr);
}
}
public partial class BFPlatform
{
const String LoginCenterURL = "https://entrance.wdd817.link";
static Dictionary BFLoginCenterURLDict = new Dictionary()
{
// dev
{"com.juzu.b6.dev", "https://entrance.wdd817.link"},
{"com.juzu.b6.dev.android", "https://entrance.wdd817.link"},
{"com.juzu.b6.dev.ios", "http://game.juzugame.com:3000"},
// release
{"com.juzu.b6.release.android", "http://game.juzugame.com:3000"},
{"com.juzu.b6.release.ios", "http://game.juzugame.com:3000"},
// gp
{"com.combo.heroes.puzzle.rpg", "https://entrance.wdd817.link"},
};
//combine url解析的数据
static ClusterType clusterType;
static BFGateInfo _channelGate;
static BFHttpsInfo _vsnUrl;
//主链接
static string mainGateUrl;
static int mainGatePort;
//聊天链接
static string chatGateUrl;
static int chatGatePort;
//版本号
static string vsnHttpUrl;
static int vsnHttpPort;
//支付中心(包含port)
static string payUrl;
//客服(包含port)
static string aicsHttpUrl;//客服http地址
static string aicsWebSocketUrl;//客服webSocket地址
//社区(包含port)
static string communityWebUrl;//社区
static string communitySrvUrl;//社区红点
//登陆中心返回的信息齐全且格式正常
static bool isLoginCenterConfigValid;//请求的域名信息是否正确
///
/// 解析json数据 获取cluter,gate,chat,vsn,pay的地址
///
///
public static void InitUrlsFromLoginCenter(string json)
{
if (!string.IsNullOrEmpty(json))
{
CombineURL urls = JsonUtility.FromJson(json);
BFLog.Log("C#解析后的urls:" + urls.ToString());
clusterType = (ClusterType)urls.cluster_type;
string tmpGateUrl = urls.ugate_addr;
string tmpChatUrl = urls.uchat_addr;
string tmpVsnUrl = urls.vsn_addr;
string tmpPayUrl = urls.upay_addr;
string tmpCommunityWebUrl = urls.community_web_addr;
string tmpCommunitySrvUrl = urls.community_srv_addr;
string tmpAicsHttpUrl = urls.aics_http_addr;
string tmpAicsWebSocketUrl = urls.aics_ws_addr;
bool clusterValid = clusterType != ClusterType.None;
bool gateValid = !string.IsNullOrEmpty(tmpGateUrl);
bool chatValid = !string.IsNullOrEmpty(tmpChatUrl);
bool vsnValid = !string.IsNullOrEmpty(tmpVsnUrl);
bool payValid = !string.IsNullOrEmpty(tmpPayUrl);
bool communityWebValid = !string.IsNullOrEmpty(tmpCommunityWebUrl);
bool communitySrvValid = !string.IsNullOrEmpty(tmpCommunitySrvUrl);
bool aicsHttpValid = !string.IsNullOrEmpty(tmpAicsHttpUrl);
bool aicsWebSocketValid = !string.IsNullOrEmpty(tmpAicsWebSocketUrl);
BFLog.Log(string.Format("check valid clusterValid:{0} gateValid:{1} chatValid:{2} vsnValid:{3} payValid:{4} communityWebValid:{5} communitySrvValid:{6} aicsHttpValid:{7} aicsWebSocketValid:{8}", clusterValid, gateValid, chatValid, vsnValid, payValid, communityWebValid, communitySrvValid, aicsHttpValid, aicsWebSocketValid));
//判断参数是否正常
if (clusterValid && gateValid && chatValid && vsnValid && payValid)
{
if (IsPublishChannel()) // 正式渠道不验证社区与客服地址
{
SetLoginCenterConfigValid(true);
}
else
{
if (communityWebValid && communitySrvValid && aicsHttpValid && aicsWebSocketValid)
{
SetLoginCenterConfigValid(true);
}
else
{
SetLoginCenterConfigValid(false);
}
}
}
else
{
SetLoginCenterConfigValid(false);
}
//拆分域名url与port
int gatePortIndex = tmpGateUrl.LastIndexOf(':');
int chatPortIndex = tmpChatUrl.LastIndexOf(':');
int vsnPortIndex = tmpVsnUrl.LastIndexOf(':');
string gatePortStr = tmpGateUrl.Substring(gatePortIndex + 1, tmpGateUrl.Length - gatePortIndex - 1);
string chatPortStr = tmpChatUrl.Substring(chatPortIndex + 1, tmpChatUrl.Length - chatPortIndex - 1);
string vsnPortStr = tmpVsnUrl.Substring(vsnPortIndex + 1, tmpVsnUrl.Length - vsnPortIndex - 1);
int gatePort = 0;
int chatPort = 0;
int vsnPort = 0;
int.TryParse(gatePortStr, out gatePort);
int.TryParse(chatPortStr, out chatPort);
int.TryParse(vsnPortStr, out vsnPort);
string tmpGateUrlWithoutPort = tmpGateUrl.Substring(0, gatePortIndex);
string tmpChatUrlWithoutPort = tmpChatUrl.Substring(0, chatPortIndex);
string tmpVsnUrlWithoutPort = tmpVsnUrl.Substring(0, vsnPortIndex);
mainGateUrl = tmpGateUrlWithoutPort;
mainGatePort = gatePort;
chatGateUrl = tmpChatUrlWithoutPort;
chatGatePort = chatPort;
vsnHttpUrl = tmpVsnUrlWithoutPort;
vsnHttpPort = vsnPort;
//暂时保留原格式
_channelGate = new BFGateInfo(mainGateUrl, mainGatePort, chatGateUrl, chatGatePort);
_vsnUrl = new BFHttpsInfo(vsnHttpUrl, vsnHttpPort);
payUrl = tmpPayUrl;
communityWebUrl = tmpCommunityWebUrl;
communitySrvUrl = tmpCommunitySrvUrl;
aicsHttpUrl = tmpAicsHttpUrl;
aicsWebSocketUrl = tmpAicsWebSocketUrl;
BFLog.Log("解析后的地址 gate:{0} gatePort:{1} chat:{2} chatPort:{3} vsn:{4} vsnPort:{5} payUrl:{6} communityWebUrl:{7} communitySrvUrl:{8} aicsHttpUrl:{9} aicsWebSocketUrl:{10}", mainGateUrl, gatePort, chatGateUrl, chatPort, vsnHttpUrl, vsnPort, payUrl, communityWebUrl, communitySrvUrl, aicsHttpUrl, aicsWebSocketUrl);
}
else
{
BFLog.LogError("GetUrlsFromLoginCenter Error,JSON is null or empty");
}
}
///
/// 获得集群类型 (1-普通,2-审核,3-测试)
///
///
public static ClusterType GetClusterType()
{
return clusterType;
}
///
/// 域名信息是否请求正确
///
///
public static bool IsLoginCenterConfigValid()
{
BFLog.Log("获取 Get IsLoginCenterConfigValid:" + isLoginCenterConfigValid);
return isLoginCenterConfigValid;
}
public static void SetLoginCenterConfigValid(bool valid)
{
BFLog.Log("设置 Set IsLoginCenterConfigValid:" + valid);
isLoginCenterConfigValid = valid;
}
static string identifier;
public static string Identifier
{
get
{
if (string.IsNullOrEmpty(identifier))
{
identifier = Application.identifier;
}
return identifier;
}
}
///
/// 是否是内网渠道
///
public static bool IsDevChannel()
{
return Identifier == "com.juzu.b6.dev" ||
Identifier == "com.juzu.b6.dev.android" ||
Identifier == "com.juzu.b6.dev.ios";
}
///
/// 是否是外网测试渠道
///
public static bool IsReleaseChannel()
{
return Identifier == "com.juzu.b6.release.android" ||
Identifier == "com.juzu.b6.release.ios";
}
///
/// 是否是正式发布渠道
///
public static bool IsPublishChannel()
{
return !IsDevChannel() && !IsReleaseChannel();
}
///
/// 获取当前渠道gate信息
///
public static BFGateInfo GetCurrentGateInfo()
{
return _channelGate;
}
///
/// mainGate url(无port)
///
///
public static string GetMainGateURL()
{
return mainGateUrl;
}
///
/// mainGate port
///
///
public static int GetMainGatePort()
{
return mainGatePort;
}
///
/// chatGate url(无port)
///
///
public static string GetChatGateURL()
{
return chatGateUrl;
}
///
/// chatGate port
///
///
public static int GetChatGatePort()
{
return chatGatePort;
}
public static BFHttpsInfo GetVsnHttpsInfo()
{
return _vsnUrl;
}
///
/// 版本号url(无port)
///
///
public static string GetVsnHttpURL()
{
return vsnHttpUrl;
}
///
/// 版本号port
///
///
public static int GetVsnHttpPort()
{
return vsnHttpPort;
}
public static string GetLoginCenterURL()
{
if (BFLoginCenterURLDict.TryGetValue(Identifier, out string url))
{
return url;
}
return LoginCenterURL;
}
public static string GetPayCenterURL()
{
return payUrl;
}
///
/// 社区地址
///
///
public static string GetCommunityWebURL()
{
return communityWebUrl;
}
///
/// 社区红点地址
///
///
public static string GetCommunitySrvURL()
{
return communitySrvUrl;
}
public static string GetAicsHttpURL()
{
return aicsHttpUrl;
}
public static string GetAicsWebSocketURL()
{
return aicsWebSocketUrl;
}
}
}