public FRouter(string FileName, string ruleName,ref Params Param) { ConfigFile = FileName; RuleName = ruleName; Par = Param; Log = new Logging("Log", RuleName, LogType.Info); }
public LineDecoder(string Line, Params param) { Par = param; this.Words = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase); // Регистронезависимое сравнение LineStr = Line; this._inherit = false; DecodeLine(); SetRuleName(); SetInherit(); }
static void Main(string[] args) { // Номер сборки Assembly curAssembly = Assembly.GetExecutingAssembly(); Version ver=curAssembly.GetName().Version; ver.ToString(); Console.WriteLine("fnrouter v. "+ver.ToString()); ReadArgs(args); /* //Trace.WriteLine("Environment.CommandLine=" + Environment.CommandLine); Console.WriteLine("Environment.CommandLine=" + Environment.CommandLine); string ProgDir = Path.GetDirectoryName(Environment.CommandLine); // По умолчанию в каталоге с программой Trace.WriteLine("ProgDir=" + ProgDir); //Console.WriteLine("ProgDir=" + ConfigFile); ConfigFile = Path.Combine(ProgDir, ConfigFile); */ // каталог логов string RootFolder; // Каталог запуска программы RootFolder = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]); ConfigFile = Path.Combine(RootFolder, ConfigFile); if (String.IsNullOrEmpty(RuleName) && !debug) // Не задано правило { ShowHelp(); return; } if (!File.Exists(ConfigFile)) { Console.WriteLine("Не найден файл с правилами: " + ConfigFile); return; } using (Process currentProcess = Process.GetCurrentProcess()) { guid = string.Format("[{0}][{1}]", currentProcess.ProcessName, RuleName); } if (_mutex == null) _mutex = new Mutex(true, guid, out isNew); if (!isNew) { Console.WriteLine("Копия программы с таким правилом уже запущена: " + RuleName); return; } //Console.WriteLine("Debug: Mutex guid:" + guid); if (!debug) Console.WriteLine("Запуск правила " + RuleName+" из файла "+ConfigFile); else Console.WriteLine("Проверка файла " + ConfigFile); Par = new Params(ConfigFile); Par.Debug = debug; //GSettings.Param = new MParam("srv", "", "", "25", "sdfsd@sfsdf"); FRouter router = new FRouter(ConfigFile, RuleName,ref Par); router.DoRule(); }
public RuleLine(string Linestr,string ruleName,Logging log, ref Params param) { Par = param; LDecoder = new LineDecoder(Linestr,Par); // Декодируем строку Rule = new RuleRow(); _isEmpty = false; Log = log; // Разбор строки if (LDecoder.NumKeys == 0) // Строка пуста { SetVoid(); return; } string sValue; if (LDecoder.ContainsKey("Section")) // Это начало новой секции { Par.Section = LDecoder.GetValue("Section"); SetVoid(); return; } // Секции могут быть: // Mail, Vars и имена правил if (Par.Section.Equals("Mail", StringComparison.CurrentCultureIgnoreCase) || Par.Section.Equals("Vars", StringComparison.CurrentCultureIgnoreCase)) { SetVoid(); return; } Par.ReadLine(LDecoder); if (Par.Debug) { string val; if (!LDecoder.IsVarExpanded(out val)) { Log.LogMessage(LogType.Error, "Не найдена переменная в строке [" + Par.CurLineNum.ToString()+"] "+val); return; } else return; } //inherit=LDecoder.CoverWords(); // Получаем параметры предыдущей строки // Rule не задано явно, копируем из section //if (!LDecoder.ContainsKey("RULE") && !String.IsNullOrEmpty(Par.Section)) //{ //LDecoder.Words.Add("RULE", Par.Section); //} sValue = LDecoder.GetValue("RULE"); //sValue = sValue.ToUpper(); if (String.IsNullOrEmpty(sValue)) // Имя правила пусто { SetVoid(); return; } Rule.RuleName = sValue; //Options.UpdateGlobal(LDecoder); // Обновляем глобальные настройки (Если это правило settings) if (!Rule.RuleName.Equals(ruleName, StringComparison.CurrentCultureIgnoreCase)) // Имя правила не совпадает { SetVoid(); return; } sValue = LDecoder.GetValue("REN"); sValue = sValue.ToUpper(); Rule.Ren = sValue; sValue = LDecoder.GetValue("ACT"); sValue = sValue.ToUpper(); switch (sValue) { case "COPY": Rule.Action = TAction.Copy; break; case "MOVE": Rule.Action = TAction.Move; break; case "SEND": Rule.Action = TAction.Send; break; case "SENDMSG": Rule.Action = TAction.SendMsg; break; case "RUNWAIT": Rule.Action = TAction.RunWait; break; case "RUNNOWAIT": Rule.Action = TAction.RunNoWait; break; case "UNRAR": Rule.Action = TAction.UnRar; break; case "UNARJ": Rule.Action = TAction.UnArj; break; case "UNCAB": Rule.Action = TAction.UnCab; break; case "DELETE": Rule.Action = TAction.Delete; break; case "MOVENALOGDIR": Rule.Action = TAction.MoveNalogDir; break; case "MOVEFTSDIR": Rule.Action = TAction.MoveFTSDir; break; case "PBGEN": Rule.Action = TAction.PbGen; break; case "MERGENALOGFILE": Rule.Action = TAction.MergeNalogFile; break; case "NOTHING": Rule.Action = TAction.Nothing; break; case "NO": // Аналог Nothing Rule.Action = TAction.Nothing; break; default: SetVoid(); return; //break; } FillFiles(); // Читаем список файлов }