diff options
Diffstat (limited to 'source')
-rw-r--r-- | source/modules/vfs_smb_traffic_analyzer.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/source/modules/vfs_smb_traffic_analyzer.c b/source/modules/vfs_smb_traffic_analyzer.c index 1402b7c6224..a4e3a3bda1a 100644 --- a/source/modules/vfs_smb_traffic_analyzer.c +++ b/source/modules/vfs_smb_traffic_analyzer.c @@ -43,6 +43,7 @@ static enum sock_type smb_traffic_analyzer_connMode(vfs_handle_struct *handle) } } + /* Connect to an internet socket */ static int smb_traffic_analyzer_connect_inet_socket(vfs_handle_struct *handle, @@ -161,6 +162,8 @@ static void smb_traffic_analyzer_send_data(vfs_handle_struct *handle, struct tm *tm = NULL; int seconds; char *str = NULL; + const char *username = NULL; + const char *anon_prefix = NULL; size_t len; SMB_VFS_HANDLE_GET_DATA(handle, rf_sock, struct refcounted_sock, return); @@ -179,11 +182,27 @@ static void smb_traffic_analyzer_send_data(vfs_handle_struct *handle, } seconds=(float) (tv.tv_usec / 1000); + /* check if anonymization is required */ + + anon_prefix=lp_parm_const_string(SNUM(handle->conn),"smb_traffic_analyzer",\ + "anonymize_prefix", NULL ); + if (anon_prefix!=NULL) { + username = talloc_asprintf(talloc_tos(), + "%s%i", + anon_prefix, + str_checksum(get_current_username())); + } else { + username = get_current_username(); + } + + if (!username) { + return; + } str = talloc_asprintf(talloc_tos(), "V1,%u,\"%s\",\"%s\",\"%c\",\"%s\",\"%s\"," "\"%04d-%02d-%02d %02d:%02d:%02d.%03d\"\n", (unsigned int)result, - get_current_username(), + username, current_user_info.domain, Write ? 'W' : 'R', handle->conn->connectpath, |