private async Task ConnectClient() { if (identity is null) { throw new InvalidOperationException(); } if (closed) { return; } TsVersionSigned?versionSign; if (!string.IsNullOrEmpty(config.Connect.ClientVersion.Build.Value)) { var versionConf = config.Connect.ClientVersion; versionSign = TsVersionSigned.TryParse(versionConf.Build, versionConf.Platform.Value, versionConf.Sign); if (versionSign is null) { Log.Warn("Invalid version sign, falling back to unknown :P"); versionSign = TsVersionSigned.VER_WIN_3_X_X; } } else if (Tools.IsLinux) { versionSign = TsVersionSigned.VER_LIN_3_X_X; } else { versionSign = TsVersionSigned.VER_WIN_3_X_X; } var connectionConfig = new ConnectionDataFull(config.Connect.Address, identity, versionSign: versionSign, username: config.Connect.Name, serverPassword: config.Connect.ServerPassword.Get(), defaultChannel: reconnectChannel?.ToPath() ?? config.Connect.Channel, defaultChannelPassword: config.Connect.ChannelPassword.Get(), logId: id); config.SaveWhenExists().UnwrapToLog(Log); if (!(await ts3FullClient.Connect(connectionConfig)).GetOk(out var error)) { Log.Error("Could not connect: {0}", error.ErrorFormat()); return; } Log.Info("Client connected."); reconnectCounter = 0; lastReconnect = null; await OnBotConnected.InvokeAsync(this); }
public Task ClientInit(string nickname, bool inputHardware, bool outputHardware, string defaultChannel, string defaultChannelPassword, string serverPassword, string metaData, string nicknamePhonetic, string defaultToken, string hwid, TsVersionSigned versionSign, ulong keyOffset) => SendNoResponsed(new TsCommand("clientinit") { { "client_nickname", nickname }, { "client_version", versionSign.Version }, { "client_platform", versionSign.Platform }, { "client_input_hardware", inputHardware }, { "client_output_hardware", outputHardware }, { "client_default_channel", defaultChannel }, { "client_default_channel_password", defaultChannelPassword }, // base64(sha1(pass)) { "client_server_password", serverPassword }, // base64(sha1(pass)) { "client_meta_data", metaData }, { "client_version_sign", versionSign.Sign }, { "client_key_offset", keyOffset }, { "client_nickname_phonetic", nicknamePhonetic }, { "client_default_token", defaultToken }, { "hwid", hwid }, });