Enable total anonymization in vfs_smb_traffic_analyzer, by mapping any user names...
[kai/samba-autobuild/.git] / source3 / modules / vfs_smb_traffic_analyzer.c
index 63cc904bed1779cd57ef0b8bdae8a81584820ceb..a7fbeadbbe09c06dd8edcf0764b1881949285185 100644 (file)
@@ -78,6 +78,7 @@ static int smb_traffic_analyzer_connect_inet_socket(vfs_handle_struct *handle,
 
        for (res = ailist; res; res = res->ai_next) {
                struct sockaddr_storage ss;
+               NTSTATUS status;
 
                if (!res->ai_addr || res->ai_addrlen == 0) {
                        continue;
@@ -86,8 +87,8 @@ static int smb_traffic_analyzer_connect_inet_socket(vfs_handle_struct *handle,
                ZERO_STRUCT(ss);
                memcpy(&ss, res->ai_addr, res->ai_addrlen);
 
-               sockfd = open_socket_out(SOCK_STREAM, &ss, port, 10000);
-               if (sockfd != -1) {
+               status = open_socket_out(&ss, port, 10000, &sockfd);
+               if (NT_STATUS_IS_OK(status)) {
                        break;
                }
        }
@@ -164,6 +165,7 @@ static void smb_traffic_analyzer_send_data(vfs_handle_struct *handle,
        char *str = NULL;
        char *username = NULL;
        const char *anon_prefix = NULL;
+       const char *total_anonymization = NULL;
        size_t len;
 
        SMB_VFS_HANDLE_GET_DATA(handle, rf_sock, struct refcounted_sock, return);
@@ -184,14 +186,24 @@ static void smb_traffic_analyzer_send_data(vfs_handle_struct *handle,
 
        /* check if anonymization is required */
 
+       total_anonymization=lp_parm_const_string(SNUM(handle->conn),"smb_traffic_analyzer",
+                                       "total_anonymization", NULL);
+
        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(
-                               handle->conn->server_info->sanitized_username ) ); 
+               if (total_anonymization!=NULL) {
+                       username = talloc_asprintf(talloc_tos(),
+                               "%s",
+                               anon_prefix);
+               } else {
+                       username = talloc_asprintf(talloc_tos(),
+                               "%s%i",
+                               anon_prefix,
+                               str_checksum(
+                                       handle->conn->server_info->sanitized_username ) ); 
+               }
+
        } else {
                username = handle->conn->server_info->sanitized_username;
        }