private void DesktopDlg_FormClosing(object sender, FormClosingEventArgs e) { if (unsubscribe_cmdid == 0) { if (MessageBox.Show("Do you wish to stop receiving desktops from this user?", "Close Desktop", MessageBoxButtons.YesNo) == DialogResult.Yes) { //we wait for the server to repond to us that we'll no //longer receive video from this user. ttclient.OnCmdProcessing += new TeamTalk.CommandProcessing(ttclient_OnCmdProcessing); //figure out how we're subscribing to video Subscription subtype = Subscription.SUBSCRIBE_NONE; User user = new User(); if (ttclient.GetUser(this.userid, ref user)) { if ((user.uLocalSubscriptions & Subscription.SUBSCRIBE_DESKTOP) == Subscription.SUBSCRIBE_DESKTOP) subtype = Subscription.SUBSCRIBE_DESKTOP; else if ((user.uLocalSubscriptions & Subscription.SUBSCRIBE_INTERCEPT_DESKTOP) == Subscription.SUBSCRIBE_INTERCEPT_DESKTOP) subtype = Subscription.SUBSCRIBE_INTERCEPT_DESKTOP; } //store the command ID we get back from the client instance unsubscribe_cmdid = ttclient.DoUnsubscribe(this.userid, subtype); e.Cancel = true; } else e.Cancel = true; } else ttclient.OnUserDesktopWindow -= ttclient_OnUserDesktopWindow; }
void ttserver_OnUserCreateUserAccount(ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, ref UserAccount lpUserAccount) { String str = String.Format("User {0} is creating useraccount {1}", lpUser.szUsername, lpUserAccount.szUsername); Console.WriteLine(str); switch (lpUser.uUserType) { case UserType.USERTYPE_ADMIN: // remove existing user account UserAccount ua = new UserAccount(); foreach (UserAccount u in useraccounts) { if (u.szUsername.Equals(lpUserAccount.szUsername)) ua = u; } useraccounts.Remove(ua); // add user account to list useraccounts.Add(lpUserAccount); lpClientErrorMsg.nErrorNo = (int)ClientError.SUCCESS; break; case UserType.USERTYPE_DEFAULT: lpClientErrorMsg.nErrorNo = (int)ClientError.CMDERR_NOT_AUTHORIZED; lpClientErrorMsg.szErrorMsg = "Not allowed!"; break; default: break; } }
public void NewMessage(TextMessage msg) { User user = new User(); if (!ttclient.GetUser(msg.nFromUserID, ref user)) return; this.Text = "Message - " + user.szNickname; historyTextBox.AppendText("<" + user.szNickname + "> " + msg.szMessage + Environment.NewLine); }
public VideoDlg(TeamTalk tt, int userid) { ttclient = tt; this.userid = userid; InitializeComponent(); this.CenterToScreen(); User user = new User(); if (userid > 0 && ttclient.GetUser(userid, ref user)) this.Text = "Video - " + user.szNickname; else this.Text = "Local Video"; ttclient.OnUserVideoCapture += new TeamTalk.UserVideoFrame(ttclient_OnUserVideoFrame); }
void ttserver_OnUserAddServerBanIPAddress(ref ClientErrorMsg lpClientErrorMsg, ref User lpBanner, string szIPAddress) { UserAccount ua = getUserAccount(lpBanner.szUsername); if ((ua.uUserRights & UserRight.USERRIGHT_BAN_USERS) != 0) { lpClientErrorMsg.nErrorNo = (int)ClientError.SUCCESS; banned_ipaddr.Add(szIPAddress); } else { lpClientErrorMsg.nErrorNo = (int)ClientError.CMDERR_NOT_AUTHORIZED; lpClientErrorMsg.szErrorMsg = "Not allowed!"; } }
void ttclient_OnCmdUserLoggedIn(User user) { ListViewItem item = new ListViewItem(); item.Text = user.nUserID.ToString(); item.SubItems.Add(user.szNickname); item.SubItems.Add(user.szUsername); string chanpath = ""; if (user.nChannelID > 0) ttclient.GetChannelPath(user.nChannelID, ref chanpath); item.SubItems.Add(chanpath); item.SubItems.Add(user.szIPAddress); item.SubItems.Add(user.szStatusMsg); item.SubItems.Add((user.uUserType & UserType.USERTYPE_ADMIN) == UserType.USERTYPE_ADMIN ? "Admin" : "Default"); item.SubItems.Add(user.nUserData.ToString()); item.Tag = user.nUserID; listview.Items.Add(item); }
void UpdateUser() { User user = new User(); if (ttclient.GetUser(userid, ref user)) { useridTextBox.Text = user.nUserID.ToString(); nicknameTextBox.Text = user.szNickname; usernameTextBox.Text = user.szUsername; statusmodeTextBox.Text = user.nStatusMode.ToString(); statusmsgTextBox.Text = user.szStatusMsg; usertypeTextBox.Text = (user.uUserType & UserType.USERTYPE_ADMIN) == UserType.USERTYPE_ADMIN ? "Admin" : "Default"; versionTextBox.Text = user.uVersion.ToString(); } UserStatistics stats = new UserStatistics(); if (ttclient.GetUserStatistics(userid, ref stats)) { audiolossTextBox.Text = String.Format("{0}/{1}", stats.nVoicePacketsLost, stats.nVoicePacketsRecv + stats.nVoicePacketsLost); videolossTextBox.Text = String.Format("{0}/{1}", stats.nVideoCaptureFramesLost, stats.nVideoCaptureFramesRecv + stats.nVideoCaptureFramesLost); } }
void ttclient_OnCmdUserTextMessage(TextMessage textmessage) { switch (textmessage.nMsgType) { case TextMsgType.MSGTYPE_USER : MessageDlg dlg; if (msgdialogs.TryGetValue(textmessage.nFromUserID, out dlg)) { dlg.NewMessage(textmessage); if (!dlg.Visible) dlg.Show(); } else { dlg = new MessageDlg(ttclient, textmessage.nFromUserID); dlg.FormClosed += new FormClosedEventHandler(dlg_MessageDlgClosed); dlg.NewMessage(textmessage); dlg.Show(); msgdialogs.Add(textmessage.nFromUserID, dlg); } break; case TextMsgType.MSGTYPE_CHANNEL: { User user = new User(); if (ttclient.GetUser(textmessage.nFromUserID, ref user)) chatTextBox.AppendText("<" + user.szNickname + "> " + textmessage.szMessage + Environment.NewLine); break; } case TextMsgType.MSGTYPE_BROADCAST: { User user = new User(); if (ttclient.GetUser(textmessage.nFromUserID, ref user)) { MessageBox.Show("Broadcast message from " + user.szNickname + Environment.NewLine + textmessage.szMessage); } } break; case TextMsgType.MSGTYPE_CUSTOM: { } break; } }
void ttclient_OnCmdUserLeftChannel(User user) { if (user.nChannelID == ttclient.GetMyChannelID()) AddStatusMessage(user.szNickname + " left channel"); UpdateControls(); //if user has sent desktopinput ensure keys are released closeUserDesktopInput(user.nUserID); }
void ttclient_OnCmdUserJoinedChannel(User user) { //set default gain level for user (software gain volume) if (user.nChannelID == ttclient.GetMyChannelID()) AddStatusMessage(user.szNickname + " joined channel"); UpdateControls(); }
void ttclient_OnCmdUserJoinedChannel(User user) { if(user.nUserID == ttclient.UserID) listview.Items.Clear(); //ensure we don't get dublicates if joining again }
void ttserver_OnChannelUpdated(ref Channel lpChannel, ref User lpUser) { String str = String.Format("Channel #{0} updated", lpChannel.nChannelID); Console.WriteLine(str); }
private void subscribeCommon(int userid, Subscription sub) { User user = new User(); if (!ttclient.GetUser(userid, ref user)) return; if ((user.uLocalSubscriptions & sub) == sub) ttclient.DoUnsubscribe(userid, sub); else ttclient.DoSubscribe(userid, sub); }
private void kickToolStripMenuItem_Click(object sender, EventArgs e) { User user = new User(); if (!ttclient.GetUser(channels.GetSelectedUser(), ref user)) return; //pass 0 as 'nChannelID' to kick from server instead of channel ttclient.DoKickUser(user.nUserID, user.nChannelID); }
private void mutevoiceToolStripMenuItem_Click(object sender, EventArgs e) { User user = new User(); if(ttclient.GetUser(channels.GetSelectedUser(), ref user)) ttclient.SetUserMute(user.nUserID, StreamType.STREAMTYPE_VOICE, !user.uUserState.HasFlag(UserState.USERSTATE_MUTE_VOICE)); }
/** * @brief Get the user with the specified ID. * * @param nUserID The ID of the user to extract. * @param lpUser A preallocated #BearWare.User struct. * @see GetUserByUsername */ public bool GetUser(int nUserID, ref User lpUser) { return TTDLL.TT_GetUser(m_ttInst, nUserID, ref lpUser); }
/** * @brief Get the user with the specified username. * * Remember to take into account that multiple users can log in * with the same account if ::USERRIGHT_MULTI_LOGIN is specified. * * @param szUsername The user's username (from #BearWare.UserAccount). * @param lpUser A preallocated #BearWare.User struct. */ public bool GetUserByUsername(string szUsername, ref User lpUser) { return TTDLL.TT_GetUserByUsername(m_ttInst, szUsername, ref lpUser); }
/** * @brief Get all the users on the server. * * If only users in a specific channel is needed call * TeamTalk.GetChannelUsers() * * @param lpUsers An output array of #BearWare.User which will receive the * users on the server. * @see GetChannelUsers * @see GetUser */ public bool GetServerUsers(out User[] lpUsers) { int count = 0; bool b = TTDLL.TT_GetServerUsers_NULL(m_ttInst, IntPtr.Zero, ref count); User[] users = new User[count]; b = TTDLL.TT_GetServerUsers(m_ttInst, users, ref count); lpUsers = b ? users : null; return b; }
/** * @brief Get the IDs of all users in a channel. * * @param nChannelID The channel's ID. * @param lpUsers An output array of User which will receive the * users in the channel. * @see BearWare.User * @see GetChannel */ public bool GetChannelUsers(int nChannelID, out User[] lpUsers) { int count = 0; bool b = TTDLL.TT_GetChannelUsers_NULL(m_ttInst, nChannelID, IntPtr.Zero, ref count); User[] users = new User[count]; b = TTDLL.TT_GetChannelUsers(m_ttInst, nChannelID, users, ref count); lpUsers = b ? users : null; return b; }
void ttserver_OnSaveServerConfig(ref User lpUser) { String str = String.Format("Server settings saved"); Console.WriteLine(str); }
void ttclient_OnUserRecordMediaFile(int nUserID, MediaFileInfo mediafileinfo) { User user = new User(); ttclient.GetUser(nUserID, ref user); switch (mediafileinfo.nStatus) { case MediaFileStatus.MFS_STARTED : AddStatusMessage("Start audio file for " + user.szNickname); break; case MediaFileStatus.MFS_FINISHED: AddStatusMessage("Finished audio file for " + user.szNickname); break; case MediaFileStatus.MFS_ERROR: AddStatusMessage("Error writing audio file for " + user.szNickname); break; case MediaFileStatus.MFS_ABORTED: AddStatusMessage("Aborted audio file for " + user.szNickname); break; } }
void ttserver_OnFileUploaded(ref RemoteFile lpRemoteFile, ref User lpUser) { String str = String.Format("File {0} uploaded to channel #{1}", lpRemoteFile.szFileName, lpRemoteFile.nChannelID); Console.WriteLine(str); }
private void opDeOpToolStripMenuItem_Click(object sender, EventArgs e) { User user = new User(); if (!ttclient.GetUser(channels.GetSelectedUser(), ref user)) return; ttclient.DoChannelOp(user.nUserID, user.nChannelID, !ttclient.IsChannelOperator(user.nUserID, user.nChannelID)); }
private void treeView1_DragDrop(object sender, DragEventArgs e) { Point p = ((TreeView)sender).PointToClient(new Point(e.X, e.Y)); TreeNode targetNode = ((TreeView)sender).GetNodeAt(p); if (targetNode == null) return; int chanid = 0; switch (targetNode.ImageIndex) { case (int)ChannelsView.ImageIndex.CHANNEL: chanid = (int)targetNode.Tag; break; case (int)ChannelsView.ImageIndex.USER: User user = new User(); if(ttclient.GetUser((int)targetNode.Tag, ref user)) chanid = user.nChannelID; break; } if (chanid == 0) return; TreeNode sourceNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); ttclient.DoMoveUser((int)sourceNode.Tag, chanid); }
private void kickAndBanToolStripMenuItem_Click(object sender, EventArgs e) { User user = new User(); if (!ttclient.GetUser(channels.GetSelectedUser(), ref user)) return; //Req. UserRight.USERRIGHT_BAN_USERS //Req. UserRight.USERRIGHT_KICK_USERS ttclient.DoBanUser(user.nUserID, 0); ttclient.DoKickUser(user.nUserID, user.nChannelID); }
void UpdateControls() { ClientFlag flags = ttclient.Flags; UserType myusertype = ttclient.UserType; ServerProperties srvprop = new ServerProperties(); if ((flags & ClientFlag.CLIENT_CONNECTED) != ClientFlag.CLIENT_CONNECTED) ResetControls(); ttclient.GetServerProperties(ref srvprop); int userid = channels.GetSelectedUser(); int channelid = channels.GetSelectedChannel(); connectToolStripMenuItem.Text = ((flags & ClientFlag.CLIENT_CONNECTED) == ClientFlag.CLIENT_CONNECTED || (flags & ClientFlag.CLIENT_CONNECTING) == ClientFlag.CLIENT_CONNECTING) ? "Disconnect" : "Connect"; changeNicknameToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); changeStatusModeToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); enableDesktopSharingToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); enableDesktopSharingToolStripMenuItem.Checked = flags.HasFlag(ClientFlag.CLIENT_DESKTOP_ACTIVE); muteAllToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_SNDOUTPUT_READY); muteAllToolStripMenuItem.Checked = flags.HasFlag(ClientFlag.CLIENT_SNDOUTPUT_MUTE); storeAudioToDiskToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); storeAudioToDiskToolStripMenuItem.Checked = settings.audiofolder.Length > 0; User user = new User(); if (userid > 0 && ttclient.GetUser(userid, ref user)) { Debug.Assert((flags & ClientFlag.CLIENT_AUTHORIZED) == ClientFlag.CLIENT_AUTHORIZED); viewUserInformationToolStripMenuItem.Enabled = true; sendMessageToolStripMenuItem.Enabled = true; opDeOpToolStripMenuItem.Enabled = true; mutevoiceToolStripMenuItem.Enabled = true; mutevoiceToolStripMenuItem.Checked = user.uUserState.HasFlag(UserState.USERSTATE_MUTE_VOICE); kickToolStripMenuItem.Enabled = true; kickAndBanToolStripMenuItem.Enabled = true; subscriptionsToolStripMenuItem.Enabled = true; allowDesktopAccessToolStripMenuItem.Enabled = true; allowDesktopAccessToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_DESKTOPINPUT); userMessagesToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_USER_MSG); channelMessagesToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_CHANNEL_MSG); broadcastMessagesToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_BROADCAST_MSG); voiceToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_VOICE); videocaptureToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_VIDEOCAPTURE); desktopToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_DESKTOP); desktopAccessToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_DESKTOPINPUT); interceptUserMessagesToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_INTERCEPT_USER_MSG); interceptUserMessagesToolStripMenuItem.Enabled = myusertype.HasFlag(UserType.USERTYPE_ADMIN); interceptChannelMessagesToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_INTERCEPT_CHANNEL_MSG); interceptChannelMessagesToolStripMenuItem.Enabled = myusertype.HasFlag(UserType.USERTYPE_ADMIN); interceptvoiceToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_INTERCEPT_VOICE); interceptvoiceToolStripMenuItem.Enabled = myusertype.HasFlag(UserType.USERTYPE_ADMIN); interceptvideocaptureToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_INTERCEPT_VIDEOCAPTURE); interceptvideocaptureToolStripMenuItem.Enabled = myusertype.HasFlag(UserType.USERTYPE_ADMIN); interceptDesktopToolStripMenuItem.Checked = user.uLocalSubscriptions.HasFlag(Subscription.SUBSCRIBE_INTERCEPT_DESKTOP); interceptDesktopToolStripMenuItem.Enabled = myusertype.HasFlag(UserType.USERTYPE_ADMIN); advancedToolStripMenuItem.Enabled = true; Channel userchan = new Channel(); if (ttclient.GetChannel(user.nChannelID, ref userchan)) { allowVoiceTransmissionToolStripMenuItem.Checked = userchan.GetTransmitStreamTypes(user.nUserID).HasFlag(StreamType.STREAMTYPE_VOICE); allowVideoTransmissionToolStripMenuItem.Checked = userchan.GetTransmitStreamTypes(user.nUserID).HasFlag(StreamType.STREAMTYPE_VIDEOCAPTURE); allowVoiceTransmissionToolStripMenuItem.Enabled = userchan.uChannelType.HasFlag(ChannelType.CHANNEL_CLASSROOM); allowVideoTransmissionToolStripMenuItem.Enabled = userchan.uChannelType.HasFlag(ChannelType.CHANNEL_CLASSROOM); } } else { viewUserInformationToolStripMenuItem.Enabled = false; sendMessageToolStripMenuItem.Enabled = false; opDeOpToolStripMenuItem.Enabled = false; mutevoiceToolStripMenuItem.Enabled = false; kickToolStripMenuItem.Enabled = false; kickAndBanToolStripMenuItem.Enabled = false; allowDesktopAccessToolStripMenuItem.Enabled = false; subscriptionsToolStripMenuItem.Enabled = false; advancedToolStripMenuItem.Enabled = false; allowVoiceTransmissionToolStripMenuItem.Enabled = false; allowVideoTransmissionToolStripMenuItem.Enabled = false; } Channel chan = new Channel(); if (channelid > 0 && ttclient.GetChannel(channelid, ref chan)) { Debug.Assert((flags & ClientFlag.CLIENT_AUTHORIZED) == ClientFlag.CLIENT_AUTHORIZED); joinChannelToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); joinNewChannelToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); viewChannelInformationToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); createChannelToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); updateChannelToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); deleteChannelToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); streamMediaFileToChannelToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); } else { joinChannelToolStripMenuItem.Enabled = false; joinNewChannelToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); viewChannelInformationToolStripMenuItem.Enabled = false; createChannelToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); updateChannelToolStripMenuItem.Enabled = false; deleteChannelToolStripMenuItem.Enabled = false; streamMediaFileToChannelToolStripMenuItem.Enabled = false; } listUserAccountsToolStripMenuItem.Enabled = myusertype.HasFlag(UserType.USERTYPE_ADMIN); serverPropertiesToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); saveConfigurationToolStripMenuItem.Enabled = myusertype.HasFlag(UserType.USERTYPE_ADMIN); broadcastTestMessageToolStripMenuItem.Enabled = flags.HasFlag(ClientFlag.CLIENT_AUTHORIZED); serverStatisticsToolStripMenuItem.Enabled = myusertype.HasFlag(UserType.USERTYPE_ADMIN); }
void ttserver_OnUserLogin(ref ClientErrorMsg lpClientErrorMsg, ref User lpUser, ref UserAccount lpUserAccount) { String str = String.Format("Login attempt from IP {0}, username={1}, password={2}", lpUser.szIPAddress, lpUserAccount.szUsername, lpUserAccount.szPassword); Console.WriteLine(str); foreach (UserAccount u in useraccounts) { // validate user account if (u.szUsername.Equals(lpUserAccount.szUsername) && u.szPassword.Equals(lpUserAccount.szPassword)) { // manually copy every field lpUserAccount.szUsername = u.szUsername; lpUserAccount.szPassword = u.szPassword; lpUserAccount.uUserRights = u.uUserRights; lpUserAccount.uUserType = UserType.USERTYPE_ADMIN; lpClientErrorMsg.nErrorNo = (int)ClientError.SUCCESS; return; } } // login rejected lpClientErrorMsg.nErrorNo = (int)ClientError.CMDERR_INVALID_ACCOUNT; lpClientErrorMsg.szErrorMsg = "Invalid username or password"; }
void ttclient_OnCmdUserLoggedIn(User user) { //store audio to disk if an audio-folder has been specified if (!settings.muxed_audio_file && settings.audiofolder.Length > 0) ttclient.SetUserMediaStorageDir(user.nUserID, settings.audiofolder, "", settings.aff); }
private void allowVideoTransmissionToolStripMenuItem_Click(object sender, EventArgs e) { User user = new User(); Channel chan = new Channel(); if (ttclient.GetUser(channels.GetSelectedUser(), ref user) && ttclient.GetChannel(user.nChannelID, ref chan)) { if (allowVideoTransmissionToolStripMenuItem.Checked) { if (chan.GetTransmitStreamTypes(user.nUserID) == StreamType.STREAMTYPE_NONE && chan.GetTransmitUserCount() >= TeamTalk.TT_TRANSMITUSERS_MAX) MessageBox.Show("Maximum users to transmit is " + TeamTalk.TT_TRANSMITUSERS_MAX.ToString()); else chan.AddTransmitUser(user.nUserID, StreamType.STREAMTYPE_VIDEOCAPTURE); } else chan.RemoveTransmitUser(user.nUserID, StreamType.STREAMTYPE_VIDEOCAPTURE); ttclient.DoUpdateChannel(chan); } }
void ttserver_OnServerUpdated(ref ServerProperties lpServerProperties, ref User lpUser) { String str = String.Format("Server properties updated, name is now {0}", lpServerProperties.szServerName); Console.WriteLine(str); }