/** * * * * @param session * @param doc * @param item */ public void doorLoadDBTypeOK(SocketConnector session, XmlDocument doc, SessionMessage item) { //<msg t='DBS'><body action='loadDBTypeOK'> //<session>127.0.0.1:57107</session> //<DBTypeModel><mode>dz</mode><ver>X2.0</ver><sql>MySql</sql></DBTypeModel></body></msg> try{ //trace(doc.ToString()); getGameLogicServer().selectDB = DBTypeModel.fromXML(doc); XmlNode c = doc.SelectSingleNode("/msg/body/session"); String userIpPort = c.InnerText; AppSession userSession = getGameLogicServer().netGetSession(userIpPort); String sAction = ServerAction.loadDBTypeOK; if (null != userSession) { getGameLogicServer().Send(userSession, XmlInstruction.fengBao(sAction, getGameLogicServer().selectDB.toXMLString(true))); Log.WriteStrBySend(sAction, userSession.getRemoteEndPoint().ToString()); } } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME(), "doorLoadDBTypeOK", exd.Message); } }
public void doorHasRegOK(SocketConnector session, XmlDocument doc, SessionMessage item) { try { XmlNode node = doc.SelectSingleNode("/msg/body"); String userStrIpPort = node.ChildNodes[0].InnerText; //InnerText; AppSession userSession = getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort); // String saction = ServerAction.hasRegOK; String contentXml = ""; //如果不在线则略过发送 getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, contentXml)); // Log.WriteStrBySend(saction, userSession.getRemoteEndPoint().ToString()); } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME(), "doorHasRegOK", exd.Message, exd.StackTrace); } }
/** * * * @param session * @param doc * @param item */ public void doorLoadTopListOK(SocketConnector session, XmlDocument doc, SessionMessage item) { try { //<session>127.0.0.1:64828</session><chart total_add="0" total_sub="0"></chart> XmlNode node = doc.SelectSingleNode("/msg/body"); String userStrIpPort = node.ChildNodes[0].InnerText; //InnerText; String topListXml = node.ChildNodes[1].OuterXml; //(new XMLOutputter()).outputString(node.ChildNodes()[1]); // String saction = ServerAction.topList; //回复 //注意这里的session是上面的usersession,要判断是否还在线 AppSession userSession = this.getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort); // this.getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, topListXml)); } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME(), "doorLoadTopListOK", exd.Message, exd.StackTrace); } }
/** * 刷新金币 * * @param session * @param doc */ public void doorLoadG(AppSession session, XmlDocument doc, SessionMessage item) { try { // XmlNode node = doc.SelectSingleNode("/msg/body"); String strIpPort = session.getRemoteEndPoint().ToString(); // IUserModel user = CLIENTAcceptor.getUser(strIpPort); // String caction = RCClientAction.loadG; String content = "<session>" + strIpPort + "</session><nick><![CDATA[" + user.getNickName() + "]]></nick>"; //交给记录服务器处理 RCConnector.Write( XmlInstruction.DBfengBao(caction, content) ); // Log.WriteStrByTurn(SR.getRecordServer_displayName(), RCConnector.getRemoteEndPoint(), caction); } catch (Exception exd) { Log.WriteStrByException("GameLogicServer", "doorLoadG", exd.Message, exd.StackTrace); } }
/** * * * @param session * @param doc * @param item */ public void doorHasReg(AppSession session, XmlDocument doc, SessionMessage item) { try { // XmlNode node = doc.SelectSingleNode("/msg/body"); String strIpPort = session.getRemoteEndPoint().ToString(); // String id_sql = node.InnerText; // String caction = RCClientAction.hasReg; String content = "<session>" + strIpPort + "</session><id_sql>" + id_sql + "</id_sql>"; //交给记录服务器处理 RCConnector.Write(XmlInstruction.DBfengBao(caction, content)); // Log.WriteStrByTurn(SR.getRecordServer_displayName(), RCConnector.getRemoteEndPoint(), caction); } catch (Exception exd) { Log.WriteStrByException("GameLogicServer", "doorHasBeenReg", exd.Message, exd.StackTrace); } }
/// <exception cref="T:Patchwork.Engine.PatchDeclerationException">The patch did not have a PatchInfo class.</exception> public static PatchInstruction ToPatchInstruction(this XmlInstruction instruction) { return(new PatchInstruction { AppInfo = AppContextManager.Context.Value, IsEnabled = true, Patch = PatchManager.TryGetManifest(instruction.Location), Location = instruction.Location }); }
/** * 每日登陆(至少玩一把) * * @param session * @param doc * @param item */ public void doorChkEveryDayLoginAndGetOK(SocketConnector session, XmlDocument doc, SessionMessage item) { try { XmlNode gameNode = doc.SelectSingleNode("/msg/body/game"); //具体奖励数额 String gv = gameNode.Attributes["v"].Value; // XmlNode node = doc.SelectSingleNode("/msg/body/game"); int len = node.ChildNodes.Count; for (int i = 0; i < len; i++) { String edlValue = node.ChildNodes[i].Attributes["edl"].Value; String id = node.ChildNodes[i].Attributes["id"].Value; IUserModel u = getGameLogicServer().CLIENTAcceptor.getUserById(id); if (u == null) { continue; } String userStrIpPort = u.getstrIpPort(); //node.ChildNodes()[i].getAttributeValue("session"); String saction = ""; saction = ServerAction.everyDayLoginVarsUpdate; // //回复 //注意这里的session是上面的usersession,要判断是否还在线 if (getGameLogicServer().CLIENTAcceptor.hasSession(userStrIpPort)) { AppSession userSession = getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort); getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, "<edl v='" + gv + "'>" + edlValue + "</edl>")); // Log.WriteStrBySend(saction, userStrIpPort); } } //end for } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME(), "doorChkEveryDayLoginAndGetOK", exd.Message); } }
public void doorRegOK(SocketConnector session, XmlDocument doc, SessionMessage item) { try { XmlNode node = doc.SelectSingleNode("/msg/body"); String userStrIpPort = node.ChildNodes[0].InnerText; //InnerText; String usersex = node.ChildNodes[1].InnerText; String username = node.ChildNodes[2].InnerText; String userpwd = node.ChildNodes[3].InnerText; String useremail = node.ChildNodes[4].InnerText; //这里的mail是email String bbs = node.ChildNodes[5].InnerText; String sid = node.ChildNodes[6].InnerText; int id_sql = parseInt(node.ChildNodes[7].InnerText); // String saction = ServerAction.regOK; //回复 //注意这里的session是上面的usersession,要判断是否还在线 AppSession userSession = getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort); String contentXml = "<session>" + userStrIpPort + "</session><sex>" + usersex + "</sex><nick><![CDATA[" + username + "]]></nick><pwd><![CDATA[" + userpwd + "]]></pwd><bbs><![CDATA[" + bbs + "]]></bbs>" + //"<hico><![CDATA[" + hico + "]]></hico>" + //"<sid><![CDATA[" + sid + "]]></sid>" + "<id_sql>" + id_sql.ToString() + "</id_sql>" + "<mail>" + useremail + "</mail>"; //如果不在线则略过发送 getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, contentXml)); // Log.WriteStrBySend(saction, userSession.getRemoteEndPoint().ToString()); } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME(), "doorRegOK", exd.Message); } }
public void doorLoadGOK(SocketConnector session, XmlDocument doc, SessionMessage item) { try { XmlNode node = doc.SelectSingleNode("/msg/body"); String userStrIpPort = node.ChildNodes[0].InnerText; //InnerText; String g = node.ChildNodes[1].InnerText; //InnerText; String id_sql = node.ChildNodes[1].Attributes["id_sql"].Value; // String saction = ServerAction.gOK; //回复 //注意这里的session是上面的usersession,要判断是否还在线 AppSession userSession = getGameLogicServer().netGetSession(userStrIpPort); //如果不在线则略过发送 if (null != userSession) { IUserModel u = getGameLogicServer().CLIENTAcceptor.getUser(userStrIpPort); //以免引发不必要的异常,方便测试 if (!(g == "")) { u.setG(parseInt(g)); } getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, "<g " + "id_sql='" + id_sql + "'" + ">" + g + "</g>")); // Log.WriteStrBySend(saction, userSession.getRemoteEndPoint().ToString()); } else { Log.WriteStrBySendFailed(saction, userSession.getRemoteEndPoint().ToString()); } //end if } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME(), "doorLoadGOK", exd.Message); } }
public void doorNeedProof(SocketConnector session, XmlDocument doc, SessionMessage item) { try { String saction = ServerAction.hasProof; //回复 session.Write( XmlInstruction.DBfengBao(saction, "<proof>" + getGameLogicServer().RCConnector.getProof() + "</proof>") ); // Log.WriteStrBySend(saction, session.getRemoteEndPoint().ToString()); } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME(), "doorNeedProof", exd.Message, exd.StackTrace); } }
/** * 注册 * * @param session * @param doc */ public void doorReg(AppSession session, XmlDocument doc, SessionMessage item) { try { XmlNode node = doc.SelectSingleNode("/msg/body"); // String usersex = node.ChildNodes[0].InnerText; String username = node.ChildNodes[1].InnerText; String userpwd = node.ChildNodes[2].InnerText; String useremail = node.ChildNodes[3].InnerText; String bbs = node.ChildNodes[4].InnerText; String sessionId = node.ChildNodes[5].InnerText; String id_sql = node.ChildNodes[6].InnerText; //需校验,其中email是从网页输出的,用户一般改不了,但用户名可改 String caction = RCClientAction.reg; String contentXml = "<session>" + session.getRemoteEndPoint().ToString() + "</session><sex>" + usersex + "</sex><nick><![CDATA[" + username + "]]></nick><pwd><![CDATA[" + userpwd + "]]></pwd><mail><![CDATA[" + useremail + "]]></mail><bbs><![CDATA[" + bbs + "]]></bbs><sid>" + sessionId + "</sid><id_sql>" + id_sql + "</id_sql>"; //注册前先到记录服务器验证一下 RCConnector.Write( XmlInstruction.DBfengBao(caction, contentXml) ); // Log.WriteStrByTurn(SR.getRecordServer_displayName(), caction, RCConnector.getRemoteEndPoint()); } catch (Exception exd) { Log.WriteStrByException("GameLogicServer", "doorReg", exd.Message); } }
public void doorRegKO(SocketConnector session, XmlDocument doc, SessionMessage item) { try { XmlNode node = doc.SelectSingleNode("/msg/body"); String userStrIpPort = node.ChildNodes[0].InnerText; String status = node.ChildNodes[1].InnerText; String param = node.ChildNodes[2].InnerText; // String saction = ServerAction.regKO; //回复 //注意这里的session是上面的usersession,要判断是否还在线 AppSession userSession = getGameLogicServer().CLIENTAcceptor.getSession(userStrIpPort); //如果不在线则略过发送 if (null != userSession) { //if (userSession.getConnected()) //{ getGameLogicServer().Send(userSession, XmlInstruction.fengBao(saction, "<status>" + status + "</status><p>" + param + "</p>")); // Log.WriteStrBySend(saction, userSession.getRemoteEndPoint().ToString()); //} //end if } else { Log.WriteStrBySendFailed(saction, userSession.getRemoteEndPoint().ToString()); } //end if } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME(), "doorRegKO", exd.Message); } }
public void doorLoadDBType(AppSession session, XmlDocument doc) { try { String caction = RCClientAction.loadDBType; String contentXml = "<session>" + session.getRemoteEndPoint().ToString() + "</session>"; RCConnector.Write( XmlInstruction.DBfengBao(caction, contentXml) ); // Log.WriteStrByTurn(SR.getRecordServer_displayName(), RCConnector.getRemoteEndPoint(), caction); } catch (Exception exd) { Log.WriteStrByException("GameLogicServer", "doorVerChk", exd.Message); } }
/** * 登陆 * * @param session * @param xml */ public void doorLogin(AppSession session, XmlDocument doc, SessionMessage item) { try { // XmlNode node = doc.SelectSingleNode("/msg/body"); //先发给数据库服务器,登录成功后, //同时校验重复登录,通知被挤者 String username = node.ChildNodes[0].InnerText; String userpwd = node.ChildNodes[1].InnerText; //新加头像路径,为兼容dvbbs String bbs = node.ChildNodes[2].InnerText; String headIco = node.ChildNodes[3].InnerText; String sid = node.ChildNodes[4].InnerText; String id_sql = node.ChildNodes[5].InnerText; //check //username 可以为空,现在用id_sql //if (username == "")) if (userpwd == "") { //Logger.WriteStrByWarn("用户名为空? 用户名:" + username + " 密码:" + userpwd); Log.WriteStrByWarn(SR.GetString(SR.getUserPwd_is_empty(), username, userpwd)); } //url参数中文或其它语言被浏览器自动编码 //if (username.IndexOf("%") >= 0) //{ // Log.WriteStrByWarn(SR.GetString(SR.getUsername_is_browser_auto_code(), username,userpwd)); //} if (sid == null) { sid = "null"; } // String caction = RCClientAction.login; //DBClientAction.login; String contentXml = "<session>" + session.getRemoteEndPoint().ToString() + "</session><nick><![CDATA[" + username + "]]></nick><pword><![CDATA[" + userpwd + "]]></pword><bbs><![CDATA[" + bbs + "]]></bbs><hico><![CDATA[" + headIco + "]]></hico><sid><![CDATA[" + sid + "]]></sid><id_sql>" + id_sql + "</id_sql>"; this.RCConnector.Write( XmlInstruction.DBfengBao(caction, contentXml) ); Log.WriteStrByTurn(SR.getRecordServer_displayName(), RCConnector.getRemoteEndPoint(), caction); // //doorLogin_Sub_isBBSOnline(content); //登陆交给数据库服务器处理 //this.RCConnector.Write( // this.XmlInstruction.DBfengBao(caction, content) // ); // //Logger.WriteStrByTurn("数据库服务器", this.RCConnector.getRemoteEndPoint(), caction); } catch (Exception exd) { Log.WriteStrByException("GameLogicServer", "doorLogin", exd.Message); } }
public override void doorLogOK(SocketConnector session, XmlDocument doc, SessionMessage item) { try { XmlNode node = doc.SelectSingleNode("/msg/body"); String userStrIpPort = node.ChildNodes[0].InnerText; String usersex = node.ChildNodes[1].InnerText; String username = node.ChildNodes[2].InnerText; String userpwd = node.ChildNodes[3].InnerText; String useremail = node.ChildNodes[4].InnerText; String bbs = node.ChildNodes[5].InnerText; String hico = node.ChildNodes[6].InnerText; String sid = node.ChildNodes[7].InnerText; int id_sql = Integer.valueOf(node.ChildNodes[8].InnerText); String id = node.ChildNodes[9].InnerText; String status = node.ChildNodes[10].InnerText; // String saction = ServerAction.logOK; StringBuilder contentXml = new StringBuilder(); //回复 //注意这里的session是上面的usersession,要判断是否还在线 AppSession userSession = DdzLogic.getInstance().CLIENTAcceptor.getSession(userStrIpPort); //判断重复登录,如果这里发生异常,可能就需要多登录几次才能挤掉对方,并成功登录 AppSession outSession = DdzLogic.getInstance().CLIENTAcceptor.getSessionByAccountName(username); if (null != outSession) { //发一个通知,您与服务器的连接断开,原因:您的帐号在另一处登录 //然后触发ClearSession String logoutAction = ServerAction.logout; String logoutCode = "1"; StringBuilder logoutXml = new StringBuilder(); logoutXml.Append("<session>").Append(userSession.getRemoteEndPoint().ToString()).Append("</session>"); logoutXml.Append("<session>").Append(outSession.getRemoteEndPoint().ToString()).Append("</session>"); logoutXml.Append("<code>").Append(logoutCode).Append("</code>"); logoutXml.Append("<u></u>"); DdzLogic.getInstance().Send(outSession, XmlInstruction.fengBao(logoutAction, logoutXml.ToString())); // Log.WriteStrBySend(logoutAction, outSession.getRemoteEndPoint().ToString()); // DdzLogic.getInstance().CLIENTAcceptor.trigClearSession(outSession, outSession.getRemoteEndPoint().ToString()); } //如果不在线则略过发送 if (null != userSession) { //超过在线人数 if (DdzLogic.getInstance().CLIENTAcceptor.getUserCount() >= DdzLogic.getInstance().CLIENTAcceptor.getMaxOnlineUserConfig()) { //调整saction saction = ServerAction.logKO; //调整status status = "12"; //来自MembershipLoginStatus2.PeopleFull12 contentXml.Append("<session>").Append(userStrIpPort).Append("</session>"); contentXml.Append("<status>").Append(status).Append("</status>"); contentXml.Append("<u></u>"); DdzLogic.getInstance().Send(userSession, XmlInstruction.fengBao(saction, contentXml.ToString())); // Log.WriteStrBySend(saction, userStrIpPort); } else { IUserModel user = UserModelFactory.Create(userStrIpPort, id, id_sql, usersex, username, username, bbs, hico); //加入在线用户列表 //CLIENTAcceptor.addUser(userSession.getRemoteEndPoint().ToString(), user); DdzLogic.getInstance().CLIENTAcceptor.addUser(userStrIpPort, user); contentXml.Append("<session>").Append(userStrIpPort).Append("</session>"); contentXml.Append("<status>").Append(status).Append("</status>"); contentXml.Append(user.toXMLString()); DdzLogic.getInstance().Send(userSession, XmlInstruction.fengBao(saction, contentXml.ToString())); // Log.WriteStrBySend(saction, userStrIpPort); // Log.WriteFileByLoginSuccess(username, userStrIpPort); Log.WriteFileByOnlineUserCount(DdzLogic.getInstance().CLIENTAcceptor.getUserCount()); } //end if } //end if } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME(), "doorLogOK", exd.Message, exd.StackTrace); } }