43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
1
|
var PolyUserModl = require('../models/PolyUserModl');
|
2ac0e575
Geoffrey PREUD'HOMME
Changé de line-re...
|
2
|
var LineTransform = require('node-line-reader').LineTransform;
|
2f593328
Geoffrey PREUD'HOMME
Linting
|
3
|
var fs = require('fs');
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
4
5
|
var Client = require('ssh2').Client;
var creds = require('../../config/sshAuth');
|
dafb4eeb
Geoffrey PREUD'HOMME
Affichage des nom...
|
6
|
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
7
|
var PolyUserServ = {};
|
dafb4eeb
Geoffrey PREUD'HOMME
Affichage des nom...
|
8
|
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
9
|
PolyUserServ.readPasswd = function (login, cb) {
|
e4fff96c
Geoffrey PREUD'HOMME
Récupération des ...
|
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
|
passwdF = 'config/passwd';
fs.exists(passwdF, function (exists) {
found = false;
if (exists) {
stream = fs.createReadStream(passwdF);
transform = new LineTransform();
stream.pipe(transform);
transform.on('data', function (line) {
ex = line.split(':');
if (ex[0] == login) { // Si trouvé
stream.close();
cb({
'username': ex[0],
'password': ex[1],
'UID': ex[2],
'GID': ex[3],
'GECOS': ex[4],
'home': ex[5],
'shell': ex[6]
});
found = true;
}
});
transform.on('end', function () {
if (!found) {
cb(false);
}
});
} else {
cb(undefined);
}
});
};
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
44
|
PolyUserServ.readGroup = function (gid, cb) {
|
e4fff96c
Geoffrey PREUD'HOMME
Récupération des ...
|
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
|
groupF = 'config/group';
fs.exists(groupF, function (exists) {
found = false;
if (exists) {
stream = fs.createReadStream(groupF);
transform = new LineTransform();
stream.pipe(transform);
transform.on('data', function (line) {
ex = line.split(':');
if (ex[2] == gid) { // Si trouvé
stream.close();
cb({
'name': ex[0],
'password': ex[1],
'GID': ex[2],
'list': ex[3]
});
found = true;
}
});
transform.on('end', function () {
if (!found) {
cb(false);
}
});
} else {
cb(undefined);
}
});
};
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
76
77
78
79
80
81
82
83
84
85
86
87
88
|
PolyUserServ.grabInfos = function (login, cb) {
PolyUserServ.readPasswd(login, function (passwd) {
if (passwd) {
PolyUserServ.readGroup(passwd.GID, function (group) {
if (group) {
cb({
nom: passwd.GECOS,
section: group.name.toUpperCase()
});
PolyUserModl.create({
login: login,
nom: passwd.GECOS,
section: group.name.toUpperCase()
|
e4fff96c
Geoffrey PREUD'HOMME
Récupération des ...
|
89
90
|
});
} else {
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
91
92
|
if (group === undefined) {
console.error("Impossible d'ouvrir le fichier des groupes.");
|
725cb3f7
Geoffrey PREUD'HOMME
Vérification de l...
|
93
|
} else {
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
94
|
console.error("Impossible d'obtenir le groupe de " + passwd.GID + ".");
|
82d5512d
Geoffrey PREUD'HOMME
Vérification logi...
|
95
|
}
|
e4fff96c
Geoffrey PREUD'HOMME
Récupération des ...
|
96
|
cb({
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
97
98
|
nom: passwd.GECOS,
section: passwd.GID
|
e4fff96c
Geoffrey PREUD'HOMME
Récupération des ...
|
99
100
101
|
});
}
});
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
} else {
if (passwd === undefined) {
console.error("Impossible d'ouvrir le fichier des noms.");
} else {
console.error("Impossible d'obtenir le nom de " + login + ".");
}
if (!login) {
login = 'Inconnu';
}
cb({
nom: login.toUpperCase(),
section: 'Inconnue'
});
}
});
};
PolyUserServ.addData = function (polyuser, cb) {
cb(null, polyuser);
};
PolyUserServ.obtain = function (login, cb) {
PolyUserModl.findOne({
login: login
}, {
nom: 1,
section: 1,
_id: 0
}, function (err, polyuser) {
if (err) {
cb(err);
} else {
PolyUserServ.addData(polyuser, cb);
}
});
};
PolyUserServ.add = function (login, cb) {
PolyUserServ.grabInfos(login, function (data) {
data.login = login;
PolyUserModl.create(data, function (err, polyuser) {
PolyUserServ.obtain(login, cb);
});
});
};
// PolyUserServ.remove = function (login, cb) {
// PolyUserModl.remove({
// login: login
// }, cb);
// };
PolyUserServ.get = function (login, cb) {
PolyUserModl.findOne({
login: login
}, function (err, polyuser) {
if (polyuser && !err && polyuser.polyuser && polyuser.section) {
PolyUserServ.obtain(login, cb);
} else {
PolyUserServ.add(login, cb);
}
});
};
PolyUserServ.verify = function (login, pass, cb) {
var conn = new Client();
conn.on('ready', function () {
cb(null, true);
}).on('error', function (err) {
if (err.level === 'client-authentication') {
cb(null, false);
} else {
cb(err);
|
dafb4eeb
Geoffrey PREUD'HOMME
Affichage des nom...
|
175
|
}
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
176
177
178
179
180
|
}).connect({
host: creds.host,
port: creds.port,
username: login,
password: pass
|
2f593328
Geoffrey PREUD'HOMME
Linting
|
181
182
|
});
};
|
dafb4eeb
Geoffrey PREUD'HOMME
Affichage des nom...
|
183
|
|
43b2778d
Geoffrey PREUD'HOMME
Rassemblement de ...
|
184
|
module.exports = PolyUserServ;
|