Lua Socket: Difference between revisions

From Spring
Jump to navigationJump to search
Knorke (talk | contribs)
Abma (talk | contribs)
Line 56: Line 56:
* config file should be better protected, see https://github.com/spring/spring/blob/develop/rts/System/Config/ConfigHandler.cpp#L289 + https://github.com/spring/spring/commit/948d6fb9d1c95b99b5cc7929cf3e0de0f9d6d93e maybe just locking the file is best?! see also http://springrts.com/mantis/view.php?id=2891 (private report)
* config file should be better protected, see https://github.com/spring/spring/blob/develop/rts/System/Config/ConfigHandler.cpp#L289 + https://github.com/spring/spring/commit/948d6fb9d1c95b99b5cc7929cf3e0de0f9d6d93e maybe just locking the file is best?! see also http://springrts.com/mantis/view.php?id=2891 (private report)
* access to autohost interface / game host is denied
* access to autohost interface / game host is denied
* If you get this error:
<code><pre>
Error in Initialize(): [string "LuaUI/Widgets/luasocket.lua"]:65:
attempt to index upvalue 'socket' (a nil value)</pre></code>
you maybe need to add to system.lua: socket = socket,


==documentation==
==documentation==

Revision as of 22:57, 14 May 2012

LuaSockets allow a widget to use tcp/udp sockets. With luasockets you can create a client or a server connecting to a server and transfering some data.

There are many possibilties what could be done with luasockets in spring, some ideas:

  • webserver that shows all files in VFS
  • telnet console, that allows control of spring
  • statistics webpage
  • ingame widget updater
  • ingame news pages
  • ...

config

All LuaSocket related config is readonly for LuaWidgets. They can be only changed through unitsync.

As default, socket access is restricted, as default no connections are allowed. To allow a connection / sending a packet, the destination has to the corresponding allow rule. For example, if a lua widget wants to connect to springrts.com at port 80,

TCPAllowConnect springrts.com:80

has to be set.


possible config values

LuaSocketEnabled = 1 Default is 0 means, all Socket functions are disabled
TCPAllowConnect allow TCP-connections to the listed hosts, for example: "springrts.com:80 springfiles.com:80" which allows luasockets to connect to springrts.com at port 80 and springfiles.com at port 80.
TCPAllowListen Server TCP-sockets are allowed on this port, for example: "localhost:1234 0.0.0.0:12345"
UDPAllowConnect see TCPAllowConnect
UDPAllowConnect see TCPAllowListen

example code

Notes / known issues / TODO

Error in Initialize(): [string "LuaUI/Widgets/luasocket.lua"]:65:
attempt to index upvalue 'socket' (a nil value)

you maybe need to add to system.lua: socket = socket,

documentation

links

lua sockets in spring - original thread Lua Lobby / Socket - some code pieces for connecting to spring lobby server & protocol