コード例 #1
0
ファイル: ChangePassword.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Complete constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="text">Text to parse and optional parameters separated by semicolon</param>
 /// <param name="prev">Link to caller screen</param>
 public ChangePassword(IBBSClient c, IServer s, string text, IScreen prev) : base(c, s, text, prev)
 {
     status = states.WaitForOldPassword;
     using (bbsContext bbs = new bbsContext())
         user = bbs.GetUserByUsername(client.username);
     InitCatalog();
 }
コード例 #2
0
        /// <summary>
        /// Complete constructor
        /// </summary>
        /// <param name="c">Client reference</param>
        /// <param name="s">Server reference</param>
        /// <param name="text">Text to parse and optional parameters separated by semicolon</param>
        /// <param name="prev">Link to caller screen</param>
        public LoginScreen(IBBSClient c, IServer s, string text, IScreen prev) : base(c, s, text, prev)
        {
            status = states.WaitForUsername;
            NameValueCollection SecurityOptions = (NameValueCollection)ConfigurationManager.GetSection("Security");

            maxtries = Convert.ToInt16(SecurityOptions["MaxTries"]);
            InitCatalog();
        }
コード例 #3
0
 /// <summary>
 /// Tests if client supports binary transmission
 /// </summary>
 /// <param name="data"></param>
 /// <param name="offset"></param>
 /// <param name="c"></param>
 public static void HandleBinary(byte[] data, int offset, IBBSClient c)
 {
     if (data[offset + 1] == (byte)Tokens.DO &&
         data[offset + 2] == (byte)Operations.BinaryTransmission)
     {
         c.BinaryMode = true;
     }
 }
コード例 #4
0
 /// <summary>
 /// Complete constructor
 /// </summary>
 /// <param name="c">Reference to client</param>
 /// <param name="s">Reference to server</param>
 /// <param name="prev">Link to caller screen</param>
 public ScreenBase(IBBSClient c, IServer s, IScreen prev)
 {
     client   = c;
     server   = s;
     Previous = prev;
     ANSI     = new ANSICodes();
     locale   = string.IsNullOrWhiteSpace(c.locale) ?
                ConfigurationManager.AppSettings["defaultLocale"] : c.locale;
     _moduleParam = string.Empty;
 }
コード例 #5
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="c">Reference to the client</param>
        /// <param name="s">Reference to the server</param>
        /// <param name="filename">Name of the parsed file</param>
        public BBSCodeListener(IBBSClient c, IServer s, string filename) : base()
        {
            Client   = c;
            Server   = s;
            FileName = filename;

            Parsed          = new BBSCodeResult();
            TagsTable       = new TagsDict();
            EntitiesTable   = new EntitiesDict(Client);
            AttributesTable = new AttributesDict();
            ANSI            = new ANSICodes();
        }
コード例 #6
0
 /// <summary>
 /// Handles window size negotiation as described in RFC1073
 /// <see cref="https://tools.ietf.org/html/rfc1073"/>
 /// </summary>
 /// <param name="data">received data</param>
 /// <param name="c">client to update</param>
 /// <remarks>
 /// Manages sequences like
 /// <code>
 /// IAC SB NAWS "16-bit value" "16-bit valu"> IAC SE
 /// </code>
 /// Sent by the Telnet client to inform the Telnet server of the
 /// window width and height.
 /// </remarks>
 public static void HandleWindowSize(byte[] data, int offset, IBBSClient c)
 {
     if (data[offset + 1] == (byte)Tokens.Subnegotiation &&
         data[offset + 2] == (byte)Operations.NegotiateAboutWindowSize)
     {
         int w = data[offset + 3] * 256 + data[offset + 4];
         int h = data[offset + 5] * 256 + data[offset + 6];
         if (w != 0)
         {
             c.screenWidth = w;
         }
         if (h != 0)
         {
             c.screenHeight = h;
         }
     }
 }
コード例 #7
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="c">Reference to the client</param>
        public EntitiesDict(IBBSClient c)
        {
            client = c;

            EntitiesTable = new Dictionary <string, Entities>();
            foreach (Entities t in Enum.GetValues(typeof(Entities)))
            {
                EntitiesTable.Add(t.ToString().ToUpper(), t);
            }

            CustomEntitiesTable = new Dictionary <string, string>();
            NameValueCollection config = (NameValueCollection)ConfigurationManager.GetSection("Entities");

            foreach (string key in config)
            {
                CustomEntitiesTable.Add(key.Trim().ToUpper(), config[key]);
            }
        }
コード例 #8
0
        /// <summary>
        /// Complete constructor
        /// </summary>
        /// <param name="c">Client reference</param>
        /// <param name="s">Server reference</param>
        /// <param name="txt">Text to parse and optional parameters separated by semicolon</param>
        /// <param name="prev">Link to caller screen</param>
        public TextScreenBase(IBBSClient c, IServer s, string txt, IScreen prev) : this(c, s, prev)
        {
            Text   = new List <string>();
            Header = new List <string>();
            Footer = new List <string>();

            _moduleParam = txt;
            if (!string.IsNullOrWhiteSpace(txt))
            {
                Params = txt.Split(';');
                if (!string.IsNullOrWhiteSpace(Params[0]))
                {
                    ReadText(Params[0]);
                }

                dataAreaStart = Header.Count + 1;
                dataAreaSize  = client.screenHeight - Header.Count - Footer.Count;
            }
        }
コード例 #9
0
        /// <summary>
        /// Receive terminal type from cliente RFC884 - RFC1091
        /// <see cref="https://tools.ietf.org/html/rfc884"/>
        /// <see cref="https://tools.ietf.org/html/rfc1091"/>
        /// </summary>
        /// <param name="data">received data</param>
        /// <param name="c">client to update</param>
        /// <remarks>
        /// Client sends data in the form
        /// <code>
        /// IAC SB TERMINAL-TYPE IS ... IAC SE
        /// </code>
        /// The code for IS is 0.
        /// </remarks>
        public static bool HandleTerminalType(byte[] data, int offset, IBBSClient c)
        {
            if (data[offset + 1] == (byte)Tokens.Subnegotiation &&
                data[offset + 2] == (byte)Operations.TerminalType &&
                data[offset + 3] == 0)
            {
                StringBuilder sb = new StringBuilder();
                for (int j = offset + 4; data[j] != (byte)Tokens.IAC; j++)
                {
                    sb.Append((char)data[j]);
                }

                if (string.IsNullOrWhiteSpace(c.terminalType))
                {
                    c.terminalType = sb.ToString();
                }

                return(c.TryAddTerminalType(sb.ToString()));
            }
            return(false);
        }
コード例 #10
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="prev">Link to caller screen</param>
 public LoginScreen(IBBSClient c, IServer s, IScreen prev) : this(c, s, defaultText, prev)
 {
 }
コード例 #11
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 public LoginScreen(IBBSClient c, IServer s) : this(c, s, defaultText)
 {
 }
コード例 #12
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 public MessageScreen(IBBSClient c, IServer s) : base(c, s, defaultText)
 {
 }
コード例 #13
0
 /// <summary>
 /// Complete constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="txt">Text to parse and optional parameters separated by semicolon</param>
 /// <param name="prev">Link to caller screen</param>
 public MessageAreaGroups(IBBSClient c, IServer s, string txt, IScreen prev) : base(c, s, txt, prev)
 {
 }
コード例 #14
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="txt">Text to parse and optional parameters separated by semicolon</param>
 public MessageAreaGroups(IBBSClient c, IServer s, string txt) : this(c, s, txt, null)
 {
 }
コード例 #15
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="prev">Link to caller screen</param>
 public MessageAreaGroups(IBBSClient c, IServer s, IScreen prev) : this(c, s, defaultText, prev)
 {
 }
コード例 #16
0
ファイル: Help.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Complete constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="text">Text to parse and optional parameters separated by semicolon</param>
 /// <param name="prev">Link to caller screen</param>
 public Help(IBBSClient c, IServer s, string text, IScreen prev) : base(c, s, text, prev)
 {
 }
コード例 #17
0
ファイル: Logout.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Complete constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="txt">Text to parse and optional parameters separated by semicolon</param>
 /// <param name="prev">Link to caller screen</param>
 public Logout(IBBSClient c, IServer s, string txt, IScreen prev) : base(c, s, txt, prev)
 {
 }
コード例 #18
0
ファイル: MessagesList.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 public MessagesList(IBBSClient c, IServer s) : base(c, s, defaultText)
 {
 }
コード例 #19
0
ファイル: Help.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 public Help(IBBSClient c, IServer s) : this(c, s, defaultText)
 {
 }
コード例 #20
0
ファイル: ChangePassword.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="text">Text to parse and optional parameters separated by semicolon</param>
 public ChangePassword(IBBSClient c, IServer s, string text) : this(c, s, text, null)
 {
 }
コード例 #21
0
ファイル: ChangePassword.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="prev">Link to caller screen</param>
 public ChangePassword(IBBSClient c, IServer s, IScreen prev) : this(c, s, defaultText, prev)
 {
 }
コード例 #22
0
ファイル: ChangePassword.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 public ChangePassword(IBBSClient c, IServer s) : this(c, s, defaultText)
 {
 }
コード例 #23
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="text">Text to parse and optional parameters separated by semicolon</param>
 public LoginScreen(IBBSClient c, IServer s, string text) : this(c, s, text, null)
 {
 }
コード例 #24
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 public MessageAreaGroups(IBBSClient c, IServer s) : this(c, s, defaultText, null)
 {
 }
コード例 #25
0
ファイル: MessagesList.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="txt">Text to parse and optional parameters separated by semicolon</param>
 public MessagesList(IBBSClient c, IServer s, string txt) : this(c, s, txt, null)
 {
 }
コード例 #26
0
ファイル: Help.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="text">Text to parse and optional parameters separated by semicolon</param>
 public Help(IBBSClient c, IServer s, string text) : this(c, s, text, null)
 {
 }
コード例 #27
0
ファイル: MessagesList.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="prev">Link to caller screen</param>
 public MessagesList(IBBSClient c, IServer s, IScreen prev) : this(c, s, defaultText, prev)
 {
 }
コード例 #28
0
ファイル: Logout.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 public Logout(IBBSClient c, IServer s) : this(c, s, defaultText, null)
 {
 }
コード例 #29
0
ファイル: MessagesList.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Complete constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="txt">Text to parse and optional parameters separated by semicolon</param>
 /// <param name="prev">Link to caller screen</param>
 public MessagesList(IBBSClient c, IServer s, string txt, IScreen prev) : base(c, s, txt, prev)
 {
 }
コード例 #30
0
ファイル: Logout.cs プロジェクト: strawberryfield/BBS
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="c">Client reference</param>
 /// <param name="s">Server reference</param>
 /// <param name="txt">Text to parse and optional parameters separated by semicolon</param>
 public Logout(IBBSClient c, IServer s, string txt) : this(c, s, txt, null)
 {
 }