public static EncryptInfoConfig CreateItem(RecordEncryptInfo info) { EncryptInfoConfig item = new EncryptInfoConfig(); item.UserID = info.UserID; item.IsRemember = info.IsRemember; item.StartTime = S3102App.EncryptString(info.StartTime.ToString("yyyy-MM-dd HH:mm:ss")); item.EndTime = S3102App.EncryptString(info.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); item.Password = S3102App.EncryptString(info.Password); return(item); }
public OperationReturn GetRealPassword(RecordEncryptInfo encryptInfo) { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = 0; try { if (Session == null) { optReturn.Result = false; optReturn.Code = RET_NO_SESSION; optReturn.Message = string.Format("SessionInfo is null"); return(optReturn); } if (mRecordInfo == null) { optReturn.Result = false; optReturn.Code = RET_NO_RECORDINFO; optReturn.Message = string.Format("RecordInfo is null"); return(optReturn); } if (encryptInfo == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("EncryptInfo is null"); return(optReturn); } //新密钥解老密钥 List <string> listArgs = new List <string>(); listArgs.Add("1"); //对象类型:1 listArgs.Add(encryptInfo.ServerAddress); //加密对象:录音服务器的IP地址或机器名 listArgs.Add(mRecordInfo.SerialID.ToString()); //录音流水号:C002 listArgs.Add(mRecordInfo.StartRecordTime.ToString("yyyy-MM-dd HH:mm:ss")); //录音开始时间 listArgs.Add(encryptInfo.EndTime.ToString("yyyy-MM-dd HH:mm:ss")); //密钥截至时间 listArgs.Add(encryptInfo.Password); //新密钥 listArgs.Add(string.Empty); //无 Service06ServerInfo server = new Service06ServerInfo(); server.Host = Session.AppServerInfo.Address; server.Port = Session.AppServerInfo.SupportHttps ? Session.AppServerInfo.Port - 7 : Session.AppServerInfo.Port - 6; OnDebug("GetRealPass", string.Format("Getting real password.\t{0}", encryptInfo.ServerAddress)); optReturn = Service06Helper.DoOperation(server, Service06Command.GET_PASS, listArgs); if (!optReturn.Result) { return(optReturn); } string strReturn = optReturn.Data.ToString(); string[] listReturn = strReturn.Split(new[] { ConstValue.SPLITER_CHAR }, StringSplitOptions.None); if (listReturn.Length <= 0) { optReturn.Result = false; optReturn.Code = Defines.RET_PARAM_INVALID; optReturn.Message = string.Format("Return value length invalid"); return(optReturn); } string strError = listReturn[0]; strError = S3102App.DecryptString(strError); if (strError.StartsWith("ERROR")) { optReturn.Result = false; optReturn.Code = RET_GET_REAL_PASSWORD_FAIL; optReturn.Message = string.Format("Get real password fail.\t{0}", strError); return(optReturn); } string strKey1B = string.Empty; if (listReturn.Length > 2) { strKey1B = listReturn[2]; } strKey1B = S3102App.DecryptString(strKey1B); encryptInfo.RealPassword = strKey1B; OnDebug("GetRealPass", string.Format("Get real password end.\t{0}", S3102App.EncryptString(strKey1B))); } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }
public OperationReturn DownloadFileToAppServer() { OperationReturn optReturn = new OperationReturn(); optReturn.Result = true; optReturn.Code = 0; try { if (Session == null) { optReturn.Result = false; optReturn.Code = RET_NO_SESSION; optReturn.Message = string.Format("SessionInfo is null"); return(optReturn); } if (mRecordInfo == null) { optReturn.Result = false; optReturn.Code = RET_NO_RECORDINFO; optReturn.Message = string.Format("RecordInfo is null"); return(optReturn); } string strServerAddress = mRecordInfo.VoiceIP; #region 获取下载服务器列表 List <DownloadServerItem> listServerItems = new List <DownloadServerItem>(); if (ListDownloadParams != null) { //过滤调不属于本服务器的下载参数项 var downloadParams = ListDownloadParams.Where(d => d.VoiceAddress == strServerAddress || d.VoiceAddress == string.Empty).OrderBy(d => d.ID).ToList(); for (int i = 0; i < downloadParams.Count; i++) { var downloadParam = downloadParams[i]; if (!downloadParam.IsEnabled) { continue; } var item = new DownloadServerItem(); item.Type = 1; item.Info = downloadParam; listServerItems.Add(item); } } if (ListSftpServers != null) { var sftps = ListSftpServers.Where(s => s.HostAddress == strServerAddress).OrderBy(s => s.ObjID).ToList(); for (int i = 0; i < sftps.Count; i++) { var sftp = sftps[i]; var item = new DownloadServerItem(); item.Type = 0; item.Info = sftp; listServerItems.Add(item); } } if (listServerItems.Count <= 0) { optReturn.Result = false; optReturn.Code = RET_DOWNLOADSERVER_NOT_EXIST; optReturn.Message = string.Format("Download server not exist.\t{0}", strServerAddress); return(optReturn); } if (Service03Helper == null) { optReturn.Result = false; optReturn.Code = Defines.RET_OBJECT_NULL; optReturn.Message = string.Format("Service03Helper is null"); return(optReturn); } #endregion #region 载文件 RequestMessage request; ReturnMessage retMessage; bool isDownloaded = false; //遍历可用的下载服务器尝试下载文件 for (int i = 0; i < listServerItems.Count; i++) { var item = listServerItems[i]; var type = item.Type; request = new RequestMessage(); if (type == 0) { #region Sftp本地下载 //Sftp方式 var sftpServer = item.Info as SftpServerInfo; if (sftpServer == null) { continue; } string strPartInfo = string.Empty; PartitionTableInfo partInfo = Session.ListPartitionTables.FirstOrDefault( p => p.TableName == ConstValue.TABLE_NAME_RECORD && p.PartType == TablePartType.DatetimeRange); if (partInfo != null) { DateTime startTime = mRecordInfo.StartRecordTime; strPartInfo = string.Format("{0}{1}", startTime.ToString("yy"), startTime.ToString("MM")); } OnDebug("DownloadAppServer", string.Format("Downloading by sftp.\t{0}:{1}\t{2}", sftpServer.HostAddress, sftpServer.HostPort, mRecordInfo.SerialID)); request.Command = (int)Service03Command.DownloadRecordFile; request.ListData.Add(sftpServer.HostAddress); request.ListData.Add(sftpServer.HostPort.ToString()); request.ListData.Add(string.Format("{0}|{1}", Session.UserID, Session.RentInfo.Token)); string strPassword = Session.UserInfo.Password; strPassword = S3102App.EncryptString(strPassword); request.ListData.Add(strPassword); request.ListData.Add(mRecordInfo.RowID.ToString()); request.ListData.Add(mRecordInfo.SerialID.ToString()); request.ListData.Add(strPartInfo); //MediaType为0,认为是.wav文件 int mediaType = mRecordInfo.MediaType; if (mediaType == 0) { mediaType = 1; } request.ListData.Add(mediaType.ToString()); #endregion } else if (type == 1) { #region Nas 下载 //NAS方式 var downloadParam = item.Info as DownloadParamInfo; if (downloadParam == null) { continue; } int method = downloadParam.Method; string path; int mediaType; if (mRecordInfo.RecordVersion == 101) { //华为V3录音 path = mRecordInfo.SavePath; int diskIndex = path.IndexOf(":"); if (diskIndex > 0) { path = path.Substring(diskIndex + 1); } mediaType = 101; //V3 } else { //默认VCLog录音,可以通过路径格式拼接出 optReturn = GetRecordPath(downloadParam); if (!optReturn.Result) { return(optReturn); } path = optReturn.Data.ToString(); string strExt; if (string.IsNullOrEmpty(path)) { OnDebug("DownloadAppServer", string.Format("Record path is empty")); continue; } if (mRecordInfo.MediaType == 2) { mediaType = 2; //vls strExt = "vls"; } else { mediaType = 1; //wav strExt = "wav"; } path = string.Format("{0}{1}.{2}", path, mRecordInfo.RecordReference, strExt); } string serialID = mRecordInfo.SerialID.ToString(); OnDebug("DownloadAppServer", string.Format( "Downloading by nas.\tMethod:{0};\tServer:{1};\tPort:{2};\tPath:{3};\tSerialID:{4};", method, downloadParam.Address, downloadParam.Port, path, serialID)); request.Command = (int)Service03Command.DownloadRecordFileNas2; request.ListData.Clear(); request.ListData.Add(method.ToString()); if (method == 0) { //ftp方式 if (!string.IsNullOrEmpty(downloadParam.RootDir)) { path = string.Format("/{0}{1}", downloadParam.RootDir, path); } request.ListData.Add(downloadParam.Address); request.ListData.Add(downloadParam.Port.ToString()); request.ListData.Add(downloadParam.UserName); string strPassword = downloadParam.Password; strPassword = S3102App.EncryptString(strPassword); request.ListData.Add(strPassword); request.ListData.Add(path); request.ListData.Add(serialID); request.ListData.Add(mediaType.ToString()); } else if (method == 10) { //共享目录方式 string strAddress = downloadParam.Address; string strRootDir = downloadParam.RootDir; strRootDir = strRootDir.TrimStart('\\').TrimStart('/'); strAddress = string.Format("\\\\{0}\\{1}", strAddress, strRootDir); request.ListData.Add(strAddress); request.ListData.Add(downloadParam.Port.ToString()); request.ListData.Add(downloadParam.UserName); string strPassword = downloadParam.Password; strPassword = S3102App.EncryptString(strPassword); request.ListData.Add(strPassword); request.ListData.Add(path); request.ListData.Add(serialID); request.ListData.Add(mediaType.ToString()); } else if (method == 11) { //nfs方式 string strAddress = downloadParam.Address; string strRootDir = downloadParam.RootDir; strRootDir = strRootDir.TrimStart('\\').TrimStart('/'); strAddress = string.Format("{0}:/{1}", strAddress, strRootDir); request.ListData.Add(strAddress); request.ListData.Add("0"); request.ListData.Add(downloadParam.UserName); string strPassword = downloadParam.Password; strPassword = S3102App.EncryptString(strPassword); request.ListData.Add(strPassword); request.ListData.Add(path); request.ListData.Add(serialID); request.ListData.Add(mediaType.ToString()); } else { OnDebug("DownloadAppServer", string.Format("DownloadParam method invalid.\t{0}", method)); continue; } #endregion } else { OnDebug("DownloadAppServer", string.Format("Method invalid.\t{0}", type)); continue; } optReturn = Service03Helper.DoRequest(request); if (!optReturn.Result) { OnDebug("DownloadAppServer", string.Format("Download by {0} fail.\t{1}\t{2}", type, optReturn.Code, optReturn.Message)); continue; } retMessage = optReturn.Data as ReturnMessage; if (retMessage == null) { OnDebug("DownloadAppServer", string.Format("RetMessage is null")); continue; } if (!retMessage.Result) { OnDebug("DownloadAppServer", string.Format("Fail.\t{0}\t{1}", retMessage.Code, retMessage.Message)); continue; } OnDebug("DownloadAppServer", string.Format("Download by {0} end.\t{1}", type, mRecordInfo.SerialID)); isDownloaded = true; optReturn.Data = retMessage.Data; break; } if (!isDownloaded) { optReturn.Result = false; optReturn.Code = RET_DOWNLOAD_APPSERVER_FAIL; optReturn.Message = string.Format("Download file to AppServer fail. Reference log for detail information"); return(optReturn); } #endregion } catch (Exception ex) { optReturn.Result = false; optReturn.Code = Defines.RET_FAIL; optReturn.Message = ex.Message; optReturn.Exception = ex; } return(optReturn); }