//接続単位の処理 override protected void OnSubThread(SockObj sockObj) { //UDPサーバの場合は、UdpObjで受ける var sockTcp = (SockTcp)sockObj; // レスポンス用のJSON文字列 var json = JsonConvert.SerializeObject(new Error(500, "Not Implemented", "")); //1行受信 var str = sockTcp.AsciiRecv(30, this); if (str == null) { return; } //GET /mail/cmd?p1=v1&p2=v2 HTTP/1.1 var tmp = str.Split(' '); if (tmp.Length == 3) { var method = Method.Unknown; foreach (Method m in Enum.GetValues(typeof(Method))) { if (m.ToString().ToLower() == tmp[0].ToLower()) { method = m; break; } } if (method != Method.Unknown) { // /mail/cmd?p1=v1&p2=v2 var p = tmp[1].Split('/'); if (p.Length == 3) { var server = p[1].ToLower(); //パラメータの値以外は、強制的に小文字に設定する var n = p[2].Split('?'); var cmd = n[0].ToLower(); //パラメータの値以外は、強制的に小文字に設定する var param = new Dictionary <String, String>(); if (n.Length == 2) { foreach (var m in n[1].Split('&')) { var o = m.Split('='); if (o.Length == 2) { param.Add(o[0].ToLower(), o[1]); //パラメータの値以外は、強制的に小文字に設定する } else { param.Add(m.ToLower(), ""); //パラメータの値以外は、強制的に小文字に設定する } } } if (server == "mail") { // OneOption.GetValue("sampleText"); var mail = new SvMail(Kernel); json = mail.Exec(method, cmd, param); //Ver5.9.8 if (method == Method.Delete) { var error = JsonConvert.DeserializeObject <Error>(json); sockTcp.Send(Encoding.UTF8.GetBytes(string.Format("HTTP/1.1 {0} {1}\r\n\r\n", error.code, error.message))); return; } } } } } //1行送信 //Ver5.9.8 sockTcp.Send(Encoding.UTF8.GetBytes(string.Format("HTTP/1.1 200\r\n\r\n{0}", json))); //sockTcp.Send(Encoding.UTF8.GetBytes(json)); //このメソッドを抜けると切断される }
//接続単位の処理 protected override void OnSubThread(SockObj sockObj) { //UDPサーバの場合は、UdpObjで受ける var sockTcp = (SockTcp)sockObj; // レスポンス用のJSON文字列 var json = JsonConvert.SerializeObject(new Error(500,"Not Implemented","")); //1行受信 var str = sockTcp.AsciiRecv(30,this); if (str == null){ return; } //GET /mail/cmd?p1=v1&p2=v2 HTTP/1.1 var tmp = str.Split(' '); if (tmp.Length == 3){ var method = Method.Unknown; foreach (Method m in Enum.GetValues(typeof(Method))){ if (m.ToString().ToLower() == tmp[0].ToLower()){ method = m; break; } } if (method != Method.Unknown) { // /mail/cmd?p1=v1&p2=v2 var p = tmp[1].Split('/'); if (p.Length == 3){ var server = p[1].ToLower(); //パラメータの値以外は、強制的に小文字に設定する var n = p[2].Split('?'); var cmd = n[0].ToLower();//パラメータの値以外は、強制的に小文字に設定する var param = new Dictionary<String, String>(); if (n.Length == 2){ foreach (var m in n[1].Split('&')){ var o = m.Split('='); if (o.Length == 2){ param.Add(o[0].ToLower(), o[1]); //パラメータの値以外は、強制的に小文字に設定する } else{ param.Add(m.ToLower(), ""); //パラメータの値以外は、強制的に小文字に設定する } } } if (server == "mail"){ // OneOption.GetValue("sampleText"); var mail = new SvMail(Kernel); json = mail.Exec(method,cmd, param); //Ver5.9.8 if (method == Method.Delete){ var error = JsonConvert.DeserializeObject<Error>(json); sockTcp.Send(Encoding.UTF8.GetBytes(string.Format("HTTP/1.1 {0} {1}\r\n\r\n", error.code, error.message))); return; } } } } } //1行送信 //Ver5.9.8 sockTcp.Send(Encoding.UTF8.GetBytes(string.Format("HTTP/1.1 200\r\n\r\n{0}",json))); //sockTcp.Send(Encoding.UTF8.GetBytes(json)); //このメソッドを抜けると切断される }