public void Pluginsフォルダの中のdllファイルを列挙() { //setUp const string currentDir = @"C:\tmp2\bjd5\BJD\out"; var sut = new ListPlugin(currentDir); const int expected = 17; //exercise var actual = sut.Count; //verify Assert.That(actual, Is.EqualTo(expected)); }
public void Option及びServerインスタンスの生成() { var kernel = new Kernel(); const string currentDir = @"C:\tmp2\bjd5\BJD\out"; var sut = new ListPlugin(string.Format("{0}\\bin\\plugins", currentDir)); foreach (var onePlugin in sut) { //Optionインスタンス生成 var oneOption = onePlugin.CreateOption(kernel,"Option","nameTag"); Assert.NotNull(oneOption); //Serverインスタンス生成 var conf = new Conf(oneOption); var oneBind = new OneBind(new Ip(IpKind.V4Localhost), ProtocolKind.Tcp); var oneServer = onePlugin.CreateServer(kernel, conf, oneBind); Assert.NotNull(oneServer); } }
public void Option及びServerインスタンスの生成() { var kernel = new Kernel(); const string currentDir = @"C:\tmp2\bjd5\BJD\out"; var sut = new ListPlugin(string.Format("{0}\\bin\\plugins", currentDir)); foreach (var onePlugin in sut) { //Optionインスタンス生成 var oneOption = onePlugin.CreateOption(kernel, "Option", "nameTag"); Assert.NotNull(oneOption); //Serverインスタンス生成 var conf = new Conf(oneOption); var oneBind = new OneBind(new Ip(IpKind.V4Localhost), ProtocolKind.Tcp); var oneServer = onePlugin.CreateServer(kernel, conf, oneBind); Assert.NotNull(oneServer); } }
//�T�[�o�ċN���ŁA�ēx���s����鏉���� public void ListInitialize() { //Logger���g�p�ł��Ȃ��Ԃ̃��O�́A������ɕۑ����āA���Logger�ɑ��� var tmpLogger = new TmpLogger(); //************************************************************ // �j�� //************************************************************ if (ListOption != null) { ListOption.Dispose(); ListOption = null; } //Java fix if (ListTool != null) { ListTool.Dispose(); ListTool = null; } if (ListServer != null) { ListServer.Dispose(); ListServer = null; } if (MailBox != null) { MailBox = null; } if (LogFile != null) { LogFile.Dispose(); LogFile = null; } //************************************************************ // ������ //************************************************************ //ListPlugin �́BListOption��ListServer�����������Ԃ����������� //isTest=true�̏ꍇ�A�p�X��""�ɂ��āA�v���O�C��0�ŏ������������� //ListPlugin listPlugin = new ListPlugin((isTest) ? "" : string.Format("%s\\plugins", getProgDir())); var listPlugin = new ListPlugin(ProgDir()); foreach (var o in listPlugin) { //�����[�g�N���C�A���g�̏ꍇ�A���̃��O�́A��₱�����̂ŕ\�����Ȃ� if (RunMode == RunMode.Normal) { tmpLogger.Set(LogKind.Detail, null, 9000008, string.Format("{0}Server", o.Name)); } } //ListOption�Ŋe�I�v�V���������������O�ɁAisJp�����͏��������Ă����K�v������̂� //�ŏ���OptionBasic��lang������ǂݏo�� //Ver5.8.6 Java fix //_isJp = OptionIni.GetInstance().IsJp(); _isJp = IniDb.IsJp(); ListOption = new ListOption(this, listPlugin); //Ver5.9.1 //���߂Ă�����ʉ߂���Ƃ��A�ߋ��̃o�[�W������Option��ǂݍ��ނ� //���I�v�V�����̓I�u�W�F�N�g�̒���OneOption�ɂ̂ݕێ������ //���̏�ԂŁA�����̃I�v�V�����w���OK����ƁA���̃I�v�V�����ȊO�� //Option.ini�ɕۑ�����Ȃ����ߔj������Ă��܂� //���̖��ɑΏ����邽�߁A�����ň�x�AOption.ini��ۑ����邱�Ƃɂ��� if (!_isTest) { ListOption.Save(IniDb); } //OptionBasic var confBasic = new Conf(ListOption.Get("Basic")); EditBrowse = (bool)confBasic.Get("editBrowse"); //OptionLog var confOption = new Conf(ListOption.Get("Log")); LogView.SetFont((Font)confOption.Get("font")); if (RunMode == RunMode.Normal || RunMode == RunMode.Service) { //LogFile�̏����� var saveDirectory = (String)confOption.Get("saveDirectory"); saveDirectory = ReplaceOptionEnv(saveDirectory); var normalLogKind = (int)confOption.Get("normalLogKind"); var secureLogKind = (int)confOption.Get("secureLogKind"); var saveDays = (int)confOption.Get("saveDays"); //Ver6.0.7 var useLogFile = (bool)confOption.Get("useLogFile"); var useLogClear = (bool)confOption.Get("useLogClear"); if (!useLogClear) { saveDays = 0; //���O�̎����폜�������ȏꍇ�AsaveDays��0��Z�b�g���� } if (saveDirectory == "") { tmpLogger.Set(LogKind.Error, null, 9000045, "It is not appointed"); } else { tmpLogger.Set(LogKind.Detail, null, 9000032, saveDirectory); try{ LogFile = new LogFile(saveDirectory, normalLogKind, secureLogKind, saveDays, useLogFile); } catch (IOException e) { LogFile = null; tmpLogger.Set(LogKind.Error, null, 9000031, e.Message); } } //Ver5.8.7 Java fix //mailBox������ foreach (var o in ListOption) { //SmtpServer�Ⴕ���́APop3Server���g�p�����ꍇ�̂݃��[���{�b�N�X����������� if (o.NameTag == "Smtp" || o.NameTag == "Pop3") { if (o.UseServer) { var conf = new Conf(ListOption.Get("MailBox")); var dir = ReplaceOptionEnv((String)conf.Get("dir")); var datUser = (Dat)conf.Get("user"); var logger = CreateLogger("MailBox", (bool)conf.Get("useDetailsLog"), null); MailBox = new MailBox(logger, datUser, dir); break; } } } } _logger = CreateLogger("kernel", true, null); tmpLogger.Release(_logger); //Ver5.8.7 Java fix �����[�g�N���C�A���g�̏ꍇ����[���{�b�N�X��쐬���Ă��܂��o�O��C�� // //mailBox������ // foreach (var o in ListOption){ // //SmtpServer�Ⴕ���́APop3Server���g�p�����ꍇ�̂݃��[���{�b�N�X����������� // if (o.NameTag == "Smtp" || o.NameTag == "Pop3"){ // if (o.UseServer){ // var conf = new Conf(ListOption.Get("MailBox")); // MailBox = new MailBox(this, conf); // break; // } // } // } ListServer = new ListServer(this, listPlugin); ListTool = new ListTool(); ListTool.Initialize(this); View.SetColumnText(); //Log�r���[�̃J�����e�L�X�g�̏����� Menu.Initialize(IsJp()); //���j���[�\�z�i����e�[�u���̏������j WebApi = new WebApi(); }
//�T�[�o�ċN���ŁA�ēx���s����鏉���� public void ListInitialize() { //Logger���g�p�ł��Ȃ��Ԃ̃��O�́A������ɕۑ����āA���Logger�ɑ��� var tmpLogger = new TmpLogger(); //************************************************************ // �j�� //************************************************************ if (ListOption != null){ ListOption.Dispose(); ListOption = null; } //Java fix if (ListTool != null){ ListTool.Dispose(); ListTool = null; } if (ListServer != null){ ListServer.Dispose(); ListServer = null; } if (MailBox != null){ MailBox = null; } if (LogFile != null){ LogFile.Dispose(); LogFile = null; } //************************************************************ // ������ //************************************************************ //ListPlugin �́BListOption��ListServer�����������Ԃ����������� //isTest=true�̏ꍇ�A�p�X��""�ɂ��āA�v���O�C��0�ŏ������������� //ListPlugin listPlugin = new ListPlugin((isTest) ? "" : string.Format("%s\\plugins", getProgDir())); var listPlugin = new ListPlugin(ProgDir()); foreach (var o in listPlugin){ //�����[�g�N���C�A���g�̏ꍇ�A���̃��O�́A��₱�����̂ŕ\�����Ȃ� if (RunMode == RunMode.Normal){ tmpLogger.Set(LogKind.Detail, null, 9000008, string.Format("{0}Server", o.Name)); } } //ListOption�Ŋe�I�v�V���������������O�ɁAisJp�����͏��������Ă����K�v������̂� //�ŏ���OptionBasic��lang������ǂݏo�� //Ver5.8.6 Java fix //_isJp = OptionIni.GetInstance().IsJp(); _isJp = IniDb.IsJp(); ListOption = new ListOption(this, listPlugin); //Ver5.9.1 //���߂Ă�����ʉ߂���Ƃ��A�ߋ��̃o�[�W������Option��ǂݍ��ނ� //���I�v�V�����̓I�u�W�F�N�g�̒���OneOption�ɂ̂ݕێ������ //���̏�ԂŁA�����̃I�v�V�����w���OK����ƁA���̃I�v�V�����ȊO�� //Option.ini�ɕۑ�����Ȃ����ߔj������Ă��܂� //���̖��ɑΏ����邽�߁A�����ň�x�AOption.ini��ۑ����邱�Ƃɂ��� if (!_isTest){ ListOption.Save(IniDb); } //OptionBasic var confBasic = new Conf(ListOption.Get("Basic")); EditBrowse = (bool) confBasic.Get("editBrowse"); //OptionLog var confOption = new Conf(ListOption.Get("Log")); LogView.SetFont((Font) confOption.Get("font")); if (RunMode == RunMode.Normal || RunMode == RunMode.Service){ //LogFile�̏����� var saveDirectory = (String) confOption.Get("saveDirectory"); saveDirectory = ReplaceOptionEnv(saveDirectory); var normalLogKind = (int) confOption.Get("normalLogKind"); var secureLogKind = (int) confOption.Get("secureLogKind"); var saveDays = (int) confOption.Get("saveDays"); //Ver6.0.7 var useLogFile = (bool)confOption.Get("useLogFile"); var useLogClear = (bool) confOption.Get("useLogClear"); if (!useLogClear){ saveDays = 0; //���O�̎����폜�������ȏꍇ�AsaveDays��0��Z�b�g���� } if (saveDirectory == ""){ tmpLogger.Set(LogKind.Error, null, 9000045, "It is not appointed"); } else{ tmpLogger.Set(LogKind.Detail, null, 9000032, saveDirectory); try{ LogFile = new LogFile(saveDirectory, normalLogKind, secureLogKind, saveDays,useLogFile); } catch (IOException e){ LogFile = null; tmpLogger.Set(LogKind.Error, null, 9000031, e.Message); } } //Ver5.8.7 Java fix //mailBox������ foreach (var o in ListOption) { //SmtpServer�Ⴕ���́APop3Server���g�p�����ꍇ�̂݃��[���{�b�N�X����������� if (o.NameTag == "Smtp" || o.NameTag == "Pop3") { if (o.UseServer) { var conf = new Conf(ListOption.Get("MailBox")); var dir = ReplaceOptionEnv((String) conf.Get("dir")); var datUser = (Dat) conf.Get("user"); var logger = CreateLogger("MailBox", (bool)conf.Get("useDetailsLog"), null); MailBox = new MailBox(logger,datUser, dir); break; } } } } _logger = CreateLogger("kernel", true, null); tmpLogger.Release(_logger); //Ver5.8.7 Java fix �����[�g�N���C�A���g�̏ꍇ����[���{�b�N�X��쐬���Ă��܂��o�O��C�� // //mailBox������ // foreach (var o in ListOption){ // //SmtpServer�Ⴕ���́APop3Server���g�p�����ꍇ�̂݃��[���{�b�N�X����������� // if (o.NameTag == "Smtp" || o.NameTag == "Pop3"){ // if (o.UseServer){ // var conf = new Conf(ListOption.Get("MailBox")); // MailBox = new MailBox(this, conf); // break; // } // } // } ListServer = new ListServer(this, listPlugin); ListTool = new ListTool(); ListTool.Initialize(this); View.SetColumnText(); //Log�r���[�̃J�����e�L�X�g�̏����� Menu.Initialize(IsJp()); //���j���[�\�z�i����e�[�u���̏������j WebApi = new WebApi(); }
// 初期化 private void Initialize(ListPlugin listPlugin) { Ar.Clear(); //Java fix if (kernel.RunMode == RunMode.Remote) { return; } foreach (OneOption op in kernel.ListOption) { if (!op.UseServer) { //サーバオプション以外は対象外にする continue; } //プラグイン情報の検索 OnePlugin onePlugin = listPlugin.Get(op.NameTag); // if (onePlugin == null) { // //設計上の問題 // Util.RuntimeException(string.Format("ListServer.initialize() listPlugin.get(%s)==null", op.getNameTag())); // } if (op.NameTag.IndexOf("Web-") == 0) { //既に同一ポートで仮想サーバがリストされている場合はサーバの生成は行わない bool find = false; int port = (int)op.GetValue("port"); BindAddr bindAddr = (BindAddr)op.GetValue("bindAddress2"); foreach (OneServer sv in Ar) { if (sv.NameTag.IndexOf("Web-") == 0) { OneOption o = kernel.ListOption.Get(sv.NameTag); if (o != null) { //同一ポートの設定が既にリストされているかどうか if (port == (int)o.GetValue("port")) { // バインドアドレスが競合しているかどうか if (bindAddr.CheckCompetition((BindAddr)o.GetValue("bindAddress2"))) { find = true; break; } } } } } if (!find) { AddServer(new Conf(op), onePlugin); //サーバ(OneServer)生成 } } else { AddServer(new Conf(op), onePlugin); //サーバ(OneServer)生成 } } }
public ListServer(Kernel kernel, ListPlugin listPlugin) { this.kernel = kernel; Initialize(listPlugin); }
//サーバ再起動で、再度実行される初期化 public void ListInitialize() { //Loggerが使用できない間のログは、こちらに保存して、後でLoggerに送る var tmpLogger = new TmpLogger(); //************************************************************ // 破棄 //************************************************************ if (ListOption != null) { ListOption.Dispose(); ListOption = null; } //Java fix if (ListTool != null) { ListTool.Dispose(); ListTool = null; } if (ListServer != null) { ListServer.Dispose(); ListServer = null; } if (MailBox != null) { MailBox = null; } if (LogFile != null) { LogFile.Dispose(); LogFile = null; } //************************************************************ // 初期化 //************************************************************ //ListPlugin は。ListOptionとListServerを初期化する間だけ生存する //isTest=trueの場合、パスを""にして、プラグイン0個で初期化さあせる //ListPlugin listPlugin = new ListPlugin((isTest) ? "" : string.Format("%s\\plugins", getProgDir())); var listPlugin = new ListPlugin(ProgDir()); foreach (var o in listPlugin) { //リモートクライアントの場合、このログは、ややこしいので表示しない if (RunMode == RunMode.Normal) { tmpLogger.Set(LogKind.Detail, null, 9000008, string.Format("{0}Server", o.Name)); } } //ListOptionで各オプションを初期化する前に、isJpだけは初期化しておく必要があるので //最初にOptionBasicのlangだけを読み出す //Ver5.8.6 Java fix //_isJp = OptionIni.GetInstance().IsJp(); _isJp = IniDb.IsJp(); ListOption = new ListOption(this, listPlugin); //Ver5.9.1 //初めてここを通過するとき、過去のバージョンのOptionを読み込むと //旧オプションはオブジェクトの中のOneOptionにのみ保持される //この状態で、何かのオプション指定でOKすると、そのオプション以外が //Option.iniに保存されないため破棄されてしまう //この問題に対処するため、ここで一度、Option.iniを保存することにする if (!_isTest) { ListOption.Save(IniDb); } //OptionBasic var confBasic = new Conf(ListOption.Get("Basic")); EditBrowse = (bool)confBasic.Get("editBrowse"); //OptionLog var confOption = new Conf(ListOption.Get("Log")); LogView.SetFont((Font)confOption.Get("font")); if (RunMode == RunMode.Normal || RunMode == RunMode.Service) { //LogFileの初期化 var saveDirectory = (String)confOption.Get("saveDirectory"); saveDirectory = ReplaceOptionEnv(saveDirectory); var normalLogKind = (int)confOption.Get("normalLogKind"); var secureLogKind = (int)confOption.Get("secureLogKind"); var saveDays = (int)confOption.Get("saveDays"); //Ver6.0.7 var useLogFile = (bool)confOption.Get("useLogFile"); var useLogClear = (bool)confOption.Get("useLogClear"); if (!useLogClear) { saveDays = 0; //ログの自動削除が無効な場合、saveDaysに0をセットする } if (saveDirectory == "") { tmpLogger.Set(LogKind.Error, null, 9000045, "It is not appointed"); } else { tmpLogger.Set(LogKind.Detail, null, 9000032, saveDirectory); try { LogFile = new LogFile(saveDirectory, normalLogKind, secureLogKind, saveDays, useLogFile); } catch (IOException e) { LogFile = null; tmpLogger.Set(LogKind.Error, null, 9000031, e.Message); } } //Ver5.8.7 Java fix //mailBox初期化 foreach (var o in ListOption) { //SmtpServer若しくは、Pop3Serverが使用される場合のみメールボックスを初期化する if (o.NameTag == "Smtp" || o.NameTag == "Pop3") { if (o.UseServer) { var conf = new Conf(ListOption.Get("MailBox")); var dir = ReplaceOptionEnv((String)conf.Get("dir")); var datUser = (Dat)conf.Get("user"); var logger = CreateLogger("MailBox", (bool)conf.Get("useDetailsLog"), null); MailBox = new MailBox(logger, datUser, dir); break; } } } } _logger = CreateLogger("kernel", true, null); tmpLogger.Release(_logger); //Ver5.8.7 Java fix リモートクライアントの場合もメールボックスを作成してしまうバグを修正 // //mailBox初期化 // foreach (var o in ListOption){ // //SmtpServer若しくは、Pop3Serverが使用される場合のみメールボックスを初期化する // if (o.NameTag == "Smtp" || o.NameTag == "Pop3"){ // if (o.UseServer){ // var conf = new Conf(ListOption.Get("MailBox")); // MailBox = new MailBox(this, conf); // break; // } // } // } ListServer = new ListServer(this, listPlugin); ListTool = new ListTool(); ListTool.Initialize(this); View.SetColumnText(); //Logビューのカラムテキストの初期化 Menu.Initialize(IsJp()); //メニュー構築(内部テーブルの初期化) WebApi = new WebApi(); }
//オプションリストの初期化 private void Initialize(ListPlugin listPlugin) { Ar.Clear(); //固定的にBasicとLogを生成する const string executePath = ""; // Application.ExecutablePath Add(new OptionBasic(_kernel, executePath)); //「基本」オプション Add(new OptionLog(_kernel, executePath)); //「ログ」オプション foreach (var onePlugin in listPlugin) { var oneOption = onePlugin.CreateOption(_kernel, "Option", onePlugin.Name); if (oneOption.NameTag == "Web") { //WebServerの場合は、バーチャルホストごとに1つのオプションを初期化する OneOption o = onePlugin.CreateOption(_kernel, "OptionVirtualHost", "VirtualHost"); if (Add(o)) { var dat = (Dat)o.GetValue("hostList"); if (dat != null) { foreach (var e in dat) { if (e.Enable) { string name = string.Format("Web-{0}:{1}", e.StrList[1], e.StrList[2]); Add(onePlugin.CreateOption(_kernel, "Option", name)); } } } } } else if (oneOption.NameTag == "Tunnel") { //TunnelServerの場合は、1トンネルごとに1つのオプションを初期化する OneOption o = onePlugin.CreateOption(_kernel, "OptionTunnel", "TunnelList"); if (Add(o)) { var dat = (Dat)o.GetValue("tunnelList"); if (dat != null) { foreach (var e in dat) { if (e.Enable) { string name = string.Format("{0}:{1}:{2}:{3}", (e.StrList[0] == "0") ? "TCP" : "UDP", e.StrList[1], e.StrList[2], e.StrList[3]); Add(onePlugin.CreateOption(_kernel, "Option", String.Format("Tunnel-{0}", name))); } } } } } else { Add(oneOption); //DnsServerのプラグイン固有オプションの生成 if (oneOption.NameTag == "Dns") { OneOption o = onePlugin.CreateOption(_kernel, "OptionDnsDomain", "DnsDomain"); if (Add(o)) { var dat = (Dat)o.GetValue("domainList"); if (dat != null) { foreach (var e in dat) { if (e.Enable) { Add(onePlugin.CreateOption(_kernel, "OptionDnsResource", String.Format("Resource-{0}", e.StrList[0]))); } } } } } else if (oneOption.NameTag == "Smtp") { //Ver6.0.0 OneOption o = onePlugin.CreateOption(_kernel, "OptionMl", "Ml"); //var o = (OneOption)Util.CreateInstance(kernel, path, "OptionMl", new object[] { kernel, path, "Ml" }); if (Add(o)) { var dat = (Dat)o.GetValue("mlList"); if (dat != null) { foreach (var e in dat) { if (e.Enable) { Add(onePlugin.CreateOption(_kernel, "OptionOneMl", String.Format("Ml-{0}", e.StrList[0]))); } } } } } } } if (Get("Smtp") != null || Get("Pop") != null) { Add(new OptionMailBox(_kernel, Application.ExecutablePath)); //メールボックス } }
public ListOption(Kernel kernel, ListPlugin listPlugin) { _kernel = kernel; Initialize(listPlugin); }