当前位置: 首页>>代码示例>>C#>>正文


C# SessionProperties.GetTracked方法代码示例

本文整理汇总了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);
            }
        }
开发者ID:rafu1,项目名称:pgina,代码行数:51,代码来源:Plugin.cs

示例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.");
        }
开发者ID:rafu1,项目名称:pgina,代码行数:58,代码来源:Plugin.cs

示例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
            }
        }
开发者ID:rafu1,项目名称:pgina,代码行数:70,代码来源:Plugin.cs


注:本文中的SessionProperties.GetTracked方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。