r10619: Allow syslog facility and priority to be set via
authorDeryck Hodge <deryck@samba.org>
Thu, 29 Sep 2005 15:57:21 +0000 (15:57 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 16:04:48 +0000 (11:04 -0500)
smb.conf for audit modules.

Facility may be set to USER or LOCAL0-LOCAL7.  Any
of the syslog priority settings may be used.
smb.conf will look like:

audit:facility = LOCAL5
audit:priority = INFO

(Or full_audit:facility, or whatever audit module is used.)

deryck
(This used to be commit c619ee38f0aee43de571524c8ef3bf6b27b30e74)

source3/modules/vfs_audit.c
source3/modules/vfs_extd_audit.c
source3/modules/vfs_full_audit.c

index 7d97962db04418a1fec7d3d83bd6f64728bf0976..9f5179a47ce9caa9535c6ea0e0b40112877b9f2f 100644 (file)
@@ -77,21 +77,44 @@ static vfs_op_tuple audit_op_tuples[] = {
 
 static int audit_syslog_facility(vfs_handle_struct *handle)
 {
-       /* fix me: let this be configurable by:
-        *      lp_param_enum(SNUM(handle->conn),(handle->param?handle->param:"audit"),"syslog facility",
-        *              audit_enum_facility,LOG_USER); 
-        */
-       return LOG_USER;
+       static const struct enum_list enum_log_facilities[] = {
+               { LOG_USER, "USER" },
+               { LOG_LOCAL0, "LOCAL0" },
+               { LOG_LOCAL1, "LOCAL1" },
+               { LOG_LOCAL2, "LOCAL2" },
+               { LOG_LOCAL3, "LOCAL3" },
+               { LOG_LOCAL4, "LOCAL4" },
+               { LOG_LOCAL5, "LOCAL5" },
+               { LOG_LOCAL6, "LOCAL6" },
+               { LOG_LOCAL7, "LOCAL7" }
+       };
+
+       int facility;
+
+       facility = lp_parm_enum(SNUM(handle->conn), "audit", "facility", enum_log_facilities, LOG_USER);
+
+       return facility;
 }
 
 
 static int audit_syslog_priority(vfs_handle_struct *handle)
 {
-       /* fix me: let this be configurable by:
-        *      lp_param_enum(SNUM(handle->conn),(handle->param?handle->param:"audit"),"syslog priority",
-        *              audit_enum_priority,LOG_NOTICE); 
-        */
-       return LOG_NOTICE;
+       static const struct enum_list enum_log_priorities[] = {
+               { LOG_EMERG, "EMERG" },
+               { LOG_ALERT, "ALERT" },
+               { LOG_CRIT, "CRIT" },
+               { LOG_ERR, "ERR" },
+               { LOG_WARNING, "WARNING" },
+               { LOG_NOTICE, "NOTICE" },
+               { LOG_INFO, "INFO" },
+               { LOG_DEBUG, "DEBUG" }
+       };
+
+       int priority;
+
+       priority = lp_parm_enum(SNUM(handle->conn), "audit", "priority", enum_log_priorities, LOG_NOTICE);
+
+       return priority;
 }
 
 /* Implementation of vfs_ops.  Pass everything on to the default
index d7bb9805851856d89aa36c53d2d4a69b984ba3ed..cb8c3ffd6ab60624369fcbb4746ef48fa32d8cf3 100644 (file)
@@ -80,21 +80,44 @@ static vfs_op_tuple audit_op_tuples[] = {
 
 static int audit_syslog_facility(vfs_handle_struct *handle)
 {
-       /* fix me: let this be configurable by:
-        *      lp_param_enum(SNUM(handle->conn),(handle->param?handle->param:"extd_audit"),"syslog facility",
-        *              audit_enum_facility,LOG_USER); 
-        */
-       return LOG_USER;
+       static const struct enum_list enum_log_facilities[] = {
+               { LOG_USER, "USER" },
+               { LOG_LOCAL0, "LOCAL0" },
+               { LOG_LOCAL1, "LOCAL1" },
+               { LOG_LOCAL2, "LOCAL2" },
+               { LOG_LOCAL3, "LOCAL3" },
+               { LOG_LOCAL4, "LOCAL4" },
+               { LOG_LOCAL5, "LOCAL5" },
+               { LOG_LOCAL6, "LOCAL6" },
+               { LOG_LOCAL7, "LOCAL7" }
+       };
+
+       int facility;
+
+       facility = lp_parm_enum(SNUM(handle->conn), "extd_audit", "facility", enum_log_facilities, LOG_USER);
+
+       return facility;
 }
 
 
 static int audit_syslog_priority(vfs_handle_struct *handle)
 {
-       /* fix me: let this be configurable by:
-        *      lp_param_enum(SNUM(handle->conn),(handle->param?handle->param:"extd_audit"),"syslog priority",
-        *              audit_enum_priority,LOG_NOTICE); 
-        */
-       return LOG_NOTICE;
+       static const struct enum_list enum_log_priorities[] = {
+               { LOG_EMERG, "EMERG" },
+               { LOG_ALERT, "ALERT" },
+               { LOG_CRIT, "CRIT" },
+               { LOG_ERR, "ERR" },
+               { LOG_WARNING, "WARNING" },
+               { LOG_NOTICE, "NOTICE" },
+               { LOG_INFO, "INFO" },
+               { LOG_DEBUG, "DEBUG" }
+       };
+
+       int priority;
+
+       priority = lp_parm_enum(SNUM(handle->conn), "extd_audit", "priority", enum_log_priorities, LOG_NOTICE);
+
+       return priority;
 }
 
 /* Implementation of vfs_ops.  Pass everything on to the default
index 175dda7a69e794254236c2587acd366c1988e1a4..99d524448252fee78f1566ce92dfc9b1eb903996 100644 (file)
@@ -606,24 +606,43 @@ static struct {
 
 static int audit_syslog_facility(vfs_handle_struct *handle)
 {
-       /* fix me: let this be configurable by:
-        *      lp_param_enum(SNUM(handle->conn),
-        *                    (handle->param?handle->param:"full_audit"),
-        *                    "syslog facility",
-        *                    audit_enum_facility,LOG_USER);
-        */
-       return LOG_USER;
+       static const struct enum_list enum_log_facilities[] = {
+               { LOG_USER, "USER" },
+               { LOG_LOCAL0, "LOCAL0" },
+               { LOG_LOCAL1, "LOCAL1" },
+               { LOG_LOCAL2, "LOCAL2" },
+               { LOG_LOCAL3, "LOCAL3" },
+               { LOG_LOCAL4, "LOCAL4" },
+               { LOG_LOCAL5, "LOCAL5" },
+               { LOG_LOCAL6, "LOCAL6" },
+               { LOG_LOCAL7, "LOCAL7" }
+       };
+
+       int facility;
+
+       facility = lp_parm_enum(SNUM(handle->conn), "full_audit", "facility", enum_log_facilities, LOG_USER);
+
+       return facility;
 }
 
 static int audit_syslog_priority(vfs_handle_struct *handle)
 {
-       /* fix me: let this be configurable by:
-        *      lp_param_enum(SNUM(handle->conn),
-        *                    (handle->param?handle->param:"full_audit"),
-        *                    "syslog priority",
-        *                    audit_enum_priority,LOG_NOTICE); 
-        */
-       return LOG_NOTICE;
+       static const struct enum_list enum_log_priorities[] = {
+               { LOG_EMERG, "EMERG" },
+               { LOG_ALERT, "ALERT" },
+               { LOG_CRIT, "CRIT" },
+               { LOG_ERR, "ERR" },
+               { LOG_WARNING, "WARNING" },
+               { LOG_NOTICE, "NOTICE" },
+               { LOG_INFO, "INFO" },
+               { LOG_DEBUG, "DEBUG" }
+       };
+
+       int priority;
+
+       priority = lp_parm_enum(SNUM(handle->conn), "full_audit", "priority", enum_log_priorities, LOG_NOTICE);
+
+       return priority;
 }
 
 static char *audit_prefix(connection_struct *conn)