예제 #1
0
파일: WmCoreOp.cs 프로젝트: tmbx/kwm-ng
        /// <summary>
        /// This method must be called when the HTTP or KMOD query has
        /// completed.
        /// </summary>
        private void OnQueryCompletion()
        {
            // Bail out if there is still a pending query.
            if (m_httpQuery != null || m_kmodQuery != null)
            {
                return;
            }

            // The tbxsosd registration succeeded. Ignore the result of the
            // HTTP query, it is irrelevant.
            if (m_kmodResCode == EAnpRegisterKpsCode.OK)
            {
                // Update the registry.
                KwmCfg cfg = KwmCfg.Spawn();
                UpdateRegistryObject(cfg);
                cfg.Commit();
            }

            // Use the error code set by the HTTP query.
            else if (m_httpResCode != EAnpRegisterKpsCode.OK)
            {
                ResCode = m_httpResCode;
                ResMsg  = ErrorCodeToMsg(ResCode, m_httpEx);
            }

            // Use the error provided by KMOD/tbxsosd.
            else
            {
                ResCode = m_kmodResCode;
                ResMsg  = ErrorCodeToMsg(ResCode, m_kmodEx);
            }

            // We're done.
            Complete();
        }
예제 #2
0
파일: WmCoreOp.cs 프로젝트: tmbx/kwm-ng
 /// <summary>
 /// Update the registry object specified with the current information.
 /// </summary>
 private void UpdateRegistryObject(KwmCfg cfg)
 {
     cfg.KpsAddr       = KpsAddr;
     cfg.KpsUserName   = KpsUserName;
     cfg.KpsLoginToken = KpsLoginToken;
     cfg.KpsKcdAddr    = KcdAddr;
 }
예제 #3
0
파일: WmCoreOp.cs 프로젝트: tmbx/kwm-ng
        /// <summary>
        /// Submit the ticket query to KMOD.
        /// </summary>
        private void SubmitKmodTicketQuery()
        {
            WmLoginTicketQuery ticketQuery = new WmLoginTicketQuery();

            m_kmodQuery = ticketQuery;
            KwmCfg cfg = new KwmCfg();

            UpdateRegistryObject(cfg);
            ticketQuery.Submit(Wm.KmodBroker, cfg, OnKmodTicketResult);
        }
예제 #4
0
        /// <summary>
        /// Submit the query using the credentials obtained from the registry
        /// specified.
        /// </summary>
        public void Submit(WmKmodBroker broker, KwmCfg cfg, WmLoginTicketQueryDelegate callback)
        {
            // Set the proper callback.
            Callback2 = callback;

            // Fill out the server information.
            K3p.K3pSetServerInfo ssi = new K3p.K3pSetServerInfo();
            WmK3pServerInfo.RegToServerInfo(cfg, ssi.Info);

            // Submit the query.
            base.Submit(broker, new K3pCmd[] { ssi, new K3p.kpp_get_kws_ticket() }, AnalyseResults);
        }
예제 #5
0
파일: WmCoreOp.cs 프로젝트: tmbx/kwm-ng
        public override void Start()
        {
            // Update the registry. We set the host and login name and clear
            // the other login-related fields.
            KwmCfg cfg = KwmCfg.Spawn();

            UpdateRegistryObject(cfg);
            cfg.Commit();

            // Start the queries.
            if (FreemiumFlag)
            {
                SubmitHttpQuery();
            }
            SubmitKmodLoginQuery();
        }
예제 #6
0
파일: Program.cs 프로젝트: tmbx/kwm-ng
 /// <summary>
 /// Initialize the application on startup.
 /// </summary>
 private static void AppInit()
 {
     // Somehow this call doesn't make the output visible in cygwin
     // bash. It works for cmd.exe.
     KSyscalls.AttachConsole(KSyscalls.ATTACH_PARENT_PROCESS);
     Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     MsgWindow             = new WmMsgWindow();
     KBase.InvokeUiControl = new Control();
     KBase.InvokeUiControl.CreateControl();
     KBase.HandleErrorCallback    = WmUi.HandleError;
     Application.ThreadException += HandleUnhandledException;
     KwmCfg.Cur      = KwmCfg.Spawn();
     KLogging.Logger = KwmLogger.Logger;
     KwmLogger.SetLoggingLevel(KwmCfg.Cur.KwmDebuggingFlag ? KwmLoggingLevel.Normal : KwmLoggingLevel.Debug);
 }
예제 #7
0
        /// <summary>
        /// Fill the values of the server info specified based on the values of
        /// the registry specified.
        /// </summary>
        public static void RegToServerInfo(KwmCfg reg, K3p.kpp_server_info info)
        {
            if (reg.CanLoginOnKps())
            {
                info.kps_login    = reg.KpsUserName;
                info.kps_secret   = reg.KpsLoginToken;
                info.kps_net_addr = reg.KpsAddr;
                info.kps_port_num = 443;
            }

            else
            {
                info.kps_login    = "";
                info.kps_secret   = "";
                info.kps_net_addr = "";
                info.kps_port_num = 0;
            }
        }
예제 #8
0
        /// <summary>
        /// Update the values of the registry based on the results of the
        /// query, if required.
        /// </summary>
        public void UpdateRegistry()
        {
            if (Res == WmLoginTicketQueryRes.MiscError)
            {
                return;
            }

            KwmCfg reg = KwmCfg.Spawn();

            if (Res == WmLoginTicketQueryRes.InvalidCfg)
            {
                reg.KpsLoginToken = "";
                reg.KpsUserPower  = 0;
                reg.KpsKcdAddr    = "";
            }

            else if (Res == WmLoginTicketQueryRes.OK)
            {
                reg.KpsKcdAddr   = Ticket.KcdAddr;
                reg.KpsUserPower = 0;
            }

            reg.Commit();
        }