moved all files to code directory
This commit is contained in:
		
							
								
								
									
										0
									
								
								nodejs/models/auth.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										0
									
								
								nodejs/models/auth.js
									
									
									
									
									
										Executable file
									
								
							
							
								
								
									
										48
									
								
								nodejs/models/hosts.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										48
									
								
								nodejs/models/hosts.js
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,48 @@ | ||||
| '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}; | ||||
							
								
								
									
										107
									
								
								nodejs/models/users.js
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										107
									
								
								nodejs/models/users.js
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,107 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| const {promisify} = require('util'); | ||||
| const client = require('../redis'); | ||||
| const linuxUser = require('linux-user'); | ||||
| const pam = require('authenticate-pam'); | ||||
|  | ||||
| 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 | ||||
| */ | ||||
| async function makeInviteToken(data){ | ||||
| 	let token = UUID(); | ||||
| 	await client.HSET('users_tokens', token, JSON.stringify({ | ||||
| 		created_by: data.username, | ||||
| 		isAdmin: data.isAdmin, | ||||
| 		invited: false | ||||
| 	})); | ||||
|  | ||||
| 	return token; | ||||
| } | ||||
|  | ||||
| async function checkInvite(data){ | ||||
| 	let token = await client.HGET('users_tokens', data.token); | ||||
|  | ||||
| 	return JSON.parse(token); | ||||
| } | ||||
|  | ||||
| async function consumeInvite(data){ | ||||
| 	let invite = await checkInvite(data); | ||||
|  | ||||
| 	invite.invited = data.username; | ||||
|  | ||||
| 	await client.HSET('users_tokens', data.token, JSON.stringify(invite)); | ||||
| } | ||||
|  | ||||
| /* | ||||
| 	Auth/ Auth token | ||||
| */ | ||||
|  | ||||
| async function login(data){ | ||||
| 	try{ | ||||
| 		await authenticate(data.username, data.password); | ||||
|  | ||||
| 		return await getUserGroups(data.username); | ||||
| 	}catch(error){ | ||||
| 		return false; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| async function addToken(data){ | ||||
| 	let token = UUID(); | ||||
| 	await client.HSET('users_tokens', token, data.username); | ||||
|  | ||||
| 	return token; | ||||
| } | ||||
|  | ||||
| async function checkToken(data){ | ||||
| 	let user = await client.HGET('users_tokens', data.token); | ||||
|  | ||||
| 	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; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /* | ||||
| 	Users | ||||
| */ | ||||
|  | ||||
| async function add(data) { | ||||
|  | ||||
| 	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, checkInvite, consumeInvite, addSSHkey, verifyKey}; | ||||
		Reference in New Issue
	
	Block a user