librime-lua
librime-lua copied to clipboard
是否支持文件IO,主要是I
想用lua_filter做字符集過濾,但字符列表寫死在代碼裏非常不優雅,librime-lua腳本支持文件IO嗎?
从我的之前的实验来看,支持。
从我的之前的实验来看,支持。
問題是路徑根在哪呢?
https://github.com/kikito/inspect.lua 把 這檔 放入 lua 用這個 倒出更多
inp= require 'inspect'
str=inp(_G)
-- Opens a file in append mode
file = io.open("test.lua", "a")
-- sets th default output file as test.lua
io.output(file)
-- appends a word test to the last line of the file
io.write(str )
-- closes the open file
io.close(file)
_G 內容
] ---..librime-lua _G table: ReverseDb function: 7984DDC0
] ---..librime-lua _G table: xpcall function: 7985DB20
] ---..librime-lua _G table: rawlen function: 7985D380
] ---..librime-lua _G table: log table: 00C1BB10
] ---..librime-lua _G table: tostring function: 7985DBB0
] ---..librime-lua _G table: Candidate function: 7984D040
] ---..librime-lua _G table: string table: 00BFA428
] ---..librime-lua _G table: next function: 7985D660
] ---..librime-lua _G table: rawequal function: 7985D340
] ---..librime-lua _G table: Set function: 79858FC0
] ---..librime-lua _G table: _G table: 00BE4E80
] ---..librime-lua _G table: table table: 00BFA680
] ---..librime-lua _G table: utf8 table: 00BFA888
] ---..librime-lua _G table: setmetatable function: 7985D2C0
] ---..librime-lua _G table: rawget function: 7985D3D0
] ---..librime-lua _G table: warn function: 7985CF90
] ---..librime-lua _G table: pairs function: 7985D6B0
] ---..librime-lua _G table: collectgarbage function: 7985D450
] ---..librime-lua _G table: math table: 00BFA8B0
] ---..librime-lua _G table: require function: 00BE50D8
] ---..librime-lua _G table: tonumber function: 7985D010
] ---..librime-lua _G table: date_translator function: 00C1C390
] ---..librime-lua _G table: getmetatable function: 7985D270
] ---..librime-lua _G table: Translation function: 7984D920
] ---..librime-lua _G table: print function: 7985CEE0
] ---..librime-lua _G table: yield function: 79859120
] ---..librime-lua _G table: coroutine table: 00BFA810
] ---..librime-lua _G table: debug table: 00BFA838
] ---..librime-lua _G table: io table: 00BFA450
] ---..librime-lua _G table: select function: 7985DA00
] ---..librime-lua _G table: pcall function: 7985DAA0
] ---..librime-lua _G table: ipairs function: 7985D720
] ---..librime-lua _G table: _VERSION Lua 5.4
] ---..librime-lua _G table: load function: 7985D800
] ---..librime-lua _G table: Segment function: 7984BD80
] ---..librime-lua _G table: error function: 7985D210
] ---..librime-lua _G table: loadfile function: 7985D760
] ---..librime-lua _G table: assert function: 7985D950
] ---..librime-lua _G table: type function: 7985D610
] ---..librime-lua _G table: rawset function: 7985D410
] ---..librime-lua _G table: package table: 00BE4D18
] ---..librime-lua _G table: os table: 00BFA6A8
] ---..librime-lua _G table: dofile function: 7985D8F0
从我的之前的实验来看,支持。
問題是路徑根在哪呢?
大约是 Rime 用户目录。
load reverdb 是的 ,但 io.open 就找不到了存檔 只好存到絕對路逕 試了 ./filname.text 不行
路径应该是从输入法进程的当前目录开始算。
我找完 整個C盤都找不到
@shewer 找不到可能是因为权限不足,在打开时就已经失败了。因为输入法程序的目录可能是只读的。
@LEOYoon-Tsaw 虽然可以用 io.open 来做,但实际上文件 IO 这一块是没有考虑过的,比如相对路径的问题。
另外,不知道有没有人认为允许输入法脚本做无限制的 IO 是危险的?有没有必要限制甚至完全禁止?
IO 还是有用的。
我認爲是有風險 os.execute
可以破壞 USER data 或 偷取data
curl ssh telnet 開後門
execute io 限制在固定路逕下
execute 由 USER 將 允許執行 程式由 link 或 copy 到此
@shewer 找不到可能是因为权限不足,在打开时就已经失败了。因为输入法程序的目录可能是只读的。
@LEOYoon-Tsaw 虽然可以用
io.open来做,但实际上文件 IO 这一块是没有考虑过的,比如相对路径的问题。另外,不知道有没有人认为允许输入法脚本做无限制的 IO 是危险的?有没有必要限制甚至完全禁止?
我覺得IO應該加以限制,至少應當限制在用戶文件夾/lua/下,絕對路徑應當禁止,否則太過危險