lua-users home
lua-l archive

Re: Embedding - user inputted scripts design advice

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


It was thus said that the Great Bruce Wheaton once stated:
> What's the usual way to deal with the user changing their scripts in an
> app with embedded lua scripting? I presume I really have to reset the lua
> state in some way, so any functions that were defined (or variables) that
> they no longer want are removed correctly?
> 
> Is there an accepted way to retain values of the items that they did
> leave, to help with the case of a simple change, like to a calculation?
> 
> And then is it usual to reset and rebind all external class/object
> bindings, or is a 'soft' reset possible?
 It really depends upon the use case. You can reset the Lua state (or
rather, close it, then re-open and re-initialize a new one), or re-use the
existing Lua state.
 For syslogintr [1] I don't bother with resetting the Lua state at all if
the given script is reloaded. I do, however, do this (from [2]):
	if blocked == nil then
	 blocked = {}
	 setmetatable(blocked,{ __index = function(t,k) return 0 end })
	 os.execute("iptables --table filter -F INPUT")
	end
to keep from resetting some persistent data [3]. But in general, there are
no hard and fast rules. 
 -spc
[1]	http://www.conman.org/software/syslogintr/
	https://github.com/spc476/syslogintr
[2]	https://github.com/spc476/syslogintr/blob/master/modules/ssh-iptables.lua
[3]	This module of syslogintr tracks failed ssh attempts, and after five
	attempts, will block the offending IP address. The blocks are
	removed after a few hours to keep the ruleset in iptables from
	ever-increasing.

AltStyle によって変換されたページ (->オリジナル) /