forked from josephlim75/go-libnss
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlibnss.go
119 lines (92 loc) · 2.28 KB
/
libnss.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
package nss
// #include <nss.h>
import "C"
import "errors"
import . "github.com/naimols/go-libnss/structs"
const (
StatusTryagain = C.NSS_STATUS_TRYAGAIN
StatusUnavail = C.NSS_STATUS_UNAVAIL
StatusNotfound = C.NSS_STATUS_NOTFOUND
StatusSuccess = C.NSS_STATUS_SUCCESS
)
type Status int32
var ErrNotFound error = errors.New("not found")
type Implementation interface{
//PasswdOpen() (Status)
//PasswdClose() (Status)
PasswdAll() (Status, []Passwd)
PasswdByName(name string) (Status, Passwd)
PasswdByUid(uid uint) (Status, Passwd)
//GroupOpen() (Status)
//GroupClose() (Status)
GroupAll() (Status, []Group)
GroupByName(name string) (Status, Group)
GroupByGid(gid uint) (Status, Group)
//ShadowOpen() (Status)
//ShadowClose() (Status)
ShadowAll() (Status, []Shadow)
ShadowByName(name string) (Status, Shadow)
}
// Prototype structure for people to embed
type LIBNSS struct {}
// setpwent
/*func (self LIBNSS) PasswdOpen() (Status) {
return StatusUnavail
}
// endpwent
func (self LIBNSS) PasswdClose() (Status) {
return StatusUnavail
}*/
// getpwent
func (self LIBNSS) PasswdAll() (Status, []Passwd) {
return StatusUnavail, []Passwd{}
}
// getpwnam
func (self LIBNSS) PasswdByName(name string) (Status, Passwd) {
return StatusUnavail, Passwd{}
}
// getpwuid
func (self LIBNSS) PasswdByUid(uid uint) (Status, Passwd) {
return StatusUnavail, Passwd{}
}
// setgrent
/*func (self LIBNSS) GroupOpen() (Status) {
return StatusUnavail
}
// endgrent
func (self LIBNSS) GroupClose() (Status) {
return StatusUnavail
}*/
// endgrent
func (self LIBNSS) GroupAll() (Status, []Group) {
return StatusUnavail, []Group{ }
}
// getgrent
func (self LIBNSS) GroupByName(name string) (Status, Group) {
return StatusUnavail, Group{}
}
// getgrnam
func (self LIBNSS) GroupByGid(gid uint) (Status, Group) {
return StatusUnavail, Group{}
}
// getgrgid
/*func (self LIBNSS) ShadowOpen() (Status) {
return StatusUnavail
}
// setspent
func (self LIBNSS) ShadowClose() (Status) {
return StatusUnavail
}*/
// endspent
func (self LIBNSS) ShadowAll() (Status, []Shadow) {
return StatusUnavail, []Shadow{}
}
// getspent
func (self LIBNSS) ShadowByName(name string) (Status, Shadow) {
return StatusUnavail, Shadow{}
}
var implemented Implementation
// setspnam
func SetImpl(i Implementation) {
implemented = i
}