/// <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(); }
/// <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(); }
/// <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; } }
/// <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; }
/// <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(); }
/// <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; } } }
/// <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]); } }
/// <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; } }
/// <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); }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }
/// <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) { }