@hivedev/hivesdk 1.0.30 → 1.0.32
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/hive-server.cjs +93 -0
- package/hive-server.js +92 -0
- package/package.json +1 -1
package/hive-server.cjs
CHANGED
|
@@ -194,6 +194,7 @@ __export(server_exports, {
|
|
|
194
194
|
decryptFileWithPassword: () => decryptFileWithPassword,
|
|
195
195
|
encryptAndStoreFile: () => encryptAndStoreFile,
|
|
196
196
|
extractConfigurationForService: () => extractConfigurationForService,
|
|
197
|
+
findService: () => findService,
|
|
197
198
|
getAppDataDirectory: () => getAppDataDirectory,
|
|
198
199
|
getHostIp: () => getHostIp,
|
|
199
200
|
handleHiveRequests: () => handleHiveRequests,
|
|
@@ -908,6 +909,34 @@ async function isLoggedInWithPermission(request, response, bSendResponse = false
|
|
|
908
909
|
}
|
|
909
910
|
}
|
|
910
911
|
|
|
912
|
+
// Server/RequestHandlers/SaveUserFilter.js
|
|
913
|
+
async function saveUserFilter(request, response) {
|
|
914
|
+
await parseRequestBody(request);
|
|
915
|
+
const filter = request.body;
|
|
916
|
+
request.body.permissionName = "FILTER_OPERATIONS";
|
|
917
|
+
if (await isLoggedInWithPermission(request, response, false)) {
|
|
918
|
+
console.log("Saving user filter...");
|
|
919
|
+
const saveUserFilteresponse = await fetch(
|
|
920
|
+
await getHiveUrl("/SaveUserFilter"),
|
|
921
|
+
{
|
|
922
|
+
method: "POST",
|
|
923
|
+
headers: { "Content-Type": "application/json" },
|
|
924
|
+
body: JSON.stringify(filter)
|
|
925
|
+
}
|
|
926
|
+
);
|
|
927
|
+
if (saveUserFilteresponse.status != 200) {
|
|
928
|
+
response.statusCode = 500;
|
|
929
|
+
response.end();
|
|
930
|
+
return;
|
|
931
|
+
}
|
|
932
|
+
response.writeHead(200, { "Content-Type": "text/plain" });
|
|
933
|
+
response.end("Success");
|
|
934
|
+
return;
|
|
935
|
+
}
|
|
936
|
+
response.statusCode = 401;
|
|
937
|
+
response.end("Unauthorized");
|
|
938
|
+
}
|
|
939
|
+
|
|
911
940
|
// Server/HandleHiveRequests.js
|
|
912
941
|
async function handleHiveRequests(request, response, next) {
|
|
913
942
|
const { url, method } = request;
|
|
@@ -927,6 +956,9 @@ async function handleHiveRequests(request, response, next) {
|
|
|
927
956
|
} else if (url === "/IsLoggedInWithPermission" && method === "POST") {
|
|
928
957
|
await isLoggedInWithPermission(request, response, true);
|
|
929
958
|
return;
|
|
959
|
+
} else if (url === "/SaveUserFilter" && method === "POST") {
|
|
960
|
+
await saveUserFilter(request, response);
|
|
961
|
+
return;
|
|
930
962
|
} else if (url === "/hive-client.js") {
|
|
931
963
|
const filePath = import_path5.default.join(process.cwd(), "node_modules/@hivedev/hivesdk/hive-client.js");
|
|
932
964
|
const stream = import_fs6.default.createReadStream(filePath);
|
|
@@ -949,11 +981,72 @@ async function handleHiveRequests(request, response, next) {
|
|
|
949
981
|
next();
|
|
950
982
|
}
|
|
951
983
|
}
|
|
984
|
+
|
|
985
|
+
// Server/Utility/FindService.js
|
|
986
|
+
var import_dgram = __toESM(require("dgram"), 1);
|
|
987
|
+
var TARGET_PORT = 49153;
|
|
988
|
+
var RESPONSE_TIMEOUT = 3e3;
|
|
989
|
+
async function findService(serviceName) {
|
|
990
|
+
const targetIp = process.env.HIVE_PORTAL_LAN_IP;
|
|
991
|
+
if (!targetIp) return { name: serviceName, urls: { local: "http://127.0.0.1:49152", remote: "" } };
|
|
992
|
+
const request = { serviceName };
|
|
993
|
+
const message = Buffer.from(JSON.stringify(request));
|
|
994
|
+
const socket = import_dgram.default.createSocket("udp4");
|
|
995
|
+
return await new Promise((resolve, reject) => {
|
|
996
|
+
let resolved = false;
|
|
997
|
+
socket.on("message", (msg, rinfo) => {
|
|
998
|
+
if (resolved) return;
|
|
999
|
+
try {
|
|
1000
|
+
const parsed = JSON.parse(msg.toString());
|
|
1001
|
+
if (parsed.name === serviceName && parsed.urls) {
|
|
1002
|
+
resolved = true;
|
|
1003
|
+
clearTimeout(timer);
|
|
1004
|
+
socket.close();
|
|
1005
|
+
resolve(parsed);
|
|
1006
|
+
}
|
|
1007
|
+
} catch {
|
|
1008
|
+
}
|
|
1009
|
+
});
|
|
1010
|
+
socket.once("error", (err) => {
|
|
1011
|
+
if (resolved) return;
|
|
1012
|
+
resolved = true;
|
|
1013
|
+
clearTimeout(timer);
|
|
1014
|
+
socket.close();
|
|
1015
|
+
resolve(null);
|
|
1016
|
+
});
|
|
1017
|
+
socket.bind(() => {
|
|
1018
|
+
try {
|
|
1019
|
+
socket.send(message, TARGET_PORT, targetIp, (err) => {
|
|
1020
|
+
if (err && !resolved) {
|
|
1021
|
+
resolved = true;
|
|
1022
|
+
clearTimeout(timer);
|
|
1023
|
+
socket.close();
|
|
1024
|
+
resolve(null);
|
|
1025
|
+
}
|
|
1026
|
+
});
|
|
1027
|
+
} catch {
|
|
1028
|
+
if (!resolved) {
|
|
1029
|
+
resolved = true;
|
|
1030
|
+
clearTimeout(timer);
|
|
1031
|
+
socket.close();
|
|
1032
|
+
resolve(null);
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
});
|
|
1036
|
+
const timer = setTimeout(() => {
|
|
1037
|
+
if (resolved) return;
|
|
1038
|
+
resolved = true;
|
|
1039
|
+
socket.close();
|
|
1040
|
+
resolve(null);
|
|
1041
|
+
}, RESPONSE_TIMEOUT);
|
|
1042
|
+
});
|
|
1043
|
+
}
|
|
952
1044
|
// Annotate the CommonJS export names for ESM import in node:
|
|
953
1045
|
0 && (module.exports = {
|
|
954
1046
|
decryptFileWithPassword,
|
|
955
1047
|
encryptAndStoreFile,
|
|
956
1048
|
extractConfigurationForService,
|
|
1049
|
+
findService,
|
|
957
1050
|
getAppDataDirectory,
|
|
958
1051
|
getHostIp,
|
|
959
1052
|
handleHiveRequests,
|
package/hive-server.js
CHANGED
|
@@ -884,6 +884,34 @@ async function isLoggedInWithPermission(request, response, bSendResponse = false
|
|
|
884
884
|
}
|
|
885
885
|
}
|
|
886
886
|
|
|
887
|
+
// Server/RequestHandlers/SaveUserFilter.js
|
|
888
|
+
async function saveUserFilter(request, response) {
|
|
889
|
+
await parseRequestBody(request);
|
|
890
|
+
const filter = request.body;
|
|
891
|
+
request.body.permissionName = "FILTER_OPERATIONS";
|
|
892
|
+
if (await isLoggedInWithPermission(request, response, false)) {
|
|
893
|
+
console.log("Saving user filter...");
|
|
894
|
+
const saveUserFilteresponse = await fetch(
|
|
895
|
+
await getHiveUrl("/SaveUserFilter"),
|
|
896
|
+
{
|
|
897
|
+
method: "POST",
|
|
898
|
+
headers: { "Content-Type": "application/json" },
|
|
899
|
+
body: JSON.stringify(filter)
|
|
900
|
+
}
|
|
901
|
+
);
|
|
902
|
+
if (saveUserFilteresponse.status != 200) {
|
|
903
|
+
response.statusCode = 500;
|
|
904
|
+
response.end();
|
|
905
|
+
return;
|
|
906
|
+
}
|
|
907
|
+
response.writeHead(200, { "Content-Type": "text/plain" });
|
|
908
|
+
response.end("Success");
|
|
909
|
+
return;
|
|
910
|
+
}
|
|
911
|
+
response.statusCode = 401;
|
|
912
|
+
response.end("Unauthorized");
|
|
913
|
+
}
|
|
914
|
+
|
|
887
915
|
// Server/HandleHiveRequests.js
|
|
888
916
|
async function handleHiveRequests(request, response, next) {
|
|
889
917
|
const { url, method } = request;
|
|
@@ -903,6 +931,9 @@ async function handleHiveRequests(request, response, next) {
|
|
|
903
931
|
} else if (url === "/IsLoggedInWithPermission" && method === "POST") {
|
|
904
932
|
await isLoggedInWithPermission(request, response, true);
|
|
905
933
|
return;
|
|
934
|
+
} else if (url === "/SaveUserFilter" && method === "POST") {
|
|
935
|
+
await saveUserFilter(request, response);
|
|
936
|
+
return;
|
|
906
937
|
} else if (url === "/hive-client.js") {
|
|
907
938
|
const filePath = path5.join(process.cwd(), "node_modules/@hivedev/hivesdk/hive-client.js");
|
|
908
939
|
const stream = fs6.createReadStream(filePath);
|
|
@@ -925,10 +956,71 @@ async function handleHiveRequests(request, response, next) {
|
|
|
925
956
|
next();
|
|
926
957
|
}
|
|
927
958
|
}
|
|
959
|
+
|
|
960
|
+
// Server/Utility/FindService.js
|
|
961
|
+
import dgram from "dgram";
|
|
962
|
+
var TARGET_PORT = 49153;
|
|
963
|
+
var RESPONSE_TIMEOUT = 3e3;
|
|
964
|
+
async function findService(serviceName) {
|
|
965
|
+
const targetIp = process.env.HIVE_PORTAL_LAN_IP;
|
|
966
|
+
if (!targetIp) return { name: serviceName, urls: { local: "http://127.0.0.1:49152", remote: "" } };
|
|
967
|
+
const request = { serviceName };
|
|
968
|
+
const message = Buffer.from(JSON.stringify(request));
|
|
969
|
+
const socket = dgram.createSocket("udp4");
|
|
970
|
+
return await new Promise((resolve, reject) => {
|
|
971
|
+
let resolved = false;
|
|
972
|
+
socket.on("message", (msg, rinfo) => {
|
|
973
|
+
if (resolved) return;
|
|
974
|
+
try {
|
|
975
|
+
const parsed = JSON.parse(msg.toString());
|
|
976
|
+
if (parsed.name === serviceName && parsed.urls) {
|
|
977
|
+
resolved = true;
|
|
978
|
+
clearTimeout(timer);
|
|
979
|
+
socket.close();
|
|
980
|
+
resolve(parsed);
|
|
981
|
+
}
|
|
982
|
+
} catch {
|
|
983
|
+
}
|
|
984
|
+
});
|
|
985
|
+
socket.once("error", (err) => {
|
|
986
|
+
if (resolved) return;
|
|
987
|
+
resolved = true;
|
|
988
|
+
clearTimeout(timer);
|
|
989
|
+
socket.close();
|
|
990
|
+
resolve(null);
|
|
991
|
+
});
|
|
992
|
+
socket.bind(() => {
|
|
993
|
+
try {
|
|
994
|
+
socket.send(message, TARGET_PORT, targetIp, (err) => {
|
|
995
|
+
if (err && !resolved) {
|
|
996
|
+
resolved = true;
|
|
997
|
+
clearTimeout(timer);
|
|
998
|
+
socket.close();
|
|
999
|
+
resolve(null);
|
|
1000
|
+
}
|
|
1001
|
+
});
|
|
1002
|
+
} catch {
|
|
1003
|
+
if (!resolved) {
|
|
1004
|
+
resolved = true;
|
|
1005
|
+
clearTimeout(timer);
|
|
1006
|
+
socket.close();
|
|
1007
|
+
resolve(null);
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
});
|
|
1011
|
+
const timer = setTimeout(() => {
|
|
1012
|
+
if (resolved) return;
|
|
1013
|
+
resolved = true;
|
|
1014
|
+
socket.close();
|
|
1015
|
+
resolve(null);
|
|
1016
|
+
}, RESPONSE_TIMEOUT);
|
|
1017
|
+
});
|
|
1018
|
+
}
|
|
928
1019
|
export {
|
|
929
1020
|
decryptFileWithPassword,
|
|
930
1021
|
encryptAndStoreFile,
|
|
931
1022
|
extractConfigurationForService,
|
|
1023
|
+
findService,
|
|
932
1024
|
getAppDataDirectory,
|
|
933
1025
|
getHostIp,
|
|
934
1026
|
handleHiveRequests,
|