Beispiel #1
0
        public void DoLogin (MoLoginRequest request)
        {
            var encryptedPassword = stringCoding.GetMD5 (request.Password);
            var machineName = Environment.MachineName;
            var userName = Environment.UserName;
            var loginType = (int) MoLoginType.Stakeplace;
            var @params = $"{request.MoLogin}#{request.Password}#{encryptedPassword}#{machineName}#{userName}#{loginType}";

            userConnectionId.TryAdd (request.MoLogin, request.ConnectionId);

            userResponse.Add (
                new MoLoginResponse ()
                {
                    MoLogin = request.MoLogin,
                    EncryptedPassword = encryptedPassword
                }
            );

            using (var stream = StreamConvert.StringToStream (@params, false))
            {
                _tcpClient.SendData (2, stream);
                Console.WriteLine ($"[LOG] Mo service message send! params={@params}");
            }
        }
Beispiel #2
0
        private void TcpClientOnReceiveEvent (object sender, int tid, Stream data)
        {
            try
            {
                var quitMesage = string.Empty;

                
                if(data.Length == 0) return;
                var response = StreamConvert.StreamToString (data, false, true);
                Console.WriteLine ($"[LOG] Mo service message received! command={(MoLoginStatus) tid} response={response}");
                string[] loginResult = response.Split ('#');
                var moLogin = loginResult[0];
                var command = (MoLoginStatus) tid;

                ///KickOut 需修改MoService增加回傳值,目前無法作用
                // switch (tid)
                // {
                //     case -2:
                //         ReceivedInvoke (new MoLoginResponse(){MoLogin=moLogin}, command, "", "You have been logged out by the system due to multiple login. " +
                //             "This session will be terminated!");
                //        return;
                // }

                var moLoginResponse = userResponse.FirstOrDefault (x => x.MoLogin == moLogin);
                if (moLoginResponse == null) return;
                else
                {
                    userResponse.Remove (moLoginResponse);
                }
                
                switch (command)
                {
                    case MoLoginStatus.Success:
                        if (loginResult.Length < 4)
                        {
                            ReceivedInvoke (moLoginResponse, MoLoginStatus.Error, "MOService Error Message",
                                "An error happened during login. Error message below " +
                                $"{Environment.NewLine} msg={response}");
                            break;
                        }

                        var userLevels = loginResult[1].Split (',', StringSplitOptions.RemoveEmptyEntries);

                        if (userLevels.Length > 0)
                        {
                            moLoginResponse.UserLevels.Clear ();
                            moLoginResponse.UserLevels.AddRange (userLevels);
                            GetMeta (moLoginResponse);
                            break;
                        }

                        var errorMessage = loginResult[2];
                        ReceivedInvoke (moLoginResponse, command, "MOService Error Message",
                            "An error happened during login. Error message below " +
                            $"{Environment.NewLine} msg={errorMessage}");
                        break;
                    case MoLoginStatus.WrongPassword:
                        ReceivedInvoke (moLoginResponse, command, "MOService Credentials errors",
                            "Your password is incorrect.");
                        break;
                    case MoLoginStatus.AccountInactive:
                        ReceivedInvoke (moLoginResponse, command, "MOService Credentials errors",
                            "Your account has been closed/locked.");
                        break;
                    case MoLoginStatus.LoginAreaLimit:
                        ReceivedInvoke (moLoginResponse, command, "MOService Credentials errors",
                            $"You are not authorized to login. tid={tid}");
                        break;
                    case MoLoginStatus.UserNotExists:
                        ReceivedInvoke (moLoginResponse, command, "MOService Credentials errors",
                            "Your login is unknown.");
                        break;
                    case MoLoginStatus.InvalidArguments:
                        ReceivedInvoke (moLoginResponse, command, "MOService Credentials errors",
                            "The login request to MOService was not well formatted. " +
                            "Please contact IT NOC");
                        break;
                    case MoLoginStatus.NoResponse:
                        ReceivedInvoke (moLoginResponse, command, "MOService Notification", "The server is not responding, please try again later!");
                        break;
                    default:
                        ReceivedInvoke (moLoginResponse, command, "MOService Credentials errors",
                            "Unmanaged/Undefined login response. Please contact IT NOC. " +
                            $"tid={command}");
                        break;
                }
            }
            catch (Exception ex) { }
        }
Beispiel #3
0
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/json";
            string ownerId   = context.Request["OwnerId"];
            string ArticleId = context.Request["ArticleId"];
            var    httpfile  = context.Request.Files[0];

            if (UploadFile.IsAboveLimit(httpfile.ContentLength, ownerId))
            {
                var AboveLimit = new
                {
                    success = ConstHelper.Fail,
                    message = "上传失败,上传资源超过最大值限制!!"
                };
                context.Response.Write(JsonConvert.SerializeObject(AboveLimit));
                return;
            }

            UploadFile upload = new UploadFile();

            upload.Size = httpfile.ContentLength;

            Image orgImage = Image.FromStream(httpfile.InputStream);

            //保存原图到七牛
            httpfile.InputStream.Position = 0;
            string strImage     = ConfigurationManager.AppSettings["Image"];
            var    Savefilename = string.Empty;

            switch (strImage)
            {
            case "QiNue":
                Savefilename = QiniuStorage.upload(httpfile, ownerId);
                break;

            case "Mongo":
                Savefilename = MongoStorage.InsertFile(httpfile, ownerId, "Image");
                break;

            case "FileSystem":
                Savefilename = FileSystemStorage.PutFile(httpfile, ownerId, "Image");
                break;
            }

            string ThumbnailUrl = "/FileSystem/Thumbnail?filename=" + Savefilename;
            string Thumbnail    = ConfigurationManager.AppSettings["Thumbnail"];

            if (httpfile.FileName.ToLower().EndsWith(".gif"))
            {
                //直接保存
                switch (Thumbnail)
                {
                case "Mongo":
                    MongoStorage.InsertFile(httpfile, ownerId, "Thumbnail");
                    break;

                case "FileSystem":
                    Savefilename = FileSystemStorage.PutFile(httpfile, ownerId, "Thumbnail");
                    break;
                }
                upload.SmallFileSize = upload.Size;
            }
            else
            {
                //这里是拉伸图片,将图片改为BMP(PDF和画面折衷后的决定)
                var BitmapImage = ImageHelper.ResizeImage(System.Math.Min(800, orgImage.Width), orgImage.Height, ImageHelper.ResizeMode.W, orgImage);
                //string Smallfilename = MongoStorage.InsertFile(httpfile, ownerId, "Bussiness");
                //返回的名字以DefaultOwnerId开始
                var SmallStream = StreamConvert.BytesToStream(StreamConvert.BitmapToBytes(BitmapImage, ImageFormat.Gif));
                //保存有时间差,所以使用上一步保存时候的文件名称
                //同时Stream关闭后无法获得长度,长度必须先写
                upload.SmallFileSize = (int)SmallStream.Length;
                switch (Thumbnail)
                {
                case "Mongo":
                    MongoStorage.InsertStreamWithFixFileName(SmallStream, Savefilename, "Thumbnail");
                    break;

                case "FileSystem":
                    FileSystemStorage.InsertStreamWithFixFileName(SmallStream, Savefilename, "Thumbnail");
                    break;
                }
            }


            upload.Name      = Savefilename;
            upload.ArticleID = ArticleId;
            UploadFile.InsertUploadFile(upload, ownerId);
            string strfree = UploadFile.GetFreeVolumnByAccountId(ownerId);
            var    result  = new
            {
                success = ConstHelper.Success,
                message = "上传成功,剩余图片空间:" + strfree,
                url     = ThumbnailUrl
            };
            string json = JsonConvert.SerializeObject(result);

            context.Response.Write(json);
        }