From aade570136ed40a82b6dc3eae1b4a9ed8915ce0c Mon Sep 17 00:00:00 2001 From: Valmo Trindade Date: Mon, 9 Dec 2024 22:42:56 -0300 Subject: [PATCH] adding OTS authentication handling on init function --- .hemtt/project.toml | 2 +- addons/main/CfgVehicles.hpp | 32 +++++++++++++------ .../extract_data/fn_extract_position.sqf | 15 +++++++++ addons/main/functions/fn_init.sqf | 30 +++++++++++++++++ 4 files changed, 68 insertions(+), 11 deletions(-) create mode 100644 addons/main/functions/extract_data/fn_extract_position.sqf diff --git a/.hemtt/project.toml b/.hemtt/project.toml index fec3ef9..c2be4c1 100644 --- a/.hemtt/project.toml +++ b/.hemtt/project.toml @@ -6,7 +6,7 @@ prefix = "armatak" [version] build = 0 major = 0 -minor = 6 +minor = 7 patch = 0 git_hash = 0 diff --git a/addons/main/CfgVehicles.hpp b/addons/main/CfgVehicles.hpp index e7b10d1..3c38480 100644 --- a/addons/main/CfgVehicles.hpp +++ b/addons/main/CfgVehicles.hpp @@ -52,8 +52,20 @@ class CfgVehicles { class Units: Units { property = "armatak_module_property_attached_units"; }; - class armatak_module_ots_api_instance_protocol: Combo { - property = "armatak_module_property_ots_api_instance_protocol"; + class armatak_module_api_instance: Combo { + property = "armatak_module_property_api_instance"; + displayname = "TAK API Instance"; + tooltip = "Used TAK Server Instance"; + typeName = "STRING"; + defaultValue = "ots"; + + class Values { + class ots { name = "Open TAK Server"; value = "ots"; default = 1; }; + class fts { name = "Free TAK Server"; value = "fts"; }; + }; + }; + class armatak_module_api_instance_protocol: Combo { + property = "armatak_module_property_api_instance_protocol"; displayname = "OTS Protocol"; tooltip = "OpenTAKServer instance protocol"; typeName = "STRING"; @@ -64,29 +76,29 @@ class CfgVehicles { class https { name = "HTTPS"; value = "https"; }; }; }; - class armatak_module_ots_api_instance_address: Edit { - property = "armatak_module_property_ots_api_instance_address"; + class armatak_module_api_instance_address: Edit { + property = "armatak_module_property_api_instance_address"; displayname = "OTS Address"; tooltip = "OpenTAKServer Instance Address"; typeName = "STRING"; defaultValue = "localhost"; }; - class armatak_module_ots_api_instance_port: Edit { - property = "armatak_module_property_ots_api_instance_port"; + class armatak_module_api_instance_port: Edit { + property = "armatak_module_property_api_instance_port"; displayname = "OTS Port"; tooltip = "OpenTAKServer Instance Port"; typeName = "NUMBER"; defaultValue = "8080"; }; - class armatak_module_ots_api_instance_username: Edit { - property = "armatak_module_property_ots_api_instance_username"; + class armatak_module_api_instance_username: Edit { + property = "armatak_module_property_api_instance_username"; displayname = "API Username"; tooltip = "API Username for authorization"; typeName = "STRING"; defaultValue = "administrator"; }; - class armatak_module_ots_api_instance_password: Edit { - property = "armatak_module_property_ots_api_instance_password"; + class armatak_module_api_instance_password: Edit { + property = "armatak_module_property_api_instance_password"; displayname = "API Password"; tooltip = "API Password for authorization"; typeName = "STRING"; diff --git a/addons/main/functions/extract_data/fn_extract_position.sqf b/addons/main/functions/extract_data/fn_extract_position.sqf new file mode 100644 index 0000000..d4eb389 --- /dev/null +++ b/addons/main/functions/extract_data/fn_extract_position.sqf @@ -0,0 +1,15 @@ +// function name: armatak_fnc_extract_position +// function author: Valmo +// function description: Receives a player's unit as param and return the information array for SIMTAK + +params["_unit"]; +private _location = (getPos _unit) call armatak_fnc_convert_location; + +private _atak_latitude = _location select 0; +private _atak_longitude = _location select 1; +private _atak_altitude = _location select 2; +private _atak_bearing = parseNumber ((getDir _unit) toFixed 0); + +_unit_info = [_atak_latitude,_atak_longitude,_atak_altitude,_atak_bearing]; + +_unit_info \ No newline at end of file diff --git a/addons/main/functions/fn_init.sqf b/addons/main/functions/fn_init.sqf index 809ea8f..e6a21f4 100644 --- a/addons/main/functions/fn_init.sqf +++ b/addons/main/functions/fn_init.sqf @@ -3,3 +3,33 @@ params [ ["_units", [], [[]]], ["_activated", true, [true]] ]; + +if (isServer && _activated) exitWith { + private _warning = format ["ARMATAK
%1", "Connecting to OTS Server..."]; + [[_warning, 1.5]] call CBA_fnc_notify; + + private _atak_instance_protocol = _logic getVariable "armatak_module_api_instance_protocol"; + private _atak_instance_address = _logic getVariable "armatak_module_api_instance_address"; + private _atak_instance_port = _logic getVariable "armatak_module_api_instance_port"; + + private _atak_fulladdress = _atak_instance_protocol + ":" + "/" + "/" + _atak_instance_address + ":" + (str _atak_instance_port); + private _atak_api_username = _logic getVariable "armatak_module_api_instance_username"; + private _atak_api_password = _logic getVariable "armatak_module_api_instance_password"; + + missionNamespace setVariable ["_atak_server_instance", _atak_fulladdress]; + missionNamespace setVariable ["_atak_server_instance_username", _atak_api_username]; + missionNamespace setVariable ["_atak_server_instance_password", _atak_api_password]; + /* + _atak_server_instance_token = call armatak_fnc_extract_auth_token; + + if (_atak_server_instance_token == "") then { + private _warning = format ["ARMATAK
%1", "Connection Failed"]; + [[_warning, 2]] call CBA_fnc_notify; + } else { + private _warning = format ["ARMATAK
%1", "Connected"]; + [[_warning, 2]] call CBA_fnc_notify; + }; + */ +}; + +true; \ No newline at end of file