Exemplo n.º 1
0
            public override IEnumerable <ICookieImporter> GetCookieImporters()
            {
                var path = SearchCookieDirectory();
                var info = new CookieSourceInfo("Lunascape Webkit", "Default", path, EngineIds[0], false);

                return(new ICookieImporter[] { new WebkitQtCookieImporter(info, 2) });
            }
 public ICookieImporter GetCookieImporter(CookieSourceInfo sourceInfo)
 {
     ICookieImporterFactory manager;
     if (!_pnirBrowserManagers.TryGetValue(sourceInfo.EngineId, out manager))
         throw new ArgumentException("引数infoのEngineIdsに対応していません。");
     return manager.GetCookieImporter(sourceInfo);
 }
#pragma warning restore 1591

        /// <summary>
        /// ユーザのデフォルト環境設定を用いたICookieImporter生成します。
        /// </summary>
        /// <returns>長さ1の列挙子</returns>
        IEnumerable<ICookieImporter> GetDefaultProfiles()
        {
            string path = null;
            if (_dataFolder != null)
                path = Path.Combine(_dataFolder, _defaultFolderName, _cookieFileName);
            var conf = new CookieSourceInfo(_name, _defaultFolderName, path, EngineIds[0], false);
            return new ICookieImporter[] { new BlinkCookieImporter(conf, _primaryLevel) };
        }
 /// <summary>
 /// 指定されたinfoからCookieを取得するICookieImporterを生成します。
 /// 継承時にコンストラクタでcookiePathType, primaryLevelを直接指定し、
 /// infoの方は引数で受け取る形にする事を推奨します。
 /// </summary>
 /// <param name="info">対象のブラウザの構成情報</param>
 /// <param name="cookiePathType">対象ブラウザのCookieの置き場所の形式</param>
 /// <param name="primaryLevel">
 /// 並べ替え時に用いられる数値。
 /// OSブラウザ: 0、有名ブラウザ: 1、派生ブラウザ: 2
 /// </param>
 public CookieImporterBase(CookieSourceInfo info, CookiePathType cookiePathType, int primaryLevel)
 {
     if (info == null)
         throw new ArgumentNullException("引数infoがnullです。");
     SourceInfo = info;
     CookiePathType = cookiePathType;
     PrimaryLevel = primaryLevel;
 }
#pragma warning disable 1591
        public override IEnumerable<ICookieImporter> GetCookieImporters()
        {
            var name = "Maxthon Webkit";
            var path = Utility.ReplacePathSymbols(COOKIEPATH);
            if (!System.IO.File.Exists(path))
                path = null;

            var info = new CookieSourceInfo(name, "Default", path, EngineIds[0], false);
            return new ICookieImporter[] { new BlinkCookieImporter(info, 2) };
        }
        public ICookieImporter GetCookieImporter(CookieSourceInfo sourceInfo)
        {
            ICookieImporterFactory manager;

            if (!_pnirBrowserManagers.TryGetValue(sourceInfo.EngineId, out manager))
            {
                throw new ArgumentException("引数infoのEngineIdsに対応していません。");
            }
            return(manager.GetCookieImporter(sourceInfo));
        }
Exemplo n.º 7
0
 /// <summary>
 /// 指定されたinfoからCookieを取得するICookieImporterを生成します。
 /// 継承時にコンストラクタでcookiePathType, primaryLevelを直接指定し、
 /// infoの方は引数で受け取る形にする事を推奨します。
 /// </summary>
 /// <param name="info">対象のブラウザの構成情報</param>
 /// <param name="cookiePathType">対象ブラウザのCookieの置き場所の形式</param>
 /// <param name="primaryLevel">
 /// 並べ替え時に用いられる数値。
 /// OSブラウザ: 0、有名ブラウザ: 1、派生ブラウザ: 2
 /// </param>
 public CookieImporterBase(CookieSourceInfo info, CookiePathType cookiePathType, int primaryLevel)
 {
     if (info == null)
     {
         throw new ArgumentNullException("引数infoがnullです。");
     }
     SourceInfo     = info;
     CookiePathType = cookiePathType;
     PrimaryLevel   = primaryLevel;
 }
#pragma warning restore 1591

        /// <summary>
        /// ユーザのデフォルト環境設定を用いたICookieImporter生成します。
        /// </summary>
        /// <returns>長さ1の列挙子</returns>
        IEnumerable <ICookieImporter> GetDefaultProfiles()
        {
            string path = null;

            if (_dataFolder != null)
            {
                path = Path.Combine(_dataFolder, _defaultFolderName, _cookieFileName);
            }
            var conf = new CookieSourceInfo(_name, _defaultFolderName, path, EngineIds[0], false);

            return(new ICookieImporter[] { new BlinkCookieImporter(conf, _primaryLevel) });
        }
 public override ICookieImporter GetCookieImporter(CookieSourceInfo sourceInfo)
 {
     switch(sourceInfo.EngineId)
     {
         case ENGINE_ID_NORMAL_IE:
             return new IECookieImporter(sourceInfo, 2);
         case ENGINE_ID_PROTECTED_IE:
             return new IEPMCookieImporter(sourceInfo, 2);
         case ENGINE_ID_ENHANCED_PROTECTED_IE:
             return new IEFindCacheCookieImporter(sourceInfo, 2);
         default:
             throw new ArgumentException("引数infoのEngineIdを使えるImporterが見つかりませんでした。");
     }
 }
Exemplo n.º 10
0
#pragma warning disable 1591
        public override IEnumerable <ICookieImporter> GetCookieImporters()
        {
            var name = "Maxthon Webkit";
            var path = Utility.ReplacePathSymbols(COOKIEPATH);

            if (!System.IO.File.Exists(path))
            {
                path = null;
            }

            var info = new CookieSourceInfo(name, "Default", path, EngineIds[0], false);

            return(new ICookieImporter[] { new BlinkCookieImporter(info, 2) });
        }
Exemplo n.º 11
0
        public override ICookieImporter GetCookieImporter(CookieSourceInfo sourceInfo)
        {
            switch (sourceInfo.EngineId)
            {
            case ENGINE_ID_NORMAL_IE:
                return(new IECookieImporter(sourceInfo, 2));

            case ENGINE_ID_PROTECTED_IE:
                return(new IEPMCookieImporter(sourceInfo, 2));

            case ENGINE_ID_ENHANCED_PROTECTED_IE:
                return(new IEFindCacheCookieImporter(sourceInfo, 2));

            default:
                throw new ArgumentException("引数infoのEngineIdを使えるImporterが見つかりませんでした。");
            }
        }
        /// <summary>
        /// 任意のブラウザ構成を設定します。カスタム設定の構成も設定可能です。
        /// </summary>
        /// <param name="info">ブラウザの構成設定</param>
        public async Task SetInfoAsync(CookieSourceInfo info)
        {
            try
            {
                await _updateSem.WaitAsync();

                IsUpdating = true;
                await PrivateSetInfoAsync(info);
            }
            catch (CookieImportException e)
            { System.Diagnostics.Trace.TraceInformation("選択中のブラウザの設定カスタマイズに失敗。", e); }
            finally
            {
                IsUpdating = false;
                _updateSem.Release();
            }
        }
Exemplo n.º 13
0
    public static void save(CookieSourceInfo si, bool isSub)
    {
//		var sio = new SourceInfoObject(si);
//		XmlSerializer serializer = new XmlSerializer(typeof(SourceInfoObject));
        XmlSerializer serializer = new XmlSerializer(typeof(CookieSourceInfo));

        var jarPath = util.getJarPath();

        try {
            var uri = (isSub) ? (jarPath[0] + "\\" + jarPath[1] + "0.xml") :
                      (jarPath[0] + "\\" + jarPath[1] + ".xml");
            var sw = new System.IO.StreamWriter(uri, false, System.Text.Encoding.UTF8);

            serializer.Serialize(sw, si);
            sw.Close();
        } catch (Exception e) {
            util.debugWriteLine(e.Message + " " + e.StackTrace + " " + e.TargetSite);
        }
    }
        /// <summary>
        /// 任意のCookieファイルを指定するためのファイル選択ダイアログを表示する。
        /// </summary>
        public async Task ShowCookieDialogAsync()
        {
            var currentImporter      = Selector.SelectedImporter;
            var currentCookiePath    = currentImporter.SourceInfo.CookiePath;
            CookieSourceInfo newInfo = null;
            DialogResult     res;

            switch (currentImporter.CookiePathType)
            {
            case CookiePathType.Directory:
                if (System.IO.Directory.Exists(currentCookiePath))
                {
                    openFolderDialog.SelectedPath = currentImporter.SourceInfo.CookiePath;
                }
                if ((res = openFolderDialog.ShowDialog()) == DialogResult.OK)
                {
                    currentCookiePath = openFolderDialog.SelectedPath;
                    newInfo           = currentImporter.SourceInfo.GenerateCopy(cookiePath: currentCookiePath);
                }
                break;

            case CookiePathType.File:
                if (System.IO.File.Exists(currentCookiePath))
                {
                    openFileDialog.InitialDirectory = System.IO.Path.GetDirectoryName(currentCookiePath);
                    openFileDialog.FileName         = currentCookiePath;
                }
                if ((res = openFileDialog.ShowDialog()) == DialogResult.OK)
                {
                    currentCookiePath = openFileDialog.FileName;
                    newInfo           = currentImporter.SourceInfo.GenerateCopy(cookiePath: currentCookiePath);
                }
                break;

            default:
                return;
            }
            if (res == System.Windows.Forms.DialogResult.OK)
            {
                await Selector.SetInfoAsync(newInfo);
            }
        }
Exemplo n.º 15
0
        /// <summary>
        /// 任意のブラウザ構成を設定します。カスタム設定の構成も設定可能です。
        /// </summary>
        /// <param name="info">ブラウザの構成設定</param>
        public async Task SetInfoAsync(CookieSourceInfo info)
        {
            try
            {
                SqlCookieImporter.tempNameList.Clear();
                GeckoImporterFactory.fileDataList.Clear();

                await _updateSem.WaitAsync();

                IsUpdating = true;
                await PrivateSetInfoAsync(info);
            }
            catch (CookieImportException e)
            { System.Diagnostics.Trace.TraceInformation("選択中のブラウザの設定カスタマイズに失敗。", e); }
            finally
            {
                IsUpdating = false;
                _updateSem.Release();
            }
        }
Exemplo n.º 16
0
        async Task PrivateSetInfoAsync(CookieSourceInfo info)
        {
            //引数infoが使えるImporterを取得する。無い場合は適当なのを見繕う
            var importer = await _importerManager.GetInstanceAsync(info, true);

            lock (_updaterSyn)
            {
                //取得したImporterのItems内での場所を検索する。
                //idxがどのItemsも指定していない場合はカスタム設定を生成
                var idx = Items.Select(item => item.Importer.SourceInfo).TakeWhile(conf => conf != importer.SourceInfo).Count();
                if (idx == Items.Count)
                {
                    CookieSourceItem customItem;
                    try
                    {
                        customItem = _itemGenerator(importer);
                        customItem.Initialize();
                    }
                    catch (Exception e)
                    {
                        throw new CookieImportException(
                                  string.Format("{0}の生成に失敗しました。", typeof(CookieSourceItem).Name), CookieImportState.UnknownError, e);
                    }
                    if (_addedCustom)
                    {
                        Items[Items.Count - 1] = customItem;
                    }
                    else
                    {
                        Items.Add(customItem);
                        _addedCustom = true;
                    }
                }
                SelectedIndex = idx;
            }
        }
 public override IEnumerable<ICookieImporter> GetCookieImporters()
 {
     var path = SearchCookieDirectory();
     var info = new CookieSourceInfo("Lunascape Webkit", "Default", path, EngineIds[0], false);
     return new ICookieImporter[] { new WebkitQtCookieImporter(info, 2) };
 }
Exemplo n.º 18
0
 public override ICookieImporter GetCookieImporter(CookieSourceInfo sourceInfo)
 {
     return(new WebkitQtCookieImporter(sourceInfo, 2));
 }
 public abstract ICookieImporter GetCookieImporter(CookieSourceInfo sourceInfo);
 public abstract ICookieImporter Generate(CookieSourceInfo newInfo);
 public override ICookieImporter GetCookieImporter(CookieSourceInfo sourceInfo)
 { return new GeckoCookieImporter(sourceInfo, 2); }
Exemplo n.º 22
0
 public abstract override ICookieImporter GetCookieImporter(CookieSourceInfo sourceInfo);
Exemplo n.º 23
0
#pragma warning disable 1591
        public IEPMCookieImporter(CookieSourceInfo info, int primaryLevel) : base(info, primaryLevel)
        {
        }
Exemplo n.º 24
0
 public override ICookieImporter Generate(CookieSourceInfo newInfo)
 {
     return(new IEPMCookieImporter(newInfo, PrimaryLevel));
 }
#pragma warning disable 1591

        public BlinkCookieImporter(CookieSourceInfo info, int primaryLevel) : base(info, primaryLevel) { }
 public override ICookieImporter GetCookieImporter(CookieSourceInfo sourceInfo)
 {
     return(new IEFindCacheCookieImporter(sourceInfo, 0));
 }
Exemplo n.º 27
0
#pragma warning disable 1591
        public SqlCookieImporter(CookieSourceInfo info, int primaryLevel) : base(info, CookiePathType.File, primaryLevel)
        {
        }
#pragma warning disable 1591

        public IECookieImporter(CookieSourceInfo info, int primaryLevel) : base(info, CookiePathType.Directory, primaryLevel) { }
Exemplo n.º 29
0
        /// <summary>
        /// Itemsを更新します。
        /// </summary>
        public async Task UpdateAsync()
        {
            ICookieImporter  currentImporter = null;
            CookieSourceInfo currentInfo     = null;

            SqlCookieImporter.tempNameList.Clear();
            GeckoImporterFactory.fileDataList.Clear();
            try
            {
                //設定復元用に選択中のブラウザを取得。
                await _updateSem.WaitAsync();

                currentImporter = SelectedImporter;
                currentInfo     = currentImporter != null ? currentImporter.SourceInfo : null;
                SelectedIndex   = -1;

                IsUpdating = true;
                var browserItems = (await _importerManager.GetInstancesAsync(!IsAllBrowserMode))
                                   .ToArray()
                                   .OrderBy(importer => importer, _importerComparer)
                                   .Select(importer =>
                {
                    try
                    {
                        var item = _itemGenerator(importer);
                        item.Initialize();
                        return(item);
                    }
                    catch (Exception e)
                    {
                        throw new CookieImportException(
                            string.Format("{0}の生成に失敗しました。", typeof(CookieSourceItem).Name), CookieImportState.UnknownError, e);
                    }
                });


                lock (_updaterSyn)
                {
                    _addedCustom = false;
                    for (var i = Items.Count - 1; i >= 0; i--)
                    {
                        Items.RemoveAt(i);
                    }
                    foreach (var item in browserItems)
                    {
                        Items.Add(item);
                    }
                }
                //更新前に選択していた項目を再選択させる
                if (currentInfo != null)
                {
                    await PrivateSetInfoAsync(currentInfo);
                }
            }
            catch (CookieImportException e)
            {
                lock (_updaterSyn)
                    for (var i = Items.Count - 1; i >= 0; i--)
                    {
                        Items.RemoveAt(i);
                    }
                System.Diagnostics.Trace.TraceInformation("選択中のブラウザの設定カスタマイズに失敗。", e);
            }
            finally
            {
                _updateSem.Release();
                IsUpdating = false;
            }
        }
#pragma warning disable 1591
        public SqlCookieImporter(CookieSourceInfo info, int primaryLevel) : base(info, CookiePathType.File, primaryLevel) { }
Exemplo n.º 31
0
 public abstract ICookieImporter Generate(CookieSourceInfo newInfo);
 public override ICookieImporter Generate(CookieSourceInfo newInfo)
 { return new IECookieImporter(newInfo, PrimaryLevel); }
Exemplo n.º 33
0
#pragma warning disable 1591
        //クラス命名センスとしてwininet.dllのFindNextUrlCacheEntryの文脈を用いる。
        //純粋にapi上で片付ける方法が不明なのでwininetのapi自体は使っていない。
        public IEFindCacheCookieImporter(CookieSourceInfo info, int primaryLevel)
            : base(info, CookiePathType.Directory, primaryLevel)
        {
        }