MCPcopy Create free account
hub / github.com/Synzack/ldapper / NetUserQuery

Function NetUserQuery

Queries/QueryNetUser.go:43–219  ·  view source on GitHub ↗
(usernameInput string, baseDN string, conn *ldap.Conn)

Source from the content-addressed store, hash-verified

41}
42
43func 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])

Callers 1

mainFunction · 0.92

Calls 2

LdapSearchFunction · 0.92
ConvertLDAPTimeFunction · 0.92

Tested by

no test coverage detected