This commit is contained in:
2018-02-14 03:15:19 -05:00
parent 5800a0603e
commit 64b0def088
7 changed files with 159 additions and 68 deletions

46
models/hosts.js Normal file
View File

@ -0,0 +1,46 @@
'use strict';
const {promisify} = require('util');
const client = require('../redis');
async function getInfo(data){
let info = await client.HGETALL('host_' + data.host);
return info
}
async function listAll(){
try{
let hosts = await client.SMEMBERS('hosts');
return hosts;
}catch(error){
return new Error(error);
}
}
async function add(data){
try{
await client.SADD('hosts', data.host);
await client.HSET('host_' + data.host, 'ip', data.ip);
await client.HSET('host_' + data.host, 'updated', (new Date).getTime());
await client.HSET('host_' + data.host, 'username', data.username);
} catch (error){
return new Error(error);
}
}
async function remove(data){
try{
await client.SREM('hosts', data.host);
let count = await client.DEL('host_' + data.host);
return count;
} catch(error) {
return new Error(error);
}
}
module.exports = {getInfo, listAll, add, remove};

View File

@ -1,10 +1,20 @@
'use strict';
const {promisify} = require('util');
const client = require('../redis');
const linuxUser = require('linux-user');
const pam = require('authenticate-pam');
const client = require('../redis');
const UUID = function b(a){return a?(a^Math.random()*16>>a/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,b)};
const authenticate = promisify(pam.authenticate);
const addSSHtoUser = promisify(linuxUser.addSSHtoUser)
const getUserGroups = promisify(linuxUser.getUserGroups);
const verifySSHKey = promisify(linuxUser.verifySSHKey);
const addUser = promisify(linuxUser.addUser);
const setPassword = promisify(linuxUser.setPassword);
/*
Invite
*/
@ -19,14 +29,14 @@ async function makeInviteToken(data){
return token;
}
async function checkInviteToken(data){
async function checkInvite(data){
let token = await client.HGET('users_tokens', data.token);
return JSON.parse(token);
}
async function useInviteToken(data){
let invite = await checkInviteToken(data);
async function consumeInvite(data){
let invite = await checkInvite(data);
invite.invited = data.username;
@ -38,14 +48,10 @@ async function useInviteToken(data){
*/
async function login(data){
const authenticate = promisify(pam.authenticate);
const getUserGroups = promisify(linuxUser.getUserGroups);
try{
await authenticate(data.username, data.password);
let groups = await getUserGroups(data.username);
console.log('groups', groups)
return true;
return await getUserGroups(data.username);
}catch(error){
return false;
}
@ -61,7 +67,20 @@ async function addToken(data){
async function checkToken(data){
let user = await client.HGET('users_tokens', data.token);
return user;
return {
username: user,
groups: (user && await getUserGroups(user))
}
}
async function addSSHkey(data){
try{
let user = await addSSHtoUser(data.username, data.key);
return true;
} catch (error) {
return error;
}
}
/*
@ -69,18 +88,20 @@ async function checkToken(data){
*/
async function add(data) {
const addUser = promisify(linuxUser.addUser);
const setPassword = promisify(linuxUser.setPassword);
let systemUser = await addUser(data.username);
let systemUserPassword = await setPassword(data.username, data.password);
}
async function verifyKey(data){
return await verifySSHKey(key)
}
async function ifUserExists(data){
const getUserInfo = promisify(linuxUser.getUserInfo);
return await getUserInfo(data.username);
}
module.exports = {login, add, addToken, checkToken, ifUserExists,
makeInviteToken, checkInviteToken, useInviteToken};
makeInviteToken, checkInvite, consumeInvite, addSSHkey, verifyKey};