fkg 1.1.3 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -0
- package/lib/json/command.json +1 -1
- package/lib/order/init.js +2 -2
- package/lib/order/login.js +36 -0
- package/lib/order/server/index.js +9 -0
- package/lib/order/server/tcp.js +145 -0
- package/lib/order/user/add.js +37 -0
- package/lib/order/user/dele.js +41 -0
- package/lib/order/user/edit.js +54 -0
- package/lib/order/user/index.js +16 -0
- package/lib/order/user/scode.js +44 -0
- package/lib/utils/input.js +1 -1
- package/lib/{client/index.js → utils/utils.js} +2 -2
- package/package.json +3 -6
- package/lib/order/add.js +0 -67
- package/lib/order/user.js +0 -15
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
## FKG
|
|
2
|
+
===================================
|
|
3
|
+
|
|
4
|
+
[![NPM version][npm-v-2]][npm-url]
|
|
5
|
+
[![NPM Install Size][size]][size-url]
|
|
6
|
+
[![NPM Downloads][download]][download-url]
|
|
7
|
+
[![NPM License][license]][license-url]
|
|
8
|
+
|
|
9
|
+
### FKG Introduction...
|
|
10
|
+
===================================
|
|
11
|
+
|
|
12
|
+
**Installing FKG**
|
|
13
|
+
|
|
14
|
+
```shell
|
|
15
|
+
$ npm install fkg -g
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Initialize service**
|
|
19
|
+
|
|
20
|
+
```shell
|
|
21
|
+
$ cd E:\fkgdb
|
|
22
|
+
$ fkg init
|
|
23
|
+
The security code must consist of no less than 8 strings
|
|
24
|
+
ecurity code :12345678
|
|
25
|
+
Confirm code :12345678
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
```shell
|
|
30
|
+
$ fkg user add
|
|
31
|
+
Enter security code:12345678
|
|
32
|
+
Account Name:admin
|
|
33
|
+
Account Password:admin
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
```shell
|
|
37
|
+
$ fkg user edit
|
|
38
|
+
Enter security code:12345678
|
|
39
|
+
Enter account name:admin
|
|
40
|
+
admin:(Allow login)
|
|
41
|
+
Modify login status (1 allows or 0 prohibits):1
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
```shell
|
|
45
|
+
$ fkg user dele
|
|
46
|
+
Enter security code:88888888
|
|
47
|
+
Enter account name:admin
|
|
48
|
+
Confirm deletion (yes or no):yes
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```shell
|
|
52
|
+
$ fkg login
|
|
53
|
+
Account Name:admin
|
|
54
|
+
Account Password:admin
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```shell
|
|
58
|
+
$ fkg server 3308 127.0.0.1
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
[npm-v-1]: https://badgen.net/npm/v/fkg
|
|
64
|
+
[npm-v-2]: https://img.shields.io/npm/v/fkg
|
|
65
|
+
[npm-url]: https://www.npmjs.com/package/fkg
|
|
66
|
+
[size]: https://badgen.net/packagephobia/install/fkg
|
|
67
|
+
[size-url]: https://packagephobia.com/result?p=fkg
|
|
68
|
+
[download]: https://badgen.net/npm/dt/fkg
|
|
69
|
+
[download-url]: https://npmcharts.com/compare/fkg?minimal=true
|
|
70
|
+
[license]:https://badgen.net/npm/license/fkg
|
|
71
|
+
[license-url]:https://npmmirror.com/package/fkg/files/LICENSE
|
package/lib/json/command.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
["init","user","
|
|
1
|
+
["init","user","login","server"]
|
package/lib/order/init.js
CHANGED
|
@@ -9,7 +9,7 @@ module.exports = async(arg)=>{
|
|
|
9
9
|
const list = await dbDir.list();
|
|
10
10
|
if(list.length===0){
|
|
11
11
|
// Initialization started
|
|
12
|
-
logs.g('
|
|
12
|
+
logs.g('Security code>=8characters');
|
|
13
13
|
const input = require('../utils/input')
|
|
14
14
|
const arr = await input('ecurity code :','Confirm code :');
|
|
15
15
|
if(arr.length===2){
|
|
@@ -49,4 +49,4 @@ module.exports = async(arg)=>{
|
|
|
49
49
|
}else{
|
|
50
50
|
logs.r('Directory does not exist');
|
|
51
51
|
}
|
|
52
|
-
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const {md5} = require('rrid');
|
|
3
|
+
const oss = require('oss-sdk');
|
|
4
|
+
const logs = require('../utils/logs');
|
|
5
|
+
const input = require('../utils/input');
|
|
6
|
+
module.exports = async(arg)=>{
|
|
7
|
+
// Add administrator
|
|
8
|
+
const user = await input('Account Name:','Account Password:');
|
|
9
|
+
if(!user[0]||!user[1]){
|
|
10
|
+
logs.g('Account password cannot be empty');
|
|
11
|
+
}else{
|
|
12
|
+
const file = oss.file(process.cwd());
|
|
13
|
+
const name = md5(user[0]);
|
|
14
|
+
let data = await file.get('account/'+name);
|
|
15
|
+
if(data){
|
|
16
|
+
try{
|
|
17
|
+
data = JSON.parse(data);
|
|
18
|
+
}catch(err){
|
|
19
|
+
logs.r(err);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const key = md5(data.addTime+user[0]+user[1]+data.addTime);
|
|
23
|
+
if(data.key===key){
|
|
24
|
+
if(data.code==1){
|
|
25
|
+
logs.g('Login successful');
|
|
26
|
+
}else{
|
|
27
|
+
logs.r('Login prohibited');
|
|
28
|
+
}
|
|
29
|
+
}else{
|
|
30
|
+
logs.r('Login failed!');
|
|
31
|
+
}
|
|
32
|
+
}else{
|
|
33
|
+
logs.r('Account does not exist');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const net = require('net');
|
|
3
|
+
module.exports = async(arg)=>{
|
|
4
|
+
const port = arg[0]>0?arg[0]:3308;
|
|
5
|
+
const host = arg[1]?arg[1]:'127.0.0.1';
|
|
6
|
+
const server = net.createServer();
|
|
7
|
+
const clients = new Map(); // 存储在线客户端:key=clientId,value=socket实例
|
|
8
|
+
|
|
9
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
const net = require('net');
|
|
2
|
+
class TCPServer {
|
|
3
|
+
constructor() {
|
|
4
|
+
// 合并默认配置与自定义配置
|
|
5
|
+
this.config = {
|
|
6
|
+
...serverConfig,
|
|
7
|
+
...customConfig
|
|
8
|
+
};
|
|
9
|
+
// 创建TCP服务实例
|
|
10
|
+
this.server = net.createServer();
|
|
11
|
+
// 存储在线客户端(key: clientId, value: socket)
|
|
12
|
+
this.clients = new Map();
|
|
13
|
+
this.clientIdCounter = 0; // 客户端唯一ID计数器
|
|
14
|
+
|
|
15
|
+
// 绑定事件(核心通信逻辑)
|
|
16
|
+
this.bindEvents();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* 绑定所有核心事件
|
|
21
|
+
*/
|
|
22
|
+
bindEvents() {
|
|
23
|
+
// 1. 新客户端连接事件
|
|
24
|
+
this.server.on('connection', (socket) => this.handleConnection(socket));
|
|
25
|
+
// 2. 服务端启动错误事件
|
|
26
|
+
this.server.on('error', (err) => this.handleServerError(err));
|
|
27
|
+
// 3. 进程退出事件(优雅关闭)
|
|
28
|
+
process.on('SIGINT', () => this.gracefulShutdown());
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* 处理新客户端连接
|
|
33
|
+
* @param {net.Socket} socket 客户端Socket实例
|
|
34
|
+
*/
|
|
35
|
+
handleConnection(socket) {
|
|
36
|
+
// 生成客户端唯一ID
|
|
37
|
+
const clientId = ++this.clientIdCounter;
|
|
38
|
+
const clientAddr = `${socket.remoteAddress}:${socket.remotePort}`;
|
|
39
|
+
|
|
40
|
+
// 存储客户端Socket
|
|
41
|
+
this.clients.set(clientId, socket);
|
|
42
|
+
console.log(`✅ [客户端${clientId}] ${clientAddr} 接入,当前在线:${this.clients.size}`);
|
|
43
|
+
|
|
44
|
+
// 客户端连接配置
|
|
45
|
+
socket.setTimeout(this.config.timeout);
|
|
46
|
+
socket.write(`欢迎连接TCP服务端(ID:${clientId}),请输入指令\n`);
|
|
47
|
+
|
|
48
|
+
// 缓存未完整接收的消息(解决分片/粘包)
|
|
49
|
+
let buffer = '';
|
|
50
|
+
|
|
51
|
+
// 绑定客户端Socket事件
|
|
52
|
+
socket.on('data', (data) => {
|
|
53
|
+
// 拼接缓存,解决分片问题
|
|
54
|
+
buffer += data.toString();
|
|
55
|
+
// 按结束符分割完整指令
|
|
56
|
+
const cmdList = buffer.split(this.config.commandEndChar);
|
|
57
|
+
// 最后一个元素可能是未完整接收的消息,重新缓存
|
|
58
|
+
buffer = cmdList.pop() || '';
|
|
59
|
+
|
|
60
|
+
// 遍历处理每一条完整指令
|
|
61
|
+
cmdList.forEach((cmdStr) => {
|
|
62
|
+
cmdStr = cmdStr.trim();
|
|
63
|
+
if (cmdStr) {
|
|
64
|
+
console.log(`📥 [客户端${clientId}] 接收指令:${cmdStr}`);
|
|
65
|
+
// 路由到业务逻辑
|
|
66
|
+
commandRouter.route(socket, cmdStr);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// 客户端断开连接
|
|
72
|
+
socket.on('end', () => {
|
|
73
|
+
this.clients.delete(clientId);
|
|
74
|
+
console.log(`❌ [客户端${clientId}] ${clientAddr} 断开,当前在线:${this.clients.size}`);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// 客户端连接超时
|
|
78
|
+
socket.on('timeout', () => {
|
|
79
|
+
console.log(`⏰ [客户端${clientId}] ${clientAddr} 连接超时`);
|
|
80
|
+
socket.end('连接超时,已断开\n');
|
|
81
|
+
this.clients.delete(clientId);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// 客户端连接错误
|
|
85
|
+
socket.on('error', (err) => {
|
|
86
|
+
console.error(`⚠️ [客户端${clientId}] ${clientAddr} 错误:${err.message}`);
|
|
87
|
+
this.clients.delete(clientId);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* 处理服务端启动错误
|
|
93
|
+
* @param {Error} err 错误对象
|
|
94
|
+
*/
|
|
95
|
+
handleServerError(err) {
|
|
96
|
+
if (err.code === 'EADDRINUSE') {
|
|
97
|
+
console.error(`❌ 端口${this.config.port}已被占用,请更换端口`);
|
|
98
|
+
} else {
|
|
99
|
+
console.error(`❌ 服务端错误:${err.message}`);
|
|
100
|
+
}
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* 优雅关闭服务端
|
|
106
|
+
*/
|
|
107
|
+
gracefulShutdown() {
|
|
108
|
+
console.log('\n🛑 正在关闭TCP服务端...');
|
|
109
|
+
// 断开所有客户端连接
|
|
110
|
+
this.clients.forEach((socket, clientId) => {
|
|
111
|
+
socket.end('服务端即将关闭,连接断开\n');
|
|
112
|
+
socket.destroy();
|
|
113
|
+
});
|
|
114
|
+
// 关闭服务端监听
|
|
115
|
+
this.server.close(() => {
|
|
116
|
+
console.log('✅ TCP服务端已优雅关闭');
|
|
117
|
+
process.exit(0);
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* 启动服务端(对外暴露的核心API)
|
|
123
|
+
*/
|
|
124
|
+
start() {
|
|
125
|
+
this.server.listen(this.config.port, this.config.host, () => {
|
|
126
|
+
console.log(`🚀 TCP服务端已启动:${this.config.host}:${this.config.port}`);
|
|
127
|
+
console.log(`📌 连接超时时间:${this.config.timeout / 1000 / 60}分钟`);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* 广播消息给所有在线客户端(扩展API)
|
|
133
|
+
* @param {string} msg 广播消息
|
|
134
|
+
* @param {number} excludeClientId 排除的客户端ID(避免给自己广播)
|
|
135
|
+
*/
|
|
136
|
+
broadcast(msg, excludeClientId = 0) {
|
|
137
|
+
this.clients.forEach((socket, clientId) => {
|
|
138
|
+
if (clientId !== excludeClientId && !socket.destroyed) {
|
|
139
|
+
socket.write(`[广播] ${msg}\n`);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
module.exports = TCPServer;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const {md5} = require('rrid');
|
|
3
|
+
const oss = require('oss-sdk');
|
|
4
|
+
const logs = require('../../utils/logs');
|
|
5
|
+
const input = require('../../utils/input');
|
|
6
|
+
module.exports = async(arg)=>{
|
|
7
|
+
// Add administrator
|
|
8
|
+
const user = await input('Account Name:','Account Password:');
|
|
9
|
+
if(!user[0]||!user[1]){
|
|
10
|
+
logs.g('Account password cannot be empty');
|
|
11
|
+
}else{
|
|
12
|
+
const dirs = oss.dir(process.cwd());
|
|
13
|
+
if(await dirs.ok('account')){
|
|
14
|
+
const files = oss.file(process.cwd());
|
|
15
|
+
const name = md5(user[0]);
|
|
16
|
+
if(await files.ok('account/'+name)){
|
|
17
|
+
logs.r('The account already exists');
|
|
18
|
+
}else{
|
|
19
|
+
const info = {};
|
|
20
|
+
info.code = 1;
|
|
21
|
+
info.addTime = Date.now();
|
|
22
|
+
info.key = md5(info.addTime+user[0]+user[1]+info.addTime);
|
|
23
|
+
const dirRes = await dirs.add('database/'+name);
|
|
24
|
+
const fileRes = await files.add('account/'+name,JSON.stringify(info));
|
|
25
|
+
if(dirRes&&fileRes){
|
|
26
|
+
logs.g('Added successfully');
|
|
27
|
+
logs.y('Please remember your account password');
|
|
28
|
+
}else{
|
|
29
|
+
logs.r('Failed to add');
|
|
30
|
+
logs.r('Unknown error');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}else{
|
|
34
|
+
logs.r('Important folder lost');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const {md5} = require('rrid');
|
|
3
|
+
const oss = require('oss-sdk');
|
|
4
|
+
const logs = require("../../utils/logs");
|
|
5
|
+
const input = require('../../utils/input');
|
|
6
|
+
module.exports = async()=>{
|
|
7
|
+
const dir = oss.dir(process.cwd());
|
|
8
|
+
const list = await dir.list('account');
|
|
9
|
+
if(list&&list.length>0){
|
|
10
|
+
const res = await input('Enter account name:');
|
|
11
|
+
if(res[0]){
|
|
12
|
+
// Verify account
|
|
13
|
+
const name = md5(res[0]);
|
|
14
|
+
const file = oss.file(process.cwd());
|
|
15
|
+
let ok = await file.ok('account/'+name);
|
|
16
|
+
const ress = await input('Confirm deletion (yes or no):');
|
|
17
|
+
if(ress[0]==='yes'){
|
|
18
|
+
// Does the database exist
|
|
19
|
+
const lists = await dir.list('database/'+name);
|
|
20
|
+
if(lists&&lists.length>0){
|
|
21
|
+
logs.r('Delete the database of this account first');
|
|
22
|
+
}else{
|
|
23
|
+
const dele = await dir.dele('database/'+name);
|
|
24
|
+
const deles = await file.dele('account/'+name);
|
|
25
|
+
if(dele&&deles){
|
|
26
|
+
logs.g('Deleted successfully')
|
|
27
|
+
}else{
|
|
28
|
+
logs.r('Deletion failed')
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}else{
|
|
32
|
+
logs.g('Choose not to delete')
|
|
33
|
+
}
|
|
34
|
+
}else{
|
|
35
|
+
logs.r('Account name cannot be empty');
|
|
36
|
+
}
|
|
37
|
+
}else{
|
|
38
|
+
logs.r('No account exists');
|
|
39
|
+
logs.y('Please add an account');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const {md5} = require('rrid');
|
|
3
|
+
const oss = require('oss-sdk');
|
|
4
|
+
const logs = require('../../utils/logs');
|
|
5
|
+
const input = require('../../utils/input');
|
|
6
|
+
module.exports = async()=>{
|
|
7
|
+
const dir = oss.dir(process.cwd());
|
|
8
|
+
const list = await dir.list('account');
|
|
9
|
+
if(list&&list.length>0){
|
|
10
|
+
const res = await input('Enter account name:');
|
|
11
|
+
if(res[0]){
|
|
12
|
+
// Verify account
|
|
13
|
+
const name = 'account/'+md5(res[0]);
|
|
14
|
+
const file = oss.file(process.cwd());
|
|
15
|
+
let data = await file.get(name);
|
|
16
|
+
if(data){
|
|
17
|
+
try{
|
|
18
|
+
data = JSON.parse(data);
|
|
19
|
+
if(data.code==1){
|
|
20
|
+
logs.g(res[0]+':(Allow login)');
|
|
21
|
+
}else{
|
|
22
|
+
logs.r(res[0]+':(Login prohibited)');
|
|
23
|
+
}
|
|
24
|
+
const status = await input('Modify login status (1 allows or 0 prohibits):');
|
|
25
|
+
if(data.code==status[0]) {
|
|
26
|
+
logs.g('Modified successfully');
|
|
27
|
+
}else{
|
|
28
|
+
if(status[0]=='0'||status[0]=='1'){
|
|
29
|
+
data.code = status[0];
|
|
30
|
+
data = JSON.stringify(data);
|
|
31
|
+
const edit = await file.edit(name,data);
|
|
32
|
+
if(edit){
|
|
33
|
+
logs.g('Modified successfully');
|
|
34
|
+
}else{
|
|
35
|
+
logs.r('Modification failed');
|
|
36
|
+
}
|
|
37
|
+
}else{
|
|
38
|
+
logs.r('Invalid input:'+status[0]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}catch(err){
|
|
42
|
+
logs.r(err);
|
|
43
|
+
}
|
|
44
|
+
}else{
|
|
45
|
+
logs.r('The account does not exist');
|
|
46
|
+
}
|
|
47
|
+
}else{
|
|
48
|
+
logs.r('Account name cannot be empty');
|
|
49
|
+
}
|
|
50
|
+
}else{
|
|
51
|
+
logs.r('No account exists');
|
|
52
|
+
logs.y('Please add an account');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const scode = require('./scode')
|
|
3
|
+
const logs = require('../../utils/logs');
|
|
4
|
+
module.exports = async(arg)=>{
|
|
5
|
+
if(arg[0]===undefined) {
|
|
6
|
+
logs.r('Please enter parameters');
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const list = ['add','edit','dele'];
|
|
10
|
+
if(list.includes(arg[0])){
|
|
11
|
+
const code = await scode(arg.slice(1));
|
|
12
|
+
if(code) require('./'+arg[0])(arg.slice(1));
|
|
13
|
+
}else{
|
|
14
|
+
logs.r('Wrong parameter');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const {md5} = require('rrid');
|
|
3
|
+
const oss = require('oss-sdk');
|
|
4
|
+
const logs = require('../../utils/logs');
|
|
5
|
+
const input = require('../../utils/input');
|
|
6
|
+
module.exports = async (arg) => {
|
|
7
|
+
let code;
|
|
8
|
+
if (arg[0]) {
|
|
9
|
+
code = arg[0];
|
|
10
|
+
} else {
|
|
11
|
+
const arr = await input('Enter security code:');
|
|
12
|
+
if (arr.length === 0) {
|
|
13
|
+
logs.r('Unknown error');
|
|
14
|
+
return false;
|
|
15
|
+
} else {
|
|
16
|
+
code = arr[0];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const file = oss.file(process.cwd());
|
|
20
|
+
let data = await file.get('config');
|
|
21
|
+
if (data === null) {
|
|
22
|
+
logs.r('Configuration file missing');
|
|
23
|
+
return false;
|
|
24
|
+
} else {
|
|
25
|
+
try {
|
|
26
|
+
data = JSON.parse(data);
|
|
27
|
+
} catch (err) {
|
|
28
|
+
logs.r(err);
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
if (!data.addTime || !data.key) {
|
|
32
|
+
logs.r('bad configuration file');
|
|
33
|
+
return false;
|
|
34
|
+
} else {
|
|
35
|
+
const keys = md5(data.addTime+code+data.addTime);
|
|
36
|
+
if (keys === data.key) {
|
|
37
|
+
return true;
|
|
38
|
+
} else {
|
|
39
|
+
logs.r('Wrong security code');
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
package/lib/utils/input.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fkg",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"description": "Read and set memory key!",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -16,9 +16,6 @@
|
|
|
16
16
|
],
|
|
17
17
|
"author": "weduu",
|
|
18
18
|
"license": "MIT",
|
|
19
|
-
"engines": {
|
|
20
|
-
"node": ">=v22.22.1"
|
|
21
|
-
},
|
|
22
19
|
"files": [
|
|
23
20
|
"lib/",
|
|
24
21
|
"bin/",
|
|
@@ -26,7 +23,7 @@
|
|
|
26
23
|
"README.md"
|
|
27
24
|
],
|
|
28
25
|
"dependencies": {
|
|
29
|
-
"oss-sdk": "^1.0.
|
|
30
|
-
"rrid": "^1.0.
|
|
26
|
+
"oss-sdk": "^1.0.5",
|
|
27
|
+
"rrid": "^1.0.7"
|
|
31
28
|
}
|
|
32
29
|
}
|
package/lib/order/add.js
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const {md5} = require('rrid');
|
|
3
|
-
const oss = require('oss-sdk');
|
|
4
|
-
const logs = require('../utils/logs');
|
|
5
|
-
const input = require('../utils/input');
|
|
6
|
-
module.exports = async(arg)=>{
|
|
7
|
-
let code;
|
|
8
|
-
if(arg[0]) {
|
|
9
|
-
code = arg[0];
|
|
10
|
-
}else{
|
|
11
|
-
const arr = await input('Enter security code:');
|
|
12
|
-
if(arr.length===0){
|
|
13
|
-
logs.r('Unknown error');
|
|
14
|
-
return;
|
|
15
|
-
}else{
|
|
16
|
-
code = arr[0];
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
const file = oss.file(process.cwd());
|
|
20
|
-
let data = await file.get('config');
|
|
21
|
-
if(data===null){
|
|
22
|
-
logs.r('Configuration file missing')
|
|
23
|
-
}else{
|
|
24
|
-
try{
|
|
25
|
-
data = JSON.parse(data);
|
|
26
|
-
}catch(err){
|
|
27
|
-
logs.r(err);
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if(!data.addTime||!data.key) {
|
|
31
|
-
logs.r('bad configuration file')
|
|
32
|
-
}else{
|
|
33
|
-
try{
|
|
34
|
-
const keys = md5(data.addTime+code+data.addTime);
|
|
35
|
-
if(keys===data.key){
|
|
36
|
-
// Add administrator
|
|
37
|
-
const user = await input('Account Name:','Account Password:');
|
|
38
|
-
if(!user[0]||!user[1]){
|
|
39
|
-
logs.g('Account password cannot be empty');
|
|
40
|
-
}else{
|
|
41
|
-
const dirs = oss.dir(process.cwd());
|
|
42
|
-
if(await dirs.ok('account')){
|
|
43
|
-
const info = {};
|
|
44
|
-
info.database = [];
|
|
45
|
-
info.addTime = Date.now();
|
|
46
|
-
data.key = md5(info.addTime+user[0]+user[1]+data.addTime);
|
|
47
|
-
const addRes = await file.add('account/'+md5(user[0]),JSON.stringify(info));
|
|
48
|
-
if(addRes){
|
|
49
|
-
logs.g('Added successfully');
|
|
50
|
-
logs.y('Please remember your account password');
|
|
51
|
-
}else{
|
|
52
|
-
logs.r('Failed to add');
|
|
53
|
-
logs.r('Unknown error');
|
|
54
|
-
}
|
|
55
|
-
}else{
|
|
56
|
-
logs.r('Important folder lost');
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}else{
|
|
60
|
-
logs.r('Wrong security code');
|
|
61
|
-
}
|
|
62
|
-
}catch(err){
|
|
63
|
-
logs.r(err);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
package/lib/order/user.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const logs = require('../utils/logs');
|
|
3
|
-
module.exports = (arg)=>{
|
|
4
|
-
if(arg[0]===undefined) {
|
|
5
|
-
logs.r('Please enter parameters');
|
|
6
|
-
}else if(arg[0]==='add'){
|
|
7
|
-
//Add Account
|
|
8
|
-
require('./add')(arg.slice(1))
|
|
9
|
-
}else if(arg[0]==='dele') {
|
|
10
|
-
//Dele Account
|
|
11
|
-
}else if(arg[0]==='edit') {
|
|
12
|
-
//Edit Account
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
}
|