forked from cea-hpc/robinhood
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbug99.patch
93 lines (81 loc) · 3.62 KB
/
bug99.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
diff --git a/src/fs_scan/fs_scan.c b/src/fs_scan/fs_scan.c
index 4057ce0..840cf65 100644
--- a/src/fs_scan/fs_scan.c
+++ b/src/fs_scan/fs_scan.c
@@ -375,6 +375,9 @@ static int TerminateScan( int scan_complete, time_t date_fin )
DisplayLog( LVL_VERB, FSSCAN_TAG, "Sending batched alerts, if any" );
Alert_EndBatching();
+ if ( scan_complete )
+ execute_shell_command(fs_scan_config.completion_command,0);
+
if ( fsscan_once )
signal_scan_finished( );
diff --git a/src/fs_scan/fs_scan_main.c b/src/fs_scan/fs_scan_main.c
index 38e00be..d030c5a 100644
--- a/src/fs_scan/fs_scan_main.c
+++ b/src/fs_scan/fs_scan_main.c
@@ -259,6 +259,7 @@ int FSScan_SetDefaultConfig( void *module_config, char *msg_out )
conf->ignore_list = NULL;
conf->ignore_count = 0;
+ strncpy( conf->completion_command, "", RBH_PATH_MAX );
return 0;
}
@@ -280,6 +281,7 @@ int FSScan_WriteDefaultConfig( FILE * output )
print_line( output, 1, "spooler_check_interval : 1min" );
print_line( output, 1, "nb_prealloc_tasks : 256" );
print_line( output, 1, "ignore : NONE" );
+ print_line( output, 1, "completion_command : NONE" );
print_end_block( output, 0 );
return 0;
}
@@ -305,6 +307,7 @@ int FSScan_ReadConfig( config_file_t config, void *module_config, char *msg_out,
"scan_interval", "min_scan_interval", "max_scan_interval",
"scan_retry_delay", "nb_threads_scan", "scan_op_timeout",
"exit_on_timeout", "spooler_check_interval", "nb_prealloc_tasks",
+ "completion_command",
IGNORE_BLOCK, NULL
};
@@ -400,6 +403,13 @@ int FSScan_ReadConfig( config_file_t config, void *module_config, char *msg_out,
if ( ( rc != 0 ) && ( rc != ENOENT ) )
return rc;
+ rc = GetStringParam( fsscan_block, FSSCAN_CONFIG_BLOCK, "completion_command",
+ STR_PARAM_ABSOLUTE_PATH | STR_PARAM_NO_WILDCARDS,
+ conf->completion_command, RBH_PATH_MAX, NULL, NULL, msg_out );
+ if ( ( rc != 0 ) && ( rc != ENOENT ) )
+ return rc;
+
+
/* Find and parse "ignore" blocks */
for ( blc_index = 0; blc_index < rh_config_GetNbItems( fsscan_block ); blc_index++ )
{
@@ -552,6 +562,15 @@ int FSScan_ReloadConfig( void *module_config )
fs_scan_config.spooler_check_interval = conf->spooler_check_interval;
}
+ if ( strcmp( conf->completion_command, fs_scan_config.completion_command ) )
+ {
+ DisplayLog( LVL_EVENT, "FS_Scan_Config",
+ FSSCAN_CONFIG_BLOCK "::completion_command updated: '%s'->'%s'",
+ fs_scan_config.completion_command, conf->completion_command );
+ strcpy( fs_scan_config.completion_command, conf->completion_command);
+ }
+
+
/* Parameters that canNOT be modified dynamically */
if ( conf->nb_threads_scan != fs_scan_config.nb_threads_scan )
@@ -602,6 +621,7 @@ int FSScan_WriteConfigTemplate( FILE * output )
print_line( output, 1, "scan_op_timeout = 1h ;" );
print_line( output, 1, "# exit if operation timeout is reached?" );
print_line( output, 1, "exit_on_timeout = TRUE ;" );
+ print_line( output, 1, "completion_command = "" ;" );
fprintf( output, "\n" );
print_line( output, 1,
diff --git a/src/include/fs_scan_main.h b/src/include/fs_scan_main.h
index 0455a69..0a8b669 100644
--- a/src/include/fs_scan_main.h
+++ b/src/include/fs_scan_main.h
@@ -53,6 +53,8 @@ typedef struct fs_scan_config_t
whitelist_item_t *ignore_list;
unsigned int ignore_count;
+ char completion_command[RBH_PATH_MAX];
+
} fs_scan_config_t;