mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 14:50:55 +03:00
add builtin rules hook
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
@@ -70,6 +70,7 @@ var (
|
||||
// eventManager handle the supported event rules actions
|
||||
eventManager eventRulesContainer
|
||||
multipartQuoteEscaper = strings.NewReplacer("\\", "\\\\", `"`, "\\\"")
|
||||
loadBuiltinRulesFn func() []dataprovider.EventRule
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -272,11 +273,15 @@ func (r *eventRulesContainer) addUpdateRuleInternal(rule dataprovider.EventRule)
|
||||
func (r *eventRulesContainer) loadRules() {
|
||||
eventManagerLog(logger.LevelDebug, "loading updated rules")
|
||||
modTime := util.GetTimeAsMsSinceEpoch(time.Now())
|
||||
rules, err := dataprovider.GetRecentlyUpdatedRules(r.getLastLoadTime())
|
||||
lastLoadTime := r.getLastLoadTime()
|
||||
rules, err := dataprovider.GetRecentlyUpdatedRules(lastLoadTime)
|
||||
if err != nil {
|
||||
eventManagerLog(logger.LevelError, "unable to load event rules: %v", err)
|
||||
return
|
||||
}
|
||||
if loadBuiltinRulesFn != nil {
|
||||
rules = append(rules, loadBuiltinRulesFn()...)
|
||||
}
|
||||
eventManagerLog(logger.LevelDebug, "recently updated event rules loaded: %d", len(rules))
|
||||
|
||||
if len(rules) > 0 {
|
||||
@@ -2778,9 +2783,20 @@ func (j *eventCronJob) getTask(rule *dataprovider.EventRule) (dataprovider.Task,
|
||||
return dataprovider.Task{}, nil
|
||||
}
|
||||
|
||||
func (j *eventCronJob) getEventRule() (dataprovider.EventRule, error) {
|
||||
if loadBuiltinRulesFn != nil {
|
||||
for _, rule := range loadBuiltinRulesFn() {
|
||||
if rule.Name == j.ruleName {
|
||||
return rule, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return dataprovider.EventRuleExists(j.ruleName)
|
||||
}
|
||||
|
||||
func (j *eventCronJob) Run() {
|
||||
eventManagerLog(logger.LevelDebug, "executing scheduled rule %q", j.ruleName)
|
||||
rule, err := dataprovider.EventRuleExists(j.ruleName)
|
||||
rule, err := j.getEventRule()
|
||||
if err != nil {
|
||||
eventManagerLog(logger.LevelError, "unable to load rule with name %q", j.ruleName)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user