Jump to content

torndeco

Member
  • Content Count

    312
  • Joined

  • Last visited

  • Medals

  • Medals

Posts posted by torndeco


  1. Version 64

    Been a couple of updates in the last month or so

    Just a quick highlight of some of the changes

    • ADDED: 9:SHUTDOWN will kill armaserver, needs to be done before extension is locked
    • ADDED: 9:TIME or 9:TIME:<offset> will return time. Only works before you lock extension i.e 9:LOCK if you need it afterwards use MISC Protocol
    • FIXED: Rcon Crashes
    • IMPROVED: Handling of Database disconnects.

    • CHANGED: From Intel TBB Malloc to JEMalloc statically linked. No more seperate tbb + tbbmallocs dlls
    • REMOVED: Old v1 Protocols + HTTP Backend (was broken slightly + noone was using it anyways)


  2. 9:ADD_DATABASE_PROTOCOL:<DB_NAME>:SQL_RAW_V2:SQL1

    That way it doesn't add any quotes, but then you will need to add quotes to strings when you insert them into the database.

    But SQL_RAW is not recommended !!!! as you will need to sanitize the SQL Statements yourself in SQF (is extra work for server).

    Plus if a hacker got your server to remote execute code, and if they can guess SQL1 they could remote execute any SQL Statement on your Database.

    ----------

    It is highly recommended you use SQL_CUSTOM_V2, it is a small bit more hassle to setup.

    But it allows more control and is alot more secure.


  3. Nice to hear, prob mostly due to compiler options

    Anyway have scaled back abit, i am just going todo a custom JEMalloc.

    New github repo up with source code & prebuilt dll in releases.

    Main change so far is

    I changed opt.lg_tcache_max default from 15 -> 16.

    So the largest size cached is now thread cache is 64k

    From the limited test runs + logs, arma seems to use 64k size allocations alot.

    You can still override this yourself via config file or environmental variables if you like.


  4. Changed: profileNamespace and uiNameSpace disabled for allVariables in MP

    Can someone explain about this aswell ?

    Am i missing something where this info needs to be hidden while playing MP ?

    ---------------------------------

    This is a nice function that you could call on suspected hackers to see what is saved in their namespace, and have the info dumped into a log serverside to review.

    Pretty sure this was the reason for the function in the first place.

    With this change all the hack scripts could just hide anything they want in profileNamespace or uiNameSpace.

    No anti-hack would be able to check or dump the variable names from those namespaces.

    The only reason i can think of this, is for missions that store data clientside and hackscripts that mess with the data.

    But you can still use a script to override known values + then in a loop iterator with a sleep + nil out all other variable names via bruteforce.

    Really the issue is the missions are storing the info clientside instead of serverside.

    Please don't cripple functions because of this, especially when it doesn't fix anything

    edit:

    Looks like change was due to http://feedback.arma3.com/view.php?id=24254


  5. Arma3 Extension Logger + Console Window (windows only atm)

    https://github.com/Torndeco/extLOG

    Just a simple async logger with support for multiple logfiles files and output to GUI Console.

    Windows only atm

    It also has simple conf file, were you can define colors or enable/disable GUI Console.

    https://github.com/Torndeco/extLOG/blob/master/extLOG.ini

    4501132891.png

    Syntax

    <Colour ID>:<Log Filename>:<Message>
    <Colour ID>::<Message>

    Colour ID 0 = NO OUTPUT TO GUI CONSOLE

    Colour ID 1-9 = GUI CONSOLE OUTPUT, colour is defined in extLOG.ini

    Examples

    "extLOG" callExtension "1:SERVER:Starting";

    Output message Starting to GUI Console

    Output message to logfile SERVER.log.

    "extLOG" callExtension "1::Starting";

    Output message Starting to GUI Console only.

    "extLOG" callExtension "0:SERVER:Starting";

    Output message Starting to logfile SERVER.log only.

    Download at

    https://github.com/Torndeco/extLOG/releases

    Windows Requirements

    Windows Server 2008 + Later

    Windows 7 + Later

    Install vcredist_x86.exe

    http://www.microsoft.com/en-ie/download/details.aspx?id=40784


  6. Small Update

    Looking @ testing out a new Regex Battleye Thing this weekend.

    Basically it will work similar to my old Python pyBEscanner.

    It will come in a standalone executable and arma extension (extension will have some extra features).


    For those that aren't familiar, basically it works like this

    • Scans BELogs while server is running
    • Parses the BE Logs using custom defined regex rules.

    • BELogs are split up in Year/Month/Day directories
    • BELogs are stored in original unedited form, unknown / kick / ban logs

    • Unknown Logs are entries that weren't in any of the filters i.e whitelisted / kick / ban (it helps to spot unusual / new things)
    • Kick Logs will show entries that resulted in a player getting kicked.
    • Ban Logs will show entries that resulted in a player getting banned.

    • The regex filter rules can be updated while the program or server is running.
    • You can enable/disable the rcon kicking / banning.
    • This makes it alot easier to setup regex rules, or allows you to review logs before banning a player.


    The short version it will only be as good as the regex rules you setup, also it requires logging output for BattlEye.

    There is also some extra small features for the extension version that could be nice depending on mission/mod code.

    It just meant to complement existing code to prevent hackers / script kiddies.


    Anyone that has previous donated give me a pm on forums, if you are interested in the tool.

    Everyone else will just have to wait thx


  7. Version 56

    Main changes are,

    RCon kicking for bad playernames

    Rcon whitelisting / reserved slots.

    With new SQL_CUSTOM options,

    It should now be possible to use sanitize option for all inputs now to a database.

    Not sure what sanitize does, check out the Test App + try type in numbers, strings, arrays etc + then type them in malformed.

    Only supports ascii characters. Something to bare in mind when dealing with playernames.

    Changes v56

    • ADDED: Rcon Whitelisting / Reserve Slots
    • FIXED: Multiple fixes for Rcon Player kicks
    • Minor: Code Improvement to 2: + 1: Calls

    Changes v55

    • ADDED: Rcon Player kicks for bad characters/strings (regex rules)
    • ADDED: SQL_CUSTOM + SQL_CUSTOM_V2 New String + Sanitize Options
    • FIXED: Multiple Fixes for SQL_CUSTOM + SQL_CUSTOM_V2, including Steam Checks
    • REMOVED: SQL_CUSTOM Options Vac_BeGUID
    • CHANGED: 9:VAR Option now always returns value as a string
    • IMPORTANT: Removed Redis Support

    Downloads

    https://github.com/Torndeco/extDB2/releases

    Note

    In the test directories of Release Files

    This is a standalone Commandline RCon App

    It has ability to send rcon messages read from a text file i.e useful for server restart warnings.

    Or sit and stay connected to kick players with bad playernames / whitelisting / reserved slots.

    Available for Linux + Windows.

    The Config file for Rcon App is same format as extdb-conf.ini

    Important when you restart a server you need to wait a minute before launching new armaserver.

    Or you need to restart the rcon application aswell.

    If you dont do this rcon application might not notice server has stop + been restarted i.e rcon app wont be logged in anymore.

    Important rcon application is only suitable for local use, it does not have features to recover from UDP Packet loss atm.


  8. Version 54

    Rcon code got overhauled is alot better, rcon commands now send to server straight away.

    It is also possible to retrieve missions + players info (including IP/PORT/PING, default behaviour these aren't returned).

    Changes v54

    • FIXED: SQL_CUSTOM + SQL_CUSTOM Required Version Checks
    • FIXED: SQL_CUSTOM + SQL_CUSTOM_V2 Handling of Null Values in Database

    Changes v53

    • ADDED: Support for retreiving RCon players + missions
    • ADDED: Ability for filtering player ip/port/ping from Rcon players
    • FIXED: Another small fix for loading extdb-conf.ini
    • FIXED: More Fixes for Steam Protocol
    • FIXED: Commandline arguments (removed " from arguments)
    • FIXED: -extDB_VAR fixed parsing for Windows
    • UPDATED: Rcon Code, commands will execute straight away now
    • MINOR: Some Code Improvements

    Downloads

    https://github.com/Torndeco/extDB2/releases

    Note

    In the Release files in Test directory is a Commandline Rcon Application.

    Its useful to send messages to server using a cronjob. (Linux + Windows Builds)

    i.e Server Restart Warnings + Locking Server etc...

    Its very similiar to BERcon, except it can read multiple RCon commands from a file to send to server.

    Note

    Version 54 Removed due to issue, will be new build in next 24 hours.


  9. I am currently considering just pulling Redis Support from extDB2.

    Nothing against Redis, it has some really nice features but it really would require an extension that fully supports them.

    Due to how extDB2 works, the speed of Redis versus MySQL isn't really a factor.

    If someone is making a public released mod that is planning on using it give me a shout.

    I might be convinced to leave it in extDB or release an extRedis.

    But as it currently stands i don't believe anyone is really using Redis as a backend for extDB2.


  10. Version 51

    Main changes are tweaked compiler flags, should be small improvement in performance.

    extDB2 will now parse arguments from armaserver on Windows / Linux.

    -extDB2_VAR is retreivable via "9:VAR", before the extension is locked.

    -extDB2_WORK defines custom location for extdb-conf.ini / extDB directories (where sql_custom log files are located)

    Changes v51

    • ADDED: HTTP_RAW Protocol (Basic Auth, GET, POST support)
    • ADDED: STEAM_V2 (Removed case insensitive for performance reasons)
    • ADDED: -extDB2_VAR -extDB2_WORK commandline arguments (Linux + Windows)
    • FIXED: Issue were STEAM / Redis Protocols wouldn't save result.
    • UPDATED: RemoteServer with basic blacklisting ips that failed to login over 3 times
    • MINOR: Fixed console output on debug extension builds
    • MINOR: Updated Poco / Boost / MySQL / SPDLog Libraries
    • MINOR: Tweaked Compiler Flags

    Downloads

    https://github.com/Torndeco/extDB2/releases

    ----------------------------

    Edit:

    extDB2 SQL_CUSTOM now supports loading multiple files i.e

    instead of

    extDB/sql_custom/a3wasteland.ini

    you can have

    extDB/sql_custom/a3wasteland/whatever.ini
    extDB/sql_custom/a3wasteland/extra1.ini
    extDB/sql_custom/a3wasteland/extra2.ini

    Don't have multiple default values in seperate files, since all the files are loaded at once and will override each other.


  11. Just a small status update, next update should be in a day or 2.

    HTTP Backend Support

    Some more optimizing (compiler cxx flags) + updating of MySQL / Poco / MySQL libraries.

    Command Line Arguments Support

    -extDB2_WORK=/path/to/extDB/ work directory i.e were logs / sql_custom / configfile are located.

    Will be able to define a string to pass to extDB2 i.e

    -extDB2_VAR=1

    -extDB2_VAR="Server 1"

    Then ingame before extDB2 is locked

    _var = call compile ("extDB2" callExtension = "9:VAR");

    The idea behind Command Line Arguments is you will be able to pass a info like Server ID without having to edit mission file etc...


  12. @Dirty Haz

    You have any prior knowledge of messing around with SQL Databases ?

    Best thing is to mess around with MySQL Workbench to make up a simple Database Table containing all the columns you need.

    Then mess around with SELECT / UPDATE SQL Statements to change the values in the Database.

    Once you figured that out, will be easy enough todo the extDB2 part.

    Try give me a shout in Skype


  13. Think kju is pointing out that uploading content to Steam Workshop gives Valve rights to use the content / make derivative works (assuming you had rights in the first place).

    So its prob worth checking first with authors to get permission first.

    http://store.steampowered.com/subscriber_agreement/

    You grant Valve and its affiliates the worldwide, non-exclusive, right to use, reproduce, modify, create derivative works from, distribute, transmit, transcode, translate, broadcast, and otherwise communicate, and publicly display and publicly perform, your User Generated Content, and derivative works of your User Generated Content, in connection with the operation and promotion of the Steam site.

    Also you could read http://forums.bistudio.com/showthread.php?148879-ARMA-III-amp-Steam-WORKSHOP/page11

    Thread is abit old and long but it covers the issue.

    --------

    Some alternatives to using Steam workshop are ArmAA3Sync or PlayWithSix


  14. Version 50

    Just a minor bug fix release

    SQL_RAW_V2 +SQL_CUSTOM_V2

    They are the exact same, the only difference is when returning an empty result you get

    [1,[]] instead of [1,[[]]]

    If you are confused then chances are you never encountered it, don't worry about it.

    That is the only difference, i don't plan on deprecate the original protocols anytime soon.

    So there is no rush on having to update to V2.

    Changes v50

    • ADDED: V2 SQL Protocols, empty results return [] instead of [[]]

    • FIXED: Loading STEAM Protocol
    • FIXED: Removed debug output for timing mutex locks


  15. @Yourry

    You could try catch me on Skype, i tend to check there for messages.

    For playername you can use

    SQL1_INPUTS = 1-STRING

    This way playername is wrapping quotes inside the Database when it gets stored.

    Or

    OUTPUT = 1-STRING

    That way playername is only wrapping in quotes when the data is fetched.

    Plus no quotes are stored in the database itself.

    ----------------

    SQLite apparently doesn't support IF statements.

    You have afew different ways you could try solve the problem, by using either of the following functions instead.

    SELECT + Just code SQF code to check if the result/array is empty.

    or

    CASE

    or

    http://stackoverflow.com/questions/418898/sqlite-upsert-not-insert-or-replace/4330694#4330694

    or

    COUNT

    or

    select exists(
       select 1
       from "Player Info"
       where Name = 'abc'
    );

    If you use "COUNT" or "SELECT exists" method it will return a number then you can combine that with "OUTPUT=1-BOOL".

    This will convert the result

    0 = false

    1+ = true

    ----------------

    Lastly if you need Realtime logging edit extdb-conf.ini

    [Log]
    Flush = true


  16. @Yourry

    Lose the

    Prepared Statement Cache = false

    That just an option for when you only run the SQL Statement i.e @ server startup for loading objects / vehicles etc

    Or if your testing + altering the Database Scheme while the server is running.

    Use the following

    [Default]
    Prepared Statement Cache = false

    Otherwise the statement will fail if its cached + the scheme has changed.

    Note it will work fine after it has failed, since the cached prepared statements get wiped when they encounter an error.

    -------------------

    Anyway the errors extDB report back to SQF are generic error messages.

    You need to look @ extDB2/logs to see detailed info on whats its complaining about.


  17. @Yourry

    [playerInfoInsertOnDB]
    SQL1_1 = INSERT INTO players_save ($CUSTOM_1$,$CUSTOM_2$) VALUES (?,?);
    Number of Inputs = 4
    Number of Custom Inputs = 2
    SQL1_INPUTS = 3, 4
    OUTPUT = 1-STRIP-STRING, 2-STRIP-STRING, 3, 4-STRING  

    Change to

    [playerInfoInsertOnDB]
    SQL1_1 = INSERT INTO players_save ($CUSTOM_1$,$CUSTOM_2$) VALUES (?,?);
    SQL1_INPUTS = 1, 2
    Number of Inputs = 2
    Number of Custom Inputs = 2

    Note there is no OUTPUT for INSERT SQL Command

    ---------

    Also when you are passing info to extDB2 the order is <inputs>:<custom inputs>

    _result = [format["playerInfoInsertOnDB:%1:%2:%3:%4", "PlayerUID", "Name", _playerUID, _playerName], 1, true] call extDB_fnc_async;  

    Change to

    _result = [format["playerInfoInsertOnDB:%1:%2:%3:%4", _playerUID, _playerName, "PlayerUID", "Name"], 1, true] call extDB_fnc_async;  

    ---------------

    Its not possible to reload / unload Protocols atm

    Personally i type the commands into a text editor like

    9:ADD_DATABASE:.......
    9:ADD_DATABASE_PROTOCOL:...............
    0:.............<command to test>

    Then you can just paste the entire thing into the test application to test out the command.

    ---------- Post added at 23:17 ---------- Previous post was at 22:37 ----------

    Version 49

    Just mainly a bug fix release + some new options for SQL_CUSTOM

    SQL_CUSTOM Notes

    Version number = 9

    You will need to changed "Strip Custom Input Chars" -> "Strip Custom Chars"

    This was due to typo were code was checking for "Strip Custom Input Chars", but documentation + examples were using "Strip Custom Chars".

    Bumped version number, so people will be sure they are using the correct option in there sql_custom.ini file.

    -Vac_SteamID / -VacBeGUID

    These new SQL_CUSTOM Options will use playerUID / steamID to check for Vac Bans depending on extDB-conf settings.

    Should be usefully when saving / retreiving playerinfo from database etc.

    It is the same as using STEAM Protocol, except that it doesn't return any values and saves you from using doing a seperate callExtension.

    Changes v49

    • FIXED: SQL_CUSTOM: Strip Custom Input Chars -> Strip Custom Chars
    • UPDATED: SQL_CUSTOM version = 9

    .

    Changes v48

    • ADDED: SQL_CUSTOM: Support for loading multiple sql_custom.ini files
    • ADDED: SQL_CUSTOM: Vac_SteamID + Vac_BeGUID Options
    • FIXED: Loading MISC + LOG Protocols

    Downloads

    https://github.com/Torndeco/extDB2/releases

×