Jump to content
torndeco

extDB (arma3 extension linux/windows)

Recommended Posts

Not really. I know how to adjust tables, make tables/users, etc using phpMyAdmin but that's about it. Don't suppose you have an example mission anywhere?

Dirty Haz

Share this post


Link to post
Share on other sites

Sorry don't have any example missions myself atm.

A3Wasteland extDB2 branch is over complicated and will just confuse people new to SQL imo

AltisLifeRPG is abit outdated but still very similiar, might be of use to have a look

But the best thing is try look @ https://github.com/BAROD/Koth_Kavala or maybe you might wanna give him a hand.

Share this post


Link to post
Share on other sites

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...

Share this post


Link to post
Share on other sites

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.

Edited by Torndeco

Share this post


Link to post
Share on other sites

Version 52

Just a fix for loading extDB2-conf.ini from extension location i.e @extDB2

Changes v52

  • FIXED: Loading extdb-conf.ini

Downloads

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

Known Issues

Command line arguments doesn't strip " i.e

arma3server "-extDB2=/fooo" (doesn't work)

arma3server -extDB2=/fooo (works)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Edited by Torndeco

Share this post


Link to post
Share on other sites

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.

Edited by Torndeco

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

I am using extDB2 as the SQL base for a lifemission mod/mission I am making. I have come across an issue where I need to set a certain array, for this example I will just name it s_array, so I need to set s_array the same value as the column s_array_column in my database so I did the whole 2:SQL1:SELECT s_array FROM playerdata WHERE p_UID = <p_UID>(NOTE: SQL1 = 9:ADD_DATABASE_PROTOCOL:<DB_NAME>:SQL_RAW_V2:SQL1:ADD_QUOTES) , in the s_array_column it's got a value of ["string"] but it's outputting "[string]" so SQF thinks string inside the array is a variable and breaking. I also have another column for inventory where the items are setup as the following : [["itemname",2],["anotheritem",56]] so I'm wondering when it gets to that point it's probably going to break again.

tl;dr is there a way to turn the elements in a returned array into a string and element[0] inside of an array inside of a master array a string as well?

Regards,

Idris.

P.S. sorry if this is the wrong place to post this question I cannot make new threads for some reason.

Edited by idris
spellcheck ;)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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 a lot more secure.

Yeah, I was using SQL_RAW for testing purposes just to see what the output is. And I was going to parse the data through as stored procs. I will most likely switch to SQL_CUSTOM_V2 with your suggestion. Okay so I can use the protocol without ADD_QUOTES and then add the quotes to the elements without Arma thinking they are variable names?

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
Share on other sites

New version frontpaged on the Armaholic homepage.

==================================================

You are not registered on Armaholic, or at least not that we are aware of. In the future we offer the possibility to authors to maintain their own pages.

If you wish to be able to do this as well please register on Armaholic and let me know about it.

This is not mandatory at all! Only if you wish to control your own content you are welcome to join, otherwise we will continue to follow your work like we have always done ;)

When you have any questions already feel free to PM or email me!

Share this post


Link to post
Share on other sites

I feel that the extDB2 version 66 and BattlEye do not like:

 

bug_extDB2-battleye.jpg

BattlEye blocks extention extDB:
 

10:47:44 "extDB2: Failed to Load"

 

 

Do you have the same problem or is it just mine?

 
Precision, the error is present only in solo. If I run extDB2 multi from a dedicated server, everything works fine.

Share this post


Link to post
Share on other sites

BattlEye doesn't block extensions on Servers or Headless Clients.
But BattlEye shouldn't be blocking v66, chances are you have an older extDB2 installed on your client machine.

 

extDB2 v66 and later i am signing the dlls, so i don't need to request to get an extensions whitelisted

Share this post


Link to post
Share on other sites

Unless I am mistaken, this is the version 66 I have.
Moreover when I tested extDB2 on the dedicated server:

 

extDB2: Version: 66

 

Share this post


Link to post
Share on other sites

It works fine here with no issues
If you right click on dll it will tell if its digital signed or not + the version on the dll itself

Also you could try disable BattlEye + do
"extDB2" callExtension "9:VERSION" to check the version number aswell

 

edit: also what windows version are you running?

Share this post


Link to post
Share on other sites

Hi,

I'm trying to understand this a bit.

How am I able to retrieve a custom table for example? 
Like I create a table called "Vehicles" that has data -> vID, vType, Destroyed. 
And every time mission launches it prints this query out to see if its supposed to spawn this "vehicle". 

Checked the wiki but a bit messy for me to read for some reason. 

Share this post


Link to post
Share on other sites

Here is a screen of information extDB2.dll:

 

dll_info.jpg

 

 

I confirm that no BattlEye, everything works fine:

 

 

extDB2: Version: 66
extDB2: https://github.com/Torndeco/extDB2
extDB2: Windows Version
Message: All development for extDB2 is done on a Linux Dedicated Server
Message: If you would like to Donate to extDB2 Development
Message: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2SUEFTGABTAM2
Message: Also leave a message if there is any particular feature you would like to see added.
Message: Thanks for all the people that have donated.
Message: Torndeco: 20/02/15


extDB2: Found extdb-conf.ini
extDB2: Detected 8 Cores, Setting up 6 Worker Threads


[17:04:23:331801 +02:00] [Thread 7752] extDB2: Database Type: SQLite
[17:04:23:335801 +02:00] [Thread 7752] extDB2: Database Session Pool Started
[17:04:23:338801 +02:00] [Thread 7752] extDB2: SQL_CUSTOM_V2: Loading Template Filename: C:\Program Files\SteamLibrary\steamapps\common\Arma 3\@extDB2\extDB\sql_custom_v2\arma3_roj_dev_db_custom.ini
[17:04:23:338801 +02:00] [Thread 7752] extDB2: SQL_CUSTOM_V2: Version 12 Detected, Latest Version 12 Available
[17:04:38:654677 +02:00] [Thread 7752] extDB2: Stopping ...

 

 
And with BattlEye, the problem returns:
error.jpg

 

 

Windows informations :

 

win_info.jpg

 

 
It is a version completely legal that I bought.
 
After it is not very serious since in multiplayer it works. It's just a shame that it does not work solo because there still are players who play solo.
If you need more information, do not hesitate.

Thank you anyway, you are a leader !

 

 

Share this post


Link to post
Share on other sites

Most likely your windows 7 machine doesn't have root certificate for StartCom installed, it should be in Windows 8 & later.
I don't have access to a windows 7 machine to see how to install the cert, so i am afraid thats going to up to someone else to figure out.

The reason i am signing dlls is that BattlEye Whitelisting is buggy and annoying to submit dlls to get whitelisted.
Also there is no way for me to submit dlls to get whitelisted now lol :)

Share this post


Link to post
Share on other sites
I did not understand everything :)

Win 7 will be used less and less, I still expected a bit before moving on to win 10.
As long as it works in multi is good. After those who really want to play solo, they can always run the game without BattlEye.

Share this post


Link to post
Share on other sites

Just a heads up
There will be another update after Exile Release, kinda busy atm with other projects
Will basically be updating afew libraries, main change will be speed increase for SQLite Databases.

Linux users can just use v65 for now.

Barely anything changed in v66, it was mainly just to help people diag bad custom_V2.ini files.

Share this post


Link to post
Share on other sites

Can this be used in ArmA 2? I read something in the .conf I believe about Arma 2 setting or something? Not 100% sure. I tried it and I get the following error:

_Key = ca>
  Error Missing )
Error in expression <tDB_SQL_CUSTOM_ID), _Query];
_Query = if (count _this > 0) then {_this select 0;} else {""};
_Mode = if (count _this > 1) then {_this select 1;} else {0};
_Multi_Array = if (count _this > 2) then {_this select 2;} else {false};

_Key = "extDB2" callExtension format ["%1:%2:%3", _Mode, call extDB_SQL_CUSTOM_ID, _Query];

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×