|
If you would like to speak with one of our engineers, please Submit a Question or give us a call at the phone number here. In North America, To route your phone support request directly to a technical support engineer, call toll-free 1-888-382-1583 or 1-440-646-3434, select Option 3 (Technical Support), then select Option 5 (More Options). When prompted, enter the ThinManager Direct Dial Code 201. |
TermMon Demo Program Source: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
<pre> | <pre> | ||
using System; | using System; | ||
| Line 9: | Line 7: | ||
using System.Linq; | using System.Linq; | ||
using System.Text; | using System.Text; | ||
using System.IO; | |||
using System.Windows.Forms; | using System.Windows.Forms; | ||
using System.Reflection; | using System.Reflection; | ||
| Line 23: | Line 22: | ||
public partial class Form1 : Form | public partial class Form1 : Form | ||
{ | { | ||
String[] args = Environment.GetCommandLineArgs().Select(s => s.ToLowerInvariant()).ToArray(); | |||
String[] HelpList = { "-h", "/h", "-?", "/?", "help", "-help", "/help" }; | |||
String[] CommandList = { "reboot", "restart", "calibrate", "gotomainmenu", "switchtonextgroup", "switchtoprevgroup", "switchinstfailover", "changetermsecureuser", "logoffandchangetermsecureuser", "logofftermsecureuser", "disconnecttermsecureuser" }; | |||
int CommandCount = 0; | |||
string path = "", textOut = Environment.NewLine; | |||
bool gui = true; | |||
public Form1() | public Form1() | ||
{ | { | ||
InitializeComponent(); | InitializeComponent(); | ||
EnableControl(true); | if (args.Length > 1) gui = false; | ||
if (gui) | |||
{ | |||
// Enable the OverrideIP and Demo Control setions | |||
EnableControl(true); | |||
ChangeEnabled(false); | |||
// Set the connection state display to disconnected | |||
textBoxConnectionState.Text = "Disconnected"; | |||
textBoxConnectionState.BackColor = System.Drawing.Color.LightGray; | |||
// Get and display prigram version info | |||
Assembly a = Assembly.GetExecutingAssembly(); | |||
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(a.Location); | |||
labelVersion.Text = "Version " + fvi.ProductVersion; | |||
} | |||
else | |||
{ | |||
CommandCount = args.Length - 1; | |||
ParseArgs(); | |||
axTermMon.Enable(); | |||
timerConnectionTimeout.Enabled = true; | |||
timerRuntime.Enabled = true; | |||
} | |||
} | } | ||
// Parse any command line arguments. | |||
private void ParseArgs() | |||
{ | |||
for (int i = 0; i < args.Length; i++) | |||
{ | |||
if (CheckValidIP(args[i])) | |||
{ | |||
axTermMon.RunInSession = false; | |||
axTermMon.OverrideIP = args[i]; | |||
CommandCount--; | |||
} | |||
if (args[i].EndsWith(".txt")) | |||
{ | |||
path = args[i]; | |||
CommandCount--; | |||
} | |||
} | |||
if (args.Intersect(HelpList).Count() > 0) Help(); | |||
} | |||
private void Help() | |||
{ | |||
textOut = Environment.NewLine + "Usage:" + Environment.NewLine + Environment.NewLine | |||
+ "TermMon.exe [IPv4 Address (optional)] [Filename and Path (optional)] [Commands]" + Environment.NewLine + Environment.NewLine | |||
+ "Local Example: TermMon.exe TerminalName TerminalMAC"+ Environment.NewLine | |||
+ "Remote Example: TermMon.exe xxx.xxx.xxx.xxx C:\termmon.txt TerminalName TerminalMAC" + Environment.NewLine + Environment.NewLine | |||
+ "Arguments, Information:" + Environment.NewLine | |||
+ "\tConnectionState" + Environment.NewLine | |||
+ "\tTerminalName" + Environment.NewLine | |||
+ "\tTerminalIP" + Environment.NewLine | |||
+ "\tTerminalMAC" + Environment.NewLine | |||
+ "\tTerminalModel" + Environment.NewLine | |||
+ "\tTerminalFirmwareVersion" + Environment.NewLine | |||
+ "\tTerminalBootloaderVersion" + Environment.NewLine | |||
+ "\tTerminalWindowsUsername" + Environment.NewLine | |||
+ "\tTerminalServerGroupList" + Environment.NewLine | |||
+ "\tCurrentTerminalServerGroup" + Environment.NewLine | |||
+ "\tCurrentWindowsUsername" + Environment.NewLine | |||
+ "\tUserID" + Environment.NewLine | |||
+ "\tTermSecureUsername" + Environment.NewLine | |||
+ "\tTermSecureWindowsUsername" + Environment.NewLine | |||
+ "\tWatchdogTime" + Environment.NewLine | |||
+ "Arguments, Commands" + Environment.NewLine | |||
+ "\tReboot" + Environment.NewLine | |||
+ "\tRestart" + Environment.NewLine | |||
+ "\tCalibrate" + Environment.NewLine | |||
+ "\tGoToMainMenu" + Environment.NewLine | |||
+ "\tSwitchToNextGroup" + Environment.NewLine | |||
+ "\tSwitchToPrevGroup" + Environment.NewLine | |||
+ "\tSwitchInstFailover" + Environment.NewLine | |||
+ "\tChangeTermSecureUser" + Environment.NewLine | |||
+ "\tLogOffAndChangeTermSecureUser" + Environment.NewLine | |||
+ "\tLogOffTermSucureUser" + Environment.NewLine | |||
+ "\tDisconnectTermSecureUser" + Environment.NewLine | |||
+ "\tChangeTerminalServerGroup" + Environment.NewLine | |||
+ "\tTermSecureCheckAccess" + Environment.NewLine; | |||
Exit(); | |||
} | |||
// Enable 3 second timer after the demo has been enabled. | |||
// This provides a timeout in case it can't conenct to the control. | |||
private void WaitForConnection() | private void WaitForConnection() | ||
{ | { | ||
| Line 43: | Line 132: | ||
} | } | ||
// Enables/disables the OverrideIP and demo control sections. | |||
private void EnableControl(bool enabled) | private void EnableControl(bool enabled) | ||
{ | { | ||
| Line 49: | Line 139: | ||
} | } | ||
// Enables/disables all other sections. | |||
// These sections are only available when connected to the control | |||
private void ChangeEnabled(bool enabled) | private void ChangeEnabled(bool enabled) | ||
{ | { | ||
| Line 59: | Line 151: | ||
groupBoxCameraOverlay.Enabled = enabled; | groupBoxCameraOverlay.Enabled = enabled; | ||
groupBoxActiveScreen.Enabled = enabled; | groupBoxActiveScreen.Enabled = enabled; | ||
groupBoxLocation.Enabled = enabled; | |||
groupBoxWatchdog.Enabled = enabled; | groupBoxWatchdog.Enabled = enabled; | ||
groupBoxBiometric.Enabled = enabled; | |||
buttonEnable.Enabled = !enabled; | buttonEnable.Enabled = !enabled; | ||
buttonDisable.Enabled = enabled; | buttonDisable.Enabled = enabled; | ||
} | } | ||
// Checks that the IP address in the OverrideIP section is a valid format | |||
private bool CheckValidIP(string IPAddress) | private bool CheckValidIP(string IPAddress) | ||
{ | { | ||
| Line 69: | Line 164: | ||
if (System.Net.IPAddress.TryParse(IPAddress, out address)) | if (System.Net.IPAddress.TryParse(IPAddress, out address)) | ||
{ | { | ||
if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) | if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) return true; | ||
} | } | ||
if (gui) MessageBox.Show("Please use a valid (xxx.xxx.xxx.xxx) IPv4 address"); | |||
return false; | return false; | ||
} | } | ||
// returns the corresponding string for a result code. | |||
private string ResultLookup(int res) | private string ResultLookup(int res) | ||
{ | { | ||
| Line 120: | Line 206: | ||
return "No Windows Password"; | return "No Windows Password"; | ||
case (short)TERMMONLib.TermMonConst.NoWindowsUsername: | case (short)TERMMONLib.TermMonConst.NoWindowsUsername: | ||
return " | return "No Windows Username"; | ||
case (short)TERMMONLib.TermMonConst.PasswordChangeReq: | case (short)TERMMONLib.TermMonConst.PasswordChangeReq: | ||
return "Password Change Required"; | return "Password Change Required"; | ||
| Line 128: | Line 214: | ||
} | } | ||
private void | // 3 second timer for connection timeout. | ||
private void timerWaitForConnection_Tick(object sender, EventArgs e) | |||
{ | { | ||
axTermMon.Disable(); | axTermMon.Disable(); | ||
| Line 154: | Line 241: | ||
} | } | ||
private void timerConnectionTimeout_Tick(object sender, EventArgs e) | |||
{ | |||
Console.WriteLine("Connection Failed"); | |||
Application.Exit(); | |||
} | |||
private void timerRuntime_Tick(object sender, EventArgs e) | |||
{ | |||
Console.WriteLine("Failed to complete all commands"); | |||
Application.Exit(); | |||
} | |||
private void timerRunCommands_Tick(object sender, EventArgs e) | |||
{ | |||
timerRunCommands.Enabled = false; | |||
ProcessCommands(); | |||
} | |||
private void ProcessCommands() | |||
{ | |||
var Commands = args.Intersect(CommandList); | |||
foreach (string command in Commands) | |||
{ | |||
axTermMon.Command(GetCommandCode(command)); | |||
if (--CommandCount == 0) | |||
{ | |||
Application.Exit(); | |||
} | |||
} | |||
ProcessSpecial(); | |||
} | |||
private void ProcessSpecial() | |||
{ | |||
string[] Special = { "changeterminalservergroup", "termsecurecheckaccess" }; | |||
string data = ""; | |||
var Commands = args.Intersect(Special); | |||
foreach (string command in Commands) | |||
{ | |||
CommandCount--; | |||
int i = Array.IndexOf(args, command); | |||
if (i < args.Length - 1 && i != -1) data = args[i + 1].ToLower(); | |||
else | |||
{ | |||
Console.WriteLine("That command requires data. Command Data"); | |||
break; | |||
} | |||
if (String.Compare(command, "termsecurecheckaccess") == 0) | |||
{ | |||
string[] TSdata = data.Split(','); | |||
if (TSdata.Length == 2) | |||
{ | |||
Console.WriteLine(ResultLookup(axTermMon.TermSecureCheckAccess(TSdata[0], TSdata[1]))); | |||
} | |||
else | |||
{ | |||
Console.WriteLine("Use 'username,group' to check TermSecure access"); | |||
} | |||
} | |||
else | |||
{ | |||
axTermMon.ChangeTerminalServerGroup(data); | |||
} | |||
} | |||
if (CommandCount == 0) Application.Exit(); | |||
} | |||
private short GetCommandCode(string command) | |||
{ | |||
switch (command) | |||
{ | |||
case "reboot": | |||
return (short)TERMMONLib.TermMonCommand.Reboot; | |||
case "restart": | |||
return (short)TERMMONLib.TermMonCommand.Restart; | |||
case "calibrate": | |||
return (short)TERMMONLib.TermMonCommand.Calibrate; | |||
case "gotomainmenu": | |||
return (short)TERMMONLib.TermMonCommand.GotoMainMenu; | |||
case "swtichtonextgroup": | |||
return (short)TERMMONLib.TermMonCommand.SwitchToNextGroup; | |||
case "switchtopreviousgroup": | |||
return (short)TERMMONLib.TermMonCommand.SwitchToPrevGroup; | |||
case "switchinstantfailover": | |||
return (short)TERMMONLib.TermMonCommand.SwitchInstFailover; | |||
case "changetermsecureuser": | |||
return (short)TERMMONLib.TermMonCommand.ChangeTermSecureUser; | |||
case "loggoffandchangetermsecureuser": | |||
return (short)TERMMONLib.TermMonCommand.LogOffAndChangeTermSecureUser; | |||
case "logofftermsecureuser": | |||
return (short)TERMMONLib.TermMonCommand.LogOffTermSecureUser; | |||
case "disconnecttermsecureuser": | |||
return (short)TERMMONLib.TermMonCommand.DisconnectTermSecureUser; | |||
default: | |||
return 0; | |||
} | |||
} | |||
public string ConvertStringToHex(string asciiString) | |||
{ | |||
string hex = ""; | |||
foreach (char c in asciiString) | |||
{ | |||
hex += String.Format("{0:x2} ", Convert.ToString(c, 16)); | |||
} | |||
return hex; | |||
} | |||
// Updates demo fields when an event occurs | |||
private void axTermMon_OnEvent(object sender, AxTERMMONLib._DTermMonEvents_OnEventEvent e) | private void axTermMon_OnEvent(object sender, AxTERMMONLib._DTermMonEvents_OnEventEvent e) | ||
{ | { | ||
switch (e.eventCode) | switch (e.eventCode) | ||
{ | { | ||
case (short)TERMMONLib.TermMonEvent.ConnectionState: | |||
if (gui) | |||
{ | |||
if (axTermMon.ConnectionState == (short)TERMMONLib.TermMonConst.Connected) | |||
{ | |||
textBoxConnectionState.Text = "Connected"; | |||
textBoxConnectionState.BackColor = System.Drawing.Color.Lime; | |||
timerWaitForConnection.Enabled = false; | |||
// Enable all sections of the demo | |||
ChangeEnabled(true); | |||
// disable the [[watchdog]] controls if not running on the client | |||
if (checkBoxRunInNonSession.Checked) | |||
{ | |||
groupBoxWatchdog.Enabled = false; | |||
groupBoxSessionControl.Enabled = false; | |||
} | |||
} | |||
else if (axTermMon.ConnectionState == (short)TERMMONLib.TermMonConst.Disconnected) | |||
{ | |||
textBoxConnectionState.Text = "Disconnected"; | |||
textBoxConnectionState.BackColor = System.Drawing.Color.LightGray; | |||
ChangeEnabled(false); | |||
} | |||
else if (axTermMon.ConnectionState == (short)TERMMONLib.TermMonConst.Fail) | |||
{ | |||
textBoxConnectionState.Text = "Failed"; | |||
textBoxConnectionState.BackColor = System.Drawing.Color.Red; | |||
ChangeEnabled(false); | |||
} | |||
} | |||
else | |||
{ | |||
timerConnectionTimeout.Enabled = false; | |||
timerRunCommands.Enabled = true; | |||
if (args.Contains("ConnectionState")) | |||
{ | |||
textOut = textOut + "Connection State: " + "Connected" + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | |||
case (short)TERMMONLib.TermMonEvent.TerminalName: | case (short)TERMMONLib.TermMonEvent.TerminalName: | ||
textBoxName.Text = axTermMon.TerminalName; | if (gui) textBoxName.Text = axTermMon.TerminalName; | ||
else | |||
{ | |||
if (args.Contains("terminalname")) | |||
{ | |||
textOut = textOut + "Terminal Name: " + axTermMon.TerminalName + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent.TerminalIP: | case (short)TERMMONLib.TermMonEvent.TerminalIP: | ||
textBoxIPAddress.Text = axTermMon.TerminalIP; | if (gui) textBoxIPAddress.Text = axTermMon.TerminalIP; | ||
else | |||
{ | |||
if (args.Contains("terminalip")) | |||
{ | |||
textOut = textOut + "Terminal IP: " + axTermMon.TerminalIP + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent.TerminalMAC: | case (short)TERMMONLib.TermMonEvent.TerminalMAC: | ||
textBoxMACAddress.Text = axTermMon.TerminalMAC; | if (gui) textBoxMACAddress.Text = axTermMon.TerminalMAC; | ||
else | |||
{ | |||
if (args.Contains("terminalmac")) | |||
{ | |||
textOut = textOut + "Terminal MAC: " + axTermMon.TerminalMAC + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent.TerminalFirmwareVersion: | case (short)TERMMONLib.TermMonEvent.TerminalFirmwareVersion: | ||
textBoxFirmwareVersion.Text = axTermMon.TerminalFirmwareVersion; | if (gui) textBoxFirmwareVersion.Text = axTermMon.TerminalFirmwareVersion; | ||
else | |||
{ | |||
if (args.Contains("terminalfirmwareversion")) | |||
{ | |||
textOut = textOut + "Terminal Firmware Version: " + axTermMon.TerminalFirmwareVersion + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent.TerminalBootLoaderVersion: | case (short)TERMMONLib.TermMonEvent.TerminalBootLoaderVersion: | ||
textBoxBootRomVersion.Text = axTermMon.TerminalBootLoaderVersion; | if (gui) textBoxBootRomVersion.Text = axTermMon.TerminalBootLoaderVersion; | ||
else | |||
{ | |||
if (args.Contains("terminalbootloaderversion")) | |||
{ | |||
textOut = textOut + "Terminal Boot Loader Version: " + axTermMon.TerminalBootLoaderVersion + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent.TerminalModel: | case (short)TERMMONLib.TermMonEvent.TerminalModel: | ||
textBoxModel.Text = axTermMon.TerminalModel; | if (gui) textBoxModel.Text = axTermMon.TerminalModel; | ||
else | |||
{ | |||
if (args.Contains("terminalmodel")) | |||
{ | |||
textOut = textOut + "Terminal Model: " + axTermMon.TerminalModel + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent.TerminalWindowsUsername: | case (short)TERMMONLib.TermMonEvent.TerminalWindowsUsername: | ||
textBoxTermWinUsername.Text = axTermMon.TerminalWindowsUsername; | if (gui) textBoxTermWinUsername.Text = axTermMon.TerminalWindowsUsername; | ||
else | |||
{ | |||
if (args.Contains("terminalwindowsusername")) | |||
{ | |||
textOut = textOut + "Windows Username: " + axTermMon.TerminalWindowsUsername + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent.TerminalServerGroupList: | case (short)TERMMONLib.TermMonEvent.TerminalServerGroupList: | ||
textBoxTSGroupList.Text = axTermMon.TerminalServerGroupList; | if (gui) textBoxTSGroupList.Text = axTermMon.TerminalServerGroupList; | ||
else | |||
{ | |||
if (args.Contains("TerminalServerGroupList")) | |||
{ | |||
textOut = textOut + "[[Display Clients]]: " + axTermMon.TerminalServerGroupList + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent.CurrentTerminalServerGroup: | case (short)TERMMONLib.TermMonEvent.CurrentTerminalServerGroup: | ||
textBoxCurrentTSGroup.Text = axTermMon.CurrentTerminalServerGroup; | if (gui) textBoxCurrentTSGroup.Text = axTermMon.CurrentTerminalServerGroup; | ||
else | |||
{ | |||
if (args.Contains("CurrentTerminalServerGroup")) | |||
{ | |||
textOut = textOut + "Current [[Display Client]]: " + axTermMon.CurrentTerminalServerGroup + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | |||
case (short)TERMMONLib.TermMonEvent.CurrentWindowsUsername: | |||
if (gui) textBoxSessionWinUsername.Text = axTermMon.CurrentWindowsUsername; | |||
else | |||
{ | |||
if (args.Contains("CurrentWindowsUsername")) | |||
{ | |||
textOut = textOut + "Current Windows Username: " + axTermMon.CurrentWindowsUsername + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | |||
case (short)TERMMONLib.TermMonEvent.TerminalServerName: | |||
if (gui) textBoxTermServerName.Text = axTermMon.TerminalServerName; | |||
else | |||
{ | |||
if (args.Contains("TerminalServerName")) | |||
{ | |||
textOut = textOut + "Terminal Server: " + axTermMon.TerminalServerName + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent. | case (short)TERMMONLib.TermMonEvent.UserID: | ||
if ( | if (gui) textBoxTSUserID.Text = axTermMon.UserID; | ||
else | |||
{ | { | ||
if (args.Contains("UserID")) | |||
{ | |||
textOut = textOut + "User ID: " + axTermMon.UserID + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | } | ||
break; | |||
case (short)TERMMONLib.TermMonEvent.TermSecureUsername: | |||
if (gui) textBoxTSUsername.Text = axTermMon.TermSecureUsername; | |||
else | |||
{ | { | ||
if (args.Contains("TermSecureUsername")) | |||
{ | |||
textOut = textOut + "TermSecure Username: " + axTermMon.TermSecureUsername + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | } | ||
break; | |||
case (short)TERMMONLib.TermMonEvent.TermSecureWindowsUsername: | |||
if (gui) textBoxTSWinUsername.Text = axTermMon.TermSecureWindowsUsername; | |||
else | |||
{ | { | ||
if (args.Contains("TermSecureWindowsUsername")) | |||
{ | |||
textOut = textOut + "TermSecure Windows Username: " + axTermMon.TermSecureWindowsUsername + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | } | ||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent. | case (short)TERMMONLib.TermMonEvent.RelevanceLocationName: | ||
if (gui) textBoxLocationName.Text = axTermMon.RelevanceLocationName; | |||
else | |||
{ | |||
if (args.Contains("RelevanceLocationName")) | |||
{ | |||
textOut = textOut + "Location Name: " + axTermMon.RelevanceLocationName + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent. | case (short)TERMMONLib.TermMonEvent.ScanResult: | ||
if (gui) textBoxScanResponse.Text = axTermMon.ScanResult; | |||
else | |||
{ | |||
if (args.Contains("ScanResult")) | |||
{ | |||
textOut = textOut + "Scan Result: " + axTermMon.ScanResult + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent. | case (short)TERMMONLib.TermMonEvent.BiometricData: | ||
textBoxBiometricData.Text = ConvertStringToHex(axTermMon.BiometricData); | |||
labelBiometricCount.Text = Convert.ToString(Convert.ToInt32(labelBiometricCount.Text) + 1); | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent. | case (short)TERMMONLib.TermMonEvent.BiometricLookupResult: | ||
textBoxBiometricResult.Text = ResultLookup(axTermMon.BiometricLookupResult); | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent. | case (short)TERMMONLib.TermMonEvent.BiometricLookupUsername: | ||
textBoxBiometricUsername.Text = axTermMon.BiometricLookupUsername; | |||
break; | break; | ||
case (short)TERMMONLib.TermMonEvent.WatchdogTime: | case (short)TERMMONLib.TermMonEvent.WatchdogTime: | ||
labelWatchdogCount.Text = axTermMon.WatchdogTime.ToString(); | if (gui) labelWatchdogCount.Text = axTermMon.WatchdogTime.ToString(); | ||
else | |||
{ | |||
if (args.Contains("WatchdogTime")) | |||
{ | |||
textOut = textOut + "[[Watchdog]] Time: " + axTermMon.WatchdogTime.ToString() + Environment.NewLine; | |||
CommandCount--; | |||
} | |||
} | |||
break; | break; | ||
default: | default: | ||
break; | break; | ||
} | } | ||
if (CommandCount == 0 && !gui) Exit(); | |||
} | } | ||
private void Exit() | |||
{ | |||
Console.WriteLine(textOut); | |||
if (path.Length > 0) | |||
{ | |||
textOut = Environment.NewLine + DateTime.Now.ToString() + Environment.NewLine + textOut; | |||
if (!File.Exists(path)) | |||
{ | |||
// Create a file to write to if it doesn't already exist. | |||
File.WriteAllText(path, textOut); | |||
} | |||
else | |||
{ | |||
// Add to existing file | |||
File.AppendAllText(path, textOut); | |||
} | |||
} | |||
System.Environment.Exit(0); | |||
} | |||
// (All functions below) Handles button and check box clicks. | |||
private void buttonCalibrate_Click(object sender, EventArgs e) | private void buttonCalibrate_Click(object sender, EventArgs e) | ||
| Line 379: | Line 775: | ||
private void buttonCamMove_Click(object sender, EventArgs e) | private void buttonCamMove_Click(object sender, EventArgs e) | ||
{ | { | ||
if (textBoxCamX.Text.Length == 0) textBoxCamX.Text = "100"; | |||
if (textBoxCamY.Text.Length == 0) textBoxCamY.Text = "100"; | |||
axTermMon.CameraOverlayMove(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, short.Parse(textBoxCamX.Text), short.Parse(textBoxCamY.Text)); | axTermMon.CameraOverlayMove(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, short.Parse(textBoxCamX.Text), short.Parse(textBoxCamY.Text)); | ||
} | } | ||
| Line 384: | Line 782: | ||
private void buttonCamResize_Click(object sender, EventArgs e) | private void buttonCamResize_Click(object sender, EventArgs e) | ||
{ | { | ||
if (textBoxCamW.Text.Length == 0) textBoxCamW.Text = "100"; | |||
if (textBoxCamH.Text.Length == 0) textBoxCamH.Text = "100"; | |||
axTermMon.CameraOverlayResize(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, short.Parse(textBoxCamW.Text), short.Parse(textBoxCamH.Text)); | axTermMon.CameraOverlayResize(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, short.Parse(textBoxCamW.Text), short.Parse(textBoxCamH.Text)); | ||
} | } | ||
| Line 389: | Line 789: | ||
private void buttonCamMoveResize_Click(object sender, EventArgs e) | private void buttonCamMoveResize_Click(object sender, EventArgs e) | ||
{ | { | ||
if (textBoxCamX.Text.Length == 0) textBoxCamX.Text = "100"; | |||
if (textBoxCamY.Text.Length == 0) textBoxCamY.Text = "100"; | |||
if (textBoxCamW.Text.Length == 0) textBoxCamW.Text = "100"; | |||
if (textBoxCamH.Text.Length == 0) textBoxCamH.Text = "100"; | |||
axTermMon.CameraOverlayResizeMove(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, short.Parse(textBoxCamX.Text), short.Parse(textBoxCamY.Text), short.Parse(textBoxCamW.Text), short.Parse(textBoxCamH.Text)); | axTermMon.CameraOverlayResizeMove(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, short.Parse(textBoxCamX.Text), short.Parse(textBoxCamY.Text), short.Parse(textBoxCamW.Text), short.Parse(textBoxCamH.Text)); | ||
} | } | ||
| Line 426: | Line 830: | ||
private void buttonSetActiveScreen_Click(object sender, EventArgs e) | private void buttonSetActiveScreen_Click(object sender, EventArgs e) | ||
{ | { | ||
// Checks to make sure the screen number given is valid. 0 through 5. | |||
short i = -1; | short i = -1; | ||
if (textBoxSetActiveScreen.Text.Length > 0) i = short.Parse(textBoxSetActiveScreen.Text); | if (textBoxSetActiveScreen.Text.Length > 0) i = short.Parse(textBoxSetActiveScreen.Text); | ||
| Line 434: | Line 839: | ||
else | else | ||
{ | { | ||
MessageBox.Show("To set active | MessageBox.Show("To set active screen use 0 through 5"); | ||
} | } | ||
} | } | ||
| Line 440: | Line 845: | ||
private void buttonWatchdogSet_Click(object sender, EventArgs e) | private void buttonWatchdogSet_Click(object sender, EventArgs e) | ||
{ | { | ||
// checks to make sure the [[watchdog]] time given is valid. | |||
if (short.Parse(textBoxWatchdogSeconds.Text) > 32767) | if (short.Parse(textBoxWatchdogSeconds.Text) > 32767) | ||
{ | { | ||
| Line 470: | Line 876: | ||
checkBoxTSDisconnectUserSessions.Checked = true; | checkBoxTSDisconnectUserSessions.Checked = true; | ||
} | } | ||
} | |||
private void buttonScanQuery_Click(object sender, EventArgs e) | |||
{ | |||
short i; | |||
textBoxScanResponse.Text = "Requesting Scan..."; | |||
textBoxScanResponse.Update(); | |||
i = axTermMon.Command((short)TERMMONLib.TermMonCommand.ScanCodeAndQueryLocation); | |||
if (i != (short)TERMMONLib.TermMonConst.Success) | |||
textBoxScanResponse.Text = "Request Failed"; | |||
} | |||
private void buttonLocLogon_Click(object sender, EventArgs e) | |||
{ | |||
short i; | |||
if (comboLocAction.Text == "transfer") | |||
i = (short)TERMMONLib.TermMonRelevance.ActionTransfer; | |||
else if (comboLocAction.Text == "clone") | |||
i = (short )TERMMONLib.TermMonRelevance.ActionClone; | |||
else if (comboLocAction.Text == "shadow") | |||
i = (short)TERMMONLib.TermMonRelevance.ActionShadow; | |||
else | |||
i = (short)TERMMONLib.TermMonRelevance.ActionNone; | |||
textBoxScanResponse.Text = "Requesting Logon..."; | |||
textBoxScanResponse.Update(); | |||
textBoxScanResponse.Text = ResultLookup(axTermMon.RelevanceLocationLogon(textBoxLocPathName.Text, i, 1)); | |||
} | |||
private void buttonScanData_Click(object sender, EventArgs e) | |||
{ | |||
short i; | |||
textBoxScanResponse.Text = "Requesting Scan..."; | |||
textBoxScanResponse.Update(); | |||
i = axTermMon.Command((short)TERMMONLib.TermMonCommand.ScanCodeReturnData); | |||
if (i != (short)TERMMONLib.TermMonConst.Success) | |||
textBoxScanResponse.Text = "Request Failed"; | |||
} | |||
private void buttonLocLogoff_Click(object sender, EventArgs e) | |||
{ | |||
textBoxScanResponse.Text = "Requesting Logoff..."; | |||
textBoxScanResponse.Update(); | |||
textBoxScanResponse.Text = ResultLookup(axTermMon.RelevanceLocationLogoff(1)); | |||
} | |||
private void buttonBiometricScanAndQuery_Click(object sender, EventArgs e) | |||
{ | |||
short i; | |||
textBoxBiometricResult.Text = "Requesting Scan..."; | |||
textBoxBiometricUsername.Text = ""; | |||
i = axTermMon.Command((short)TERMMONLib.TermMonCommand.ScanBiometricAndQueryUser); | |||
if (i != (short)TERMMONLib.TermMonConst.Success) | |||
textBoxBiometricResult.Text = "Request Failed"; | |||
} | } | ||
} | } | ||
} | } | ||
</pre> | </pre> | ||
Latest revision as of 19:54, 16 February 2015
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Reflection;
using System.Diagnostics;
namespace TermMon_Demo
{
public enum CommandConst
{
TermSecureCheckAccess = -2,
ChangeTerminalServerGroup = -1,
}
public partial class Form1 : Form
{
String[] args = Environment.GetCommandLineArgs().Select(s => s.ToLowerInvariant()).ToArray();
String[] HelpList = { "-h", "/h", "-?", "/?", "help", "-help", "/help" };
String[] CommandList = { "reboot", "restart", "calibrate", "gotomainmenu", "switchtonextgroup", "switchtoprevgroup", "switchinstfailover", "changetermsecureuser", "logoffandchangetermsecureuser", "logofftermsecureuser", "disconnecttermsecureuser" };
int CommandCount = 0;
string path = "", textOut = Environment.NewLine;
bool gui = true;
public Form1()
{
InitializeComponent();
if (args.Length > 1) gui = false;
if (gui)
{
// Enable the OverrideIP and Demo Control setions
EnableControl(true);
ChangeEnabled(false);
// Set the connection state display to disconnected
textBoxConnectionState.Text = "Disconnected";
textBoxConnectionState.BackColor = System.Drawing.Color.LightGray;
// Get and display prigram version info
Assembly a = Assembly.GetExecutingAssembly();
FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(a.Location);
labelVersion.Text = "Version " + fvi.ProductVersion;
}
else
{
CommandCount = args.Length - 1;
ParseArgs();
axTermMon.Enable();
timerConnectionTimeout.Enabled = true;
timerRuntime.Enabled = true;
}
}
// Parse any command line arguments.
private void ParseArgs()
{
for (int i = 0; i < args.Length; i++)
{
if (CheckValidIP(args[i]))
{
axTermMon.RunInSession = false;
axTermMon.OverrideIP = args[i];
CommandCount--;
}
if (args[i].EndsWith(".txt"))
{
path = args[i];
CommandCount--;
}
}
if (args.Intersect(HelpList).Count() > 0) Help();
}
private void Help()
{
textOut = Environment.NewLine + "Usage:" + Environment.NewLine + Environment.NewLine
+ "TermMon.exe [IPv4 Address (optional)] [Filename and Path (optional)] [Commands]" + Environment.NewLine + Environment.NewLine
+ "Local Example: TermMon.exe TerminalName TerminalMAC"+ Environment.NewLine
+ "Remote Example: TermMon.exe xxx.xxx.xxx.xxx C:\termmon.txt TerminalName TerminalMAC" + Environment.NewLine + Environment.NewLine
+ "Arguments, Information:" + Environment.NewLine
+ "\tConnectionState" + Environment.NewLine
+ "\tTerminalName" + Environment.NewLine
+ "\tTerminalIP" + Environment.NewLine
+ "\tTerminalMAC" + Environment.NewLine
+ "\tTerminalModel" + Environment.NewLine
+ "\tTerminalFirmwareVersion" + Environment.NewLine
+ "\tTerminalBootloaderVersion" + Environment.NewLine
+ "\tTerminalWindowsUsername" + Environment.NewLine
+ "\tTerminalServerGroupList" + Environment.NewLine
+ "\tCurrentTerminalServerGroup" + Environment.NewLine
+ "\tCurrentWindowsUsername" + Environment.NewLine
+ "\tUserID" + Environment.NewLine
+ "\tTermSecureUsername" + Environment.NewLine
+ "\tTermSecureWindowsUsername" + Environment.NewLine
+ "\tWatchdogTime" + Environment.NewLine
+ "Arguments, Commands" + Environment.NewLine
+ "\tReboot" + Environment.NewLine
+ "\tRestart" + Environment.NewLine
+ "\tCalibrate" + Environment.NewLine
+ "\tGoToMainMenu" + Environment.NewLine
+ "\tSwitchToNextGroup" + Environment.NewLine
+ "\tSwitchToPrevGroup" + Environment.NewLine
+ "\tSwitchInstFailover" + Environment.NewLine
+ "\tChangeTermSecureUser" + Environment.NewLine
+ "\tLogOffAndChangeTermSecureUser" + Environment.NewLine
+ "\tLogOffTermSucureUser" + Environment.NewLine
+ "\tDisconnectTermSecureUser" + Environment.NewLine
+ "\tChangeTerminalServerGroup" + Environment.NewLine
+ "\tTermSecureCheckAccess" + Environment.NewLine;
Exit();
}
// Enable 3 second timer after the demo has been enabled.
// This provides a timeout in case it can't conenct to the control.
private void WaitForConnection()
{
timerWaitForConnection.Enabled = true;
}
// Enables/disables the OverrideIP and demo control sections.
private void EnableControl(bool enabled)
{
groupBoxDemoControl.Enabled = enabled;
groupBoxOverrideIP.Enabled = enabled;
}
// Enables/disables all other sections.
// These sections are only available when connected to the control
private void ChangeEnabled(bool enabled)
{
groupBoxTerminalInfo.Enabled = enabled;
groupBoxTerminalControl.Enabled = enabled;
groupBoxSessionControl.Enabled = enabled;
groupBoxNavigation.Enabled = enabled;
groupBoxGetDisplayClientScreen.Enabled = enabled;
groupBoxTermSecure.Enabled = enabled;
groupBoxCameraOverlay.Enabled = enabled;
groupBoxActiveScreen.Enabled = enabled;
groupBoxLocation.Enabled = enabled;
groupBoxWatchdog.Enabled = enabled;
groupBoxBiometric.Enabled = enabled;
buttonEnable.Enabled = !enabled;
buttonDisable.Enabled = enabled;
}
// Checks that the IP address in the OverrideIP section is a valid format
private bool CheckValidIP(string IPAddress)
{
System.Net.IPAddress address;
if (System.Net.IPAddress.TryParse(IPAddress, out address))
{
if (address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) return true;
}
if (gui) MessageBox.Show("Please use a valid (xxx.xxx.xxx.xxx) IPv4 address");
return false;
}
// returns the corresponding string for a result code.
private string ResultLookup(int res)
{
switch(res)
{
case (short)TERMMONLib.TermMonConst.Busy:
return "Busy";
case (short)TERMMONLib.TermMonConst.Connected:
return "Connected";
case (short)TERMMONLib.TermMonConst.Disconnected:
return "Disconnected";
case (short)TERMMONLib.TermMonConst.Fail:
return "Failed";
case (short)TERMMONLib.TermMonConst.GroupNotFound:
return "Group Not Found";
case (short)TERMMONLib.TermMonConst.InvalidMember:
return "Invalid Member";
case (short)TERMMONLib.TermMonConst.RequestFailed:
return "Request Failed";
case (short)TERMMONLib.TermMonConst.Success:
return "Success";
case (short)TERMMONLib.TermMonConst.Timeout:
return "Timeout";
case (short)TERMMONLib.TermMonConst.Updating:
return "Updating";
case (short)TERMMONLib.TermMonConst.UserNotFound:
return "User Not Found";
case (short)TERMMONLib.TermMonConst.ValidMember:
return "Valid Member";
case (short)TERMMONLib.TermMonConst.BadPassword:
return "Bad Password";
case (short)TERMMONLib.TermMonConst.NoPermission:
return "No Permission";
case (short)TERMMONLib.TermMonConst.NoWindowsPassword:
return "No Windows Password";
case (short)TERMMONLib.TermMonConst.NoWindowsUsername:
return "No Windows Username";
case (short)TERMMONLib.TermMonConst.PasswordChangeReq:
return "Password Change Required";
default:
return "Error: Other";
}
}
// 3 second timer for connection timeout.
private void timerWaitForConnection_Tick(object sender, EventArgs e)
{
axTermMon.Disable();
timerWaitForConnection.Enabled = false;
string message = "";
string location = "this terminal";
if (axTermMon.RunInSession == false)
{
location = axTermMon.OverrideIP;
message = "\n- Is 'Only allow connections from session' set to 'NO' in the module?";
}
message = "The demo application could not connect to the ActiveX control on " + location + "\n\n- Check that TermMon.ocx is registered on the terminal server.\n- Check that the terminal has the TermMon ActiveX module" + message;
int res = (int)MessageBox.Show(message, "TermMon ActiveX Demo", MessageBoxButtons.RetryCancel, MessageBoxIcon.Asterisk);
if (res == 4)
{
WaitForConnection();
}
else
{
EnableControl(true);
}
}
private void timerConnectionTimeout_Tick(object sender, EventArgs e)
{
Console.WriteLine("Connection Failed");
Application.Exit();
}
private void timerRuntime_Tick(object sender, EventArgs e)
{
Console.WriteLine("Failed to complete all commands");
Application.Exit();
}
private void timerRunCommands_Tick(object sender, EventArgs e)
{
timerRunCommands.Enabled = false;
ProcessCommands();
}
private void ProcessCommands()
{
var Commands = args.Intersect(CommandList);
foreach (string command in Commands)
{
axTermMon.Command(GetCommandCode(command));
if (--CommandCount == 0)
{
Application.Exit();
}
}
ProcessSpecial();
}
private void ProcessSpecial()
{
string[] Special = { "changeterminalservergroup", "termsecurecheckaccess" };
string data = "";
var Commands = args.Intersect(Special);
foreach (string command in Commands)
{
CommandCount--;
int i = Array.IndexOf(args, command);
if (i < args.Length - 1 && i != -1) data = args[i + 1].ToLower();
else
{
Console.WriteLine("That command requires data. Command Data");
break;
}
if (String.Compare(command, "termsecurecheckaccess") == 0)
{
string[] TSdata = data.Split(',');
if (TSdata.Length == 2)
{
Console.WriteLine(ResultLookup(axTermMon.TermSecureCheckAccess(TSdata[0], TSdata[1])));
}
else
{
Console.WriteLine("Use 'username,group' to check TermSecure access");
}
}
else
{
axTermMon.ChangeTerminalServerGroup(data);
}
}
if (CommandCount == 0) Application.Exit();
}
private short GetCommandCode(string command)
{
switch (command)
{
case "reboot":
return (short)TERMMONLib.TermMonCommand.Reboot;
case "restart":
return (short)TERMMONLib.TermMonCommand.Restart;
case "calibrate":
return (short)TERMMONLib.TermMonCommand.Calibrate;
case "gotomainmenu":
return (short)TERMMONLib.TermMonCommand.GotoMainMenu;
case "swtichtonextgroup":
return (short)TERMMONLib.TermMonCommand.SwitchToNextGroup;
case "switchtopreviousgroup":
return (short)TERMMONLib.TermMonCommand.SwitchToPrevGroup;
case "switchinstantfailover":
return (short)TERMMONLib.TermMonCommand.SwitchInstFailover;
case "changetermsecureuser":
return (short)TERMMONLib.TermMonCommand.ChangeTermSecureUser;
case "loggoffandchangetermsecureuser":
return (short)TERMMONLib.TermMonCommand.LogOffAndChangeTermSecureUser;
case "logofftermsecureuser":
return (short)TERMMONLib.TermMonCommand.LogOffTermSecureUser;
case "disconnecttermsecureuser":
return (short)TERMMONLib.TermMonCommand.DisconnectTermSecureUser;
default:
return 0;
}
}
public string ConvertStringToHex(string asciiString)
{
string hex = "";
foreach (char c in asciiString)
{
hex += String.Format("{0:x2} ", Convert.ToString(c, 16));
}
return hex;
}
// Updates demo fields when an event occurs
private void axTermMon_OnEvent(object sender, AxTERMMONLib._DTermMonEvents_OnEventEvent e)
{
switch (e.eventCode)
{
case (short)TERMMONLib.TermMonEvent.ConnectionState:
if (gui)
{
if (axTermMon.ConnectionState == (short)TERMMONLib.TermMonConst.Connected)
{
textBoxConnectionState.Text = "Connected";
textBoxConnectionState.BackColor = System.Drawing.Color.Lime;
timerWaitForConnection.Enabled = false;
// Enable all sections of the demo
ChangeEnabled(true);
// disable the [[watchdog]] controls if not running on the client
if (checkBoxRunInNonSession.Checked)
{
groupBoxWatchdog.Enabled = false;
groupBoxSessionControl.Enabled = false;
}
}
else if (axTermMon.ConnectionState == (short)TERMMONLib.TermMonConst.Disconnected)
{
textBoxConnectionState.Text = "Disconnected";
textBoxConnectionState.BackColor = System.Drawing.Color.LightGray;
ChangeEnabled(false);
}
else if (axTermMon.ConnectionState == (short)TERMMONLib.TermMonConst.Fail)
{
textBoxConnectionState.Text = "Failed";
textBoxConnectionState.BackColor = System.Drawing.Color.Red;
ChangeEnabled(false);
}
}
else
{
timerConnectionTimeout.Enabled = false;
timerRunCommands.Enabled = true;
if (args.Contains("ConnectionState"))
{
textOut = textOut + "Connection State: " + "Connected" + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TerminalName:
if (gui) textBoxName.Text = axTermMon.TerminalName;
else
{
if (args.Contains("terminalname"))
{
textOut = textOut + "Terminal Name: " + axTermMon.TerminalName + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TerminalIP:
if (gui) textBoxIPAddress.Text = axTermMon.TerminalIP;
else
{
if (args.Contains("terminalip"))
{
textOut = textOut + "Terminal IP: " + axTermMon.TerminalIP + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TerminalMAC:
if (gui) textBoxMACAddress.Text = axTermMon.TerminalMAC;
else
{
if (args.Contains("terminalmac"))
{
textOut = textOut + "Terminal MAC: " + axTermMon.TerminalMAC + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TerminalFirmwareVersion:
if (gui) textBoxFirmwareVersion.Text = axTermMon.TerminalFirmwareVersion;
else
{
if (args.Contains("terminalfirmwareversion"))
{
textOut = textOut + "Terminal Firmware Version: " + axTermMon.TerminalFirmwareVersion + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TerminalBootLoaderVersion:
if (gui) textBoxBootRomVersion.Text = axTermMon.TerminalBootLoaderVersion;
else
{
if (args.Contains("terminalbootloaderversion"))
{
textOut = textOut + "Terminal Boot Loader Version: " + axTermMon.TerminalBootLoaderVersion + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TerminalModel:
if (gui) textBoxModel.Text = axTermMon.TerminalModel;
else
{
if (args.Contains("terminalmodel"))
{
textOut = textOut + "Terminal Model: " + axTermMon.TerminalModel + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TerminalWindowsUsername:
if (gui) textBoxTermWinUsername.Text = axTermMon.TerminalWindowsUsername;
else
{
if (args.Contains("terminalwindowsusername"))
{
textOut = textOut + "Windows Username: " + axTermMon.TerminalWindowsUsername + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TerminalServerGroupList:
if (gui) textBoxTSGroupList.Text = axTermMon.TerminalServerGroupList;
else
{
if (args.Contains("TerminalServerGroupList"))
{
textOut = textOut + "[[Display Clients]]: " + axTermMon.TerminalServerGroupList + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.CurrentTerminalServerGroup:
if (gui) textBoxCurrentTSGroup.Text = axTermMon.CurrentTerminalServerGroup;
else
{
if (args.Contains("CurrentTerminalServerGroup"))
{
textOut = textOut + "Current [[Display Client]]: " + axTermMon.CurrentTerminalServerGroup + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.CurrentWindowsUsername:
if (gui) textBoxSessionWinUsername.Text = axTermMon.CurrentWindowsUsername;
else
{
if (args.Contains("CurrentWindowsUsername"))
{
textOut = textOut + "Current Windows Username: " + axTermMon.CurrentWindowsUsername + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TerminalServerName:
if (gui) textBoxTermServerName.Text = axTermMon.TerminalServerName;
else
{
if (args.Contains("TerminalServerName"))
{
textOut = textOut + "Terminal Server: " + axTermMon.TerminalServerName + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.UserID:
if (gui) textBoxTSUserID.Text = axTermMon.UserID;
else
{
if (args.Contains("UserID"))
{
textOut = textOut + "User ID: " + axTermMon.UserID + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TermSecureUsername:
if (gui) textBoxTSUsername.Text = axTermMon.TermSecureUsername;
else
{
if (args.Contains("TermSecureUsername"))
{
textOut = textOut + "TermSecure Username: " + axTermMon.TermSecureUsername + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.TermSecureWindowsUsername:
if (gui) textBoxTSWinUsername.Text = axTermMon.TermSecureWindowsUsername;
else
{
if (args.Contains("TermSecureWindowsUsername"))
{
textOut = textOut + "TermSecure Windows Username: " + axTermMon.TermSecureWindowsUsername + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.RelevanceLocationName:
if (gui) textBoxLocationName.Text = axTermMon.RelevanceLocationName;
else
{
if (args.Contains("RelevanceLocationName"))
{
textOut = textOut + "Location Name: " + axTermMon.RelevanceLocationName + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.ScanResult:
if (gui) textBoxScanResponse.Text = axTermMon.ScanResult;
else
{
if (args.Contains("ScanResult"))
{
textOut = textOut + "Scan Result: " + axTermMon.ScanResult + Environment.NewLine;
CommandCount--;
}
}
break;
case (short)TERMMONLib.TermMonEvent.BiometricData:
textBoxBiometricData.Text = ConvertStringToHex(axTermMon.BiometricData);
labelBiometricCount.Text = Convert.ToString(Convert.ToInt32(labelBiometricCount.Text) + 1);
break;
case (short)TERMMONLib.TermMonEvent.BiometricLookupResult:
textBoxBiometricResult.Text = ResultLookup(axTermMon.BiometricLookupResult);
break;
case (short)TERMMONLib.TermMonEvent.BiometricLookupUsername:
textBoxBiometricUsername.Text = axTermMon.BiometricLookupUsername;
break;
case (short)TERMMONLib.TermMonEvent.WatchdogTime:
if (gui) labelWatchdogCount.Text = axTermMon.WatchdogTime.ToString();
else
{
if (args.Contains("WatchdogTime"))
{
textOut = textOut + "[[Watchdog]] Time: " + axTermMon.WatchdogTime.ToString() + Environment.NewLine;
CommandCount--;
}
}
break;
default:
break;
}
if (CommandCount == 0 && !gui) Exit();
}
private void Exit()
{
Console.WriteLine(textOut);
if (path.Length > 0)
{
textOut = Environment.NewLine + DateTime.Now.ToString() + Environment.NewLine + textOut;
if (!File.Exists(path))
{
// Create a file to write to if it doesn't already exist.
File.WriteAllText(path, textOut);
}
else
{
// Add to existing file
File.AppendAllText(path, textOut);
}
}
System.Environment.Exit(0);
}
// (All functions below) Handles button and check box clicks.
private void buttonCalibrate_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.Calibrate);
}
private void buttonReboot_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.Reboot);
}
private void buttonRestart_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.Restart);
}
private void buttonDisconnect_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.DisconnectSession);
}
private void buttonLogoff_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.LogOffSession);
}
private void buttonPrevious_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.SwitchToPrevGroup);
}
private void buttonNext_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.SwitchToNextGroup);
}
private void buttonStartTiling_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.TileStart);
}
private void buttonStopTiling_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.TileEnd);
}
private void buttonMainMenu_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.GotoMainMenu);
}
private void buttonInstantFailover_Click(object sender, EventArgs e)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.SwitchInstFailover);
}
private void buttonGoToDisplayClient_Click(object sender, EventArgs e)
{
axTermMon.ChangeTerminalServerGroup(textBoxDisplayClientName.Text);
}
private void buttonGetScreen_Click(object sender, EventArgs e)
{
textBoxScreenNumber.Text = "";
textBoxScreenNumber.Text = axTermMon.GetGroupScreen(textBoxGetDisplayClientName.Text).ToString();
}
private void buttonTSLogOn_Click(object sender, EventArgs e)
{
if (checkBoxTSLogOffUserSessions.Checked)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.LogOffAndChangeTermSecureUser);
}
else
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.ChangeTermSecureUser);
}
}
private void buttonTSLogOff_Click(object sender, EventArgs e)
{
if (checkBoxTSLogOffUserSessions.Checked)
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.LogOffTermSecureUser);
}
else
{
axTermMon.Command((short)TERMMONLib.TermMonCommand.DisconnectTermSecureUser);
}
}
private void buttonTSCheckAccess_Click(object sender, EventArgs e)
{
textBoxTSCheckAccessResponse.Text = "Updating...";
textBoxTSCheckAccessResponse.Text = ResultLookup(axTermMon.TermSecureCheckAccess(textBoxTSCheckAccessUsername.Text, textBoxTSCheckAccessGroup.Text));
}
private void buttonTSLogOnUser_Click(object sender, EventArgs e)
{
textBoxTSLogOnResponse.Text = "Updating...";
textBoxTSLogOnResponse.Text = ResultLookup(axTermMon.TermSecureLogonUser(textBoxTSLogOnUsername.Text, textBoxTSLogOnPassword.Text));
}
private void buttonCamEnable_Click(object sender, EventArgs e)
{
axTermMon.CameraOverlayEnable(textBoxCamGroupName.Text, textBoxCamOverlayName.Text);
}
private void buttonCamDisable_Click(object sender, EventArgs e)
{
axTermMon.CameraOverlayDisable(textBoxCamGroupName.Text, textBoxCamOverlayName.Text);
}
private void buttonCamCycleStart_Click(object sender, EventArgs e)
{
axTermMon.CameraOverlayCycleStart(textBoxCamGroupName.Text, textBoxCamOverlayName.Text);
}
private void buttonCamCycleStop_Click(object sender, EventArgs e)
{
axTermMon.CameraOverlayCycleStop(textBoxCamGroupName.Text, textBoxCamOverlayName.Text);
}
private void buttonCamPrevious_Click(object sender, EventArgs e)
{
axTermMon.CameraOverlaySwitchPrev(textBoxCamGroupName.Text, textBoxCamOverlayName.Text);
}
private void buttonCamNext_Click(object sender, EventArgs e)
{
axTermMon.CameraOverlaySwitchNext(textBoxCamGroupName.Text, textBoxCamOverlayName.Text);
}
private void buttonCamSwitchByName_Click(object sender, EventArgs e)
{
axTermMon.CameraOverlaySwitchByName(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, textBoxCamName.Text);
}
private void buttonCamEnterFullscreen_Click(object sender, EventArgs e)
{
axTermMon.CameraOverlayFullscreenEnter(textBoxCamGroupName.Text, textBoxCamOverlayName.Text);
}
private void buttonCamExitFullscreen_Click(object sender, EventArgs e)
{
axTermMon.CameraOverlayFullscreenExit(textBoxCamGroupName.Text, textBoxCamOverlayName.Text);
}
private void buttonCamMove_Click(object sender, EventArgs e)
{
if (textBoxCamX.Text.Length == 0) textBoxCamX.Text = "100";
if (textBoxCamY.Text.Length == 0) textBoxCamY.Text = "100";
axTermMon.CameraOverlayMove(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, short.Parse(textBoxCamX.Text), short.Parse(textBoxCamY.Text));
}
private void buttonCamResize_Click(object sender, EventArgs e)
{
if (textBoxCamW.Text.Length == 0) textBoxCamW.Text = "100";
if (textBoxCamH.Text.Length == 0) textBoxCamH.Text = "100";
axTermMon.CameraOverlayResize(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, short.Parse(textBoxCamW.Text), short.Parse(textBoxCamH.Text));
}
private void buttonCamMoveResize_Click(object sender, EventArgs e)
{
if (textBoxCamX.Text.Length == 0) textBoxCamX.Text = "100";
if (textBoxCamY.Text.Length == 0) textBoxCamY.Text = "100";
if (textBoxCamW.Text.Length == 0) textBoxCamW.Text = "100";
if (textBoxCamH.Text.Length == 0) textBoxCamH.Text = "100";
axTermMon.CameraOverlayResizeMove(textBoxCamGroupName.Text, textBoxCamOverlayName.Text, short.Parse(textBoxCamX.Text), short.Parse(textBoxCamY.Text), short.Parse(textBoxCamW.Text), short.Parse(textBoxCamH.Text));
}
private void buttonEnable_Click(object sender, EventArgs e)
{
axTermMon.RunInSession = true;
if (checkBoxRunInNonSession.Checked)
{
axTermMon.RunInSession = false;
if (CheckValidIP(textBoxOverrideIPAddress.Text))
{
axTermMon.OverrideIP = textBoxOverrideIPAddress.Text;
}
else
{
return;
}
}
axTermMon.Enable();
WaitForConnection();
}
private void buttonDisable_Click(object sender, EventArgs e)
{
short res = axTermMon.Disable();
if (res == (short)TERMMONLib.TermMonConst.Fail)
{
MessageBox.Show("Not Enabled");
}
}
private void buttonSetActiveScreen_Click(object sender, EventArgs e)
{
// Checks to make sure the screen number given is valid. 0 through 5.
short i = -1;
if (textBoxSetActiveScreen.Text.Length > 0) i = short.Parse(textBoxSetActiveScreen.Text);
if (i >= 0 && i < 6)
{
axTermMon.ActiveScreen = i;
}
else
{
MessageBox.Show("To set active screen use 0 through 5");
}
}
private void buttonWatchdogSet_Click(object sender, EventArgs e)
{
// checks to make sure the [[watchdog]] time given is valid.
if (short.Parse(textBoxWatchdogSeconds.Text) > 32767)
{
textBoxWatchdogSeconds.Text = "32767";
}
labelWatchdogCount.Text = textBoxWatchdogSeconds.Text;
axTermMon.WatchdogTime = short.Parse(textBoxWatchdogSeconds.Text);
}
private void checkBoxTSDisconnectUserSessions_CheckedChanged(object sender, EventArgs e)
{
if (checkBoxTSDisconnectUserSessions.Checked)
{
checkBoxTSLogOffUserSessions.Checked = false;
}
else
{
checkBoxTSLogOffUserSessions.Checked = true;
}
}
private void checkBoxTSLogOffUserSessions_CheckedChanged(object sender, EventArgs e)
{
if (checkBoxTSLogOffUserSessions.Checked)
{
checkBoxTSDisconnectUserSessions.Checked = false;
}
else
{
checkBoxTSDisconnectUserSessions.Checked = true;
}
}
private void buttonScanQuery_Click(object sender, EventArgs e)
{
short i;
textBoxScanResponse.Text = "Requesting Scan...";
textBoxScanResponse.Update();
i = axTermMon.Command((short)TERMMONLib.TermMonCommand.ScanCodeAndQueryLocation);
if (i != (short)TERMMONLib.TermMonConst.Success)
textBoxScanResponse.Text = "Request Failed";
}
private void buttonLocLogon_Click(object sender, EventArgs e)
{
short i;
if (comboLocAction.Text == "transfer")
i = (short)TERMMONLib.TermMonRelevance.ActionTransfer;
else if (comboLocAction.Text == "clone")
i = (short )TERMMONLib.TermMonRelevance.ActionClone;
else if (comboLocAction.Text == "shadow")
i = (short)TERMMONLib.TermMonRelevance.ActionShadow;
else
i = (short)TERMMONLib.TermMonRelevance.ActionNone;
textBoxScanResponse.Text = "Requesting Logon...";
textBoxScanResponse.Update();
textBoxScanResponse.Text = ResultLookup(axTermMon.RelevanceLocationLogon(textBoxLocPathName.Text, i, 1));
}
private void buttonScanData_Click(object sender, EventArgs e)
{
short i;
textBoxScanResponse.Text = "Requesting Scan...";
textBoxScanResponse.Update();
i = axTermMon.Command((short)TERMMONLib.TermMonCommand.ScanCodeReturnData);
if (i != (short)TERMMONLib.TermMonConst.Success)
textBoxScanResponse.Text = "Request Failed";
}
private void buttonLocLogoff_Click(object sender, EventArgs e)
{
textBoxScanResponse.Text = "Requesting Logoff...";
textBoxScanResponse.Update();
textBoxScanResponse.Text = ResultLookup(axTermMon.RelevanceLocationLogoff(1));
}
private void buttonBiometricScanAndQuery_Click(object sender, EventArgs e)
{
short i;
textBoxBiometricResult.Text = "Requesting Scan...";
textBoxBiometricUsername.Text = "";
i = axTermMon.Command((short)TERMMONLib.TermMonCommand.ScanBiometricAndQueryUser);
if (i != (short)TERMMONLib.TermMonConst.Success)
textBoxBiometricResult.Text = "Request Failed";
}
}
}