Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }