@ai-ecoverse/slicc-kernel 1.9.0 → 1.11.0
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 +4 -1
- package/dist/index.js +35 -2
- package/dist/index.js.map +3 -3
- package/dist/kernel-worker.js +103 -3
- package/dist/kernel-worker.js.map +4 -4
- package/dist/node-process-worker.js +32 -9
- package/dist/node-process-worker.js.map +2 -2
- package/dist/node.js +137 -4
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +32 -9
- package/dist/process-worker.js.map +2 -2
- package/package.json +1 -1
|
@@ -1916,28 +1916,50 @@ function mountTable() {
|
|
|
1916
1916
|
"\n"
|
|
1917
1917
|
);
|
|
1918
1918
|
}
|
|
1919
|
-
function
|
|
1920
|
-
const
|
|
1919
|
+
function accounts(env = {}) {
|
|
1920
|
+
const user = env.USER ?? "web_user";
|
|
1921
|
+
const name = NAME.test(user) && user !== "root" ? user : "user";
|
|
1922
|
+
const home = env.HOME || "/home";
|
|
1923
|
+
return {
|
|
1924
|
+
passwd: `root:x:0:0:root:/root:/bin/sh
|
|
1925
|
+
${name}:x:1000:1000:${name}:${home}:/bin/bash
|
|
1926
|
+
`,
|
|
1927
|
+
group: `root:x:0:
|
|
1928
|
+
${name}:x:1000:
|
|
1929
|
+
`
|
|
1930
|
+
};
|
|
1931
|
+
}
|
|
1932
|
+
function useMounts(Fs, env = {}) {
|
|
1933
|
+
const { writeFile, mkdirTree } = Fs;
|
|
1921
1934
|
if (typeof Fs.open !== "function" || typeof writeFile !== "function") return;
|
|
1935
|
+
const { passwd, group } = accounts(env);
|
|
1936
|
+
const backing = { "/etc/mtab": "/proc/mounts" };
|
|
1922
1937
|
try {
|
|
1923
1938
|
writeFile.call(Fs, "/proc/mounts", mountTable());
|
|
1924
1939
|
} catch {
|
|
1925
1940
|
return;
|
|
1926
1941
|
}
|
|
1942
|
+
try {
|
|
1943
|
+
mkdirTree.call(Fs, "/dev/.etc");
|
|
1944
|
+
writeFile.call(Fs, "/dev/.etc/passwd", passwd);
|
|
1945
|
+
writeFile.call(Fs, "/dev/.etc/group", group);
|
|
1946
|
+
backing["/etc/passwd"] = "/dev/.etc/passwd";
|
|
1947
|
+
backing["/etc/group"] = "/dev/.etc/group";
|
|
1948
|
+
} catch {
|
|
1949
|
+
}
|
|
1927
1950
|
const open = Fs.open.bind(Fs);
|
|
1928
1951
|
Fs.open = (path, flags, mode) => {
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
}
|
|
1952
|
+
const instead = backing[path];
|
|
1953
|
+
if (!instead || (flags & (O_ACCMODE | O_CREAT2)) !== 0) return open(path, flags, mode);
|
|
1932
1954
|
try {
|
|
1933
1955
|
return open(path, flags, mode);
|
|
1934
1956
|
} catch (e) {
|
|
1935
1957
|
if (e?.errno !== wasiErrno("ENOENT")) throw e;
|
|
1936
|
-
return open(
|
|
1958
|
+
return open(instead, flags, mode);
|
|
1937
1959
|
}
|
|
1938
1960
|
};
|
|
1939
1961
|
}
|
|
1940
|
-
var O_CLOEXEC, FD_CLOEXEC, F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_DUPFD_CLOEXEC, tracked, IMPORT_NAMES, EBADF, DIR_MODE, LINK_MODE, O_ACCMODE, O_CREAT2;
|
|
1962
|
+
var O_CLOEXEC, FD_CLOEXEC, F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_DUPFD_CLOEXEC, tracked, IMPORT_NAMES, EBADF, DIR_MODE, LINK_MODE, O_ACCMODE, O_CREAT2, NAME;
|
|
1941
1963
|
var init_process_fds = __esm({
|
|
1942
1964
|
"src/process/process-fds.ts"() {
|
|
1943
1965
|
"use strict";
|
|
@@ -1965,6 +1987,7 @@ var init_process_fds = __esm({
|
|
|
1965
1987
|
LINK_MODE = 41408;
|
|
1966
1988
|
O_ACCMODE = 3;
|
|
1967
1989
|
O_CREAT2 = 64;
|
|
1990
|
+
NAME = /^[a-z_][a-z0-9_-]*$/i;
|
|
1968
1991
|
}
|
|
1969
1992
|
});
|
|
1970
1993
|
|
|
@@ -2960,6 +2983,8 @@ async function runWasmProcess(init, port2, deps = {}) {
|
|
|
2960
2983
|
const restartable = () => signals.restartable();
|
|
2961
2984
|
const streams = new KernelStreams(running.FS, sys, { sigpipe, restartable });
|
|
2962
2985
|
trackCloseOnExec(running.FS);
|
|
2986
|
+
useMounts(running.FS, init.env);
|
|
2987
|
+
useProcfs(running.FS, sys, init.pid);
|
|
2963
2988
|
if (init.fork) restoreForkedStreams(running.FS, streams, init.fork.streams ?? []);
|
|
2964
2989
|
else {
|
|
2965
2990
|
wireKernelStdio(running.FS, streams);
|
|
@@ -2969,8 +2994,6 @@ async function runWasmProcess(init, port2, deps = {}) {
|
|
|
2969
2994
|
if (pipefs) streams.usePipes(pipefs);
|
|
2970
2995
|
streams.useControllingTerminal();
|
|
2971
2996
|
useDevFd(running.FS);
|
|
2972
|
-
useMounts(running.FS);
|
|
2973
|
-
useProcfs(running.FS, sys, init.pid);
|
|
2974
2997
|
ownByRealmUser(running.FS);
|
|
2975
2998
|
const livePath = (s) => liveNodePath(s.node);
|
|
2976
2999
|
running.sliccKernel = createProcessKernel({
|