在安全解释器中执行client命令

时间:2018-04-01 23:05:40

标签: tcl comm

我正在尝试编写一个程序,用户可以通过客户端的comm :: comm命令在服务器上读取数据库。现在我想阻止来自客户端的某些命令,例如“文件删除”,所以我在服务器上创建了一个安全的解释器,并希望在服务器上进行一些设置,将所有命令从客户端放到安全解释器。有没有人知道是否有任何机制可以实现这一目标?任何有用的答案将不胜感激!

1 个答案:

答案 0 :(得分:0)

请参阅comm包的文档,尤其是有关eval事件的挂钩的部分。

https://core.tcl.tk/tcllib/doc/trunk/embedded/www/tcllib/files/modules/comm/comm.html#subsection9

例如:

% interp create foo
% ::comm::comm hook eval {return [lb]foo eval $buffer[rb]}
% ::comm::comm send [lb]::comm::comm self[rb] set myvar 123
123
% set myvar
can't read "myvar": no such variable
% foo eval set myvar
123