more
This commit is contained in:
46
models/hosts.js
Normal file
46
models/hosts.js
Normal 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};
|
@ -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};
|
||||
|
Reference in New Issue
Block a user