using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using SufeiUtil;
using SXLibrary;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SQLite;
using System.Globalization;
using System.IO;
using System.Management;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Xml;
using WHC.OrderWater.Commons;
using HttpHelper = SufeiUtil.HttpHelper;
using System.Web;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
using System.Runtime.InteropServices;
namespace MOKA_Factory_Tools
{
class CommonMethod
{
[DllImport("kernel32")]
public static extern bool GetProfileString(string lpApplicationName, string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int nSize);
[DllImport("kernel32")]
public static extern bool WriteProfileString(string lpApplicationName, string lpKeyName, string lpString);
public static string FactoryName = "Unknown";
//public static string LocalMacAddress = GetMacAddress();
///
/// 获取活动网卡硬件地址
///
///
public static string GetMacAddress()
{
string mac = "";
using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"))
{
ManagementObjectCollection moc = mc.GetInstances();
int i = 0;
int j = 0;
foreach (ManagementObject mo in moc)
{
if (mo["MacAddress"] != null)
{
if (Convert.ToBoolean(mo["IPEnabled"]))
{
if(j<2)
{
mac = mo["MacAddress"].ToString() + "&" + mac;
j++; }
}
else
{
if(i<1)
{
mac += mo["MacAddress"].ToString() + "&";
i++;
}
}
}
}
}
return mac.Replace(":", "-");
//return "C0-B6-F9-44-D7-BB";
}
///
/// 获取订单信息
///
///
///
///
///
///
///
///
///
public static bool GetMidInfo(string url, string order, string pcmac, string iptvip, string version, SQLiteConnection sqliteConn,out MidList mid)
{
mid = new MidList();
OrderInput orderInput1 = new OrderInput { bid = order, mac = pcmac, version = "", clientType = "" };//"74-27-EA-6E-DA-9F"
string jsonorder = JsonConvert.SerializeObject(orderInput1, Newtonsoft.Json.Formatting.Indented);
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = url,//URL这里都是测试URl 必需项
Encoding = Encoding.UTF8,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别
//Encoding = Encoding.Default,
Method = "post",//URL 可选项 默认为Get
Postdata = jsonorder,
PostEncoding= Encoding.UTF8,
KeepAlive = false
};
item.ContentType = "application/json;charset=utf-8";
System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
HttpResult result = http.GetHtml(item);
stopwatch.Stop();
string usingtime = stopwatch.ElapsedMilliseconds.ToString();
stopwatch.Reset();
string ParseText = result.Html;
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGet MID info\r\nUsing time:" + usingtime + "ms\r\n" + ParseText + "\r\nAddress:" + url + "\r\nPostdata:" + jsonorder);
}
else
{
Log.WriteErrorLog("\r\nFail to GetMidInfo:" + result.StatusDescription + result.Html + "\r\nAddress:" + url + "\r\nPostdata:" + jsonorder);
ReportErrormsg("Fail to GetMidInfo", result.StatusDescription + result.Html + "\r\nAddress:" + url + "\r\nPostdata:" + jsonorder, sqliteConn);
return false;
}
try
{
JObject jObject = JObject.Parse(ParseText);
mid.message = jObject["message"].Value();
mid.code = jObject["code"].Value();
mid.factoryname = jObject["factoryName"].Value();
mid.factoryNum = jObject["factoryNum"].Value();
mid.version = jObject["version"].Value();
mid.quantity = jObject["quantity"].Value();
mid.projectid = jObject["projectId"].Value();
mid.clienttype = jObject["clientType"].Value();
mid.host = jObject["host"].Value();
mid.whiteType = jObject["whiteType"].Value();
object a=jObject["rokuCustomer"];
if (jObject["rokuCustomer"].ToString().Length>0)
mid.rokuCustomer = new RokuCustomer()
{
id = JSON_SeleteNode(jObject["rokuCustomer"], "id").Trim(),
ordernum= JSON_SeleteNode(jObject["rokuCustomer"], "ordernum").Trim(),
brand = JSON_SeleteNode(jObject["rokuCustomer"], "brand").Trim(),
region = JSON_SeleteNode(jObject["rokuCustomer"], "region").Trim(),
oemmodel = JSON_SeleteNode(jObject["rokuCustomer"], "oemmodel").Trim(),
supporturl = JSON_SeleteNode(jObject["rokuCustomer"], "supporturl").Trim(),
supportphone = JSON_SeleteNode(jObject["rokuCustomer"], "supportphone").Trim(),
productiondate = JSON_SeleteNode(jObject["rokuCustomer"], "productiondate").Trim(),
remotetype= JSON_SeleteNode(jObject["rokuCustomer"], "remotetype").Trim(),
updatetime = JSON_SeleteNode(jObject["rokuCustomer"], "updatetime").Trim(),
createtime = JSON_SeleteNode(jObject["rokuCustomer"], "createtime").Trim(),
isdelete = JSON_SeleteNode(jObject["rokuCustomer"], "isdelete").Trim()
};
mid.keytype = new Dictionary();
foreach (var ss in jObject["obj"]) //查找某个字段与值
{
mid.keytype.Add(ss["name"].Value(), ss["type"].Value());
}
if (url == Serverurl.Testurl)
mid.host = "http://test.idmanage.qhmoka.com/IDManage";
if (mid.code == "1000")
return true;
else
return false;
}
catch (Exception ex)
{
Log.WriteErrorLog("\r\nFail to parse MID info," + ex.Message + ":" + ParseText + "\r\nAddress:" + url + "\r\nPostdata:" + jsonorder);
ReportErrormsg("Fail to parse MID info", ex.Message + ":" + ParseText + "\r\nAddress:" + url + "\r\nPostdata:" + jsonorder, sqliteConn);
MessageBox.Show("Fail to parse MID info\r\n " + ex.Message);
return false;
}
}
///
/// 获取预绑定模式下的key包地址
///
///
///
///
///
///
public static bool GetMidAddress(MidList midInfo, string order, SQLiteConnection sqliteConn,out MidAddress midAddress)
{
midAddress = new MidAddress();
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = midInfo.host + "/getofflinelist.do?",//URL这里都是测试URl 必需项
Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别
//Encoding = Encoding.Default,
Method = "post",//URL 可选项 默认为Get
Postdata = ("orderNumber=" + order +"&mac=" + HttpUtility.UrlEncode(TestMode.MAC)),
KeepAlive = false
};
item.ContentType = "application/x-www-form-urlencoded";
HttpResult result = http.GetHtml(item);
string ParseText = result.Html;
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
}
else
{
Log.WriteErrorLog("\r\nFail to get Mid address:" + result.StatusDescription + "\r\n" + result.Html + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata);
CommonMethod.ReportErrormsg("Fail to get Mid address", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata, sqliteConn);
return false;
}
try
{
JObject jObject = JObject.Parse(ParseText);
midAddress.des = JSON_SeleteNode(jObject, "des");
midAddress.code = JSON_SeleteNode(jObject, "code");
midAddress.order = JSON_SeleteNode(jObject, "order_number");
midAddress.number = JSON_SeleteNode(jObject, "order_quantity");
midAddress.pid = JSON_SeleteNode(jObject, "project_id");
midAddress.ctype = JSON_SeleteNode(jObject, "client_type");
midAddress.purl = JSON_SeleteNode(jObject, "packet_url");
midAddress.psize = JSON_SeleteNode(jObject, "packet_size");
midAddress.pmd5 = JSON_SeleteNode(jObject, "packet_md5");
midAddress.version = JSON_SeleteNode(jObject, "soft_version");
midAddress.host = midInfo.host;
Log.WriteGetKeyLog("\r\nGet Mid address success:" + "\r\n" + result.Html + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata);
return true;
}
catch (Exception ex)
{
Log.WriteErrorLog("\r\nFail to parse MID address," + ex.Message + ":" + ParseText + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata);
CommonMethod.ReportErrormsg("Fail to parse MID address", ex.Message + "\r\n" + ParseText + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata, sqliteConn);
MessageBox.Show("Fail to parse MIDAddress info\r\n " + ex.Message);
return false;
}
}
///
/// 获取预绑定模式下的key包地址
///
///
///
///
///
///
public static bool GetMidAddress2(MidList midInfo, string order, SQLiteConnection sqliteConn, out List midAddressList)
{
midAddressList = new List();
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = midInfo.host + "/getofflinelist.do?",//URL这里都是测试URl 必需项
Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别
//Encoding = Encoding.Default,
Method = "post",//URL 可选项 默认为Get
Postdata = ("orderNumber=" + order + "&mac=" + HttpUtility.UrlEncode(TestMode.MAC)),
KeepAlive = false
};
item.ContentType = "application/x-www-form-urlencoded";
HttpResult result = http.GetHtml(item);
string ParseText = result.Html;
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
}
else
{
Log.WriteErrorLog("\r\nFail to get Mid address:" + result.StatusDescription + "\r\n" + result.Html + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata);
CommonMethod.ReportErrormsg("Fail to get Mid address", result.StatusDescription + "\r\n" + result.Html + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata, sqliteConn);
return false;
}
try
{
JObject jObject = JObject.Parse(ParseText);
if (jObject["data"] != null)
{
foreach(var data in jObject["data"])
{
midAddressList.Add(new MidAddress()
{
des = JSON_SeleteNode(jObject, "des"),
code = JSON_SeleteNode(jObject, "code"),
order = data["order_number"].ToObject(),
number = data["order_quantity"].ToObject(),
pid = data["project_id"].ToObject(),
ctype = data["client_type"].ToObject(),
purl = data["packet_url"].ToObject(),
psize = data["packet_size"].ToObject(),
pmd5 = data["packet_md5"].ToObject(),
version = data["soft_version"].ToObject(),
host = midInfo.host
});
}
}
Log.WriteGetKeyLog("\r\nGet Mid address success:" + "\r\n" + result.Html + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata);
return true;
}
catch (Exception ex)
{
Log.WriteErrorLog("\r\nFail to parse MID address," + ex.Message + ":" + ParseText + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata);
CommonMethod.ReportErrormsg("Fail to parse MID address", ex.Message + "\r\n" + ParseText + "\r\nAddress:" + item.URL + "\r\nPostdata:" + item.Postdata, sqliteConn);
MessageBox.Show("Fail to parse MIDAddress info\r\n " + ex.Message);
return false;
}
}
///
/// 解析XML格式的DID
///
///
///
///
///
///
///
///
public static bool GetDIDKeyXml(string str, string node, string node2, out string code, out string desc, out string value)
{
code = "";
value = "";
try
{
XmlDocument xml = new XmlDocument();
//xml.Load(path);
xml.LoadXml(str);
code = xml.SelectSingleNode(node).Attributes.GetNamedItem("code").InnerText;
desc = xml.SelectSingleNode(node).Attributes.GetNamedItem("desc").InnerText;
if (code == "200")
{
value = xml.SelectSingleNode(node + "//" + node2).Attributes.GetNamedItem("deviceid").InnerText;
string CRC32 = xml.SelectSingleNode(node + "//" + node2).Attributes.GetNamedItem("crc32").InnerText;
if (CrcUtils.CRC32(value) == Convert.ToUInt32(CRC32))
{
return true;
}
else
{
desc = "CRC32 error";
return false;
}
}
return false;
}
catch (Exception ex)
{
desc = ex.Message;
return false;
}
}
///
/// 解析其他keys
///
///
///
///
///
///
///
///
public static bool GetKeys(string url,string keymessage,string sn,string keytype, SQLiteConnection sqliteConn, out string key, out string error, string order, out string md5)
{
string code;
string desc;
error = "";
key = "";
md5 = "";
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
Encoding = Encoding.Default,
Method = "post",
ContentType = "application/x-www-form-urlencoded",
KeepAlive = false
};
switch (keymessage)
{
case "DeviceID":
{
item.URL = url + "/getid.do?";
item.Postdata = "devicetype=tcl_unknown_model" + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetDeviceID:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetDIDKeyXml(result.Html, "response", "id", out code, out desc, out key))
{
//
}
else
{
error = desc;
ReportErrormsg("Fail to parse DID", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get DID", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "MAC":
{
item.URL = url+"/getmac.do?";
item.Postdata = "typeString=" + keytype + "&sn="+ sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetMac:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "mac", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse Mac", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get Mac", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "HDCP_KEY":
{
item.URL = url + "/gethdcpkey.do?";
item.Postdata = "type=" + keytype + "&sn="+ sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetHDCP_KEY:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse hdcp", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get hdcp", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "CI_PLUS_KEY":
{
item.URL = url+ "/getcikey.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetCI_PLUS_KEY:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse ciplus", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get ciplus", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "WiDi":
{
item.URL = url+ "/getwidi.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetWiDi:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse widi", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get widi", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "HDCP2.2_KEY":
{
item.URL = url+ "/gethdcpkey2.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetHDCP2.2_KEY:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse hdcp22", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get hdcp22", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "NETFILX_ESN":
{
item.URL = url+ "/getnetfilxesn.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetNETFILX_ESN:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "esn", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse esn", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get esn", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "MGK_KEY":
{
item.URL = url + "/getmgk.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetMGK:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "key", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse MGK", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get MGK", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "Fairplay_KEY":
{
item.URL = url + "/getfairplay.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetFairplay:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "fairplay", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse Fairplay", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get Fairplay", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "ECP_KEY":
{
item.URL = url + "/getecp.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetecp:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "ecp", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse ecp", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get ecp", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "LEK":
{
item.URL = url + "/getlek.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetlek:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "lek", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse lek", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get lek", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "PEK":
{
item.URL = url + "/getpek.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetpek:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "pek", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse pek", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get pek", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "PlayReady_key":
{
item.URL = url + "/getplayready.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetplayready:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "playReady", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse playready", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get playready", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "Hashkey":
{
item.URL = url + "/gethash.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGethash:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "hash", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse hash", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get hash", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
case "YouTube_KEY":
{
item.URL = url + "/getYoutubeKey.do?";
item.Postdata = "type=" + keytype + "&sn=" + sn;
if (sn.Trim().Length > 0)
item.Postdata += "&order=" + order;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGet youtube key:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (Xmlconfig.GetOthersKeyXml(result.Html, "response", "youtubeKey", out code, out desc, out key))
{
}
else
{
error = desc;
ReportErrormsg("Fail to parse youtube key", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get youtube key", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
break;
}
}
return true;
}
public static bool GetWidevineAnAttestationKey(
string url,
string sn,
string keytype,
SQLiteConnection sqliteConn,
out bool isAndroidTV,
out string Widevinekey,
out string Attestationkey,
out string error,
string order,
out string AttestationMd5)
{
string code;
string desc;
isAndroidTV = false;
error = "";
Widevinekey = "";
Attestationkey = "";
AttestationMd5 = "";
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
Encoding = Encoding.Default,
Method = "post",
ContentType = "application/x-www-form-urlencoded",
KeepAlive = false
};
item.URL = url + "/getWidevineAndAttestation.do?";
item.Postdata = "type=" + keytype + "&order=" + order + "&sn=" + sn;
HttpResult result = http.GetHtml(item);
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nGetWidevine_KEY:\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html);
if (!Xmlconfig.GetWidevineAndAttestationKeyXml(result.Html, "response", out code, out desc, out isAndroidTV, out Widevinekey, out Attestationkey, out AttestationMd5))
{
error = desc;
ReportErrormsg("Fail to parse widevineAndAttestation", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
}
else
{
error = result.StatusDescription;
ReportErrormsg("Fail to get widevineAndAttestation", error + "\r\n" + item.URL + "\r\n" + item.Postdata + "\r\n" + result.Html, sqliteConn);
return false;
}
return true;
}
///
/// 异常上报
///
///
///
///
///
public static bool ReportErrormsg(string reportType,string reportData, SQLiteConnection sqliteConn)
{
ErrorInfo ErrorInfo1 = new ErrorInfo { reportType = reportType, reportData = reportData.Replace("'",""), version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(), factory = FactoryName, mac = TestMode.MAC, reportTime = System.DateTime.Now.ToString(("yyyy-MM-dd HH:mm:ss")) };
string jsonError = Newtonsoft.Json.JsonConvert.SerializeObject(ErrorInfo1, Newtonsoft.Json.Formatting.Indented);
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = TestMode.errorreportServerurl,//URL这里都是测试URl 必需项
Encoding = Encoding.UTF8,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别
//Encoding = Encoding.Default,
Method = "post",//URL 可选项 默认为Get
Postdata = jsonError,
PostEncoding= Encoding.UTF8,
KeepAlive = false
};
item.ContentType = "application/json;charset=utf-8";
HttpResult result = http.GetHtml(item);
string ParseText = result.Html;
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
Log.WriteGetKeyLog("\r\nReportErrormsg:\r\n" + result.StatusDescription + "\r\n" + result.Html + "\r\nAddress:" + TestMode.errorreportServerurl + "\r\nPostdata:" + jsonError);
}
else
{
if(HTTPChecker(item.URL))
SQLiteHelper.InsertDelayErrorReport(sqliteConn, new object[] { item.URL, item.Postdata });
Log.WriteErrorLog("\r\nFail to ReportErrormsg:\r\n"+ result.StatusDescription +"\r\n"+ result.Html + "\r\nAddress:" + TestMode.errorreportServerurl + "\r\nPostdata:" + jsonError);
return false;
}
try
{
JObject jObject = JObject.Parse(ParseText);
string message = jObject["message"].Value();
string code = jObject["code"].Value();
if (code == "1000")
return true;
else
{
Log.WriteErrorLog("\r\nError report return error:\r\n" + ParseText + "\r\nAddress:" + TestMode.errorreportServerurl + "\r\nPostdata:" + jsonError);
return false;
}
}
catch (Exception ex)
{
Log.WriteErrorLog("\r\nFail to parse Error report return info," + ex.Message + ":" + ParseText + "\r\nAddress:" + TestMode.errorreportServerurl + "\r\nPostdata:" + jsonError);
return false;
}
}
///
/// 上报预绑定包下载结果
///
///
///
///
///
public static bool ReportDownloadStatus(string url,string order, SQLiteConnection sqliteConn)
{
HttpHelper http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = url + "/getreportofflinesn.do?",//URL这里都是测试URl 必需项
Encoding = null,//编码格式(utf-8,gb2312,gbk) 可选项 默认类会自动识别
//Encoding = Encoding.Default,
Method = "post",//URL 可选项 默认为Get
Postdata = ("orderNumber =" + order),
KeepAlive = false
};
item.ContentType = "application/x-www-form-urlencoded";
HttpResult result = http.GetHtml(item);
string ParseText = result.Html;
if (result.StatusCode == System.Net.HttpStatusCode.OK)
{
//
}
else
{
Log.WriteErrorLog("\r\nFail to report download status:" + result.StatusDescription + result.Html + "\r\nAddress:" + url + "/getreportofflinesn.do?" + "\r\nPostdata:" + ("orderNumber =" + order));
CommonMethod.ReportErrormsg("Fail to report download status", result.StatusDescription + result.Html + "\r\nAddress:" + url + "/getreportofflinesn.do?" + "\r\nPostdata:" + ("orderNumber =" + order), sqliteConn);
return false;
}
try
{
JObject jObject = JObject.Parse(ParseText);
string des = JSON_SeleteNode(jObject, "des");
string code = JSON_SeleteNode(jObject, "code");
string data = JSON_SeleteNode(jObject, "data");
if (code == "1000")
return true;
else
{
Log.WriteErrorLog("\r\nError report download status,should be 1000:" + result.StatusDescription + result.Html + "\r\nAddress:" + url + "/getreportofflinesn.do?" + "\r\nPostdata:" + ("orderNumber =" + order));
CommonMethod.ReportErrormsg("Error download status code return", result.StatusDescription + result.Html + "\r\nAddress:" + url + "/getreportofflinesn.do?" + "\r\nPostdata:" + ("orderNumber =" + order), sqliteConn);
return false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
Log.WriteErrorLog("\r\n" + ex.Message + ":" + result.StatusDescription + result.Html + "\r\nAddress:" + url + "/getreportofflinesn.do?" + "\r\nPostdata:" + ("orderNumber =" + order));
CommonMethod.ReportErrormsg("Error parse download status return", result.StatusDescription + result.Html + "\r\nAddress:" + url + "/getreportofflinesn.do?" + "\r\nPostdata:" + ("orderNumber =" + order), sqliteConn);
return false;
}
}
///
/// 生成DB格式key json字符串
///
///
///
///
///
public static bool CreateDBkeyString(KeyInfo keyInfo,out string keydata,out string error)
{
keydata = "";
error = "";
try
{
DBKeysStringFormat DBKeysStringFormat1 = new DBKeysStringFormat { cikey = keyInfo.CI_plus == null ? "" : keyInfo.CI_plus, esn = keyInfo.ESN == null ? "" : keyInfo.ESN, hdcp = keyInfo.HDCP == null ? "" : keyInfo.HDCP, widevine = keyInfo.Widevine == null ? "" : keyInfo.Widevine, hdcp22=keyInfo.HDCP22 == null ? "" : keyInfo.HDCP22, did=keyInfo.DID == null ? "" : keyInfo.DID, mac=keyInfo.Mac == null ? "" : keyInfo.Mac, widi=keyInfo.WiDi == null ? "" : keyInfo.WiDi, attestation = keyInfo.Attestation == null ? "" : keyInfo.Attestation, mgk = keyInfo.MGK == null ? "" : keyInfo.MGK };
keydata = Newtonsoft.Json.JsonConvert.SerializeObject(DBKeysStringFormat1, Newtonsoft.Json.Formatting.Indented);
return true;
}
catch(Exception ex)
{
error = ex.Message;
return false;
}
}
///
/// 获取相应json子节点的值
///
///
public static string JSON_SeleteNode(JToken json, string ReName)
{
try
{
string result = "";
//这里6.0版块可以用正则匹配
var node = json.SelectToken("$.." + ReName);
if (node != null)
{
//判断节点类型
if (node.Type == JTokenType.String || node.Type == JTokenType.Integer || node.Type == JTokenType.Float)
{
//返回string值
result = node.Value