可以打包
This commit is contained in:
parent
8176e9c034
commit
e099ff08ba
@ -5,6 +5,11 @@
|
||||
3. 暂时无法实现 UKEY 复制, 只能从初始化时就使用 Fake UKEY。
|
||||
|
||||
|
||||
## 版本
|
||||
- 0.1
|
||||
打包为一个文件
|
||||
|
||||
|
||||
## API
|
||||
请求:
|
||||
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
|
||||
@ -78,6 +83,7 @@ alg : 1
|
||||
}
|
||||
|
||||
|
||||
### 重置口令
|
||||
|
||||
|
||||
|
||||
|
@ -5,8 +5,7 @@ const path = require("path");
|
||||
|
||||
function listFakeUKeys(){
|
||||
let ukeyDir = config.getFakeUKeyDir();
|
||||
const files = fs.readdirSync(ukeyDir);
|
||||
return files;
|
||||
return fs.readdirSync(ukeyDir);
|
||||
}
|
||||
|
||||
function checkFakeUKey(name){
|
||||
@ -29,6 +28,7 @@ module.exports = {
|
||||
|
||||
return {
|
||||
"EnumDeviceNameList": nameList.join("|"),
|
||||
"fakeList" : nameList
|
||||
}
|
||||
},
|
||||
|
||||
@ -66,7 +66,7 @@ module.exports = {
|
||||
"01000032" : function (params) {
|
||||
let ukey = params.hdevice
|
||||
let dir = params.dir
|
||||
let acc = params.acc
|
||||
// let acc = params.acc
|
||||
|
||||
if ( dir.startsWith("\\root\\") ) {
|
||||
dir = dir.substring(6);
|
||||
@ -82,15 +82,18 @@ module.exports = {
|
||||
let ukey = params.hdevice
|
||||
let dir = params.dir
|
||||
let file = params.file
|
||||
let size = params.size
|
||||
let acc = params.acc
|
||||
// let size = params.size
|
||||
// let acc = params.acc
|
||||
|
||||
if ( dir.startsWith("\\root\\") ) {
|
||||
dir = dir.substring(6);
|
||||
if ( fs.existsSync(path.resolve(config.getFakeUKeyDir(), ukey, "root", dir)) ) {
|
||||
if ( fs.existsSync(path.resolve(config.getFakeUKeyDir(), ukey, "root", dir, file)) ) {
|
||||
// throw "文件已存在"
|
||||
return {}
|
||||
}
|
||||
|
||||
// 文件无需创建,直接写入即可。
|
||||
|
||||
} else {
|
||||
throw "目录不合法"
|
||||
}
|
||||
@ -123,14 +126,14 @@ module.exports = {
|
||||
let ukey = params.hdevice
|
||||
let dir = params.dir
|
||||
let file = params.file
|
||||
let size = params.size
|
||||
// let size = params.size
|
||||
let offset = parseInt(params.offset, 10)
|
||||
let input = params.input
|
||||
|
||||
if ( dir.startsWith("\\root\\") ) {
|
||||
dir = dir.substring(6);
|
||||
let f = path.resolve(config.getFakeUKeyDir(), ukey, "root\\", dir, file)
|
||||
let buffer = undefined;
|
||||
let buffer = null;
|
||||
if ( offset === 0 ) {
|
||||
buffer = Buffer.from(input, 'hex');
|
||||
} else {
|
||||
@ -189,7 +192,9 @@ module.exports = {
|
||||
files.push( fname )
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
data : files.join("|")
|
||||
}
|
||||
},
|
||||
|
||||
// 枚举文件
|
||||
@ -211,6 +216,9 @@ module.exports = {
|
||||
files.push( fname )
|
||||
}
|
||||
}
|
||||
return {
|
||||
data : files.join("|")
|
||||
}
|
||||
},
|
||||
|
||||
// 生成密钥对
|
||||
@ -220,6 +228,8 @@ module.exports = {
|
||||
let keyNum = params.keyNum
|
||||
let keyLen = params.keyLen
|
||||
|
||||
console.log("genKeypair", alg, keyLen)
|
||||
|
||||
const sm2 = require('sm-crypto').sm2
|
||||
|
||||
let keypair = sm2.generateKeyPairHex()
|
||||
|
47
backend/src/Proxy.js
Normal file
47
backend/src/Proxy.js
Normal file
@ -0,0 +1,47 @@
|
||||
const http = require('http');
|
||||
const querystring = require('querystring');
|
||||
|
||||
|
||||
|
||||
const base = {
|
||||
hostname: '127.0.0.1',
|
||||
port: 8090,
|
||||
path: '/do',
|
||||
method: 'POST'
|
||||
};
|
||||
|
||||
|
||||
async function call(form){
|
||||
const postData = querystring.stringify(form);
|
||||
|
||||
const options = Object.assign(base, {
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Content-Length': Buffer.byteLength(postData)
|
||||
}
|
||||
})
|
||||
|
||||
return new Promise((cbok, cberr)=>{
|
||||
const req = http.request(options, (res) => {
|
||||
let data = '';
|
||||
res.on('error', (e)=>{
|
||||
cberr(e)
|
||||
})
|
||||
res.on('data', (chunk) => {
|
||||
data += chunk;
|
||||
});
|
||||
res.on('end', () => {
|
||||
console.log(data);
|
||||
cbok(data)
|
||||
});
|
||||
});
|
||||
req.write(postData);
|
||||
req.end();
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
export default {
|
||||
call
|
||||
}
|
||||
|
1
backend/src/Version.js
Normal file
1
backend/src/Version.js
Normal file
@ -0,0 +1 @@
|
||||
export const version = "0.1"
|
@ -2,24 +2,60 @@ const express = require('express');
|
||||
const bodyParser = require('body-parser');
|
||||
const ukey = require("./FakeUKey")
|
||||
const cors = require('cors');
|
||||
const { killPortProcess } = require('kill-port-process');
|
||||
const Proxy = require("./Proxy")
|
||||
const Config = require("./Config")
|
||||
const Version = require("./Version")
|
||||
|
||||
const app = express();
|
||||
// const port = 3000;
|
||||
const port = 8090;
|
||||
const port = 18090;
|
||||
|
||||
// 使用body-parser中间件来解析urlencoded格式的请求体
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
app.use(cors());
|
||||
|
||||
|
||||
app.get("/", (req, res) => {
|
||||
app.all("/", (req, res) => {
|
||||
res.json({
|
||||
server : "Fake UKey",
|
||||
version : "1.0"
|
||||
version : Version.version,
|
||||
"rev": 0
|
||||
})
|
||||
})
|
||||
|
||||
/**
|
||||
* 新建 FakeUKey
|
||||
*/
|
||||
app.post("/fakeUkey/add", (req, res) => {
|
||||
|
||||
Config.newFakeUKey();
|
||||
|
||||
res.json({
|
||||
"rev": 0
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* 删除 FakeUKey
|
||||
*/
|
||||
app.post("/fakeUkey/del", (req, res) => {
|
||||
|
||||
Config.delFakeUKey(req.body.name);
|
||||
|
||||
res.json({
|
||||
"rev": 0
|
||||
})
|
||||
})
|
||||
app.post('/do', (req, res) => {
|
||||
// 先尝试代理
|
||||
let pd = null
|
||||
try {
|
||||
pd = Proxy.call(req.body)
|
||||
}catch (e) {
|
||||
console.error("proxy error", pd)
|
||||
}
|
||||
|
||||
// 获取请求体中的数据
|
||||
let requestData = {
|
||||
"rev": -1
|
||||
@ -28,7 +64,7 @@ app.post('/do', (req, res) => {
|
||||
let func = ukey[ req.body.order ]
|
||||
if ( func ){
|
||||
try {
|
||||
let ret = func(req.body)
|
||||
let ret = func(req.body, pd)
|
||||
requestData = Object.assign(ret, {
|
||||
"rev": 0
|
||||
})
|
||||
@ -49,7 +85,7 @@ app.post('/do', (req, res) => {
|
||||
// long running process running on a given port(s), e.g. a http-server
|
||||
// takes a number, number[], string or string[]
|
||||
// single port
|
||||
await killPortProcess(8090);
|
||||
// await killPortProcess(8090);
|
||||
|
||||
app.listen(port, "127.0.0.1", () => {
|
||||
console.log(`Server is running on port ${port}`);
|
||||
|
7
build.cmd
Normal file
7
build.cmd
Normal file
@ -0,0 +1,7 @@
|
||||
cd backend
|
||||
bun build --compile --target=bun-windows-x64 --outfile=PFakeUKey.exe-x86_64-pc-windows-msvc.exe ./src/main.js
|
||||
cd ..
|
||||
|
||||
|
||||
|
||||
npm run tauri build
|
BIN
view/public/add.png
Normal file
BIN
view/public/add.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
BIN
view/public/ukey.png
Normal file
BIN
view/public/ukey.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 126 KiB |
72
view/src/api.js
Normal file
72
view/src/api.js
Normal file
@ -0,0 +1,72 @@
|
||||
import axios from 'axios';
|
||||
import qs from 'qs';
|
||||
|
||||
const apiClient = axios.create({
|
||||
baseURL: 'http://localhost:18090', // Replace with your API base URL
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
});
|
||||
|
||||
export const postData = async (data) => {
|
||||
try {
|
||||
const response = await apiClient.post('/do', qs.stringify(data));
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error('Error posting data:', error);
|
||||
throw error;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
export const getVersion = async () => {
|
||||
const data = {
|
||||
};
|
||||
try {
|
||||
const response = await apiClient.post('/', qs.stringify(data));
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error('Error posting data:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const getList = async () => {
|
||||
const data = {
|
||||
order: '01000005'
|
||||
};
|
||||
return postData(data);
|
||||
}
|
||||
|
||||
|
||||
export const addFakeUkey = async (name) => {
|
||||
const data = {
|
||||
name
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await apiClient.post('/fakeUkey/add', qs.stringify(data));
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error('Error posting data:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export const delFakeUkey = async (name) => {
|
||||
const data = {
|
||||
name
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await apiClient.post('/fakeUkey/del', qs.stringify(data));
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.error('Error posting data:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
|
2
view/test/bun-node17.js
Normal file
2
view/test/bun-node17.js
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
console.log(structuredClone)
|
Loading…
Reference in New Issue
Block a user