Case Posted December 5, 2009 Posted December 5, 2009 (edited) Can some one explain GG's post below and Yoda's comments in the LEAVU LUA code? export.lua can be added to the list of fingerprinted files, just like in Black Shark. This will allow server owners to prevent any modification whatsoever to that file. While in Lua Export/Config/Export/Export.lua it says: -- Eagle Radar Improvements and LEAVU for LOP Beta. -- Author of ERI and LEAVU: Johan 'Yoda' Kjölhede -- Currently requires global script exports (EnableExportScript = true in config.lua) -- Correction : Apparently it doesnt.....LoGetObjectByID is not considered global in DCS :) !!!! and in Lua Export/Config/Export/Config.lua it says: -- enable export some cheatering functions LoGetWorldObjects() etc, other functions enabled by default EnableExportScript = false -- set true to enable Export.lua script, please -- LoGetWorldObjects() always available in single player game and on the server and finally in Lua Export/Config/Export/ERI_fcns.lua it says: -- =================================== -- Workaround since LOP LoGetObjectById doesnt want to work in MP.... -- Wrap and overload the function entirely and keep our own state of world objects, -- based on what our radar has seen or not seen -- =================================== Maybe I am missing something here, but I just want to make it clear whether or not LEAVU can be controlled on multiplayer servers. Maybe some of the ED developers are reading this and can shed some light on the issue. Keep this discussion specifically on how export works. -EtherealN Edited December 5, 2009 by EtherealN Split from other thread. 1 There are only 10 types of people in the world: Those who understand binary, and those who don't.
Kuky Posted December 5, 2009 Posted December 5, 2009 Original DCS BS Config/Export/Config.lua file says: Export.lua script is always local , but if EnableExportScript = false you cannot access to cheat posible functions : LoGetWorldObjects and LoGetObjectByID this functions always will return nil The way I understand this is that local data is still exported even when "EnableExportScript = false" and my understanding is that LEAVU can still work like this which is why it was said initially LEAVU is indepentent and cannot be controled by the server. When "EnableExportScript = false" it should mean Export.lua is not even being used... is that correct? And also exactly where can server specify what files are to be checked? 1 No longer active in DCS...
Panzertard Posted December 5, 2009 Posted December 5, 2009 Original DCS BS Config/Export/Config.lua file says: The way I understand this is that local data is still exported even when "EnableExportScript = false" and my understanding is that LEAVU can still work like this which is why it was said initially LEAVU is indepentent and cannot be controled by the server. When "EnableExportScript = false" it should mean Export.lua is not even being used... is that correct? And also exactly where can server specify what files are to be checked? That seems to be similar to the situation Yoda and I tested a bit earlier during a separate test. And which seems to indicate that the Export.lua doesn't need to be modified - LEAVU will still work. So the server-checksum wont report anything wrong. I *hope* I got it wrong though - we can still test this. :) Let's get to work ;) The mind is like a parachute. It only works when it's open | The important thing is not to stop questioning
Kuky Posted December 5, 2009 Posted December 5, 2009 (edited) At least I found in Readme for 1.0.1 where server can specify what files are checked: CHANGES TO MULTIPLAYER 1. In order to minimuize the possibiliby of cheating in multiplayer, a system of file and folder checks on the client machine by the server has been implemented. If the contents of the checked files/folders on the client side do not match the contents of the server, the client will be unable to connect to the server. By default, the server is set to check the folder "\Config\Weapons". The specific files and folders to be checked can be set in the following configuration file: "\Config\network.cfg", using the "integrity_check" parameter. Right now by default these integrity checkes I think seem to be performed on all the files in specific folders... default Config/Network.cfg has: integrity_check = {"Config/Weapons"}, which sugests all files in Config/Weapons folder are being checked only... as per Readme... now if I was to add new folder for integrity check how do you add this in Network.cfg? would it look like this? integrity_check = {"Config/Weapons"}, integrity_check = {"Config/World"}, integrity_check = {"Config/View"}, Edited December 5, 2009 by Kuky No longer active in DCS...
Vault Posted December 5, 2009 Posted December 5, 2009 Kuky it doesn't matter what files you check, IF I've understood Panzertard's post LEAVU works with a default or modified export.lua file, in Layman's terms as LO stands now it's looking like it's impossible to control LEAVU server side. [sIGPIC][/sIGPIC]
RvEYoda Posted December 5, 2009 Posted December 5, 2009 (edited) Can some one explain GG's post below and Yoda's comments in the LEAVU LUA code? While in Lua Export/Config/Export/Export.lua it says: -- Eagle Radar Improvements and LEAVU for LOP Beta. -- Author of ERI and LEAVU: Johan 'Yoda' Kjölhede -- Currently requires global script exports (EnableExportScript = true in config.lua) -- Correction : Apparently it doesnt.....LoGetObjectByID is not considered global in DCS :) !!!! and in Lua Export/Config/Export/Config.lua it says: -- enable export some cheatering functions LoGetWorldObjects() etc, other functions enabled by default EnableExportScript = false -- set true to enable Export.lua script, please -- LoGetWorldObjects() always available in single player game and on the server and finally in Lua Export/Config/Export/ERI_fcns.lua it says: -- =================================== -- Workaround since LOP LoGetObjectById doesnt want to work in MP.... -- Wrap and overload the function entirely and keep our own state of world objects, -- based on what our radar has seen or not seen -- =================================== Maybe I am missing something here, but I just want to make it clear whether or not LEAVU can be controlled on multiplayer servers. Maybe some of the ED developers are reading this and can shed some light on the issue. Keep this discussion specifically on how export works. -EtherealN Case that is an old comment which is no longer valid, since both global functions LoGetWorldObjects() and LogetObjectById() are not used by leavu/ERI. I have however written my own LoGetObjectById which gathers data from an internal state which I populate using the LUA radar export. please tell me where in the code this comment is so I can remove it What is current and valid is posted in the LEAVU thread Edited December 5, 2009 by =RvE=Yoda S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'
Kuky Posted December 5, 2009 Posted December 5, 2009 Yes I am aware of that now... looks like who ever said few hours ago that this issue has been sorted was very wrong... anyway this is not lookin' good No longer active in DCS...
RvEYoda Posted December 5, 2009 Posted December 5, 2009 Kuky it doesn't matter what files you check, IF I've understood Panzertard's post LEAVU works with a default or modified export.lua file, in Layman's terms as LO stands now it's looking like it's impossible to control LEAVU server side. LEAVU does not run with default export.lua. LEAVU needs a specific export.lua Add export.lua to integrity checks on server and no lua mods can run on clients S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'
Kuky Posted December 5, 2009 Posted December 5, 2009 LEAVU does not run with default export.lua. LEAVU needs a specific export.lua Add export.lua to integrity checks on server and no lua mods can run on clients By enabling integrity check of Export.lua no export lua scripts can be run on client, since there is nothing in export.lua you are using for LEAVU this is not helpfull and does not stop LEAVU. You are using client data export which cannot be disabled... correct? No longer active in DCS...
RvEYoda Posted December 5, 2009 Posted December 5, 2009 (edited) LEAVU uses custom export.lua. if it doesnt have the modded export.lua then LEAVU does not work LEAVU export.lua looks like this function LuaExportStart() end function LuaExportBeforeNextFrame() end function LuaExportAfterNextFrame() end function LuaExportStop() end function LuaExportActivityNextEvent(t) local tNext = t return tNext end -- We need som basic math functions dofile("./Config/export/math_fcns.lua") -- Include the Eagle radar improvements dofile("./Config/export/ERI_fcns.lua") -- Include the LEAVU functions dofile("./Config/export/LEAVU_fcns.lua") All code is available for public viewing here : http://kenai.com/projects/leavu2/sources/subversion/show/LEAVU?rev=171 Edited December 5, 2009 by =RvE=Yoda S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'
Kuky Posted December 5, 2009 Posted December 5, 2009 Are you saying that for LEAVU to run you need custom scripts in Export.lua? No longer active in DCS...
Vault Posted December 5, 2009 Posted December 5, 2009 (edited) which seems to indicate that the Export.lua doesn't need to be modified - LEAVU will still work. LEAVU does not run with default export.lua. LEAVU needs a specific export.lua Add export.lua to integrity checks on server and no lua mods can run on clients OK Yoda that's a relief to know. I thought Panzertard was saying that LEAVU could possibly work without export.lua being modified. Edited December 5, 2009 by Vault [sIGPIC][/sIGPIC]
Kuky Posted December 5, 2009 Posted December 5, 2009 OK Yoda that's a releif to know. I thought Panzertard was saying that LEAVU could possibly work without export.lua being modified. thougth so too, didn't Panzertard say he's done test with Yoda and said you don't need to modify Export.lua? That seems to be similar to the situation Yoda and I tested a bit earlier during a separate test. And which seems to indicate that the Export.lua doesn't need to be modified - LEAVU will still work. No longer active in DCS...
RvEYoda Posted December 5, 2009 Posted December 5, 2009 (edited) Are you saying that for LEAVU to run you need custom scripts in Export.lua? yes. As I've always said LEAVU needs Local lua export. (LoGetMySpeed...etc) LEAVU does not need Global lua export (LoGetWorldObjects and LoGetObjectById) You can also see this in the source code of LEAVU in the links ive provided. The comments about global export that Case found in a file were old and are not valid since about 2-3 weeks back. In LOFC and FC1.12 the previous LEAVU required global exports by using the global function LoGetObjectById, this was due to an issue in FC 1.12 with exporting local radar data of F-15. This now a non-issue. ( The issue was it was only working for Ru birds ) If you write 5000 lines of code in a short time, then yuo will likely forget an old comment here and there. Thank you for telling me I have updated the source and removed these wrong comments. Edited December 5, 2009 by =RvE=Yoda S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'
Kuky Posted December 5, 2009 Posted December 5, 2009 (edited) yes. As I've always said LEAVU needs Local lua export. (LoGetMySpeed...etc) LEAVU does not need Global lua export (LoGetWorldObjects and LoGetObjectById) But by this as already said, the comment in Export.lua says that this client lua export (LoGetMySpeed...etc) is still working even if export.lua is disabled which suggests that you do not need to specify any scripts etc in export.lua file... if EnableExportLua = false that should mean you don't need Export.lua to have anything as it's not being used... so if server disables this it doesn't matter what you have in Export.lua and you are saying that you don't even need this because you only need client data export which is always on? I'm a bit confused here now... Edited December 5, 2009 by Kuky No longer active in DCS...
RvEYoda Posted December 5, 2009 Posted December 5, 2009 But by this as already said, the comment in Export.lua says that this client lua export (LoGetMySpeed...etc) is still working even if export.lua is disabled which suggests that you do not need to specify any scripts etc in export.lua file... No it works like this : Export.lua can contain lua export functions. These can be global ( access data on all players ) or local ( access only self data ) in config.lua you can turn off global functions only. Config lua does not turn off export.lua Where it says EnableExportScript = false -- set true to enable Export.lua script, please is wrong. "EnableExportScript = false" only disables Global export. Local exports in export.lua are still possible. For that you need to do integrity checks on export.lua so that client uses a blank file With integrity checks you can turn off both. S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'
Kuky Posted December 5, 2009 Posted December 5, 2009 (edited) hm... alright, so if I have my Export.lua as it is default (when you have fresh game install) and then set export.lua (or more exact the folder in which it's in) for integrity check... anyone that connects to my machine will need to have same default Export.lua file and no one would be able to get any data exported, not even his own client side (speet.etc)? Edited December 5, 2009 by Kuky No longer active in DCS...
Panzertard Posted December 5, 2009 Posted December 5, 2009 Thanks for the clarification Yoda, that was what I was looking for. ;) When we did the test previously server-export was off - but as Yoda now states it needs to be modified locally on the client. Which means "client Export.lua" != "server Export.lua" And can be detected by the checksum test. There are possible workarounds for this as well - if you copy & paste the code you need into other essential LUA files within the game - then you may ... *may* .. be able to get an addon to load without touching the original files. This is something we need to test in a different scenario - this is somewhat more related to "anti-cheat" ;) The mind is like a parachute. It only works when it's open | The important thing is not to stop questioning
RvEYoda Posted December 5, 2009 Posted December 5, 2009 hm... alright, so if I have my Export.lua as it is default (when you have fresh game install) and then set export.lua (or more exact the folder in which it's in) for integrity check... anyone that connects to my machine will need to have same default Export.lua file and no one would be able to get any data exported, not even his own client side (speet.etc)? Correct S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'
Panzertard Posted December 5, 2009 Posted December 5, 2009 OK Yoda that's a relief to know. I thought Panzertard was saying that LEAVU could possibly work without export.lua being modified. Yes, unfortunately I wasnt aware that Yoda had modified his files ;) Good to get the clarification we needed :) The mind is like a parachute. It only works when it's open | The important thing is not to stop questioning
RvEYoda Posted December 5, 2009 Posted December 5, 2009 Thanks for the clarification Yoda, that was what I was looking for. ;) When we did the test previously server-export was off - but as Yoda now states it needs to be modified locally on the client. Which means "client Export.lua" != "server Export.lua" And can be detected by the checksum test. There are possible workarounds for this as well - if you copy & paste the code you need into other essential LUA files within the game - then you may ... *may* .. be able to get an addon to load without touching the original files. This is something we need to test in a different scenario - this is somewhat more related to "anti-cheat" ;) I have tested this.It does not work for me as the "LoGet" functions and "LoSet" functions are only accessible from within files triggered by export.lua. If you put them in other lua files they did absolutely nothing for me. Only from export.lua can you retrieve this data when I tested it. S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'
Kuky Posted December 5, 2009 Posted December 5, 2009 fair enough... at least some good news on this front No longer active in DCS...
Panzertard Posted December 5, 2009 Posted December 5, 2009 I have tested this.It does not work for me as the "LoGet" functions and "LoSet" functions are only accessible from within files triggered by export.lua. If you put them in other lua files they did absolutely nothing for me. I would assume if you put the "require" and references in the "right places" one could find some file where integrite doesn't check - and load external code by reference. But as I said, I think this is more in the direction of a "anti-cheat" thing we may test - not something that is related to LEAVU for that sake. :) The mind is like a parachute. It only works when it's open | The important thing is not to stop questioning
RvEYoda Posted December 5, 2009 Posted December 5, 2009 (edited) I would assume if you put the "require" and references in the "right places" one could find some file where integrite doesn't check - and load external code by reference. But as I said, I think this is more in the direction of a "anti-cheat" thing we may test - not something that is related to LEAVU for that sake. :) But how would you access the luaExprotFunctions Likely LO does something like function LoGetMySpeed....[definition] -- make functions visible dofile(export.lua) LoGetMySpeed = nil ; -- functions no longer acceessible If you write your code in other export files it has not effect, because the functions are just nil. This is at least what i experienced when testing it Edited December 5, 2009 by =RvE=Yoda S = SPARSE(m,n) abbreviates SPARSE([],[],[],m,n,0). This generates the ultimate sparse matrix, an m-by-n all zero matrix. - Matlab help on 'sparse'
wed Posted December 5, 2009 Posted December 5, 2009 I think what LEAVU is realy great thing cause it can add new functions what is simulate datalink. Its will be good if LEAVU server can simulate real radio data transmition. Anyway thanks for hard work Yoda. If you need assistance with translation or data about russian aircrafts i'm at ur service
Recommended Posts