Ejemplo n.º 1
0
 public cMailboxCache(cCallbackSynchroniser pSynchroniser, fMailboxCacheDataItems pMailboxCacheDataItems, cCommandPartFactory pCommandPartFactory, cCapabilities pCapabilities, Action <eConnectionState, cTrace.cContext> pSetState)
 {
     mSynchroniser          = pSynchroniser ?? throw new ArgumentNullException(nameof(pSynchroniser));
     mMailboxCacheDataItems = pMailboxCacheDataItems;
     mCommandPartFactory    = pCommandPartFactory ?? throw new ArgumentNullException(nameof(pCommandPartFactory));
     mCapabilities          = pCapabilities ?? throw new ArgumentNullException(nameof(pCapabilities));
     mSetState = pSetState ?? throw new ArgumentNullException(nameof(pSetState));
 }
Ejemplo n.º 2
0
            public void SetEnabled(cTrace.cContext pParentContext)
            {
                var lContext = pParentContext.NewMethod(nameof(cSession), nameof(SetEnabled));

                if (mDisposed)
                {
                    throw new ObjectDisposedException(nameof(cSession));
                }
                if (_ConnectionState != eConnectionState.authenticated)
                {
                    throw new InvalidOperationException(kInvalidOperationExceptionMessage.NotAuthenticated);
                }

                bool lUTF8Enabled = (EnabledExtensions & fEnableableExtensions.utf8) != 0;

                if (lUTF8Enabled)
                {
                    mCommandPartFactory  = new cCommandPartFactory(true, null);
                    mEncodingPartFactory = mCommandPartFactory;
                }

                mStatusAttributes = mMailboxCacheDataItems & fMailboxCacheDataItems.allstatus;
                if (!_Capabilities.CondStore)
                {
                    mStatusAttributes &= ~fMailboxCacheDataItems.highestmodseq;
                }

                mMailboxCache = new cMailboxCache(mSynchroniser, mMailboxCacheDataItems, mCommandPartFactory, _Capabilities, ZSetState);

                mPipeline.Install(new cResponseTextCodeParserSelect(_Capabilities));
                mPipeline.Install(new cResponseDataParserSelect());
                mPipeline.Install(new cResponseDataParserFetch());
                mPipeline.Install(new cResponseDataParserList(lUTF8Enabled));
                mPipeline.Install(new cResponseDataParserLSub(lUTF8Enabled));
                if (_Capabilities.ESearch || _Capabilities.ESort)
                {
                    mPipeline.Install(new cResponseDataParserESearch());
                }

                mPipeline.Enable(mMailboxCache, _Capabilities, lContext);

                ZSetState(eConnectionState.enabled, lContext);
            }
Ejemplo n.º 3
0
            // (note for when adding more: they need to be disposed)

            public cSession(cCallbackSynchroniser pSynchroniser, fCapabilities pIgnoreCapabilities, fMailboxCacheDataItems pMailboxCacheDataItems, cBatchSizerConfiguration pNetworkWriteConfiguration, cIdleConfiguration pIdleConfiguration, cBatchSizerConfiguration pFetchCacheItemsConfiguration, cBatchSizerConfiguration pFetchBodyReadConfiguration, Encoding pEncoding, cTrace.cContext pParentContext)
            {
                var lContext = pParentContext.NewObject(nameof(cSession), pIgnoreCapabilities, pMailboxCacheDataItems, pNetworkWriteConfiguration, pIdleConfiguration, pFetchCacheItemsConfiguration, pFetchBodyReadConfiguration);

                mSynchroniser          = pSynchroniser ?? throw new ArgumentNullException(nameof(pSynchroniser));
                mIgnoreCapabilities    = pIgnoreCapabilities;
                mMailboxCacheDataItems = pMailboxCacheDataItems;

                mPipeline = new cCommandPipeline(pSynchroniser, ZDisconnected, pNetworkWriteConfiguration, pIdleConfiguration, lContext);

                mFetchCacheItemsSizer = new cBatchSizer(pFetchCacheItemsConfiguration);
                mFetchBodyReadSizer   = new cBatchSizer(pFetchBodyReadConfiguration);

                mCommandPartFactory = new cCommandPartFactory(false, null);

                if (pEncoding == null)
                {
                    mEncodingPartFactory = mCommandPartFactory;
                }
                else
                {
                    mEncodingPartFactory = new cCommandPartFactory(false, pEncoding);
                }
            }
Ejemplo n.º 4
0
        private async void cmdConnect_Click(object sender, EventArgs e)
        {
            if (!ValidateChildren(ValidationConstraints.Enabled))
            {
                return;
            }

            try
            {
                mClient.SetServer(txtHost.Text.Trim(), int.Parse(txtPort.Text), chkSSL.Checked);

                if (rdoCredNone.Checked)
                {
                    mClient.SetNoCredentials();
                }
                else
                {
                    eTLSRequirement lTLSRequirement;
                    if (rdoTLSIndifferent.Checked)
                    {
                        lTLSRequirement = eTLSRequirement.indifferent;
                    }
                    else if (rdoTLSRequired.Checked)
                    {
                        lTLSRequirement = eTLSRequirement.required;
                    }
                    else
                    {
                        lTLSRequirement = eTLSRequirement.disallowed;
                    }

                    if (rdoCredAnon.Checked)
                    {
                        mClient.SetAnonymousCredentials(txtTrace.Text.Trim(), lTLSRequirement, chkTryIfNotAdvertised.Checked);
                    }
                    else
                    {
                        mClient.SetPlainCredentials(txtUserId.Text.Trim(), txtPassword.Text.Trim(), lTLSRequirement, chkTryIfNotAdvertised.Checked);
                    }
                }

                fMailboxCacheDataItems lMailboxCacheData = 0;
                if (chkCacheSubscribed.Checked)
                {
                    lMailboxCacheData |= fMailboxCacheDataItems.subscribed;
                }
                if (chkCacheChildren.Checked)
                {
                    lMailboxCacheData |= fMailboxCacheDataItems.children;
                }
                if (chkCacheSpecialUse.Checked)
                {
                    lMailboxCacheData |= fMailboxCacheDataItems.specialuse;
                }
                if (chkCacheMessageCount.Checked)
                {
                    lMailboxCacheData |= fMailboxCacheDataItems.messagecount;
                }
                if (chkCacheRecentCount.Checked)
                {
                    lMailboxCacheData |= fMailboxCacheDataItems.recentcount;
                }
                if (chkCacheUIDNext.Checked)
                {
                    lMailboxCacheData |= fMailboxCacheDataItems.uidnext;
                }
                if (chkCacheUIDValidity.Checked)
                {
                    lMailboxCacheData |= fMailboxCacheDataItems.uidvalidity;
                }
                if (chkCacheUnseenCount.Checked)
                {
                    lMailboxCacheData |= fMailboxCacheDataItems.unseencount;
                }
                if (chkCacheHighestModSeq.Checked)
                {
                    lMailboxCacheData |= fMailboxCacheDataItems.highestmodseq;
                }

                mClient.MailboxCacheDataItems = lMailboxCacheData;

                fCapabilities lKnownCapabilities = 0;

                if (chkIgnoreStartTLS.Checked)
                {
                    lKnownCapabilities |= fCapabilities.starttls;
                }
                if (chkIgnoreEnable.Checked)
                {
                    lKnownCapabilities |= fCapabilities.enable;
                }
                if (chkIgnoreUTF8.Checked)
                {
                    lKnownCapabilities |= fCapabilities.utf8accept | fCapabilities.utf8only;
                }
                if (chkIgnoreId.Checked)
                {
                    lKnownCapabilities |= fCapabilities.id;
                }
                if (chkIgnoreNamespace.Checked)
                {
                    lKnownCapabilities |= fCapabilities.namespaces;
                }

                if (chkIgnoreMailboxReferrals.Checked)
                {
                    lKnownCapabilities |= fCapabilities.mailboxreferrals;
                }
                if (chkIgnoreListExtended.Checked)
                {
                    lKnownCapabilities |= fCapabilities.listextended;
                }
                if (chkIgnoreListStatus.Checked)
                {
                    lKnownCapabilities |= fCapabilities.liststatus;
                }
                if (chkIgnoreSpecialUse.Checked)
                {
                    lKnownCapabilities |= fCapabilities.specialuse;
                }

                if (chkIgnoreCondStore.Checked)
                {
                    lKnownCapabilities |= fCapabilities.condstore;
                }
                if (chkIgnoreQResync.Checked)
                {
                    lKnownCapabilities |= fCapabilities.qresync;
                }

                if (chkIgnoreLiteralPlus.Checked)
                {
                    lKnownCapabilities |= fCapabilities.literalplus | fCapabilities.literalminus;
                }
                if (chkIgnoreBinary.Checked)
                {
                    lKnownCapabilities |= fCapabilities.binary;
                }
                if (chkIgnoreIdle.Checked)
                {
                    lKnownCapabilities |= fCapabilities.idle;
                }
                if (chkIgnoreSASLIR.Checked)
                {
                    lKnownCapabilities |= fCapabilities.sasl_ir;
                }

                if (chkIgnoreESearch.Checked)
                {
                    lKnownCapabilities |= fCapabilities.esearch;
                }
                if (chkIgnoreSort.Checked)
                {
                    lKnownCapabilities |= fCapabilities.sort;
                }
                if (chkIgnoreSortDisplay.Checked)
                {
                    lKnownCapabilities |= fCapabilities.sortdisplay;
                }
                //if (chkIgnoreThreadOrderedSubject.Checked) lKnownCapabilities |= fCapabilities.threadorderedsubject;
                //if (chkIgnoreThreadReferences.Checked) lKnownCapabilities |= fCapabilities.threadreferences;
                if (chkIgnoreESort.Checked)
                {
                    lKnownCapabilities |= fCapabilities.esort;
                }

                mClient.IgnoreCapabilities = lKnownCapabilities;

                mClient.MailboxReferrals = chkMailboxReferrals.Checked;

                mClient.NetworkWriteConfiguration = new cBatchSizerConfiguration(int.Parse(txtNWMin.Text), int.Parse(txtNWMax.Text), int.Parse(txtNWMaxTime.Text), int.Parse(txtNWInitial.Text));

                await mClient.ConnectAsync();
            }
            catch (Exception ex)
            {
                if (!IsDisposed)
                {
                    MessageBox.Show(this, $"Connect error\n{ex}");
                }
            }
        }