/// <summary> /// Attempts to add the given hostmask, if it doesn't already exist. /// </summary> /// /// <param name="hostmask">The hostmask to add.</param> /// <param name="level">The level to add: either <code>ADMIN</code> or <code>PUBLIC</code>. </param> /// <param name="request">Our incoming <see cref="Request"/> object, which we use for creating our response.</param> /// /// <remarks> /// At present we only add <see cref="HostMatchType.Start"/> type users, and if a proper level is not specified, it is assumed that the user wants /// a <see cref="AccessLevel.Public"/>. There is also currently no way to add a <see cref="AccessLevel.Root"/> user, which is by design. /// </remarks> private void AddUser(string hostmask, string level, Request request) { if (AuthenticationManager.KnowsHost(hostmask)) { SendResponse(String.Format("The hostmask {0} already has an entry.", hostmask), request); } else { var host = new KnownHost { AccessLevel = GetAccessLevelByName(level), HostMask = hostmask, HostMatchType = HostMatchType.Start, }; AuthenticationManager.RememberHost(host); ModuleManagementContainer.HandleResponse(request.CreateResponse(ResponseType.Private, String.Format("Learned host {0}", TranslateHostToString(host)))); } }
/// <summary> /// A pretty-printer for a <see cref="KnownHost"/>. /// </summary> /// /// <param name="host">A <see cref="KnownHost"/> to pretty-print.</param> /// /// <returns>A pretty-printed <see cref="KnownHost"/> entry. Oh so pretty, oh so pretty.</returns> /// /// <remarks> /// This may eventually become the ToString method on <see cref="KnownHost"/>, but for now this module is the only one that cares. /// </remarks> private static string TranslateHostToString(KnownHost host) { return String.Format("[{0}: level {1}, type {2}, [metadata: {3}]]", host.HostMask, host.AccessLevel, host.HostMatchType, host.MetaData.Implode(", ", x => String.Format("[{0} - {1}]", x.Tag, x.Value))); }
/// <summary> /// A private utility method, ensures that the user has the flags that are required to access this resource. /// </summary> /// /// <param name="host">A <see cref="host"/> to check for required flags.</param> /// /// <returns>True if the user has all the required flags, else false.</returns> private bool RequiredFlagsSet(KnownHost host) { // Make sure that we've even got anything to check... if (null != host && null != host.AccessFlags) { // Make sure that all the required flags are present on the principal. return _requiredFlags.All(x => host.AccessFlags.Any(y => y.Flag.Equals(x, StringComparison.CurrentCultureIgnoreCase))); } return false; }
public long CreateHostEntry(string hostMask, AccessLevel accessLevel) { var authenticationManager = GetBean<IrcAuthenticationModule>("IrcAuthenticationModule"); var host = authenticationManager.FindHostByHostmaskMatch(hostMask); // TODO [Kog 04/16/2012] : This should probably throw an exception. // If we've seen this host before, short circuit and return the ID on file. if (null != host) { return host.Id; } host = new KnownHost { AccessLevel = accessLevel, HostMask = hostMask, HostMatchType = HostMatchType.Start, }; // If we've never seen the host, create a new one and return that id. authenticationManager.RememberHost(host); return host.Id; }
public void Delete(KnownHost host) { HibernateTemplate.Delete(host); }
public void SaveOrUpdate(KnownHost host) { HibernateTemplate.SaveOrUpdate(host); }