本文整理汇总了C#中SessionProperties.GetTracked方法的典型用法代码示例。如果您正苦于以下问题:C# SessionProperties.GetTracked方法的具体用法?C# SessionProperties.GetTracked怎么用?C# SessionProperties.GetTracked使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SessionProperties
的用法示例。
在下文中一共展示了SessionProperties.GetTracked方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ServerPart
/// <summary>
/// If we are not already connected, this connects to the given-in-config server using user's credentials.
/// Finds the script file according to the name found on LDAP, and executes each line.
/// </summary>
private void ServerPart(SessionChangeDescription changeDescription, SessionProperties properties)
{
try
{
/* address of the server to connect to */
string remoteUNC = Settings.Store.Server;
/* file to run */
string fileToRun = remoteUNC + @"\" + this.scriptName;
// It is possible that we already have access to the file : if so, we don't connect
if (!File.Exists(fileToRun)) // we could not reach the file, so we connect
{
/* connection to the server using user's credentials */
string userLogin = properties.GetTracked<string>("UserLogin");
string userPassword = properties.GetTracked<string>("UserPassword");
pluginImpl_logger.DebugFormat("Connection to [" + remoteUNC + "] with credentials given in the first user authentication.");
string connectionFailure = PinvokeWindowsNetworking.connectToRemote(remoteUNC, userLogin, userPassword);
if (connectionFailure == null) // No error returned
pluginImpl_logger.DebugFormat("Successful connection.");
else // an error occured
{
pluginImpl_logger.ErrorFormat("Connection error. " + connectionFailure + " The scriptfile was not executed.");
return;
}
}
else pluginImpl_logger.DebugFormat("Already have access to [{0}]. No need to connect.", remoteUNC);
ScriptExecution(changeDescription, properties, fileToRun);
/* Server disconnection */
string disconnectionFailure = PinvokeWindowsNetworking.disconnectRemote(remoteUNC);
if (disconnectionFailure == null) // No error returned
pluginImpl_logger.DebugFormat("Successful server disconnection.");
else // an error occured
{
pluginImpl_logger.ErrorFormat("Server disconnection error. " + disconnectionFailure);
}
}
catch (Exception e)
{
pluginImpl_logger.DebugFormat(e.Message);
}
}
示例2: ScriptExecution
/// <summary>
/// Finds the script file on the server and executes each line.
/// </summary>
private void ScriptExecution(SessionChangeDescription changeDescription, SessionProperties properties, string fileToRun)
{
if (!File.Exists(fileToRun)) // nonexistent file
{
pluginImpl_logger.ErrorFormat("The file {0} does not exist!", fileToRun);
return;
}
pluginImpl_logger.DebugFormat("Will execute each line (except if it starts with rem or @rem) of {0}", fileToRun);
string[] lines = System.IO.File.ReadAllLines(@fileToRun);
foreach (string line in lines)
{
StringBuilder lineCopy = new StringBuilder(line);
if (line.ToLower().Trim().Length == 0) pluginImpl_logger.DebugFormat("Command line is empty. We skip it.");
else if (!(line.ToLower().Trim().StartsWith("@rem") || line.ToLower().Trim().StartsWith("rem")))
{ // we have a command
pluginImpl_logger.DebugFormat("Command line : executing {0}", line);
if ((line.ToLower().Trim().Contains("net use")))
{ // we have a net use command, so we add the username and password at the end.
string windowsDomain = Settings.Store.Domain + @"\";
// we get back user's information (stored during Gateway stage)
Shared.Types.UserInformation userInfo = properties.GetTrackedSingle<Shared.Types.UserInformation>();
string userLogin = properties.GetTracked<string>("UserLogin");
string userPassword = properties.GetTracked<string>("UserPassword");
string toAppend = " /user:" + windowsDomain + userLogin + " " + userPassword;
lineCopy.Append(toAppend);
}
try
{
pInvokes.StartUserProcessInSession(changeDescription.SessionId,
Environment.GetEnvironmentVariable("comspec"),
lineCopy.Insert(0, "/C ").ToString());
// we insert a /c at index 0 of the command line so that cmd.exe understands he has to execute it and close the terminal
}
catch (Win32Exception e)
{
pluginImpl_logger.DebugFormat("Caught a Win32Exception error (Message: {0}). Probably tried to read an incorrect command. Error {1}", e.Message, Marshal.GetLastWin32Error());
}
}
else
{
// We have a comment, we don't execute it
pluginImpl_logger.DebugFormat("Command line : REMARK found. Not going to execute it.");
}
}
pluginImpl_logger.DebugFormat("Script execution end.");
}
示例3: LdapPart
/// <summary>
/// Connects to LDAP Server according to user's credentials.
/// (These credentials have been stored in the SessionProperties object
/// during the Gateway stage.)
/// Retrieves the name of the script file on the user's LDAP account.
/// </summary>
private void LdapPart(SessionChangeDescription changeDescription, SessionProperties properties) {
// initializes and sets up a new Ldap connection
LdapInitialization(properties);
// Get the LdapServer object from the session properties (created in LdapInitialization)
LdapServer server = properties.GetTrackedSingle<LdapServer>();
if (server == null)
{
pluginImpl_logger.ErrorFormat("Internal error: LdapServer object not available.");
return;
}
try
{
pluginImpl_logger.DebugFormat("AuthenticateUser({0})", properties.Id.ToString());
// retrieving user's information stored during Gateway stage
Shared.Types.UserInformation userInfo = properties.GetTrackedSingle<Shared.Types.UserInformation>();
string userLogin = properties.GetTracked<string>("UserLogin");
string userPassword = properties.GetTracked<string>("UserPassword");
pluginImpl_logger.DebugFormat("Received username: {0}", userLogin);
// Authenticate the login
pluginImpl_logger.DebugFormat("Attempting authentication for {0}", userLogin);
BooleanResult authenticateBool = server.Authenticate(userLogin, userPassword);
if (!authenticateBool.Success) // authentication and attribute value retrieving didn't work
{
pluginImpl_logger.ErrorFormat("LDAP Authentication failed. {0}" , authenticateBool.Message);
return;
}
// retrieves the script name from Ldap
this.scriptName = server.GetScriptName();
pluginImpl_logger.DebugFormat("Name of the script file: {0}",this.scriptName);
// cleans up any resources held by the plugin
LdapEnd(properties);
}
catch (Exception e)
{
if (e is LdapException)
{
LdapException ldapEx = (e as LdapException);
if (ldapEx.ErrorCode == 81)
{
// Server can't be contacted, set server object to null
pluginImpl_logger.ErrorFormat("Server unavailable: {0}, {1}", ldapEx.ServerErrorMessage, e.Message);
server.Close();
properties.AddTrackedSingle<LdapServer>(null);
return;
}
}
// This is an unexpected error, so set LdapServer object to null, because
// subsequent stages shouldn't use it, and this indicates to later stages
// that this stage failed unexpectedly.
server.Close();
properties.AddTrackedSingle<LdapServer>(null);
pluginImpl_logger.ErrorFormat("Exception in LDAP authentication: {0}", e);
throw; // Allow pGina service to catch and handle exception
}
}