/// <summary> /// XMLファイルからIDとパスワードを読み込み、ハッシュテーブル化する /// </summary> /// /// <param name="filename">読み込むXMLファイル名</param> /// <param name="keyword">アカウントデータを読み込むキー</param> /// <returns>IDをキー、Passwodを値としたハッシュテーブル</returns> public void loadAccounts(string filename, string keyword) { string filepath = ""; if (Path.IsPathRooted(filename)) { filepath = filename; filename = Path.GetFileName(filename); } else { filepath = Path.GetFullPath(Environment.CurrentDirectory + @"\" + filename); } if (File.Exists(filepath)) { try { System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(XmlTricksterRoot)); System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.Open); XmlTricksterRoot XmlRoot = (XmlTricksterRoot)serializer.Deserialize(fs); XmlMyAccounts accountDatas = new XmlMyAccounts(); accountDatas = XmlRoot.MyAccount; String PasswordDecryptKey; PasswordDecryptKey = getKeyword(accountDatas.EncryptKey); if (AccountController.MasterKey != PasswordDecryptKey) { SimpleLogger.WriteLine("failed to match MasterKey and EncryptedKey in account data."); MessageBox.Show("暗号化キーワードが一致しないためアカウント情報を読み込めませんでした。", "アカウント情報読み込みエラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } AccountController.isLoadedAccount = true; XmlAccount[] dataPack = (XmlAccount[])accountDatas.AccountList; foreach (XmlAccount data in dataPack) { Accounts.AccountProperties props = new Accounts.AccountProperties(); //AccountData[data.ID] = Common.DecryptString(data.Password, AccountController.MasterKey); props.ID = data.ID; props.Password = Common.DecryptString(data.Password, PasswordDecryptKey); if (data.Site.Equals(null)) { props.Site = Accounts.AccountProperties.LoginSite.Official; } else { try { props.Site = (Accounts.AccountProperties.LoginSite)data.Site; }catch (Exception e) { SimpleLogger.WriteLine(e.Message); props.Site = Accounts.AccountProperties.LoginSite.Official; } } AccountData.Add(props); } fs.Close(); } catch (FileLoadException fle) { SimpleLogger.WriteLine(fle.GetType().ToString() + Environment.NewLine + fle.Message); //MessageBox.Show("例外エラー:\nファイルの読み込みに失敗しました。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); //return; throw fle; } catch (System.Xml.XmlException xe) { SimpleLogger.WriteLine(xe.GetType().ToString() + Environment.NewLine + xe.Message); //MessageBox.Show("例外エラー:\nデータの処理に失敗しました。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); //return; throw xe; } catch (System.UnauthorizedAccessException uae) { SimpleLogger.WriteLine(uae.GetType().ToString() + Environment.NewLine + uae.Message); //MessageBox.Show("例外エラー:\nアカウントファイルが読み取り専用か、権限がないため読み込めませんでした。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); //return; throw uae; } catch (System.InvalidOperationException ioe) { SimpleLogger.WriteLine(ioe.GetType().ToString() + Environment.NewLine + ioe.Message); //MessageBox.Show("例外エラー:\n無効なメソッドの呼び出しが行われました。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); //return; throw ioe; } } else { SimpleLogger.WriteLine("account file 'accounts.dat' could not read/found."); MessageBox.Show("アカウント情報ファイルを読み込めませんでした。" + Environment.NewLine + "'" + filepath + "'", "Trickster Tools", MessageBoxButtons.OK, MessageBoxIcon.Warning); isLoadedAccount = false; return; } }
public void saveAccounts(string filename, string keyword) { string PasswordEncryptKey; XmlAccount[] config = new XmlAccount[AccountData.Count]; PasswordEncryptKey = setKeyword(keyword); IEnumerator ienum = AccountData.GetEnumerator(); int i = 0; while (ienum.MoveNext()) { Accounts.AccountProperties acprop = (Accounts.AccountProperties)ienum.Current; config[i] = new XmlAccount(); config[i].ID = acprop.ID; config[i].Password = Common.EncryptString(acprop.Password, keyword); config[i].Site = (int)acprop.Site; i++; } XmlMyAccounts accountdatas = new XmlMyAccounts(); accountdatas.AccountList = config; accountdatas.EncryptKey = PasswordEncryptKey; XmlTricksterRoot XmlRoot = new XmlTricksterRoot(); XmlRoot.MyAccount = accountdatas; string filepath = ""; if (Path.IsPathRooted(filename)) { filepath = filename; filename = Path.GetFileName(filename); } else { filepath = Path.GetFullPath(Environment.CurrentDirectory + @"\" + filename); } if (!File.Exists(filepath)) { // ファイルがなければ作成 FileStream fs = new FileStream(filepath, FileMode.Create); fs.Close(); } FileInfo fi = new FileInfo(filepath); if (fi.IsReadOnly) { SimpleLogger.WriteLine("could not write to file \"" + filepath + "\""); MessageBox.Show("アカウント情報ファイルは読み取り専用のため、保存できません。", "TricksterTools", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (AccountData.Count > 0) { try { System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(XmlTricksterRoot)); FileStream fs = new FileStream(filepath, FileMode.Create); serializer.Serialize(fs, XmlRoot); fs.Close(); } /* * catch (System.Security.SecurityException se) * { * SimpleLogger.WriteLine(se.GetType().ToString() + Environment.NewLine + se.Message); * //MessageBox.Show("例外エラー:\nセキュリティエラーです。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); * throw se; * } */ catch (System.IO.IOException ioe) { SimpleLogger.WriteLine(ioe.GetType().ToString() + Environment.NewLine + ioe.Message); //MessageBox.Show("例外エラー:\n入出力時にエラーが発生しました。", "IOException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw ioe; } catch (System.Xml.XmlException xe) { SimpleLogger.WriteLine(xe.GetType().ToString() + Environment.NewLine + xe.Message); //MessageBox.Show("例外エラー:\nアカウント情報読み込みエラー", "XmlException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw xe; } catch (System.Exception e) { SimpleLogger.WriteLine(e.GetType().ToString() + Environment.NewLine + e.Message); //MessageBox.Show("例外エラー:\n原因の特定ができませんでした。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw e; } } }
/// <summary> /// XMLファイルから設定を読み込み、クラス内のプロパティに設定する /// </summary> /// /// <param name="pluginName">プラグイン名</param> /// <returns>IPluginConfig</returns> public static IPluginConfig loadSettings(string PluginName) { string filepath = ""; string filename = @".\plugins.config.xml"; if (Path.IsPathRooted(filename)) { filepath = filename; filename = Path.GetFileName(filename); } else { filepath = Path.GetFullPath(Environment.CurrentDirectory + @"\" + filename); } if (File.Exists(filepath)) { try { XmlSerializer serializer = new XmlSerializer(typeof(XmlTricksterRoot)); System.IO.FileStream fs = new System.IO.FileStream(filepath, System.IO.FileMode.Open); XmlTricksterRoot XmlRoot = (XmlTricksterRoot)serializer.Deserialize(fs); XmlTools Tools; XmlPlugin[] Plugins; if (XmlRoot.Tools.name != "TSLoginManager") { throw new ConfigLoadException("TSLoginManagerのPlugin設定以外の設定ファイルが読み込まれています。" + Environment.NewLine + "設定は読み込まれませんでした。"); } Tools = XmlRoot.Tools; Plugins = Tools.Plugin; foreach (XmlPlugin Plugin in Plugins) { if (Plugin.name.Length == 0) { continue; } if (Plugin.name == PluginName) { return(Plugin.Config); } } throw new PluginConfigNotFoundException(); } catch (ConfigLoadException cle) { //MessageBox.Show(cle.Message, "設定読み込みエラー", MessageBoxButtons.OK, MessageBoxIcon.Warning); throw cle; } catch (PluginConfigNotFoundException pcnfe) { throw pcnfe; } catch (FileLoadException fle) { SimpleLogger.WriteLine(fle.Message); //MessageBox.Show("例外エラー:" + Environment.NewLine + "ファイルの読み込みに失敗しました。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw new ConfigLoadException("ファイルの読み込みに失敗しました。"); } catch (System.Xml.XmlException xe) { SimpleLogger.WriteLine(xe.Message); //MessageBox.Show("例外エラー:" + Environment.NewLine + "データの処理に失敗しました。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw new ConfigLoadException("データの処理に失敗しました。"); } catch (System.InvalidOperationException ioe) { SimpleLogger.WriteLine(ioe.Message); //MessageBox.Show("例外エラー:" + Environment.NewLine + "無効なメソッドの呼び出しが行われました。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw new ConfigLoadException("無効なメソッドの呼び出しが行われました。"); } } else { SimpleLogger.WriteLine("setting file 'plugins.config.xml' could not read/found."); throw new ConfigLoadException("設定ファイルを読み込めませんでした。" + Environment.NewLine + "'" + filepath + "'"); } }
public static void saveConfig(XmlPlugin[] Plugin) { string filename = @".\plugins.config.xml"; XmlTricksterRoot XmlRoot = new XmlTricksterRoot(); XmlTools Tools = new XmlTools(); Tools.Plugin = Plugin; XmlRoot.Tools = Tools; string filepath = ""; if (Path.IsPathRooted(filename)) { filepath = filename; filename = Path.GetFileName(filename); } else { filepath = Path.GetFullPath(Environment.CurrentDirectory + @"\" + filename); } if (!File.Exists(filepath)) { // ファイルがなければ作成 FileStream fs = new FileStream(filepath, FileMode.Create); fs.Close(); } try { XmlSerializer serializer = new XmlSerializer(typeof(XmlTricksterRoot)); FileStream fs = new FileStream(filepath, FileMode.Create); serializer.Serialize(fs, XmlRoot); fs.Close(); } catch (System.Security.SecurityException se) { SimpleLogger.WriteLine(se.Message); //MessageBox.Show("例外エラー:" + Environment.NewLine + "セキュリティエラーです。", "SecurityException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw se; } catch (System.IO.IOException ioe) { SimpleLogger.WriteLine(ioe.Message); //MessageBox.Show("例外エラー:" + Environment.NewLine + "入出力時にエラーが発生しました。", "IOException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw ioe; } catch (System.Xml.XmlException xe) { SimpleLogger.WriteLine(xe.Message); //MessageBox.Show("例外エラー:" + Environment.NewLine + "設定読み込みエラー", "XmlException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw xe; } catch (System.Exception e) { SimpleLogger.WriteLine(e.Message); //MessageBox.Show("例外エラー:" + Environment.NewLine + "原因の特定ができませんでした。", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw e; } }
public static void saveConfig(XmlPlugin[] Plugin) { string filename = @".\plugins.config.xml"; XmlTricksterRoot XmlRoot = new XmlTricksterRoot(); XmlTools Tools = new XmlTools(); Tools.Plugin = Plugin; XmlRoot.Tools = Tools; string filepath = ""; if (Path.IsPathRooted(filename)) { filepath = filename; filename = Path.GetFileName(filename); } else { filepath = Path.GetFullPath(Environment.CurrentDirectory + @"\" + filename); } if (!File.Exists(filepath)) { // �t�@�C�����Ȃ���쐬 FileStream fs = new FileStream(filepath, FileMode.Create); fs.Close(); } try { XmlSerializer serializer = new XmlSerializer(typeof(XmlTricksterRoot)); FileStream fs = new FileStream(filepath, FileMode.Create); serializer.Serialize(fs, XmlRoot); fs.Close(); } catch (System.Security.SecurityException se) { SimpleLogger.WriteLine(se.Message); //MessageBox.Show("��O�G���[:" + Environment.NewLine + "�Z�L�����e�B�G���[�ł��B", "SecurityException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw se; } catch (System.IO.IOException ioe) { SimpleLogger.WriteLine(ioe.Message); //MessageBox.Show("��O�G���[:" + Environment.NewLine + "���o�͎��ɃG���[���������܂����B", "IOException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw ioe; } catch (System.Xml.XmlException xe) { SimpleLogger.WriteLine(xe.Message); //MessageBox.Show("��O�G���[:" + Environment.NewLine + "�ݒ�ǂݍ��݃G���[", "XmlException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw xe; } catch (System.Exception e) { SimpleLogger.WriteLine(e.Message); //MessageBox.Show("��O�G���[:" + Environment.NewLine + "�����̓��肪�ł��܂���ł����B", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw e; } }
public void saveAccounts(string filename, string keyword) { string PasswordEncryptKey; XmlAccount[] config = new XmlAccount[AccountData.Count]; PasswordEncryptKey = setKeyword(keyword); IEnumerator ienum = AccountData.GetEnumerator(); int i = 0; while(ienum.MoveNext()) { Accounts.AccountProperties acprop = (Accounts.AccountProperties)ienum.Current; config[i] = new XmlAccount(); config[i].ID = acprop.ID; config[i].Password = Common.EncryptString(acprop.Password, keyword); config[i].Site = (int)acprop.Site; i++; } XmlMyAccounts accountdatas = new XmlMyAccounts(); accountdatas.AccountList = config; accountdatas.EncryptKey = PasswordEncryptKey; XmlTricksterRoot XmlRoot = new XmlTricksterRoot(); XmlRoot.MyAccount = accountdatas; string filepath = ""; if (Path.IsPathRooted(filename)) { filepath = filename; filename = Path.GetFileName(filename); } else { filepath = Path.GetFullPath(Environment.CurrentDirectory + @"\" + filename); } if (!File.Exists(filepath)) { // �t�@�C�����Ȃ���쐬 FileStream fs = new FileStream(filepath, FileMode.Create); fs.Close(); } FileInfo fi = new FileInfo(filepath); if (fi.IsReadOnly) { SimpleLogger.WriteLine("could not write to file \"" + filepath + "\""); MessageBox.Show("�A�J�E���g���t�@�C���͓ǂݎ���p�̂��߁A�ۑ��ł��܂���B", "TricksterTools", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (AccountData.Count > 0) { try { System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(XmlTricksterRoot)); FileStream fs = new FileStream(filepath, FileMode.Create); serializer.Serialize(fs, XmlRoot); fs.Close(); } /* catch (System.Security.SecurityException se) { SimpleLogger.WriteLine(se.GetType().ToString() + Environment.NewLine + se.Message); //MessageBox.Show("��O�G���[:\n�Z�L�����e�B�G���[�ł��B", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw se; } */ catch (System.IO.IOException ioe) { SimpleLogger.WriteLine(ioe.GetType().ToString() + Environment.NewLine + ioe.Message); //MessageBox.Show("��O�G���[:\n���o�͎��ɃG���[���������܂����B", "IOException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw ioe; } catch (System.Xml.XmlException xe) { SimpleLogger.WriteLine(xe.GetType().ToString() + Environment.NewLine + xe.Message); //MessageBox.Show("��O�G���[:\n�A�J�E���g���ǂݍ��݃G���[", "XmlException error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw xe; } catch (System.Exception e) { SimpleLogger.WriteLine(e.GetType().ToString() + Environment.NewLine + e.Message); //MessageBox.Show("��O�G���[:\n�����̓��肪�ł��܂���ł����B", "Exceptional error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw e; } } }