Added --unsefe to remove lua script sandboxing and fixed an wrong lua function name

This commit is contained in:
2025-08-17 22:09:40 -03:00
parent 7d7e2635dd
commit 302d033406

View File

@@ -104,6 +104,8 @@ var PacketsDir string
var isUpgrade bool
var upgradeHelper string
var Unsafe bool
var rootCmd = &cobra.Command{Use: "packets"}
var installCmd = &cobra.Command{
@@ -399,9 +401,15 @@ func main() {
serve.AddCommand(serveStop)
rootCmd.AddCommand(installCmd)
installCmd.Flags().BoolVar(&Unsafe, "unsafe", false, "Execute lua script without sandbox")
rootCmd.AddCommand(syncCmd)
rootCmd.AddCommand(removeCmd)
removeCmd.Flags().BoolVar(&Unsafe, "unsafe", false, "Execute lua script without sandbox")
rootCmd.AddCommand(upgradeCmd)
installCmd.Flags().BoolVar(&Unsafe, "unsafe", false, "Execute lua script without sandbox")
rootCmd.AddCommand(listCmd)
rootCmd.AddCommand(searchCmd)
@@ -589,6 +597,7 @@ func Install(packagepath string, serial uint) error {
L := lua.NewState()
defer L.Close()
if !Unsafe {
osObject := L.GetGlobal("os").(*lua.LTable)
ioObject := L.GetGlobal("io").(*lua.LTable)
@@ -621,6 +630,7 @@ func Install(packagepath string, serial uint) error {
ioObject.RawSetString("stdin", lua.LNil)
ioObject.RawSetString("lines", lua.LNil)
ioObject.RawSetString("open", L.NewFunction(internal.SafeOpen))
}
if err := L.DoFile(filepath.Join(cfg.Config.DataDir, name, manifest.Hooks.Install)); err != nil {
log.Panic(err)
@@ -1247,6 +1257,7 @@ func Unninstall(realname string) error {
L := lua.NewState()
defer L.Close()
if !Unsafe {
osObject := L.GetGlobal("os").(*lua.LTable)
ioObject := L.GetGlobal("io").(*lua.LTable)
@@ -1275,10 +1286,11 @@ func Unninstall(realname string) error {
ioObject.RawSetString("popen", lua.LNil)
ioObject.RawSetString("tmpfile", lua.LNil)
ioObject.RawSetString("stdout", lua.LNil)
ioObject.RawSetString("stdeer", lua.LNil)
ioObject.RawSetString("stderr", lua.LNil)
ioObject.RawSetString("stdin", lua.LNil)
ioObject.RawSetString("lines", lua.LNil)
ioObject.RawSetString("open", L.NewFunction(internal.SafeOpen))
}
if err := L.DoFile(filepath.Join(cfg.Config.DataDir, realname, manifest.Hooks.Remove)); err != nil {
log.Panic(err)
@@ -1555,6 +1567,7 @@ func Upgrade(packagepath string, og_realname string, serial uint) error {
L := lua.NewState()
defer L.Close()
if !Unsafe {
osObject := L.GetGlobal("os").(*lua.LTable)
ioObject := L.GetGlobal("io").(*lua.LTable)
@@ -1583,10 +1596,11 @@ func Upgrade(packagepath string, og_realname string, serial uint) error {
ioObject.RawSetString("popen", lua.LNil)
ioObject.RawSetString("tmpfile", lua.LNil)
ioObject.RawSetString("stdout", lua.LNil)
ioObject.RawSetString("stdeer", lua.LNil)
ioObject.RawSetString("stderr", lua.LNil)
ioObject.RawSetString("stdin", lua.LNil)
ioObject.RawSetString("lines", lua.LNil)
ioObject.RawSetString("open", L.NewFunction(internal.SafeOpen))
}
if err := L.DoFile(filepath.Join(cfg.Config.DataDir, name, manifest.Hooks.Install)); err != nil {
log.Panic(err)