Example #1
0
		public PowwaSession CreateSession(string sessionId, RunspaceConnectionInfo connectionInfo, ClientInfo clientInfo, string authenticatedUserName)
		{
			bool flag = false;
			PowwaSession powwaSession;
			PowwaSession stringSid = new PowwaSession(sessionId, authenticatedUserName, connectionInfo, clientInfo);
			string str = null;
			stringSid.AuthenticatedUserSid = PowwaAuthorizationManager.Instance.activeDirectoryHelper.ConvertAccountNameToStringSid(authenticatedUserName, out flag, out str);
			lock (this.sessionsLock)
			{
				bool userActiveSessions = this.GetUserActiveSessions(stringSid.AuthenticatedUserSid) < PowwaAuthorizationManager.Instance.UserSessionsLimit;
				if (userActiveSessions)
				{
					stringSid.Name = this.GetSessionName(stringSid);
					try
					{
						this.sessions.Add(sessionId, stringSid);
					}
					catch (ArgumentException argumentException)
					{
						PowwaEvents.PowwaEVENT_DEBUG_LOG0("CreateSession: Attempt to create a session that already exists");
						throw new ArgumentException("There is already a PowWA session with the given ID", "sessionId");
					}
					powwaSession = stringSid;
				}
				else
				{
					object[] objArray = new object[1];
					objArray[0] = authenticatedUserName;
					throw new Exception(string.Format(CultureInfo.CurrentCulture, Resources.UserActiveSessionLimitReached, objArray));
				}
			}
			return powwaSession;
		}
Example #2
0
		private string GetSessionName(PowwaSession session)
		{
			string str;
			lock (this.sessionsLock)
			{
				DateTime now = DateTime.Now;
				object[] userName = new object[7];
				userName[0] = session.UserName;
				userName[1] = now.Year % 100;
				userName[2] = now.Month;
				userName[3] = now.Day;
				userName[4] = now.Hour;
				userName[5] = now.Minute;
				userName[6] = now.Second;
				string str1 = string.Format(CultureInfo.InvariantCulture, "{0}.{1:00}{2:00}{3:00}.{4:00}{5:00}{6:00}", userName);
				string str2 = str1;
				long num = (long)2;
				while (true)
				{
					if (this.sessions.Values.All<PowwaSession>((PowwaSession v) => string.Compare(v.Name, str2, StringComparison.OrdinalIgnoreCase) != 0))
					{
						break;
					}
					object[] objArray = new object[2];
					objArray[0] = str1;
					objArray[1] = num;
					str2 = string.Format(CultureInfo.InvariantCulture, "{0}.{1}", objArray);
					num = num + (long)1;
				}
				str = str2;
			}
			return str;
		}