/// <summary> /// Заполняет настройки из строки /// </summary> /// <param name="LDecoder"></param> /// <param name="ReadEmpty"></param> public void Read(LineDecoder LDecoder,bool ReadEmpty) { string sValue; sValue = LDecoder.GetValue("MAILSRV"); if (ReadEmpty) this.MailSrv = sValue; else { if (!String.IsNullOrEmpty(sValue)) this.MailSrv = sValue; } sValue = LDecoder.GetValue("MAILFROM"); if (ReadEmpty) this.MailFrom = sValue; else { if (!String.IsNullOrEmpty(sValue)) this.MailFrom = sValue; } sValue = LDecoder.GetValue("MAILPORT"); if (ReadEmpty) this.MailPort = sValue; else { if (!String.IsNullOrEmpty(sValue)) this.MailPort = sValue; } sValue = LDecoder.GetValue("MAILUSER"); if (ReadEmpty) this.MailUser = sValue; else { if (!String.IsNullOrEmpty(sValue)) this.MailUser = sValue; } sValue = LDecoder.GetValue("MAILPASS"); if (ReadEmpty) this.MailPass = sValue; else { if (!String.IsNullOrEmpty(sValue)) this.MailPass = sValue; } }
/// <summary> /// Обновляет глобальные настройки. Пустые параметры не обновляются. Обновляется только если rule=settings /// </summary> /// <param name="LDecoder"></param> public void UpdateGlobal(LineDecoder LDecoder) { string sValue; sValue = LDecoder.GetValue("Rule"); if (!sValue.Equals("Settings", StringComparison.CurrentCultureIgnoreCase)) return; Read(LDecoder, false); }
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(); // Читаем список файлов }