Beispiel #1
0
        private static async void OnCheckVersion(C_CHECK_VERSION p)
        {
            var opcPath = Path.Combine(App.DataPath, $"opcodes/protocol.{p.Versions[0]}.map").Replace("\\", "/");

            if (!File.Exists(opcPath))
            {
                if (Sniffer is ToolboxSniffer tbs)
                {
                    if (!Directory.Exists(Path.Combine(App.DataPath, "opcodes")))
                    {
                        Directory.CreateDirectory(Path.Combine(App.DataPath, "opcodes"));
                    }
                    if (!await tbs.ControlConnection.DumpMap(opcPath, "protocol"))
                    {
                        TccMessageBox.Show(SR.UnknownClientVersion(p.Versions[0]), MessageBoxType.Error);
                        App.Close();
                        return;
                    }
                }
                else
                {
                    if (OpcodeDownloader.DownloadOpcodesIfNotExist(p.Versions[0], Path.Combine(App.DataPath, "opcodes/")))
                    {
                        return;
                    }
                    TccMessageBox.Show(SR.UnknownClientVersion(p.Versions[0]), MessageBoxType.Error);
                    App.Close();
                    return;
                }
            }

            OpCodeNamer opcNamer;

            try
            {
                opcNamer = new OpCodeNamer(opcPath);
            }
            catch (Exception ex)
            {
                switch (ex)
                {
                case OverflowException _:
                case ArgumentException _:
                    TccMessageBox.Show(SR.InvalidOpcodeFile(ex.Message), MessageBoxType.Error);
                    Log.F(ex.ToString());
                    App.Close();
                    break;
                }
                return;
            }

            Factory.Set(p.Versions[0], opcNamer);
            Sniffer.Connected = true;
        }
 public static void HandleCheckVersion(C_CHECK_VERSION p)
 {
     OpcodeDownloader.DownloadIfNotExist(p.Versions[0], Path.Combine(App.DataPath, "opcodes/"));
     if (!File.Exists(Path.Combine(App.DataPath, $"opcodes/protocol.{p.Versions[0]}.map")))
     {
         TccMessageBox.Show("Unknown client version: " + p.Versions[0], MessageBoxType.Error);
         App.CloseApp();
         return;
     }
     var opcNamer = new OpCodeNamer(Path.Combine(App.DataPath, $"opcodes/protocol.{p.Versions[0]}.map"));
     PacketAnalyzer.Factory = new MessageFactory(p.Versions[0], opcNamer)
     {
         SystemMessageNamer = new OpCodeNamer(Path.Combine(App.DataPath, $"opcodes/sysmsg.{PacketAnalyzer.Factory.ReleaseVersion}.map"))
     };
     TeraSniffer.Instance.Connected = true;
 }