(usernameInput string, baseDN string, conn *ldap.Conn)
| 41 | } |
| 42 | |
| 43 | func NetUserQuery(usernameInput string, baseDN string, conn *ldap.Conn) (queryResult string) { |
| 44 | |
| 45 | query := fmt.Sprintf("(samAccountName=%s)", usernameInput) // Query to search for user |
| 46 | searchReq := Globals.LdapSearch(baseDN, query) // Search request |
| 47 | result, err := conn.Search(searchReq) |
| 48 | if err != nil { |
| 49 | fmt.Printf("Query error, %s", err) |
| 50 | |
| 51 | } |
| 52 | |
| 53 | // if LdapSearch returns information |
| 54 | if len(result.Entries) > 0 { |
| 55 | |
| 56 | //Check if user |
| 57 | objectClass := result.Entries[0].GetAttributeValues("objectClass") |
| 58 | isUser := false |
| 59 | |
| 60 | for i := 0; i < len(objectClass); i++ { |
| 61 | if result.Entries[0].GetAttributeValues("objectClass")[i] == "user" { |
| 62 | isUser = true |
| 63 | } |
| 64 | } |
| 65 | |
| 66 | if isUser { |
| 67 | queryResult += fmt.Sprintf("\nUser Information - %s:\n-------------------------------------------------------------------------------\n", usernameInput) |
| 68 | //get username |
| 69 | username := result.Entries[0].GetAttributeValues("sAMAccountName") // Get username |
| 70 | if len(username) > 0 { // If username is not empty |
| 71 | queryResult += fmt.Sprintf("User Name: \t%s\n", username[0]) |
| 72 | } |
| 73 | |
| 74 | //get Full Name |
| 75 | userCN := result.Entries[0].GetAttributeValues("cn")[0] |
| 76 | userCNEsc := strings.Replace(userCN, "\\", "", -1) |
| 77 | userCNEsc = strings.Replace(userCNEsc, "(", ldap.EscapeFilter("("), -1) //Escape parenthesis |
| 78 | userCNEsc = strings.Replace(userCNEsc, ")", ldap.EscapeFilter(")"), -1) |
| 79 | queryResult += fmt.Sprintf("Full Name: \t%s\n", userCN) |
| 80 | |
| 81 | //get Comments |
| 82 | if len(result.Entries[0].GetAttributeValues("description")) > 0 { // If comments is not empty |
| 83 | description := result.Entries[0].GetAttributeValues("description")[0] // Get comments |
| 84 | queryResult += fmt.Sprintf("Comment: \t%s\n", description) // Print comments |
| 85 | } else { |
| 86 | queryResult += ("Comment: \t\n") |
| 87 | } |
| 88 | |
| 89 | //get Account Active |
| 90 | userAccountControlQuery := fmt.Sprintf("(cn=%s)", userCNEsc) // Query to search for user |
| 91 | userAccountControlSearch := Globals.LdapSearch(baseDN, userAccountControlQuery) // Search request |
| 92 | |
| 93 | userAccountControlResult, err := conn.Search(userAccountControlSearch) |
| 94 | if err != nil { |
| 95 | fmt.Printf("User Account Control query error, %s", err) |
| 96 | |
| 97 | } |
| 98 | |
| 99 | // Get userAccountControl and convert to int for bitwise operations |
| 100 | userAccountControl, err := strconv.Atoi(userAccountControlResult.Entries[0].GetAttributeValues("userAccountControl")[0]) |
no test coverage detected