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; }