示例#1
0
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            PrivilegeLevel privilegeLevel          = (PrivilegeLevel)value;
            string         convertedPrivilegeLevel = String.Empty;

            switch (privilegeLevel)
            {
            case PrivilegeLevel.Standard:
                convertedPrivilegeLevel = "Standard";
                break;

            case PrivilegeLevel.Premium:
                convertedPrivilegeLevel = "Premium";
                break;

            case PrivilegeLevel.Executive:
                convertedPrivilegeLevel = "Executive";
                break;

            case PrivilegeLevel.PremiumExecutive:
                convertedPrivilegeLevel = "Premium Executive";
                break;
            }
            return(convertedPrivilegeLevel);
        }
示例#2
0
        public bool Execute(SlackBotCommand command)
        {
            string userToCheck;

            if (string.IsNullOrWhiteSpace(command.Text))
            {
                userToCheck = command.User.name;
            }
            else
            {
                userToCheck = command.Text;
            }

            PrivilegeLevel privilege = slackBot.GetUserPrivilege(userToCheck);

            string response;

            switch (privilege)
            {
            case PrivilegeLevel.Super:
                response = "Your privelege level is Super, that makes you in the 1% of privilege levels"; break;

            case PrivilegeLevel.Admin:
                response = "You got some privilege but not a lot.  You're an admin which is kind of like the guy in the factory that watches the other guys work." +
                           "On the one hand you're not the lowest level, but you're still in the factory son."; break;

            case PrivilegeLevel.Normal:
            default:
                response = "You're just a regular joe, p'ting.  But not like our Joe because he's actually kind of a big deal."; break;
            }

            slackBot.Reply(command, response);
            return(false);
        }
示例#3
0
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     if(more.Length != 0)
     {
         int space = more.Trim().IndexOf(' ');
         string subname = space == -1 ? more.Trim().ToLower() : more.Trim().Substring(0, space).ToLower();
         foreach (Command sub in subcommands)
         {
             if (sub.GetKeyword().ToLower() == subname)
             {
                 return " " + subname + sub.GetHelpText(current, null);
             }
         }
     }
     string result = " - Use 'help " + GetKeyword() + " <command>' to get help for a subcommand, <command> can be any of: ";
     int count = 0;
     foreach (Command sub in subcommands)
     {
         if (sub.Privilege <= current)
         {
             result += sub.GetKeyword() + (sub.GetKeyword() == DefaultSubCommand ? " (default)" : "") + ", ";
             count++;
         }
     }
     if (count == 0) return ": no subcommands available at your privilege level";
     else return result.Substring(0, result.Length - 2);
 }
示例#4
0
        public void BroadcastMessage(IMessage msg, PrivilegeLevel minimumPrivLevel = PrivilegeLevel.Administrator, ClientData skipUser = null)
        {
            string serialized = JsonConvert.SerializeObject(msg, Formatting.None);

            Type t = msg.GetType();

            Message message = new Message(MessageType.Data, 0x01);

            message.Store["type"]    = Encoding.UTF8.GetBytes(t.Name);
            message.Store["message"] = Utilities.Compress(Encoding.UTF8.GetBytes(serialized));

            lock (_UserListLock)
            {
                foreach (var user in Clients)
                {
                    try
                    {
                        if (skipUser != null && user == skipUser)
                        {
                            continue;
                        }

                        if (user.PrivilegeLevel >= minimumPrivLevel)
                        {
                            user.Connection.ServerLink.SendMessage(message);
                        }
                    }
                    catch (Exception ex)
                    {
                        logger.Trace(ex.Message, "Server BroadcastMessage: " + user.ClientName != string.Empty ? user.ClientGuid : user.ClientName);
                    }
                }
            }
        }
示例#5
0
        private bool checkPrivilegeAndNumberOfTickets(
            PrivilegeLevel proposedPrivilegeLevel,
            short proposedNumberOfTickets)
        {
            bool retVal = false;

            switch (proposedPrivilegeLevel)
            {
                case PrivilegeLevel.Standard:
                    retVal = (proposedNumberOfTickets <= 2);
                    break;

                case PrivilegeLevel.Premium:
                    retVal = (proposedNumberOfTickets <= 4);
                    break;

                case PrivilegeLevel.Executive:
                    retVal = (proposedNumberOfTickets <= 8);
                    break;

                case PrivilegeLevel.PremiumExecutive:
                    retVal = (proposedNumberOfTickets <= 10);
                    break;
            }

            return retVal;
        }
示例#6
0
        // Privilege replies

        public async Task <bool> ReplyValidatePrivilegeAsync(PrivilegeLevel level, ISpecies species = null)
        {
            if (species.IsValid() && Context.User.Id == species.Creator?.UserId)
            {
                return(true);
            }

            if (Config.HasPrivilegeLevel(Context.User, level))
            {
                return(true);
            }

            string privilegeName = "";

            switch (level)
            {
            case PrivilegeLevel.BotAdmin:
                privilegeName = "Bot Admin";
                break;

            case PrivilegeLevel.ServerAdmin:
                privilegeName = "Admin";
                break;

            case PrivilegeLevel.ServerModerator:
                privilegeName = "Moderator";
                break;
            }

            await ReplyErrorAsync($"You must have {privilegeName.ToTitle().ToBold()} privileges to use this command.");

            return(false);
        }
示例#7
0
        private bool checkPrivilegeAndNumberOfTickets(
            PrivilegeLevel proposedPrivilegeLevel,
            short proposedNumberOfTickets)
        {
            var retVal = false;

            switch (proposedPrivilegeLevel)
            {
            case PrivilegeLevel.Standard:
                retVal = (proposedNumberOfTickets <= 2);
                break;

            case PrivilegeLevel.Premium:
                retVal = (proposedNumberOfTickets <= 4);
                break;

            case PrivilegeLevel.Executive:
                retVal = (proposedNumberOfTickets <= 8);
                break;

            case PrivilegeLevel.PremiumExecutive:
                retVal = (proposedNumberOfTickets <= 10);
                break;
            }

            return(retVal);
        }
示例#8
0
    protected static bool IsValidCaller(int idClub, PrivilegeLevel level = PrivilegeLevel.ReadWrite)
    {
        // Check that you are authenticated - prevent cross-site scripting
        if (HttpContext.Current == null || HttpContext.Current.User == null || HttpContext.Current.User.Identity == null || !HttpContext.Current.User.Identity.IsAuthenticated || String.IsNullOrEmpty(HttpContext.Current.User.Identity.Name))
        {
            throw new MyFlightbookException("You must be authenticated to make this call");
        }

        if (idClub == Club.ClubIDNew)
        {
            throw new MyFlightbookException("Each scheduled item must be in the context of a club.");
        }

        Club c = Club.ClubWithID(idClub);

        if (c == null)
        {
            throw new MyFlightbookException("Invalid club specification - no such club.");
        }

        // Check that the user is a member of the specified club
        if (!c.HasMember(HttpContext.Current.User.Identity.Name))
        {
            throw new MyFlightbookException("You must be a member of the club to make this call");
        }

        if (level == PrivilegeLevel.ReadWrite && !c.CanWrite)
        {
            throw new MyFlightbookException(Branding.ReBrand(c.Status == Club.ClubStatus.Expired ? Resources.Club.errClubPromoExpired : Resources.Club.errClubInactive));
        }

        return(true);
    }
示例#9
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="id">The user's identification number.</param>
 /// <param name="name">The user's name.</param>
 /// <param name="number">The user's number.</param>
 /// <param name="dateOfBirth">The user's date of birth.</param>
 /// <param name="address">The user's address.</param>
 /// <param name="email">The user's email.</param>
 /// <param name="username">The user's username.</param>
 /// <param name="passwordHash">The user's password hash.</param>
 /// <param name="passwordSalt">The user's password salt.</param>
 /// <param name="privilegeLevel">The user's privilege level.</param>
 public User(int id, string name, string number, DateTime dateOfBirth, string address, string email, string username, string passwordHash, string passwordSalt, PrivilegeLevel privilegeLevel) :
     base(id, name, number, dateOfBirth, address, email)
 {
     Username       = username;
     PasswordHash   = passwordHash;
     PasswordSalt   = passwordSalt;
     PrivilegeLevel = privilegeLevel;
 }
示例#10
0
 /// <summary>
 /// Constructor.
 /// </summary>
 /// <param name="person">The person instance of the user.</param>
 /// <param name="username">The user's username.</param>
 /// <param name="passwordHash">The user's password hash.</param>
 /// <param name="passwordSalt">The user's password salt.</param>
 /// <param name="privilegeLevel">The user's privilege level.</param>
 public User(Person person, string username, string passwordHash, string passwordSalt, PrivilegeLevel privilegeLevel) :
     base(person)
 {
     Username       = username;
     PasswordHash   = passwordHash;
     PasswordSalt   = passwordSalt;
     PrivilegeLevel = privilegeLevel;
 }
示例#11
0
 public Command(VirtualServer _server, string _name, Action <ServerMessage, string> _cmd, PrivilegeLevel _priv, HelpMsgStrings _helpmessage)
 {
     server      = _server;
     name        = _name;
     helpmessage = _helpmessage;
     priv        = _priv;
     cmd         = _cmd;
 }
 /// <summary>
 /// Initializes a new instance of the OpenSessionRequest class.
 /// </summary>
 /// <param name="messageTag">Remote console message tag</param>
 /// <param name="maximumPrivilegeLevel">Maximum privilege level for this session.</param>
 /// <param name="remoteSessionId">Remote session ID.</param>
 internal OpenSessionRequest(byte messageTag, PrivilegeLevel maximumPrivilegeLevel, uint remoteSessionId, RmcpAuthentication authenticationAlgorithm, RmcpIntegrity integrityAlgorithm, RmcpConfidentiality confidentialityAlgorithm)
 {
     this.messageTag               = messageTag;
     this.maximumPrivilegeLevel    = maximumPrivilegeLevel;
     this.remoteSessionId          = remoteSessionId;
     this.authenticationAlgorithm  = Convert.ToByte(authenticationAlgorithm, CultureInfo.InvariantCulture);
     this.integrityAlgorithm       = Convert.ToByte(integrityAlgorithm, CultureInfo.InvariantCulture);
     this.confidentialityAlgorithm = Convert.ToByte(confidentialityAlgorithm, CultureInfo.InvariantCulture);
 }
示例#13
0
 public AuthenticationStartPacketBody(PrivilegeLevel privLvl, AuthenticationType type, AuthenticationService service, IPAddress remAdrr = null, string port = null, PacketType action = PacketType.TAC_PLUS_AUTHEN)
 {
     Action     = action;
     PrivLvl    = privLvl;
     AuthenType = type;
     Service    = service;
     RemAddr    = remAdrr;
     Port       = port;
 }
示例#14
0
        public void Register(IWifiAddon addon, string menuAnchor, string path, PrivilegeLevel level = PrivilegeLevel.Admins)
        {
            WifiAddon a = new WifiAddon();

            a.Addon      = addon;
            a.MenuAnchor = menuAnchor;
            a.Path       = path;
            a.Privilege  = level;
            m_Addons.Add(a);
        }
        public void RegisterCustomCSR(string name, uint number, PrivilegeLevel mode)
        {
            var customCSR = new SimpleCSR(name, number, mode);

            if (simpleCSRs.Keys.Any(x => x.Number == customCSR.Number))
            {
                throw new ConstructionException($"Cannot register CSR {customCSR.Name}, because its number 0x{customCSR.Number:X} is already registered");
            }
            simpleCSRs.Add(customCSR, 0);
            RegisterCSR(customCSR.Number, () => simpleCSRs[customCSR], value => simpleCSRs[customCSR] = value, name);
        }
示例#16
0
        /// <summary>
        /// Retrieves available commands
        /// </summary>
        /// <param name="privilegeLevel">The maximum privilege level</param>
        /// <returns>All commands up to and including the privilege level</returns>
        public static List <string> AvailableCommands(PrivilegeLevel privilegeLevel)
        {
            var commands = _commandMap
                           .Where(kvp => kvp.Value.PrivilegeLevel <= privilegeLevel)
                           .Select(kvp => kvp.Value.FriendlyName)
                           .ToList();

            commands.Sort();

            return(commands);
        }
 /// <summary>
 /// Initializes a new instance of the ActivateSessionRequest class.
 /// </summary>
 /// <param name="sessionAuthenticationType">Session authentication type.</param>
 /// <param name="maximumPrivilegeLevel">Maximum privilege level for this session.</param>
 /// <param name="sessionChallengeString">Challenge string from Get Session Challenge message.</param>
 /// <param name="initialOutboundSequenceNumber">Initial outbound sequence number.</param>
 internal ActivateSessionRequest(
     AuthenticationType sessionAuthenticationType,
     PrivilegeLevel maximumPrivilegeLevel,
     byte[] sessionChallengeString,
     uint initialOutboundSequenceNumber)
 {
     this.sessionAuthenticationType     = sessionAuthenticationType;
     this.maximumPrivilegeLevel         = maximumPrivilegeLevel;
     this.sessionChallengeString        = sessionChallengeString;
     this.initialOutboundSequenceNumber = initialOutboundSequenceNumber;
 }
 /// <summary>
 /// Initializes a new instance of the ActivateSessionRequest class.
 /// </summary>
 /// <param name="sessionAuthenticationType">Session authentication type.</param>
 /// <param name="maximumPrivilegeLevel">Maximum privilege level for this session.</param>
 /// <param name="sessionChallengeString">Challenge string from Get Session Challenge message.</param>
 /// <param name="initialOutboundSequenceNumber">Initial outbound sequence number.</param>
 internal ActivateSessionRequest(
     AuthenticationType sessionAuthenticationType, 
     PrivilegeLevel maximumPrivilegeLevel,
     byte[] sessionChallengeString,
     uint initialOutboundSequenceNumber)
 {
     this.sessionAuthenticationType = sessionAuthenticationType;
     this.maximumPrivilegeLevel = maximumPrivilegeLevel;
     this.sessionChallengeString = sessionChallengeString;
     this.initialOutboundSequenceNumber = initialOutboundSequenceNumber;
 }
示例#19
0
        private void purchaseTickets_Click(object sender, RoutedEventArgs e)
        {
            var eventBe =
                EventList.GetBindingExpression(ComboBox.TextProperty);
            var customerReferenceBe =
                CustomerReference.GetBindingExpression(TextBox.TextProperty);
            var privilegeLevelBe =
                PrivilegeLevel.GetBindingExpression(ComboBox.TextProperty);
            var numberOfTicketsBe =
                NumberOfTickets.GetBindingExpression(RangeBase.ValueProperty);

            if (eventBe == null)
            {
                return;
            }
            eventBe.UpdateSource();
            if (customerReferenceBe == null)
            {
                return;
            }
            customerReferenceBe.UpdateSource();
            if (privilegeLevelBe == null)
            {
                return;
            }
            privilegeLevelBe.UpdateSource();
            if (numberOfTicketsBe == null)
            {
                return;
            }
            numberOfTicketsBe.UpdateSource();

            if (eventBe.HasError || customerReferenceBe.HasError ||
                privilegeLevelBe.HasError || numberOfTicketsBe.HasError)
            {
                MessageBox.Show("Please correct errors", "Purchase aborted");
            }
            else
            {
                var ticketOrderBinding =
                    BindingOperations.GetBinding(PrivilegeLevel, ComboBox.TextProperty);
                if (ticketOrderBinding == null)
                {
                    return;
                }
                var ticketOrder = ticketOrderBinding.Source as TicketOrder;
                if (ticketOrder != null)
                {
                    MessageBox.Show(ticketOrder.ToString(), "Purchased");
                }
            }
        }
示例#20
0
        private void HandleMessage(NewMessage newMessage)
        {
            if (newMessage.user == null)             //The message is from us, ignore
            {
                newMessage.user = SlackBot.MySelf.id;
            }
            //return;

            SlackBotCommand command;

            if (!SlackBotCommand.GetCommand(newMessage, SlackBot, out command))
            {
                return;
            }

            // DM to slackbot doesn't have a channel.
            if (command.Channel == null)
            {
                return;
            }

            if (CommandTypeRegistry.HasHandler(command.Name))
            {
                PrivilegeLevel privilegeLevel = CommandTypeRegistry.GetCommandType(command.Name).GetPrivilegeLevel();
                if ((int)GetUserPrivilege(command.User.name) < (int)privilegeLevel)
                {
                    Reply(command, "http://i.imgur.com/egUwx5Q.gif");
                    Reply(command, "You better check your privilege!");
                    return;
                }

                if (!CommandHandlerRegistry.HasCommand(command))
                {
                    CommandHandlerRegistry.RegisterCommand(command, this);
                }

                ICommandHandler handler = CommandHandlerRegistry.GetCommand(command);
                if (!handler.Execute(command))
                {
                    CommandHandlerRegistry.DeRegisterCommand(command);
                }
            }
            else
            {
                Reply(command, ":clippy: \"Were you trying to run this command?\"");
                Reply(command, string.Format("@badjob {0} not knowing the commands.", command.User.name));
            }
        }
        /// <summary>
        /// Set User Access
        /// </summary>
        /// <param name="userId">User Id.</param>
        /// <param name="userLmit">User Privilege Level.</param>
        /// <param name="allowBitMod">True|False, allow modification of bits in request byte</param>
        /// <param name="callBack">True|False, allow callbacks, usually set to False</param>
        /// <param name="linkAuth">True|False, allow link authoriation, usually set to True</param>
        /// <param name="ipmiMessage">allow Impi messaging, usually set to True</param>
        /// <param name="channel">channel used to communicate with BMC, 1-7</param>
        public virtual bool SetUserAccess(int userId, PrivilegeLevel priv, bool allowBitMod, bool callback, bool linkAuth, bool ipmiMessage, int channel)
        {
            // TODO:  implement Set Channel Access command to be comsistent with
            // the user settings.  Temp workaround, when setting user access
            // set allowBitMod to false.

            byte[] tempArray = new byte[1];

            // intialize 8 bit byte request for byte #1 of SetUserAccessRequest
            BitArray bitArray = new BitArray(8);

            byte[] channelByte = BitConverter.GetBytes(channel);

            // inialize BitArray with channel number
            BitArray channelBitArray = new BitArray(channelByte);

            // set BitArray values for supplied parameters
            bitArray.Set(7, allowBitMod);        // true|false, Allow changing of bits in the request byte
            bitArray.Set(6, callback);           // true|false, User Restricted to Callback
            bitArray.Set(5, linkAuth);           // true|false, Link Auth
            bitArray.Set(4, ipmiMessage);        // true|false, IPMI Messaging
            bitArray.Set(3, channelBitArray[3]); // channel number
            bitArray.Set(2, channelBitArray[2]); // channel number
            bitArray.Set(1, channelBitArray[1]); // channel number
            bitArray.Set(0, channelBitArray[0]); // channel number

            // copy BitArray to Byte[] array
            bitArray.CopyTo(tempArray, 0);

            // convert Byte value to base 16
            byte requestByte1 = Convert.ToByte(string.Format(CultureInfo.InvariantCulture, "{0:x}", tempArray[0]), 16);

            SetUserAccessResponse response = (SetUserAccessResponse)this.IpmiSendReceive(
                new SetUserAccessRequest(Convert.ToByte(userId, CultureInfo.InvariantCulture), Convert.ToByte(priv, CultureInfo.InvariantCulture), requestByte1, 0x00),
                typeof(SetUserAccessResponse));

            if (response.CompletionCode == 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#22
0
        private void FrmAddUser_Load(object sender, EventArgs e)
        {
            this.ComboBoxPrivilege.Items.AddRange(PrivilegeLevel.ToArray());

            if (WorkingState.Add == this.WorkingState)
            {
                this.Text = "添加";
                this.ComboBoxPrivilege.SelectedIndex = 0;
            }
            else if (WorkingState.Modify == this.WorkingState)
            {
                this.Text = "修改";
                this.TxtBoxUserName.Text    = this.User.Name;
                this.TxtBoxUserName.Enabled = false;
                this.TxtBoxPassword.Text    = this.User.Password;
                this.TxtBoxNickname.Text    = this.User.Nickname;
                this.ComboBoxPrivilege.Text = this.User.Privilege;
            }
        }
示例#23
0
        private PrivilegeDepth GetDepthFromLevel(PrivilegeLevel privilegeLevel)
        {
            switch (privilegeLevel)
            {
            case PrivilegeLevel.User:
                return(PrivilegeDepth.Basic);

            case PrivilegeLevel.BusinessUnit:
                return(PrivilegeDepth.Local);

            case PrivilegeLevel.ParentChildBusinessUnit:
                return(PrivilegeDepth.Deep);

            case PrivilegeLevel.Organization:
                return(PrivilegeDepth.Global);

            default:
                throw new Exception("Unexpected Privilege level");
            }
        }
 public AuthorizationRequestPacketBody(
     AuthenticationMethod authenMethod,
     PrivilegeLevel privLvl,
     AuthenticationType authenType,
     AuthenticationService service,
     string[] args,
     string user       = null,
     string port       = null,
     IPAddress remAddr = null
     )
 {
     AuthenMethod = authenMethod;
     PrivLvl      = privLvl;
     AuthenType   = authenType;
     Service      = service;
     User         = user;
     Port         = port;
     RemAddr      = remAddr;
     Args         = args;
 }
        public static string PrivilegeLevelToString(PrivilegeLevel privilegeLevel)
        {
            switch (privilegeLevel)
            {
            case PrivilegeLevel.BotAdmin:
                return("Bot Admin");

            case PrivilegeLevel.ServerAdmin:
                return("Admin");

            case PrivilegeLevel.ServerMember:
                return("Member");

            case PrivilegeLevel.ServerModerator:
                return("Moderator");

            default:
                return("Unknown");
            }
        }
        /// <summary>
        /// Negotiates the ipmi version and sets client accordingly. Also sets the authentication type for V1.5
        /// </summary>
        public virtual ChannelAuthenticationCapabilities GetAuthenticationCapabilities(PrivilegeLevel privilegeLevel, bool retry = false)
        {
            // Get Channel Authentication Capabilities
            GetChannelAuthenticationCapabilitiesResponse response =
                (GetChannelAuthenticationCapabilitiesResponse)this.IpmiSendReceive(
                    new GetChannelAuthenticationCapabilitiesRequest(0x0E, privilegeLevel),
                    typeof(GetChannelAuthenticationCapabilitiesResponse), retry);

            ChannelAuthenticationCapabilities authCapabilities = new ChannelAuthenticationCapabilities(response.CompletionCode);

            if (response.CompletionCode == 0)
            {
                authCapabilities.SetParamaters(response.ChannelNumber,
                    response.AuthenticationTypeSupport1,
                    response.AuthenticationTypeSupport2,
                    response.ExtendedCapabilities,
                    response.OemId, response.OemData);
            }

            return authCapabilities;
        }
        private void AddPrivilegeLevel(PrivilegeLevel level, string privilegeLevelName, Entity privilege)
        {
            if (actions.Any(x => x.PrivilegeId == privilege.Id))
            {
                lblAlreadyAdded.Visible = true;
            }
            else
            {
                lblAlreadyAdded.Visible = false;

                actions.Add(new PrivilegeAction
                {
                    Level         = level,
                    PrivilegeId   = privilege.Id,
                    PrivilegeName = privilege["name"].ToString()
                });

                var item = new ListViewItem(privilege["name"].ToString());
                item.SubItems.Add(privilegeLevelName);
                item.Tag = privilege;
                listView1.Items.Add(item);
            }
        }
示例#28
0
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            PrivilegeLevel privilegeLevel = PrivilegeLevel.Standard;

            switch ((string)value)
            {
            case "Standard":
                privilegeLevel = PrivilegeLevel.Standard;
                break;

            case "Premium":
                privilegeLevel = PrivilegeLevel.Premium;
                break;

            case "Executive":
                privilegeLevel = PrivilegeLevel.Executive;
                break;

            case "Premium Executive":
                privilegeLevel = PrivilegeLevel.PremiumExecutive;
                break;
            }
            return(privilegeLevel);
        }
示例#29
0
        public async Task <AuthenticationStatus> AuthenticateAsciiAsync(string user, string pass, string remoteAddr, string port,
                                                                        PrivilegeLevel privLev = PrivilegeLevel.TAC_PLUS_PRIV_LVL_MAX, AuthenticationService authService = AuthenticationService.TAC_PLUS_AUTHEN_SVC_LOGIN)
        {
            var authStartBytes = new AuthenticationStartPacketBody(privLev, AuthenticationType.TAC_PLUS_AUTHEN_TYPE_ASCII, authService, IPAddress.Parse(remoteAddr), port).ToArray();

            var header = new PacketHeader(
                PacketType.TAC_PLUS_AUTHEN, 1,
                isEncryptionActive ? EncryptionFlag.TAC_PLUS_UNENCRYPTED_FLAG : EncryptionFlag.TAC_PLUS_ENCRYPTED_FLAG,
                authStartBytes.Length
                );

            using (TcpClient client = new TcpClient(serverIp, serverPort))
            {
                var recvData   = UnmergeHeaderAndBody(await SendAndReceiveDataAsync(client, MergeHeaderWithBody(header, authStartBytes).ToArray()));
                var recvHeader = recvData.Item1;
                if (AuthenticationReplyPacketBody.Parse(recvData.Item2).AuthStatus == AuthenticationStatus.GETUSER)
                {
                    var continuePacket = new AuthenticationContinuePacketBody(CommunicationFlag.CONTINUES, user);
                    recvHeader.SeqNumber++;
                    recvHeader.BodyLength = continuePacket.ToArray().Count();

                    recvData   = UnmergeHeaderAndBody(await SendAndReceiveDataAsync(client, MergeHeaderWithBody(recvHeader, continuePacket.ToArray()).ToArray()));
                    recvHeader = recvData.Item1;

                    if (AuthenticationReplyPacketBody.Parse(recvData.Item2).AuthStatus == AuthenticationStatus.GETPASS)
                    {
                        continuePacket = new AuthenticationContinuePacketBody(CommunicationFlag.CONTINUES, pass);
                        recvHeader.SeqNumber++;
                        recvHeader.BodyLength = continuePacket.ToArray().Count();

                        recvData = UnmergeHeaderAndBody(await SendAndReceiveDataAsync(client, MergeHeaderWithBody(recvHeader, continuePacket.ToArray()).ToArray()));
                    }
                }
                return(AuthenticationReplyPacketBody.Parse(recvData.Item2).AuthStatus);
            }
        }
 /// <summary>
 /// Send an IPMI Set Session Privilege Level request message and return the response.
 /// </summary>
 /// <param name="privilegeLevel">Privilege level for this session.</param>
 /// <returns>GetSessionChallengeResponse instance.</returns>
 public void SetSessionPrivilegeLevel(PrivilegeLevel privilegeLevel, bool retry = false)
 {
     this.IpmiSendReceive(
         new SetSessionPrivilegeLevelRequest(privilegeLevel),
         typeof(SetSessionPrivilegeLevelResponse), retry);
 }
示例#31
0
文件: Quote.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " <text>: Adds a quote to the collection, where <text> is the quote to be added";
 }
示例#32
0
文件: Grep.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " <pattern>: Performs a regular expression match of the log, returns last " + Limit + " matching entries";
 }
示例#33
0
文件: Prop.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " <name> [<val>]: Set property <name> to <val>. If <val> not specified, return current property value.";
 }
示例#34
0
 public RequirePrivilegeAttribute(PrivilegeLevel privilegeLevel) => PrivilegeLevel = privilegeLevel;
 private void AddTargetClaimCompleteRegister(Dictionary <long, DoubleWordRegister> registersMap, long offset, uint hartId, PrivilegeLevel level)
 {
     registersMap.Add(offset, new DoubleWordRegister(this).WithValueField(0, 32, valueProviderCallback: _ =>
     {
         var res = irqTargets[hartId].levels[(int)level].AcknowledgePendingInterrupt();
         this.Log(LogLevel.Noisy, "Acknowledging pending interrupt for hart {0} on level {1}: {2}", hartId, level, res);
         return(res);
     }, writeCallback: (_, value) =>
     {
         this.Log(LogLevel.Noisy, "Completing handling interrupt from source {0} for hart {1} on level {2}", value, hartId, level);
         irqTargets[hartId].levels[(int)level].CompleteHandlingInterrupt(irqSources[value]);
     }));
 }
示例#36
0
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " (<min> <max>)|(<max>): Generates a random number between min and max, inclusive. If min is not specified, 1 is assumed. If max is not specified, 100 is assumed";
 }
示例#37
0
文件: Say.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " <text>: Makes the bot say <text> on the channel";
 }
 /// <summary>
 /// Initializes a new instance of the GetChannelAuthenticationCapabilitiesRequest class.
 /// </summary>
 /// <param name="maximumPrivilegeLevel">Requested maximum privilege level.</param>
 internal GetChannelAuthenticationCapabilitiesRequest(byte channelNumber, PrivilegeLevel privilegeLevel)
 {
     // Channel number (0x0E == current channel this request was issued on)
     this.channelNumber = channelNumber;
     this.requestedPrivilegeLevel = (byte)privilegeLevel;
 }
示例#39
0
文件: Token.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " (add <IP>)|(get <IP>)|(del <IP>): Adds, gets or deletes an access token for the given IP";
 }
        private void AddPrivilegeLevel(PrivilegeLevel level, string privilegeLevelName, Entity privilege)
        {
            if (actions.Any(x => x.PrivilegeId == privilege.Id))
            {
                lblAlreadyAdded.Visible = true;
            }
            else
            {
                lblAlreadyAdded.Visible = false;

                actions.Add(new PrivilegeAction
                                 {
                                     Level = level,
                                     PrivilegeId = privilege.Id,
                                     PrivilegeName = privilege["name"].ToString()
                                 });

                var item = new ListViewItem(privilege["name"].ToString());
                item.SubItems.Add(privilegeLevelName);
                item.Tag = privilege;
                listView1.Items.Add(item);
            }
        }
示例#41
0
文件: Ad.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " [<key> [<value>]]: If empty, show current advertisement. Keys are interval, enabled, and text.";
 }
示例#42
0
文件: Clear.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return ": Clears the JTV chat";
 }
示例#43
0
        private PrivilegeDepth GetDepthFromLevel(PrivilegeLevel privilegeLevel)
        {
            switch (privilegeLevel)
            {
                case PrivilegeLevel.User:
                    return PrivilegeDepth.Basic;

                case PrivilegeLevel.BusinessUnit:
                    return PrivilegeDepth.Local;

                case PrivilegeLevel.ParentChildBusinessUnit:
                    return PrivilegeDepth.Deep;

                case PrivilegeLevel.Organization:
                    return PrivilegeDepth.Global;

                default:
                    throw new Exception("Unexpected Privilege level");
            }
        }
示例#44
0
文件: Spam.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " [set (0|1|2)]: Set the spam level - 0 = disabled - 1 = purge links - 2 = purge and tempban links";
 }
示例#45
0
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " [on|off]: Turns on or off additional developer commands, which are not very useful for non-developers";
 }
示例#46
0
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " [<key> [<value]]: If empty, show recent tweet. If key specified, show associated value. If key and value specified, set key to value. Keys: interval, enable, account";
 }
        private void AddTargetEnablesRegister(Dictionary <long, DoubleWordRegister> registersMap, long address, uint hartId, PrivilegeLevel level, int numberOfSources)
        {
            var maximumSourceDoubleWords = (int)Math.Ceiling((numberOfSources + 1) / 32.0) * 4;

            for (var offset = 0u; offset < maximumSourceDoubleWords; offset += 4)
            {
                var lOffset = offset;
                registersMap.Add(address + offset, new DoubleWordRegister(this).WithValueField(0, 32, writeCallback: (_, value) =>
                {
                    lock (irqSources)
                    {
                        // Each source is represented by one bit. offset and lOffset indicate the offset in double words from TargetXEnables,
                        // `bit` is the bit number in the given double word,
                        // and `sourceIdBase + bit` indicate the source number.
                        var sourceIdBase = lOffset * 8;
                        var bits         = BitHelper.GetBits(value);
                        for (var bit = 0u; bit < bits.Length; bit++)
                        {
                            var sourceNumber = sourceIdBase + bit;
                            if (sourceNumber == 0)
                            {
                                // Source number 0 is not used.
                                continue;
                            }
                            if (irqSources.Length <= sourceNumber)
                            {
                                if (bits[bit])
                                {
                                    this.Log(LogLevel.Noisy, "Trying to enable non-existing source: {0}", sourceNumber);
                                }
                                continue;
                            }

                            this.Log(LogLevel.Noisy, "{0} source #{1} for hart {2} on level {3}", bits[bit] ? "Enabling" : "Disabling", sourceNumber, hartId, level);
                            irqTargets[hartId].levels[(int)level].EnableSource(irqSources[sourceNumber], bits[bit]);
                        }
                        RefreshInterrupts();
                    }
                }));
            }
        }
示例#48
0
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " [Twitch Stream] Outputs viewer statistics for a stream. Default stream is '" + DefaultChannel + "'.";
 }
示例#49
0
文件: Unban.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " <name|mask>: Unbans a user by name or hostmask";
 }
示例#50
0
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return ": Tells the privilege level the bot thinks you have";
 }
示例#51
0
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return ": Restarts the bot";
 }
 /// <summary>
 /// Send an IPMI Set Session Privilege Level request message and return the response.
 /// </summary>
 /// <param name="privilegeLevel">Privilege level for this session.</param>
 /// <returns>GetSessionChallengeResponse instance.</returns>
 public void SetSessionPrivilegeLevel(PrivilegeLevel privilegeLevel, bool retry = false)
 {
     this.IpmiSendReceive(
        new SetSessionPrivilegeLevelRequest(privilegeLevel),
        typeof(SetSessionPrivilegeLevelResponse), retry);
 }
 /// <summary>
 /// Initializes a new instance of the SetSessionPrivilegeLevelRequest class.
 /// </summary>
 internal SetSessionPrivilegeLevelRequest(PrivilegeLevel requestedPrivilegeLevel)
 {
     this.requestedPrivilegeLevel = requestedPrivilegeLevel;
 }
        /// <summary>
        /// Set User Access
        /// </summary>
        /// <param name="userId">User Id.</param>
        /// <param name="userLmit">User Privilege Level.</param>
        /// <param name="allowBitMod">True|False, allow modification of bits in request byte</param>
        /// <param name="callBack">True|False, allow callbacks, usually set to False</param>
        /// <param name="linkAuth">True|False, allow link authoriation, usually set to True</param>
        /// <param name="ipmiMessage">allow Impi messaging, usually set to True</param>
        /// <param name="channel">channel used to communicate with BMC, 1-7</param>
        public virtual bool SetUserAccess(int userId, PrivilegeLevel priv, bool allowBitMod, bool callback, bool linkAuth, bool ipmiMessage, int channel)
        {
            // TODO:  implement Set Channel Access command to be comsistent with
            // the user settings.  Temp workaround, when setting user access
            // set allowBitMod to false.

            byte[] tempArray = new byte[1];

            // intialize 8 bit byte request for byte #1 of SetUserAccessRequest
            BitArray bitArray = new BitArray(8);

            byte[] channelByte = BitConverter.GetBytes(channel);

            // inialize BitArray with channel number
            BitArray channelBitArray = new BitArray(channelByte);

            // set BitArray values for supplied parameters
            bitArray.Set(7, allowBitMod); // true|false, Allow changing of bits in the request byte
            bitArray.Set(6, callback); // true|false, User Restricted to Callback
            bitArray.Set(5, linkAuth); // true|false, Link Auth
            bitArray.Set(4, ipmiMessage); // true|false, IPMI Messaging
            bitArray.Set(3, channelBitArray[3]); // channel number
            bitArray.Set(2, channelBitArray[2]); // channel number
            bitArray.Set(1, channelBitArray[1]); // channel number
            bitArray.Set(0, channelBitArray[0]); // channel number

            // copy BitArray to Byte[] array
            bitArray.CopyTo(tempArray, 0);

            // convert Byte value to base 16
            byte requestByte1 = Convert.ToByte(string.Format(CultureInfo.InvariantCulture, "{0:x}", tempArray[0]), 16);

            SetUserAccessResponse response = (SetUserAccessResponse)this.IpmiSendReceive(
                  new SetUserAccessRequest(Convert.ToByte(userId, CultureInfo.InvariantCulture), Convert.ToByte(priv, CultureInfo.InvariantCulture), requestByte1, 0x00),
                  typeof(SetUserAccessResponse));

            if (response.CompletionCode == 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        /// <summary>
        /// Negotiates the ipmi version and sets client accordingly. Also sets the authentication type for V1.5
        /// </summary>
        public virtual ChannelAuthenticationCapabilities GetAuthenticationCapabilities(PrivilegeLevel privilegeLevel, bool retry = false)
        {
            // Get Channel Authentication Capabilities
            GetChannelAuthenticationCapabilitiesResponse response =
                (GetChannelAuthenticationCapabilitiesResponse)this.IpmiSendReceive(
                    new GetChannelAuthenticationCapabilitiesRequest(0x0E, privilegeLevel),
                    typeof(GetChannelAuthenticationCapabilitiesResponse), retry);

            ChannelAuthenticationCapabilities authCapabilities = new ChannelAuthenticationCapabilities(response.CompletionCode);

            if (response.CompletionCode == 0)
            {
                authCapabilities.SetParamaters(response.ChannelNumber,
                                               response.AuthenticationTypeSupport1,
                                               response.AuthenticationTypeSupport2,
                                               response.ExtendedCapabilities,
                                               response.OemId, response.OemData);
            }

            return(authCapabilities);
        }
示例#56
0
文件: Limit.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " <command> [<subscriber> <other>]: Limits the usage of a command to the given interval (in seconds) for subscribers and other users";
 }
 /// <summary>
 /// Initializes a new instance of the GetChannelAuthenticationCapabilitiesRequest class.
 /// </summary>
 /// <param name="maximumPrivilegeLevel">Requested maximum privilege level.</param>
 internal GetChannelAuthenticationCapabilitiesRequest(PrivilegeLevel privilegeLevel)
 {
     this.requestedPrivilegeLevel = (byte)privilegeLevel;
 }
示例#58
0
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " " + AdvertCommand.HelpText;
 }
示例#59
0
文件: Purge.cs 项目: vsrz/desbot_vsrz
 public override string GetHelpText(PrivilegeLevel current, string more)
 {
     return " <who>: Purges all text from a user";
 }
示例#60
0
文件: Alice.cs 项目: vsrz/desbot_vsrz
        public static string Process(string from, string text, PrivilegeLevel level)
        {
            if (ai != null && text != null && text.Length > 3)
            {
                if (limiter.AttemptOperation(level))
                {
                    try
                    {
                        //update context
                        ai.SetPredicate("name", from);

                        //run ALICE
                        AIMLProcessor.Inputs.Insert(0, text);
                        AIMLProcessor.Thats.Insert(0, ai.FindTemplate(text, AIMLProcessor.Thats[0], "*"));
                        string result = AIMLProcessor.Thats[0];

                        //clean up output
                        result = result.Replace("\r", "").Replace("\n", " ").Replace("  ", " ");

                        //prevent exploit
                        if (result.StartsWith("\\") || result.StartsWith("/") || result.StartsWith(".")) return "";

                        //done
                        return result;
                    }
                    catch (Exception ex)
                    {
                        //remove limiter
                        limiter.Reset();

                        //log error
                        Program.Log("Alice failed to parse: " + text + ", exception: " + ex.Message);
                    }
                }
            }
            return "";
        }