private void btnSave_Click(object sender, EventArgs e)
        {
            DataUpdatePacket p = new DataUpdatePacket(this.lblPlayer.Text, this.lblServer.Text, this.txtNotes.Text, this.txtInfractions.Text, this.getViolationLevel(), this.playerId);

            p.sendData(Client.getClient().getConnection());
            this.Close();
        }
Пример #2
0
    private void SocketObj_OnDataInvoke(BasePacket basePacket)
    {
        switch (basePacket.packetType)
        {
        case PacketType.CamReceived:
            if (SendCamTexture == true)
            {
                StartCoroutine(SendCamDataWithDelay());
            }
            break;

        case PacketType.CamResolutionReq:
            CamResolutionReqPacket crrp = (CamResolutionReqPacket)basePacket;
            if (1 <= crrp.Resolution && crrp.Resolution <= 16)
            {
                CamQuality = crrp.Resolution;
                clientSender.SendPacket(new CamResolutionPacket(CamQuality));
            }
            break;

        case PacketType.CamConfig:
            CamConfigPacket ccp = (CamConfigPacket)basePacket;
            switch (ccp.camaraConfigType)
            {
            case CamaraConfigType.ChangeCamara:
                camManager.SwitchCam();
                break;

            case CamaraConfigType.SendFrame:
                if (ccp.enable)
                {
                    SendCamTexture = true;
                    StartCoroutine(SendCamDataWithDelay());
                }
                else
                {
                    SendCamTexture = false;
                }
                break;

            default:
                break;
            }
            break;

        case PacketType.CarStatusChangeReq:
            CarStatusChangeReqPacket cscrp = (CarStatusChangeReqPacket)basePacket;

            if (cscrp.ReqCarDevice.RF_LEDChanged)
            {
                baseCarDivice.rf_LED = cscrp.ReqCarDevice.RF_LED;
            }

            if (cscrp.ReqCarDevice.LF_LEDChanged)
            {
                baseCarDivice.lf_LED = cscrp.ReqCarDevice.LF_LED;
            }

            if (cscrp.ReqCarDevice.RB_LEDChanged)
            {
                baseCarDivice.rb_LED = cscrp.ReqCarDevice.RB_LED;
            }

            if (cscrp.ReqCarDevice.LB_LEDChanged)
            {
                baseCarDivice.lb_LED = cscrp.ReqCarDevice.LB_LED;
            }

            if (tracerObj.gPSMover.EnableTraceMode == false)
            {
                if (cscrp.ReqCarDevice.R_motorDIRChanged)
                {
                    baseCarDivice.r_motorDIR = cscrp.ReqCarDevice.R_motorDIR;
                }

                if (cscrp.ReqCarDevice.L_motorDIRChanged)
                {
                    baseCarDivice.l_motorDIR = cscrp.ReqCarDevice.L_motorDIR;
                }

                if (cscrp.ReqCarDevice.R_motorpowerChanged)
                {
                    baseCarDivice.r_motorpower = cscrp.ReqCarDevice.R_motorpower;
                }

                if (cscrp.ReqCarDevice.L_motorpowerChanged)
                {
                    baseCarDivice.l_motorpower = cscrp.ReqCarDevice.L_motorpower;
                }
            }
            break;

        case PacketType.CarStatusReceived:
            StartCoroutine(SendCarDataWithDelay());
            break;

        case PacketType.CarGPSSpotStatusChangeReq:
            CarGPSSpotStatusChangeReqPacket cgscrp = (CarGPSSpotStatusChangeReqPacket)basePacket;
            switch (cgscrp.GPSSpotManagerChangeType)
            {
            case GPSSpotManagerChangeType.AddSpot:
                tracerObj.gPSMover.GPSSpotManager.AddPos(cgscrp.GPSPosition);
                clientSender.SendPacket(new CarGPSSpotStatusPacket(GPSSpotManagerChangeType.AddSpot, cgscrp.GPSPosition));
                break;

            case GPSSpotManagerChangeType.RemoveSpot:
                tracerObj.gPSMover.GPSSpotManager.RemovePos(cgscrp.Index);
                clientSender.SendPacket(new CarGPSSpotStatusPacket(GPSSpotManagerChangeType.RemoveSpot, cgscrp.Index));
                break;

            case GPSSpotManagerChangeType.SetCurrentPos:
                tracerObj.gPSMover.GPSSpotManager.CurrentMovePosIndex = cgscrp.Index;
                clientSender.SendPacket(new CarGPSSpotStatusPacket(GPSSpotManagerChangeType.SetCurrentPos, cgscrp.Index));
                break;

            case GPSSpotManagerChangeType.OverWrite:
                tracerObj.gPSMover.ChangeSpotManager(cgscrp.GPSMover);
                clientSender.SendPacket(new CarGPSSpotStatusPacket(GPSSpotManagerChangeType.OverWrite, cgscrp.GPSMover));
                break;

            default:
                break;
            }
            break;

        case PacketType.UpdateDataReq:
            DataUpdatePacket dup = (DataUpdatePacket)basePacket;

            switch (dup.modeType)
            {
            case ModeType.AutoDriveMode:
                tracerObj.gPSMover.EnableTraceMode = true;
                baseCarDivice.HalfManualMode       = false;
                break;

            case ModeType.ManualDriveMode:
                tracerObj.gPSMover.EnableTraceMode = false;
                baseCarDivice.HalfManualMode       = false;
                break;

            case ModeType.HaifManualDriveMode:
                tracerObj.gPSMover.EnableTraceMode = false;
                baseCarDivice.HalfManualMode       = true;
                break;

            default:
                break;
            }
            clientSender.SendPacket(new DataUpdatedPacket(dup.modeType));
            break;

        default:
            break;
        }
    }
        public string GetPacketMembers(BasePacket basePacket)
        {
            StringBuilder PacketMembers = new StringBuilder("(");

            switch (basePacket.packetType)
            {
            case PacketType.ConnectionStat:
                ConnectionPacket cp = basePacket as ConnectionPacket;
                PacketMembers.Append("IsConnecting: ");
                PacketMembers.Append(cp.IsConnecting);
                PacketMembers.Append(", IsBot: ");
                PacketMembers.Append(cp.IsBot);
                PacketMembers.Append(", HasError: ");
                PacketMembers.Append(cp.HasError);
                break;

            case PacketType.CamFrame:
                CamPacket cap = basePacket as CamPacket;
                PacketMembers.Append("CamFrame: ");
                PacketMembers.Append(cap.CamFrame);
                break;

            case PacketType.CamConfig:
                CamConfigPacket cacc = basePacket as CamConfigPacket;
                PacketMembers.Append("camaraConfigType: ");
                PacketMembers.Append(cacc.camaraConfigType.ToString());
                PacketMembers.Append(", enable: ");
                PacketMembers.Append(cacc.enable);
                break;

            case PacketType.CamResolutionReq:
                CamResolutionReqPacket crqr = basePacket as CamResolutionReqPacket;
                PacketMembers.Append("Resolution: ");
                PacketMembers.Append(crqr.Resolution);
                break;

            case PacketType.CamResolution:
                CamResolutionPacket crr = basePacket as CamResolutionPacket;
                PacketMembers.Append("Resolution: ");
                PacketMembers.Append(crr.Resolution);
                break;

            case PacketType.CamReceived:
                CamPacketRecived cpr = basePacket as CamPacketRecived;
                break;

            case PacketType.CarStatus:
                CarStatusPacket csp = basePacket as CarStatusPacket;
                PacketMembers.Append("cardevice: ");
                PacketMembers.Append(csp.cardevice);
                PacketMembers.Append(", position: ");
                PacketMembers.Append(csp.position);
                PacketMembers.Append(", rotation: ");
                PacketMembers.Append(csp.rotation);
                break;

            case PacketType.CarStatusReceived:
                CarStatusRecivedPacket csrp = basePacket as CarStatusRecivedPacket;
                break;

            case PacketType.CarGPSSpotStatus:
                CarGPSSpotStatusPacket cgpsssp = basePacket as CarGPSSpotStatusPacket;
                PacketMembers.Append("GPSMover: ");
                PacketMembers.Append(cgpsssp.GPSMover);
                PacketMembers.Append(", GPSPosition: ");
                PacketMembers.Append(cgpsssp.GPSPosition);
                PacketMembers.Append(", GPSSpotManagerChangeType: ");
                PacketMembers.Append(cgpsssp.GPSSpotManagerChangeType);
                PacketMembers.Append(", Index: ");
                PacketMembers.Append(cgpsssp.Index);
                break;

            case PacketType.CarStatusChangeReq:
                CarStatusChangeReqPacket cscrp = basePacket as CarStatusChangeReqPacket;
                PacketMembers.Append("ReqCarDevice: ");
                PacketMembers.Append(cscrp.ReqCarDevice);
                break;

            case PacketType.CarGPSSpotStatusChangeReq:
                CarGPSSpotStatusChangeReqPacket cgpssscrp = basePacket as CarGPSSpotStatusChangeReqPacket;
                PacketMembers.Append("GPSMover: ");
                PacketMembers.Append(cgpssscrp.GPSMover);
                PacketMembers.Append(", GPSPosition: ");
                PacketMembers.Append(cgpssscrp.GPSPosition);
                PacketMembers.Append(", GPSSpotManagerChangeType: ");
                PacketMembers.Append(cgpssscrp.GPSSpotManagerChangeType);
                PacketMembers.Append(", Index: ");
                PacketMembers.Append(cgpssscrp.Index);
                break;

            case PacketType.UpdateDataReq:
                DataUpdatePacket dup = basePacket as DataUpdatePacket;
                PacketMembers.Append("modeType: ");
                PacketMembers.Append(dup.modeType);
                break;

            case PacketType.UpdateDataChanged:
                DataUpdatedPacket dudp = basePacket as DataUpdatedPacket;
                PacketMembers.Append("modeType: ");
                PacketMembers.Append(dudp.modeType);
                break;

            case PacketType.UpdateConsoleModeReq:
                ConsoleUpdatePacket cup = basePacket as ConsoleUpdatePacket;
                PacketMembers.Append("consoleMode: ");
                PacketMembers.Append(cup.consoleMode);
                PacketMembers.Append("TargetBot: ");
                PacketMembers.Append(cup.TargetBot);
                break;

            case PacketType.UpdateConsoleModeChanged:
                ConsoleUpdatedPacket cudp = basePacket as ConsoleUpdatedPacket;
                PacketMembers.Append("consoleMode: ");
                PacketMembers.Append(cudp.consoleMode);
                break;

            case PacketType.UniversalCommand:
                UniversalCommandPacket ucp = basePacket as UniversalCommandPacket;
                PacketMembers.Append("key: ");
                PacketMembers.Append(ucp.key);
                PacketMembers.Append("keyType: ");
                PacketMembers.Append(ucp.keyType);
                break;

            case PacketType.ClientsInfoReq:
                ClientinfoReqPacket cirp = basePacket as ClientinfoReqPacket;
                break;

            case PacketType.ClientsInfo:
                ClientinfoPacket cip = basePacket as ClientinfoPacket;
                PacketMembers.Append("ClientsInfo: ");
                PacketMembers.Append(cip.ClientsInfo);
                break;

            default:
                break;
            }
            PacketMembers.Append(')');

            return(PacketMembers.ToString());
        }
Пример #4
0
        private void run()
        {
            this.thread = Thread.CurrentThread;
            while (this.running)
            {
                foreach (Connection c in Server.getSingleton().getConnectionManager().getConnections().Values)
                {
                    if (c.isClosed())
                    {
                        Server.getSingleton().getConnectionManager().getConnections().Remove(c.getAddress());
                    }
                    else
                    {
                        try {
                            if (c.dataRemaining())
                            {
                                Packet p        = c.readData();
                                Packet response = null;

                                if (p.getType().Equals(PacketType.LOGIN))
                                {
                                    LoginPacket packet = new LoginPacket(p);
                                    //MySqlDataReader r = Server.getSingleton().getDbManager().executeReader("select `id` from `users` where `user`=\"" + packet.getUser() + "\" and `pass`=\"" + packet.getPasswordHash() + "\"");
                                    MySqlDataReader r = Server.getSingleton().getDbManager().prepareCommand("select `id` from `users` where `user`=?User and `pass`=?Password;", KVFactory.obj("?User", packet.getUser()), KVFactory.obj("?Password", packet.getPasswordHash())).ExecuteReader();
                                    if (r.Read())
                                    {
                                        response = new LoginResponsePacket(LoginResponsePacket.LoginResponse.SUCCESS, r.GetInt32("id").ToString());
                                    }
                                    else
                                    {
                                        response = new LoginResponsePacket(LoginResponsePacket.LoginResponse.FAILURE);
                                    }
                                    r.Close();
                                }
                                else if (p.getType().Equals(PacketType.FETCH_DATA))
                                {
                                    FetchPacket packet = new FetchPacket(p);
                                    //MySqlDataReader reader = Server.getSingleton().getDbManager().executeReader("select * from `players` where `serverId`=(select `serverId` from `servers` where `serverName`=\"" + packet.getServer() + "\") and `playerName` like \"" + packet.getName() + "\";");
                                    MySqlDataReader reader = Server.getSingleton().getDbManager().prepareCommand("select * from `players` where `serverId`=(select `serverId` from `servers` where `serverName`=?Server) and `playerName` like ?Name;", KVFactory.obj("?Server", packet.getServer()), KVFactory.obj("?Name", packet.getName())).ExecuteReader();
                                    if (reader.Read())
                                    {
                                        response = new DataResponsePacket(reader.GetString("playerName"), packet.getServer(), reader.GetString("notes"), reader.GetString("violations"), UserViolationLevel.getViolationLevelFromByte(reader.GetByte("violationLevel")), reader.GetInt32("id").ToString(), reader.GetInt32("serverId").ToString());
                                    }
                                    else
                                    {
                                        reader.Close();
                                        //MySqlDataReader r = Server.getSingleton().getDbManager().executeReader("select `serverId` from `servers` where `serverName`=\"" + packet.getServer() + "\"");
                                        MySqlDataReader r = Server.getSingleton().getDbManager().prepareCommand("select `serverId` from `servers` where `serverName`=", KVFactory.obj("?Server", packet.getServer())).ExecuteReader();
                                        r.Read();
                                        int serverId = r.GetInt32("serverId");
                                        r.Close();
                                        //Server.getSingleton().getDbManager().executeNonQuery("insert into `players` (`serverId`, `playerName`, `notes`, `violations`, `violationLevel`) values(" + serverId + ", \"" + packet.getName() + "\", \"\", \"\", " + UserViolationLevel.GOOD.getByteIdentity() + ")");
                                        Server.getSingleton().getDbManager().prepareCommand("insert into `players` (`serverId`, `playerName`, `notes`, `violations`, `violationLevel`) values(?ServerId, ?Name, ?Notes, ?Violations, ?ViolationLevel);", KVFactory.obj("?ServerId", serverId), KVFactory.obj("?Name", packet.getName()), KVFactory.obj("?Notes", ""), KVFactory.obj("?Violations", ""), KVFactory.obj("?ViolationLevel", UserViolationLevel.GOOD.getByteIdentity())).ExecuteNonQuery();
                                        //MySqlDataReader z = Server.getSingleton().getDbManager().executeReader("select `id`,`serverId` from `players` where `serverId`=" + serverId + " and `playerName`=\"" + packet.getName() + "\"");
                                        MySqlDataReader z = Server.getSingleton().getDbManager().prepareCommand("select `id`,`serverId` from `players` where `serverId`=" + serverId + " and `playerName`=\"" + packet.getName() + "\"").ExecuteReader();
                                        z.Read();
                                        response = new DataResponsePacket(packet.getName(), packet.getServer(), "", "", UserViolationLevel.GOOD, z.GetInt32("id").ToString(), z.GetInt32("serverId").ToString());
                                        z.Close();
                                    }
                                    reader.Close();
                                }
                                else if (p.getType().Equals(PacketType.LIST_REQUEST))
                                {
                                    List <string>   servers = new List <string>();
                                    MySqlDataReader reader  = Server.getSingleton().getDbManager().executeReader("select * from `servers`");
                                    while (reader.Read())
                                    {
                                        servers.Add(reader.GetString("serverName"));
                                    }
                                    response = new ServerListResponsePacket(servers);
                                    reader.Close();
                                }
                                else if (p.getType().Equals(PacketType.REGISTRATION))
                                {
                                    RegistrationPacket packet = new RegistrationPacket(p);
                                    //MySqlDataReader reader = Server.getSingleton().getDbManager().executeReader("select `serverAccess` from `registrationKeys` where `key`=\"" + packet.getRegistrationKey() + "\"");
                                    MySqlDataReader reader = Server.getSingleton().getDbManager().prepareCommand("select `serverAccess` from `registrationKeys` where `key`=?Key", KVFactory.obj("?Key", packet.getRegistrationKey())).ExecuteReader();
                                    if (reader.Read())
                                    {
                                        //Server.getSingleton().getDbManager().executeScalar("insert into `users` (`firstName`, `lastName`, `user`, `pass`, `serverAccess`) values(\"" + packet.getFirstName() + "\", \"" + packet.getLastName() + "\", \"" + packet.getUsername() + "\", \"" + packet.getPasswordHash() + "\", \"" + reader.GetString("serverAccess") + "\");");
                                        Server.getSingleton().getDbManager().prepareCommand("insert into `users` (`firstName`, `lastName`, `user`, `pass`, `serverAccess`) values(?FirstName, ?LastName, ?Username, ?Password, ?AccessString);", new KeyValuePair <string, object>("?", packet.getFirstName()), new KeyValuePair <string, object>("?", packet.getLastName()), new KeyValuePair <string, object>("?", packet.getPasswordHash()), new KeyValuePair <string, object>("?", reader.GetString("serverAccess"))).ExecuteScalar();
                                    }
                                }
                                else if (p.getType().Equals(PacketType.DATA_UPDATE))
                                {
                                    DataUpdatePacket packet = new DataUpdatePacket(p);
                                    //Server.getSingleton().getDbManager().executeNonQuery("update `players` set `playerName`=\"" + packet.getPlayer() + "\", `notes`=\"" + packet.getNotes() + "\", `violations`=\"" + packet.getViolations() + "\", `violationLevel`=" + packet.getViolationLevel().getByteIdentity() + " where `id`=" + packet.getID() + ";");
                                    Server.getSingleton().getDbManager().prepareCommand("update `players` set `playerName`=?Player, `notes`=?Notes, `violations`=?Violations, `violationLevel`=?ViolationLevel where `id`=?Id;", KVFactory.obj("?Player", packet.getPlayer()), KVFactory.obj("?Notes", packet.getNotes()), KVFactory.obj("?Violations", packet.getViolations()), KVFactory.obj("?ViolationLevel", packet.getViolationLevel().getByteIdentity()), KVFactory.obj("?Id", packet.getID())).ExecuteNonQuery();
                                }
                                else if (p.getType().Equals(PacketType.ATTACHMENT_LIST_REQ))
                                {
                                    AttachmentListRequestPacket packet      = new AttachmentListRequestPacket(p);
                                    List <Attachment>           attachments = new List <Attachment>();
                                    MySqlDataReader             r           = Server.getSingleton().getDbManager().prepareCommand("select `screenshotId`,`uploadDate`,`uploadingUserId` from `screenshots` where `playerId`=?PlayerId and `serverId`=?ServerId",
                                                                                                                                  KVFactory.obj("?PlayerId", packet.getPlayerId()),
                                                                                                                                  KVFactory.obj("?ServerId", packet.getServerId())).ExecuteReader();

                                    while (r.Read())
                                    {
                                        attachments.Add(new Attachment(r.GetDateTime("uploadDate"), r.GetInt32("screenshotId").ToString(), r.GetInt32("uploadingUserId").ToString()));
                                    }
                                    response = new AttachmentListResponsePacket(attachments);
                                    r.Close();
                                }
                                else if (p.getType().Equals(PacketType.UPLOAD_ATTACHMENT))
                                {
                                    UploadAttachmentPacket packet = new UploadAttachmentPacket(p);
                                    MySqlCommand           cmd    = Server.getSingleton().getDbManager().prepareCommand("insert into `screenshots` (`playerId`, `serverId`, `data`, `uploadDate`, `uploadingUserId`, `dataLength`) values(?playerId, ?serverId, ?attachmentData, ?dateTime, ?userId)",
                                                                                                                        KVFactory.obj("?PlayerId", packet.getPlayerId()),
                                                                                                                        KVFactory.obj("?ServerId", packet.getServerId()),
                                                                                                                        KVFactory.obj("?AttachmentData", packet.getAttachmentData()),
                                                                                                                        KVFactory.obj("?dateTime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
                                                                                                                        KVFactory.obj("?userId", packet.getUserId()));

                                    cmd.ExecuteNonQuery();
                                }
                                else if (p.getType().Equals(PacketType.ATTACHMENT_REQUEST))
                                {
                                    AttachmentRequestPacket packet = new AttachmentRequestPacket(p);
                                    MySqlDataReader         r      = Server.getSingleton().getDbManager().executeReader("select `data`,`dataLength` from `screenshots` where `screenshotId`=" + packet.getId());
                                    r.Read();
                                    byte[] buffer = (byte[])r.GetValue(0);
                                    response = new AttachmentResponsePacket(buffer);
                                    r.Close();
                                }
                                if (response != null)
                                {
                                    response.sendData(c);
                                }
                            }
                        } catch (InvalidPacketException e) {
                            Server.getLogger().error(e.Message);
                        }
                    }
                }
                Thread.Sleep(SLEEP_DURATION);
            }
        }