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}"); } }
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) { } }
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); }