Ejemplo n.º 1
0
        static int Main(string[] args)
        {
            OptionCollection options = new OptionCollection();

            options.Add(new StringOption("username", "指定登录的用户名。", "{用户名}"));
            options.Add(new StringOption("userpwd", "指定登录的用户密码。", "{用户密码}"));
            options.Add(new BooleanOption("autologin", "是否在此次登录时记住用户名和密码,使得下一次登录时无用户名和密码。"));
            options.Add(new BooleanOption("cancelautologin", "是否在此次登出时取消自动登录。"));
            options.Add(new SwitchOption("?", "显示此帮助信息。"));

            var result = options.ParseArguments(args);

            if (result.Options["?"].IsPresent)
            {
                System.Console.WriteLine("{0} [options]", Path.GetFileNameWithoutExtension(typeof(Program).Assembly.Location));
                options.WriteOptionSummary(System.Console.Out);
                return(1);
            }

            if (!result.Success)
            {
                result.WriteParseErrors(System.Console.Out);
                return(1);
            }
            if (result.UnusedArguments.Count != 0)
            {
                System.Console.WriteLine("无效的命令行参数。");
                return(1);
            }

            if (result.Options["username"].IsPresent && result.Options["userpwd"].IsPresent)
            {
                string username, userpwd;
                bool   autologin, cancelautologin;
                username        = (string)result.Options["username"].Value;
                userpwd         = (string)result.Options["userpwd"].Value;
                autologin       = result.Options["autologin"].IsPresent && (bool)result.Options["autologin"].Value;
                cancelautologin = result.Options["cancelautologin"].IsPresent && (bool)result.Options["cancelautologin"].Value;
                if (!autologin && cancelautologin)
                {
                    cancelautologin = false;
                }
                else if (autologin && !cancelautologin)
                {
                    autologin = false;
                }

                new Program()
                {
                    manager = Wlan_eduManager.CreateManagerFromRedirection()
                }
                .Run(username, userpwd, autologin, cancelautologin);
                return(0);
            }
            else
            {
                System.Console.WriteLine("未输入用户名或密码。");
                return(1);
            }
        }
Ejemplo n.º 2
0
        internal void Run(string userName, string userPwd, bool isAutoLogin, bool cancelAutoLogin)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            try
            {
                Program.manager = Wlan_eduManager.CreateManagerFromRedirection();
            }
            catch (Wlan_eduNotConnectedException)
            {
                throw;
            }
            catch (Exception)
            {
                userName        = null;
                userPwd         = null;
                isAutoLogin     = false;
                cancelAutoLogin = false;


                DateTime currentTime = DateTime.Now;
                Program.manager = new Wlan_eduManager(
                    new LoginInfoPage(string.Empty)
                {
                    wlanAcName     = "0434.0571.571.00",
                    wlanUserIp     = "10.137.188.218",
                    scriptVariants = new Dictionary <string, object>()
                    {
                        { "httpBase", "https://211.138.125.52:7090" },
                        { "ctxPath", "/zmcc" }
                    },
                    currentTime              = currentTime,
                    loginActionAddress       = $"https://211.138.125.52:7090/zmcc/portalLogin.wlan?{Wlan_eduManager.DateTimeToUnixTimeStamp(currentTime)}",
                    fetchTemporaryPwdAddress = $"https://211.138.125.52:7090/zmcc/portalApplyPwd.wlan"
                }
                    );
            }

            var form = new MainForm(userName, userPwd, isAutoLogin, cancelAutoLogin);

            Application.Run(form);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 初始化 <see cref="LogoutInfoPage"/> 。
        /// </summary>
        public override void Initialize()
        {
            this.scriptVariants = this.scriptVariants ??
                                  Regex.Matches(
                this.document.DocumentNode
                .SelectSingleNode(@"html/head/script")
                ?.InnerText,
                @"var\s+(?<VariantName>\w+?)\s+=\s+(?<VariantValue>(\s|\S)+?);"
                )
                                  .OfType <Match>()
                                  .ToDictionary <Match, string, object>(
                (match => match.Groups["VariantName"].Value),
                (match =>
            {
                string value = match.Groups["VariantValue"].Value;
                if (Regex.IsMatch(value, @"^(-)?\s*\d+$"))
                {
                    return(int.Parse(value));
                }
                else if (Regex.IsMatch(value, @"^\d*\.\d+$"))
                {
                    return(double.Parse(value));
                }
                else if (Regex.IsMatch(value, @"^""[^""]*""$"))
                {
                    return(value.Trim('"'));
                }
                else
                {
                    throw new NotSupportedException();
                }
            })
                );

            this.currentTime        = DateTime.Now;
            this.loginActionAddress = $"{this.scriptVariants["httpBase"]}{this.scriptVariants["ctxPath"]}/portalLogout.wlan?isCloseWindow=N&{Wlan_eduManager.DateTimeToUnixTimeStamp(this.currentTime)}";
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 初始化 <see cref="LogoutSucceededPage"/> 。
        /// </summary>
        public override void Initialize()
        {
            base.Initialize();

            this.loginActionAddress = $"{this.scriptVariants["httpBase"]}{this.scriptVariants["ctxPath"]}/portalLogin.wlan?{Wlan_eduManager.DateTimeToUnixTimeStamp(base.currentTime)}";
        }