UNPKG

vpn_based_remote_access_system

Version:

毕设:基于OpenVPN的远程访问系统

161 lines (149 loc) 5.58 kB
const sqlite3 = require('sqlite3').verbose(); const { logInfo, logError } = require('./logs')('Usergroup'); const db = new sqlite3.Database('./users.db', sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE, (err) => { if (err) { logError(err.message); } addDefaultGroup(); }); // �ڳ���ʼ����ʱ������Ĭ���û��� function addDefaultGroup() { const defaultGroupName = 'default'; const defaultPorts = '5140,8080'; // Ĭ�϶˿ں� db.run(`INSERT OR IGNORE INTO group_permissions (group_name, allowed_ports) VALUES (?, ?)`, [defaultGroupName, defaultPorts], function (err) { if (err) { logError(err.message); return; } logInfo(`Default group '${defaultGroupName}' has been added or already exists.`); }); } function listGroup() { db.all(`SELECT * from group_permissions`, [], function (err, row) { if (err) { console.error(err.message); return; } console.table(row); }); } // �����û��� function addGroup(groupName, portsArray) { const ports = portsArray.join(','); // ����Ķ˿ں���������ʽ����Ϊ�Զ��ŷָ����ַ������ٴ������ݱ� db.run(`INSERT INTO group_permissions (group_name, allowed_ports) VALUES (?, ?)`, [groupName, ports], function (err) { if (err) { console.error(err.message); return; } console.log(`A group named ${groupName} has been added.`); }); } // �����û������û��� function changeUserGroup(username, newGroup) { db.run(`UPDATE users SET groups = ? WHERE username = ?`, [newGroup, username], function (err) { if (err) { console.error(err.message); return; } if (this.changes > 0) { console.log(`User ${username}'s group has been changed to ${newGroup}.`); } else { console.log(`User ${username} not found.`); } }); } // �޸��û�����ʷ�Χ function updateGroupPermissions(groupName, portsArray) { const ports = portsArray.join(','); db.run(`UPDATE group_permissions SET allowed_ports = ? WHERE group_name = ?`, [ports, groupName], function (err) { if (err) { console.error(err.message); return; } if (this.changes > 0) { console.log(`Permissions for group ${groupName} have been updated.`); } else { console.log(`Group ${groupName} not found.`); } }); } // ɾ���û��� function deleteUserGroup(groupName) { if (groupName === 'default') { console.log('The "default" group cannot be deleted.'); } else { db.run(`DELETE FROM group_permissions WHERE group_name = ?`, [groupName], function (err) { if (err) { console.error(err.message); return; } if (this.changes > 0) { console.log(`Group ${groupName} has been deleted.`); } else { console.log(`Group ${groupName} not found.`); } }); } } // ���û������Ƴ��˿� function removePortFromUserGroup(groupName, ports) { db.get(`SELECT allowed_ports FROM group_permissions WHERE group_name = ?`, [groupName], function (err, row) { if (err) { console.error(err.message); return; } if (row) { let portsArray = row.allowed_ports.split(','); portsArray = portsArray.filter(port => port.trim() !== ports); const updatedPorts = portsArray.join(','); db.run(`UPDATE group_permissions SET allowed_ports = ? WHERE group_name = ?`, [updatedPorts, groupName], function (err) { if (err) { console.error(err.message); return; } console.log(`Port ${ports} has been removed from group ${groupName}.`); }); } else { console.log(`Group ${groupName} not found.`); } }); } // �����ն�ָ�� function handleCommand(input) { const args = input.split(' '); // �Կո�Ϊ�ָ����ָ�� const command = args[1]; // args[1]�� group �����ָ�� switch (command) { case 'list': // �г������û��鼰���ʷ�Χ����ʽΪ��group list listGroup(); break; case 'add': // �����û��飬args[2] ���û���������ʽΪ��group add �û����� addGroup(args[2], args.slice(3)); break; case 'set': // �����û����Ӧ�Ķ˿ںţ�args[2] ���û�������args[3] �Ƕ˿ںţ���ʽΪ��group set �û����� �˿ں� updateGroupPermissions(args[2], args.slice(3)); break; case 'delete': // ɾ���û��飬args[2] ���û���������ʽΪ��group delete �û����� deleteUserGroup(args[2]); break; case 'remove': // ���û���ɾ���˿ںţ�args[2] ���û�������args[3] �Ƕ˿ںţ���ʽΪ��group remove �û����� removePortFromUserGroup(args[2], args[3]) break; case 'user': // ���û����ӵ��û��飬args[2] ���û�����args[3] ���û���������ʽΪ��group user �û��� �û����� changeUserGroup(args[2], args[3]); break; default: console.log(`Unknown command: ${command}`); } } module.exports = { addGroup, changeUserGroup, updateGroupPermissions, handleCommand };