vpn_based_remote_access_system
Version:
毕设:基于OpenVPN的远程访问系统
161 lines (149 loc) • 5.58 kB
JavaScript
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
};