示例#1
0
        /// <summary>
        /// コマンドライン引数からWebAPI用ユーザ情報を取得する
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        private MyNumberAPIConfig GetCommandParameters(IEnumerable <string> args)
        {
            Dictionary <string, string> plist = new Dictionary <string, string>()
            {
                { "TKEY", string.Empty },
                { "AKEY", string.Empty },
                { "USER", string.Empty },
                { "PASS", string.Empty },
                { "EMPLOYEEFILE", string.Empty },
                { "FAMILYFILE", string.Empty },
                { "MYNUMBERFILE", string.Empty },
            };
            //var p_t = args.Where(x => Regex.IsMatch(x, "/t=", RegexOptions.IgnoreCase)).FirstOrDefault();
            //if (p_t != null)
            //{
            //	plist["TKEY"] = p_t.Remove(0, 3);
            //}
            //var p_a = args.Where(x => Regex.IsMatch(x, "/a=", RegexOptions.IgnoreCase)).FirstOrDefault();
            //if (p_a != null)
            //{
            //	plist["AKEY"] = p_a.Remove(0, 3);
            //}
            //var p_u = args.Where(x => Regex.IsMatch(x, "/u=", RegexOptions.IgnoreCase)).FirstOrDefault();
            //if (p_u != null)
            //{
            //	plist["USER"] = p_u.Remove(0, 3);
            //}
            //var p_p = args.Where(x => Regex.IsMatch(x, "/p=", RegexOptions.IgnoreCase)).FirstOrDefault();
            //if (p_p != null)
            //{
            //	plist["PASS"] = p_p.Remove(0, 3);
            //}
            var p_emp = args.Where(x => Regex.IsMatch(x, "/e=", RegexOptions.IgnoreCase)).FirstOrDefault();

            if (p_emp != null)
            {
                plist["EMPLOYEEFILE"] = p_emp.Remove(0, 3);
            }
            var p_fmly = args.Where(x => Regex.IsMatch(x, "/f=", RegexOptions.IgnoreCase)).FirstOrDefault();

            if (p_fmly != null)
            {
                plist["FAMILYFILE"] = p_fmly.Remove(0, 3);
            }
            var p_mynum = args.Where(x => Regex.IsMatch(x, "/m=", RegexOptions.IgnoreCase)).FirstOrDefault();

            if (p_mynum != null)
            {
                plist["MYNUMBERFILE"] = p_mynum.Remove(0, 3);
            }
            if (string.IsNullOrWhiteSpace(plist["EMPLOYEEFILE"]) ||
                string.IsNullOrWhiteSpace(plist["FAMILYFILE"]) ||
                string.IsNullOrWhiteSpace(plist["MYNUMBERFILE"])
                )
            {
                throw new Exception("コマンドライン引数が不正です。");
            }

            MyNumberAPIConfig cfg = new MyNumberAPIConfig();

            cfg.TenantKey       = plist["TKEY"];
            cfg.AccessKey       = plist["AKEY"];
            cfg.AccountID       = plist["USER"];
            cfg.AccountPassword = plist["PASS"];
            FilePathEmployee    = plist["EMPLOYEEFILE"];
            FilePathFamily      = plist["FAMILYFILE"];
            FilePathIndividual  = plist["MYNUMBERFILE"];

            return(cfg);
        }
示例#2
0
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            cntxt.Message = "処理準備中";

            SetFocusToTopControl(this);

            MyNumberAPIConfig cmdcfg = new MyNumberAPIConfig();

            try
            {
                cmdcfg = GetCommandParameters(System.Environment.GetCommandLineArgs().Skip(1));
            }
            catch (Exception ex)
            {
                // 基本情報が指定されていなければ処理続行不可能
                MessageBox.Show(ex.Message);
                this.ExitCode = 1;
                this.Close();
                return;
            }
            finally
            {
            }

            var dsp = this.Dispatcher;

            try
            {
                mapi = new MyNumberAPI(null);
                // ローカルConfigからパラメータをロードする
                mapi.LoadConfig();
                mapicfg = mapi.ApiConfig;

                // コマンドライン引数で指定されたパラメータを優先する
                if (string.IsNullOrWhiteSpace(cmdcfg.TenantKey) != true)
                {
                    mapicfg.TenantKey = cmdcfg.TenantKey;
                }
                if (string.IsNullOrWhiteSpace(cmdcfg.AccessKey) != true)
                {
                    mapicfg.AccessKey = cmdcfg.AccessKey;
                }
                if (string.IsNullOrWhiteSpace(cmdcfg.AccountID) != true)
                {
                    mapicfg.AccountID = cmdcfg.AccountID;
                }
                if (string.IsNullOrWhiteSpace(cmdcfg.AccountPassword) != true)
                {
                    mapicfg.AccountPassword = cmdcfg.AccountPassword;
                }

                cntxt.TenantKey       = mapicfg.TenantKey;
                cntxt.AccessKey       = mapicfg.AccessKey;
                cntxt.AccountID       = mapicfg.AccountID;
                cntxt.AccountPassword = mapicfg.AccountPassword;
                passboxCert.Password  = cntxt.AccountPassword;
                if (string.IsNullOrWhiteSpace(cntxt.TenantKey) ||
                    string.IsNullOrWhiteSpace(cntxt.AccessKey) ||
                    string.IsNullOrWhiteSpace(cntxt.AccountID) ||
                    string.IsNullOrWhiteSpace(cntxt.AccountPassword)
                    )
                {
                    throw new MyNumberAPIException("接続情報を全て設定してください。");
                }
                var certlist = KyoeiSystem.Framework.Net.Cert.GetCertCollection();
                cntxt.SelectedCertInfo = null;
                if (string.IsNullOrWhiteSpace(mapicfg.ClientCertSerialNo))
                {
                    throw new MyNumberAPICertException();
                }
                foreach (var cert in certlist)
                {
                    if (mapicfg.ClientCertSerialNo == cert.SerialNumber)
                    {
                        cntxt.SelectedCertInfo = new CertInfo()
                        {
                            SerialNo            = cert.SerialNumber,
                            SubjectName         = cert.SubjectName.Name,
                            IssuerName          = cert.IssuerName.Name,
                            FormatedIssuerName  = cert.IssuerName.Format(true).TrimEnd(new char[] { '\r', '\n', }),
                            FromatedSubjectName = cert.SubjectName.Format(true).TrimEnd(new char[] { '\r', '\n', }),
                            FromDate            = cert.NotBefore,
                            ToDate     = cert.NotAfter,
                            Selectable = (cert.NotAfter >= DateTime.Now),
                        };
                        cntxt.CertSubject  = string.Empty;
                        cntxt.CertSubject += string.Format("[有効期限]\r\n{0:yyyy/MM/dd}\r\n", cntxt.SelectedCertInfo.ToDate);
                        cntxt.CertSubject += string.Format("[発行元]\r\n{0}\r\n", cntxt.SelectedCertInfo.FormatedIssuerName);
                        cntxt.CertSubject += string.Format("[サブジェクト]\r\n{0}\r\n", cntxt.SelectedCertInfo.FromatedSubjectName);
                        cntxt.CertSubject += string.Format("[シリアル番号]\r\n{0}", cntxt.SelectedCertInfo.SerialNo);

                        mapicfg.ClientCertSerialNo = cntxt.SelectedCertInfo.SerialNo;

                        break;
                    }
                }
                checkConfigs();
            }
            catch (MyNumberAPIConfigException ex)
            {
                //dsp.Invoke(new ConfigErrorDelegate(ConfigError), string.Format("アプリケーションが正しくセットアップできていません。\r\n<詳細>\r\n{0}", ex.Message));
                dsp.Invoke(new ExecuteResultDelegate(ExecuteResult), false, string.Format("アプリケーションが正しくセットアップできていません。\r\n<詳細>\r\n{0}", ex.Message));
            }
            catch (MyNumberAPICertException)
            {
                dsp.Invoke(new ConfigErrorDelegate(ConfigCertError), "クライアント証明書を選択してください。");
            }
            //catch (MyNumberAPIException ex)
            //{
            //	dsp.Invoke(new ExecuteResultDelegate(ExecuteResult), false, string.Format("アプリケーションが正しくセットアップできていません。\r\n<詳細>\r\n{0}", ex.Message));
            //}
            catch (Exception ex)
            {
                dsp.Invoke(new ConfigErrorDelegate(ConfigError), ex.Message);
            }
            finally
            {
            }
        }