我在Centos 6.5上编译Lua 5.2.3,编译/安装工作正常.
但是,我还需要开发库来编译另一个程序.我通常会这样做:
yum install lua-devel
Run Code Online (Sandbox Code Playgroud)
问题是安装Lua 5.1共享库,而不是5.2.3.
我可以从Centos回购中运行Lua 5.1,但是如果它是一个简单的事情(对于知道的人)来使最新版本工作,那么我会感激有人向我展示道路.对我来说,Linux makefile仍然有点呃,你知道......
编辑
我发现这个网站 - http://lua-users.org/lists/lua-l/2006-10/msg00091.html - 很久以前建议对makefile进行一些更改,但是当我运行它们时我得到了这个现在:
gcc -fPIC -o liblua.so -shared lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o
lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o
ltm.o lundump.o lvm.o lzio.o lauxlib.o lbaselib.o lbitlib.o lcorolib.o ldblib.o
liolib.o lmathlib.o loslib.o lstrlib.o ltablib.o loadlib.o linit.o
/usr/bin/ld: lapi.o: relocation R_X86_64_32 against `luaO_nilobject_' can not be used
when making a shared object; recompile with -fPIC
Run Code Online (Sandbox Code Playgroud)
注意到我用无用的手势添加了-fPIC; 在错误中暗示的链接中没有提出建议.
编辑2 - 解决方案 …
我希望能够预编译用C编写的GWAN应用程序,因为我不想在客户的服务器上部署我的源代码.
我已经阅读了文档,但没有提到如何执行此操作.这甚至可能吗?
我想一个想法是在库中创建我的功能并链接到我的GWAN脚本中的功能.这是最好的方式吗?
我有一个OpenSIPS服务器,可以监听多个IP.如果我将呼叫路由回到下一个点,我想确保所有信令和媒体来自最初登陆的IP(我不希望呼叫者和被呼叫者知道彼此的IP地址).
我相信我需要的东西,如RTPProxy.
我的问题是每个IP地址需要一个RTPProxy服务器,还是可以通过单个服务器路由多个IP?有更好的解决方案吗?
我将尝试自己,但我正在努力让RTPProxy服务器正常运行(我的无知,而不是RTPProxy的任何问题).我提前询问是否有人知道我是否在浪费时间设置它.
[UPDATE]
对于任何感兴趣的人来说,这就是我如何使用它,尽管我不确定我是否希望以此作为最终解决方案.需要更多测试.对于2个IP,具有拓扑隐藏和RTP代理.除了下面的答案,我希望它可以帮助某人.
加载rtpproxy进程 -
rtpproxy -l _your_public_ip_1_ -s udp:localhost:7722
rtpproxy -l _your_public_ip_2_ -s udp:localhost:7723
Run Code Online (Sandbox Code Playgroud)
然后修改kamailio.cfg文件 -
loadmodule "/usr/local/lib64/kamailio/modules/topoh.so"
modparam("topoh", "mask_key", "Your_key_here")
modparam("topoh", "mask_ip", "10.0.0.1")
Run Code Online (Sandbox Code Playgroud)
下一位为RTP代理创建两个组 - 1和2 -
#!ifdef WITH_NAT
# ----- rtpproxy params -----
modparam("rtpproxy", "rtpproxy_sock", "1 == udp:127.0.0.1:7722")
modparam("rtpproxy", "rtpproxy_sock", "2 == udp:127.0.0.1:7723")
Run Code Online (Sandbox Code Playgroud)
然后在标准(发货)配置的NAT部分中,根据入站呼叫所在的IP选择在代理中使用哪个组.rtp_proxy_manage是force_和unforce_命令的一个非常高级的版本.基本上它只是起火并为你做一切 -
route[NATMANAGE] {
#!ifdef WITH_NAT
....
if($Ri=="X.X.X.1")
set_rtp_proxy_set("1");
if($Ri=="X.X.X.2")
set_rtp_proxy_set("2");
rtpproxy_manage("",$Ri);
Run Code Online (Sandbox Code Playgroud) 我需要在Lua脚本中设置Kamailio 3.3.1中的自定义标头.理论上我可以在配置脚本中设置一个这样的 -
append_hf("X-MyHeader: myvalue\r\n");
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何从Lua脚本中调用它,这是我首选的地方.我的CFG文件中有以下内容 -
modparam("app_lua", "load", "/usr/local/etc/kamailio/lua/kamailio.lua")
modparam("app_lua", "register", "sl")
modparam("app_lua", "register", "rr")
modparam("app_lua", "register", "tm")
Run Code Online (Sandbox Code Playgroud)
而且我的Lua脚本可以正常工作.文档似乎暗示append_hf()是textops模块的一部分,但我看不到将它暴露给Lua脚本的方法.
请任何人帮助我理解这一点,或者建议另一种方法来实现我的目标?