private static void CheckClient(object sender, ClientIdT clid) { var cl = (Ts3FullClient)sender; ClientUidT cluid = Clientlib.ClientGetUidFromClid(cl, clid); Console.WriteLine($"clid={clid} cluid={cluid}"); if (done.Contains(cluid)) { return; } var dbid = uint.Parse(cl.Send("clientgetdbidfromuid", new CommandParameter("cluid", cluid)).FirstOrDefault()["cldbid"]); var friend = TSSettings.isFriend(cluid); Console.WriteLine($"#{clid} dbid={dbid} cluid={cluid} friend={friend}"); switch (friend) { case FriendStatus.Blocked: Clientlib.SetAllChannelGroup(cl, banCGID, dbid, cids); break; case FriendStatus.Friend: Clientlib.SetAllChannelGroup(cl, modCGID, dbid, cids); break; default: break; } done.Add(cluid); }
static void Dispose() { if (isExit) { return; } isExit = true; lock (clients) { var _clients = clients.ToArray(); foreach (var client in _clients) { client.OnConnected -= OnConnected; client.OnDisconnected -= OnDisconnected; client.OnErrorEvent -= OnErrorEvent; client.OnTextMessageReceived -= OnTextMessageReceived; client.OnClientMoved -= OnClientMoved; client.OnClientEnterView -= OnClientEnterView; client?.Disconnect(); Thread.Sleep(int.Parse(cfg["general"]["DisconnectSleepMS"])); } } TSSettings.CloseDB(); }
static void Main() { AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit); clients = new List <Ts3FullClient>(); channels = File.ReadAllLines(chanfile); var parser = new FileIniDataParser(); cfg = parser.ReadFile(cfgfile); RandomNick rndnick = new RandomNick(); rndnick.Init(); TSSettings.OpenDB(); Console.CancelKeyPress += (s, e) => { if (e.SpecialKey == ConsoleSpecialKey.ControlC) { e.Cancel = true; Dispose(); Environment.Exit(0); } }; con.Address = cfg["general"]["Address"]; con.Password = cfg["general"]["ServerPassword"]; ownerUID = cfg["general"]["OwnerUID"]; /* * adminCGID = uint.Parse(cfg["general"]["adminCGID"]); * modCGID = uint.Parse(cfg["general"]["modCGID"]); * banCGID = uint.Parse(cfg["general"]["banCGID"]); */ if (!File.Exists(idfile)) { using (File.Create(idfile)) { } } ids = File.ReadAllLines(idfile); for (int i = 0; i < channels.Length; i++) { if (isExit) { return; } con.Username = rndnick.GetRandomNick(); //cfg["general"]["Nickname"]; var client = new Ts3FullClient(EventDispatchType.DoubleThread); client.OnConnected += OnConnected; client.OnDisconnected += OnDisconnected; client.OnErrorEvent += OnErrorEvent; client.OnTextMessageReceived += OnTextMessageReceived; client.OnClientMoved += OnClientMoved; client.OnClientEnterView += OnClientEnterView; var _identity = ids.Select(x => x.Split(',')).ToList(); IdentityData ID; try { ID = Ts3Crypt.LoadIdentity(_identity[i][0], ulong.Parse(_identity[i][1])); if (i > 0) { Thread.Sleep(int.Parse(cfg["general"]["ConnectSleepMS"])); } } catch (Exception) { ID = Ts3Crypt.GenerateNewIdentity(int.Parse(cfg["general"]["MinLVL"])); File.AppendAllText(idfile, ID.PrivateKeyString + "," + ID.ValidKeyOffset + "\r\n"); } Console.WriteLine("#" + i + " UID: " + ID.ClientUid); con.Identity = ID; //Array values = Enum.GetValues(typeof(VersionSign)); //Random random = new Random(); //con.VersionSign = (VersionSign)values.GetValue(random.Next(values.Length)); //var t = typeof(VersionSign).GetFields(); con.VersionSign = VersionSign.VER_WIN_3_UNKNOWN; //con.VersionSign = new VersionSign("YaTQA-3.9pre [Build: 32503680000]", "ServerQuery", String.Empty); con.HWID = $"{Clientlib.RandomString(32)},{Clientlib.RandomString(32)}"; Console.WriteLine("#" + i + " HWID: " + con.HWID); client.Connect(con); clients.Add(client); } AntiAFK = new Timer(OnTick, "on", 114 * 10000, 114 * 10000); Console.WriteLine("End"); Console.ReadLine(); Dispose(); }