示例#1
0
        private void ShareFileSelectDialog_Load(object sender, EventArgs e)
        {
            lstPreviousfolder.Add("/");

            string strUrl = Globals.ThisAddIn.GetSeafileURL();

            if (strUrl != null && strUrl != "" && strUrl != String.Empty)
            {
                httpClient = new WosHttpClient(strUrl);
                LogTrace.TraceVerbose("Connect to fileshare with URL {0}", strUrl);
            }
            else
            {
                LogTrace.TraceError("Got fileshare URL failed.");
                this.Close();
                return;
            }

            strToken = SeafileLogon();

            if (strToken == null)
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
                return;
            }

            HttpSeaFileGetDefaultLibraryResponse gdlRsp = httpClient.ExecuteSeaFileGetDefaultLibraryRequest(strToken);

            if (gdlRsp != null)
            {
                strRepoID = gdlRsp.RepoId;
                LogTrace.TraceVerbose("Retrieve Repro Id [{0}]", strRepoID);
            }
            else
            {
                LogTrace.TraceError("Retrieve Repro ID failed.");
                this.DialogResult = DialogResult.Abort;
                this.Close();
                return;
            }

            HttpSeaFileGetDirectoryEntriesResponse gdresp =
                httpClient.ExecuteSeaFileGetDirectoryEntriesRequest(strToken, strRepoID, strCurrentFolder);

            if (gdresp != null)
            {
                ListDirectory(gdresp);
            }
            else
            {
                LogTrace.TraceError("Get Default Directory list failed.");
                this.DialogResult = DialogResult.Abort;
                this.Close();
            }
        }
示例#2
0
        /// <summary>
        /// 发送PutOid请求,并返回获得的回应
        /// </summary>
        /// <param name="oid">Wos对象标识</param>
        /// <returns>返回HttpWosPutOidResponse对象</returns>
        public HttpSeaFileGetDefaultLibraryResponse ExecuteSeaFileGetDefaultLibraryRequest(String strToken)
        {
            LogTrace.TraceInfo("ExecuteSeaFileGetDefaultLibraryRequest");

            HttpSeaFileGetDefaultLibraryResponse rsp = new HttpSeaFileGetDefaultLibraryResponse();

            try
            {
                HttpWebRequest req = CreateSeaFileGetDefaultLibraryRequest(strToken);
                if (req != null)
                {
                    HttpWebResponse res = (HttpWebResponse)req.GetResponse();
                    LogTrace.TraceInfo("Response code for GetDefaultLibrary is {0}", res.StatusCode);
                    String strResponse = String.Empty;

                    Stream       rStream = res.GetResponseStream();
                    StreamReader sr      = new StreamReader(rStream);
                    strResponse = sr.ReadToEnd();

                    JObject jo = (JObject)JsonConvert.DeserializeObject(strResponse);
                    rsp.RepoId = jo["repo_id"].ToString();
                    rsp.Exists = jo["exists"].ToString();

                    req.Abort();
                    res.Close();

                    return(rsp);
                }

                return(null);
            }
            catch (Exception ept)
            {
                LogTrace.TraceException(ept);
                return(null);
            }
        }
示例#3
0
        private Boolean SeafileLogon()
        {
            Boolean bFoundToken = false;

            string strUrl = Globals.ThisAddIn.GetSeafileURL();

            if (strUrl != null && strUrl != "" && strUrl != String.Empty)
            {
                httpClient = new WosHttpClient(strUrl);
                LogTrace.TraceInfo("Connect to Fileshare with URL: {0}", strUrl);
            }
            else
            {
                LogTrace.TraceError("Sharefile URL is empty.");
                LogTrace.TraceInfo("Turn logon off (3)");
                pbLogon.Image = global::FileToUpload.Properties.Resources.off;
                return(false);
            }

            String      strDesKey = Globals.ThisAddIn.Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress.Substring(0, 8);
            RegistryKey regKey    = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\MICROSOFT\OFFICE\OUTLOOK\ADDINS\PinganAttachment.OutlookAddin", true);

            try
            {
                if (regKey != null)
                {
                    m_strToken = Decrypt(regKey.GetValue("token").ToString(), strDesKey);

                    if (m_strToken != null && m_strToken != String.Empty)
                    {
                        Boolean b = httpClient.ExecuteSeaFilePingRequest(m_strToken);

                        if (b)
                        {
                            LogTrace.TraceVerbose("Retrieve Token {0} from register Key.", m_strToken);
                            bFoundToken = true;
                        }
                    }
                }
                else
                {
                    bFoundToken = false;
                }
            }
            catch (Exception ept)
            {
                LogTrace.TraceException(ept);
                bFoundToken = false;
            }

            // Retrieve Token for current user
            if (!bFoundToken)
            {
                String      strLoginUser, strLoginPassword;
                LogonDialog dlg = new LogonDialog();

                DialogResult result = dlg.ShowDialog();

                if (result == DialogResult.OK)
                {
                    strLoginUser     = dlg.EmailAddress;
                    strLoginPassword = dlg.Password;

                    LogTrace.TraceVerbose("Logon user Name is {0}, password is {1}", strLoginUser, "*********");
                }
                else
                {
                    LogTrace.TraceInfo("Cancel logon");
                    LogTrace.TraceInfo("Turn logon off (4)");
                    pbLogon.Image = global::FileToUpload.Properties.Resources.off;
                    return(false);
                }

                HttpSeaFileTokenResponse rsp = httpClient.ExecuteSeaFileTokenRequest(strLoginUser, strLoginPassword);
                if (rsp != null)
                {
                    regKey.SetValue("token", Encrypt(rsp.Token, strDesKey));
                    m_strToken = rsp.Token;
                    LogTrace.TraceVerbose("Save token {0} into register key.", m_strToken);
                }
                else
                {
                    MessageBox.Show("1、如果您已是云盘用户,请输入正确的邮箱密码(开机密码)\n\r2、如果您还不是云盘用户请联系所在机构IT咨询如何申请开通,不要重复尝试登录避免邮箱帐号被锁定", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    LogTrace.TraceInfo("Turn logon off (5)");
                    pbLogon.Image = global::FileToUpload.Properties.Resources.off;
                    return(false);
                }
            }

            HttpSeaFileGetDefaultLibraryResponse gdlRsp = httpClient.ExecuteSeaFileGetDefaultLibraryRequest(m_strToken);

            if (gdlRsp != null)
            {
                m_strRepoID = gdlRsp.RepoId;
                LogTrace.TraceVerbose("Retrieve Repro Id {0}.", m_strRepoID);
                LogTrace.TraceInfo("Turn logon on (6)");
                pbLogon.Image = global::FileToUpload.Properties.Resources.on;
                return(true);
            }
            else
            {
                LogTrace.TraceError("Retrieve Repro Id failed.");
            }

            LogTrace.TraceInfo("Turn logon off (7)");
            pbLogon.Image = global::FileToUpload.Properties.Resources.off;
            return(false);
        }