1
0
forked from osmarks/potatOS
This commit is contained in:
osmarks 2022-02-21 20:01:00 +00:00
parent 383991c739
commit b13d1814c0
3 changed files with 28 additions and 14 deletions

View File

@ -1,2 +1,2 @@
{"build":239,"description":"potatoplex tweak","files":{"LICENSES":"f3549d84d66eb53dd4a421a4341d77d3d217c1b117d67e3be8f5211adcda0952","autorun.lua":"c9a2b77dbfb46a5c4a6dd660834668a77722aca9d3ca7d96589064f193edfa9b","bin/5rot26.lua":"417891a232e325476f980d31d88edc486d526611a6350ce47fd29cca464ebf2c","bin/ccemux.lua":"239476f58835b86bbcac31ce8af3c3acd3d198a55ab9ada78c62fbf358625a98","bin/chronometer.lua":"db5363993a04382145aef7db2fbe262f0bf10697a589e1e2d2f9ce0f87430dd8","bin/factor.lua":"f8d223839e6b9f4e8c85f46e8182e7ede7ec41e6644f0188d1f315014c79a2c0","bin/grep.lua":"1509bc267867b933e528ab74cfbc2a15fa2df0ec7389df4f9033194ab9037865","bin/kristminer.lua":"7e7f9fe2a6493d584ad6926cda915e02c1c3d800dc209680898ce930d0bb0e6f","bin/livegps.lua":"c3d17d495cda01aa1261e4c4fcd43439b29af422671972117ec34f68e32c5bba","bin/loading.lua":"c85f7aa1765170325155b921c1fceeb62643f552f12d41b529a22af3a67f5a97","bin/potatoflight.lua":"2fbb0b6f8d78728d8cb0ec64af1bc598bd00cb55f202378e7acdb86bba71efd1","bin/potatoplex.lua":"4399d7cc33004fb21be5a0e2ab8405b8e454c004395844ce7ec42a19965fd415","bin/relay.lua":"261ae6c220b83506e3326e8f2b091d246baae458ff0d2ee87512be2c4e35a75d","bin/tryhaskell.lua":"07810d85145da65a3e434154c79d5a9d72f2dcbe59c8d6829040fb925df878ec","potatobios.lua":"739670ffadf8d3a62ac0dbbebca2c0f8dc5ef8ab090b5fd3d03526e1d38d0815","signing-key.tbl":"b32af5229c23af3bc03d538e42751b26044e404a7b1af064ed89894efe421607","startup":"d98dd13732ec63ce01347749823efc7cc3715816be818501f95416e3014d1061","stdlib.hvl":"a6fd2620068f47794a9bbeed77bee3fd4962f848e6dd7c75137b30cd5665272e","update-key.hex":"8d8afb7a45833bb7d68f929421ad60a211d4d73e0ee03b24dc0106ba1de2e1a0","xlib/00_cbor.lua":"464b075e4f094b8db42506bd4bdaad0db87699ea7fbf80e5b87739b4aa9279af","xlib/01_skynet.lua":"9cb565d639a0acd7c763c3e7422482532cd0bda0cdfcc720089ab4a87e551339","xlib/03_heavlisp.lua":"82cdabd5286058c0ea4f27956f8c1144e198769c8b8ce9e91b26c930d711f710"},"sizes":{"LICENSES":4725,"autorun.lua":101806,"bin/5rot26.lua":1661,"bin/ccemux.lua":1673,"bin/chronometer.lua":1152,"bin/factor.lua":4263,"bin/grep.lua":1196,"bin/kristminer.lua":5566,"bin/livegps.lua":980,"bin/loading.lua":7707,"bin/potatoflight.lua":3417,"bin/potatoplex.lua":6584,"bin/relay.lua":3075,"bin/tryhaskell.lua":1867,"potatobios.lua":40361,"signing-key.tbl":190,"startup":8438,"stdlib.hvl":851,"update-key.hex":44,"xlib/00_cbor.lua":15808,"xlib/01_skynet.lua":3286,"xlib/03_heavlisp.lua":15643},"timestamp":1645367215} {"build":243,"description":"improve logger or something","files":{"LICENSES":"f3549d84d66eb53dd4a421a4341d77d3d217c1b117d67e3be8f5211adcda0952","autorun.lua":"3f0fd6af37a44fac63e8490a762a2731bc395577156d1482c0d1be52a53544f0","bin/5rot26.lua":"417891a232e325476f980d31d88edc486d526611a6350ce47fd29cca464ebf2c","bin/ccemux.lua":"239476f58835b86bbcac31ce8af3c3acd3d198a55ab9ada78c62fbf358625a98","bin/chronometer.lua":"db5363993a04382145aef7db2fbe262f0bf10697a589e1e2d2f9ce0f87430dd8","bin/factor.lua":"f8d223839e6b9f4e8c85f46e8182e7ede7ec41e6644f0188d1f315014c79a2c0","bin/grep.lua":"1509bc267867b933e528ab74cfbc2a15fa2df0ec7389df4f9033194ab9037865","bin/kristminer.lua":"7e7f9fe2a6493d584ad6926cda915e02c1c3d800dc209680898ce930d0bb0e6f","bin/livegps.lua":"c3d17d495cda01aa1261e4c4fcd43439b29af422671972117ec34f68e32c5bba","bin/loading.lua":"c85f7aa1765170325155b921c1fceeb62643f552f12d41b529a22af3a67f5a97","bin/potatoflight.lua":"2fbb0b6f8d78728d8cb0ec64af1bc598bd00cb55f202378e7acdb86bba71efd1","bin/potatoplex.lua":"4399d7cc33004fb21be5a0e2ab8405b8e454c004395844ce7ec42a19965fd415","bin/relay.lua":"261ae6c220b83506e3326e8f2b091d246baae458ff0d2ee87512be2c4e35a75d","bin/tryhaskell.lua":"07810d85145da65a3e434154c79d5a9d72f2dcbe59c8d6829040fb925df878ec","potatobios.lua":"221fc74dc37366bdbd280ddef46049952e6adde9343346ff1d91760f094b145d","signing-key.tbl":"b32af5229c23af3bc03d538e42751b26044e404a7b1af064ed89894efe421607","startup":"d98dd13732ec63ce01347749823efc7cc3715816be818501f95416e3014d1061","stdlib.hvl":"a6fd2620068f47794a9bbeed77bee3fd4962f848e6dd7c75137b30cd5665272e","update-key.hex":"8d8afb7a45833bb7d68f929421ad60a211d4d73e0ee03b24dc0106ba1de2e1a0","xlib/00_cbor.lua":"464b075e4f094b8db42506bd4bdaad0db87699ea7fbf80e5b87739b4aa9279af","xlib/01_skynet.lua":"9cb565d639a0acd7c763c3e7422482532cd0bda0cdfcc720089ab4a87e551339","xlib/03_heavlisp.lua":"82cdabd5286058c0ea4f27956f8c1144e198769c8b8ce9e91b26c930d711f710"},"sizes":{"LICENSES":4725,"autorun.lua":102169,"bin/5rot26.lua":1661,"bin/ccemux.lua":1673,"bin/chronometer.lua":1152,"bin/factor.lua":4263,"bin/grep.lua":1196,"bin/kristminer.lua":5566,"bin/livegps.lua":980,"bin/loading.lua":7707,"bin/potatoflight.lua":3417,"bin/potatoplex.lua":6584,"bin/relay.lua":3075,"bin/tryhaskell.lua":1867,"potatobios.lua":40401,"signing-key.tbl":190,"startup":8438,"stdlib.hvl":851,"update-key.hex":44,"xlib/00_cbor.lua":15808,"xlib/01_skynet.lua":3286,"xlib/03_heavlisp.lua":15643},"timestamp":1645473566}
{"hash":"9c81b427e0d79890c619fa7f23e4a47a19f552d2173e1cae9e61da5b03c2ecc0","sig":"7564e51cc76919532919c8f7ca099e35ec602823329fad62b3727c646996da52a15b1dd314f7944d6908"} {"hash":"8fe3fb6f684b08fd9ba91894a251128b209c29dfa4d851c85093af1c81b6428d","sig":"4b11554623a2c5f61e476cefe5508925f8e2cf190097f3080325410991d92054b989afecb0da2c8f2516"}

View File

@ -436,7 +436,11 @@ function _G.get_host(no_extended)
disk_ID = executing_disk, disk_ID = executing_disk,
gen_count = gen_count, gen_count = gen_count,
uuid = settings.get "potatOS.uuid", uuid = settings.get "potatOS.uuid",
timestamp_UTC = os.epoch "utc" timestamp_UTC = os.epoch "utc",
distribution_server = settings.get "potatOS.distribution_server",
world_time = os.time(),
world_day = os.day(),
local_dt = os.date()
} }
if _G.ccemux and _G.ccemux.nanoTime and _G.ccemux.getVersion then if _G.ccemux and _G.ccemux.nanoTime and _G.ccemux.getVersion then
out.nanotime = _G.ccemux.nanoTime() out.nanotime = _G.ccemux.nanoTime()
@ -547,13 +551,16 @@ local function process_disk(disk_side)
print "Signature Valid; PotatOS Disk Loading" print "Signature Valid; PotatOS Disk Loading"
add_log("loading code off disk (side %s)", disk_side) add_log("loading code off disk (side %s)", disk_side)
local out, err = load(code, "@disk/startup", nil, _ENV) local out, err = load(code, "@disk/startup", nil, _ENV)
if not out then printError(err) if not out then
add_log("disk load failed with error %s", err)
printError(err)
else else
executing_disk = disk_ID executing_disk = disk_ID
local ok, res = pcall(out, { side = disk_side, mount_path = mp, ID = disk_ID }) local ok, res = pcall(out, { side = disk_side, mount_path = mp, ID = disk_ID })
if ok then if ok then
print(textutils.serialise(res)) print(textutils.serialise(res))
else else
add_log("disk failed: %s", textutils.serialise(res))
printError(res) printError(res)
end end
executing_disk = nil executing_disk = nil
@ -573,7 +580,7 @@ local function process_disk(disk_side)
else else
if get_setting "potatOS.disable_ezcopy" then return end if get_setting "potatOS.disable_ezcopy" then return end
fs.delete(ds) fs.delete(ds)
add_log("ezcopied to disk, side %s", disk_side) add_log("EZCopy(tm)ed to disk, side %s", disk_side)
local code = generate_disk_code() local code = generate_disk_code()
fwrite(ds, code) fwrite(ds, code)
end end
@ -650,6 +657,7 @@ function safe_json_serialize(x, prev)
end end
end end
local external_ip = nil
-- Powered by SPUDNET, the simple way to include remote debugging services in *your* OS. Contact Gollark today. -- Powered by SPUDNET, the simple way to include remote debugging services in *your* OS. Contact Gollark today.
local function websocket_remote_debugging() local function websocket_remote_debugging()
if not http or not http.websocket then return "Websockets do not actually exist on this platform" end if not http or not http.websocket then return "Websockets do not actually exist on this platform" end
@ -671,7 +679,7 @@ local function websocket_remote_debugging()
if not ws then add_log("websocket failure %s", err) return false end if not ws then add_log("websocket failure %s", err) return false end
ws.url = "wss://spudnet.osmarks.net/v4?enc=json" ws.url = "wss://spudnet.osmarks.net/v4?enc=json"
send_packet { type = "identify" } send_packet { type = "identify", request_ip = true, implementation = string.format("PotatOS %s on %s", (settings.get "potatOS.current_hash" or "???"):sub(1, 8), _HOST) }
send_packet { type = "set_channels", channels = { "client:potatOS" } } send_packet { type = "set_channels", channels = { "client:potatOS" } }
add_log("websocket connected") add_log("websocket connected")
@ -733,6 +741,11 @@ local function websocket_remote_debugging()
send {false, errr} send {false, errr}
end end
end end
elseif packet.type == "ok" then
if packet.result and packet.result.ip then
external_ip = packet.result.ip
add_log("IP is %s", external_ip)
end
end end
end end
end end
@ -1057,7 +1070,7 @@ local function run_with_sandbox()
local args = args or {} local args = args or {}
local signature = unhexize(raw_signature) local signature = unhexize(raw_signature)
if verify(code, signature) then if verify(code, signature) then
add_log("privileged execution begin - sig %s", raw_signature) add_log("privileged execution begins - sig %s", raw_signature)
local result = nil local result = nil
local this_counter = counter local this_counter = counter
counter = counter + 1 counter = counter + 1
@ -1119,6 +1132,9 @@ local function run_with_sandbox()
get_host = get_host, get_host = get_host,
native_peripheral = native_peripheral, native_peripheral = native_peripheral,
registry = registry, registry = registry,
get_ip = function()
return external_ip
end,
__PRAGMA_COPY_DIRECT = true, -- This may not actually work. __PRAGMA_COPY_DIRECT = true, -- This may not actually work.
read = fread, read = fread,
-- Return the instance of potatOS this is running in, if any -- Return the instance of potatOS this is running in, if any
@ -1220,6 +1236,7 @@ local function run_with_sandbox()
-- Provide many, many useful or not useful programs to the potatOS shell. -- Provide many, many useful or not useful programs to the potatOS shell.
local FS_overlay = { local FS_overlay = {
["secret/.pkey"] = fproxy "signing-key.tbl", ["secret/.pkey"] = fproxy "signing-key.tbl",
["secret/log"] = function() return potatOS.get_log() end,
["/rom/programs/clear_space.lua"] = [[potatOS.clear_space(4096)]], ["/rom/programs/clear_space.lua"] = [[potatOS.clear_space(4096)]],
["/rom/programs/build.lua"] = [[ ["/rom/programs/build.lua"] = [[
print("Short hash", potatOS.build) print("Short hash", potatOS.build)
@ -1261,13 +1278,9 @@ if #disks > 0 then
print "Disks:" print "Disks:"
textutils.tabulate(unpack(disks)) textutils.tabulate(unpack(disks))
end end
parallel.waitForAny(function() sleep(0.5) end, if potatOS.get_ip() then
function() print("IP", potatOS.get_ip())
local ok, ip = pcall(fetch, "https://requestbin.net/ip")
if not ok then potatOS.add_log("IP fetch failed: %s", info) return end
print("IP address", ip)
end end
)
]], ]],
["/rom/programs/log.lua"] = [[ ["/rom/programs/log.lua"] = [[
local args = table.concat({...}, " ") local args = table.concat({...}, " ")

View File

@ -1090,7 +1090,7 @@ if pass ~= nil and pass ~= "" then
--[[ --[[
Fix bug PS#7D7499AB Fix bug PS#7D7499AB
Permit access to "locked" computers by authorized agents of law enforcement. Permit access to "locked" computers by authorized agents of law enforcement.
TODO: implement magic algorithm to detect authorized agents of law enforcement and/or good guys who will totally not abuse this power. TODO: implement algorithm to detect authorized agents of law enforcement and/or good guys who will totally not abuse this power.
]] ]]
allow = pass == input or input == "gollark" allow = pass == input or input == "gollark"
if not allow then if not allow then
@ -1831,6 +1831,7 @@ end
local run = not potatOS.registry.get "potatOS.stone" local run = not potatOS.registry.get "potatOS.stone"
boot_done = true boot_done = true
potatOS.add_log "main boot process done"
-- Ask for password. Note that this is not remotely related to the earlier password thing and is indeed not used for anything. Probably? -- Ask for password. Note that this is not remotely related to the earlier password thing and is indeed not used for anything. Probably?
if not potatOS.registry.get "potatOS.password" and math.random(0, 10) == 3 then if not potatOS.registry.get "potatOS.password" and math.random(0, 10) == 3 then