diff --git a/addons/main/functions/extract_data/fn_extract_auth_token.sqf b/addons/main/functions/extract_data/fn_extract_auth_token.sqf
index 8279a8f..ecc031d 100644
--- a/addons/main/functions/extract_data/fn_extract_auth_token.sqf
+++ b/addons/main/functions/extract_data/fn_extract_auth_token.sqf
@@ -1,14 +1,15 @@
-_atak_server_instance_username = missionNamespace getVariable "_atak_server_instance_username";
-_atak_server_instance_password = missionNamespace getVariable "_atak_server_instance_password";
+private _atak_server_instance = missionNamespace getVariable "_atak_server_instance";
+private _atak_server_instance_username = missionNamespace getVariable "_atak_server_instance_username";
+private _atak_server_instance_password = missionNamespace getVariable "_atak_server_instance_password";
-_authentication = [_atak_server_instance_username, _atak_server_instance_password];
+private _authentication = [_atak_server_instance, _atak_server_instance_username, _atak_server_instance_password];
-_atak_server_instance_token = "armatak" callExtension ["get_auth_token", _authentication];
+_atak_server_instance_token = ("armatak" callExtension ["get_auth_token", _authentication]) select 0;
-if (_atak_server_instance_token != "") then {
- missionName setVariable ["_atak_server_instance_token", _atak_server_instance_token];
+if ((_atak_server_instance_token != "") and !(["error", _atak_server_instance_token, false] call BIS_fnc_inString)) then {
+ missionNamespace setVariable ["_atak_server_instance_token", _atak_server_instance_token];
- private _warning = format ["ARMATAK
%1", "Authorized"];
+ private _warning = format ["ARMATAK
%1", "Authorized"];
[[_warning, 1.5]] call CBA_fnc_notify;
} else {
private _warning = format ["ARMATAK
%1", "Failed to get Auth Token"];
diff --git a/addons/main/functions/fn_init.sqf b/addons/main/functions/fn_init.sqf
index 1a8fe3a..d377076 100644
--- a/addons/main/functions/fn_init.sqf
+++ b/addons/main/functions/fn_init.sqf
@@ -8,40 +8,17 @@ if (_activated) exitWith {
private _warning = format ["ARMATAK
%1", "Connecting..."];
[[_warning, 1.5]] call CBA_fnc_notify;
- _atak_fts_address = _logic getVariable "armatak_module_fts_api_instance_address";
- _atak_fts_protocol = _logic getVariable "armatak_module_fts_api_instance_protocol";
- _atak_fts_port = _logic getVariable "armatak_module_fts_api_instance_port";
+ _atak_ots_address = _logic getVariable "armatak_module_ots_api_instance_address";
+ _atak_ots_protocol = _logic getVariable "armatak_module_ots_api_instance_protocol";
+ _atak_ots_port = _logic getVariable "armatak_module_ots_api_instance_port";
- _atak_fts_fulladdress = _atak_fts_protocol + ":" + "/" + "/" + _atak_fts_address + ":" + (str _atak_fts_port);
- _atak_fts_bearer_token = _logic getVariable "armatak_module_fts_api_instance_token";
+ _atak_ots_fulladdress = _atak_ots_protocol + ":" + "/" + "/" + _atak_ots_address + ":" + (str _atak_ots_port);
+ _atak_ots_api_username = _logic getVariable "armatak_module_ots_api_instance_username";
+ _atak_ots_api_password = _logic getVariable "armatak_module_ots_api_instance_password";
- missionNamespace setVariable ["_atak_server_instance", _atak_fts_fulladdress];
- missionNamespace setVariable ["_atak_server_instance_token", _atak_fts_bearer_token];
+ missionNamespace setVariable ["_atak_server_instance", _atak_ots_fulladdress];
+ missionNamespace setVariable ["_atak_server_instance_username", _atak_ots_api_username];
+ missionNamespace setVariable ["_atak_server_instance_password", _atak_ots_api_password];
- if (isMultiplayer) then {
- {
- [{
- _uid = _x getVariable "_atak_uid";
-
- if (_uid == "") then {
- [_x] call armatak_fnc_postGeoObject;
- } else {
- [_x] call armatak_fnc_putGeoObject;
- };
- }, 1, []] call CBA_fnc_addPerFrameHandler;
- } forEach playableUnits;
- } else {
- [{
- _uid = player getVariable "_atak_uid";
-
- if (_uid == "") then {
- [player] call armatak_fnc_postGeoObject;
- } else {
- [player] call armatak_fnc_putGeoObject;
- };
- }, 1, []] call CBA_fnc_addPerFrameHandler;
- };
-
- private _warning = format ["ARMATAK
%1", "Connected!"];
- [[_warning, 1.5]] call CBA_fnc_notify;
-};
\ No newline at end of file
+ _atak_server_instance_token = call armatak_fnc_extract_auth_token;
+};
diff --git a/extensions/armatak/controller.go b/extensions/armatak/controller.go
index 01ecf29..ef3e676 100644
--- a/extensions/armatak/controller.go
+++ b/extensions/armatak/controller.go
@@ -4,229 +4,51 @@ import (
"github.com/indig0fox/a3go/a3interface"
)
-func armatak_controller_ManageAPI_getHelp(
+func armatak_controller_get_uid(
ctx a3interface.ArmaExtensionContext,
data string,
) (string, error) {
-
- return armatak_service_ManageAPI_getHelp()
+ return armatak_service_get_uid()
}
-func armatak_controller_args_ManageAPI_getHelp(
+func armatak_controller_args_get_uid(
ctx a3interface.ArmaExtensionContext,
command string,
args []string,
) (string, error) {
- return armatak_service_ManageAPI_getHelp()
+ return armatak_service_get_uid()
}
-func armatak_controller_ManageGeoObject_postGeoObject(
+func armatak_controller_get_auth_token(
ctx a3interface.ArmaExtensionContext,
- data string,
+ command string,
) (string, error) {
- return "You must use the armatak_fnc_extract_info function as param", nil
+ return invalidCallExtensionMethod("the auth informations must be provided")
}
-func armatak_controller_args_ManageGeoObject_postGeoObject(
+
+func armatak_controller_args_get_auth_token(
ctx a3interface.ArmaExtensionContext,
command string,
args []string,
) (string, error) {
sanitazeArgs(args)
- return armatak_service_ManageGeoObject_postGeoObject(args)
+
+ return armatak_service_get_auth_token(args)
}
-func armatak_controller_ManageGeoObject_putGeoObject(
+func armatak_controller_post_marker(
ctx a3interface.ArmaExtensionContext,
data string,
) (string, error) {
- return "You must use the armatak_fnc_extract_info function as param", nil
+ return invalidCallExtensionMethod("post market requires args")
}
-func armatak_controller_args_ManageGeoObject_putGeoObject(
+
+func armatak_controller_args_post_marker(
ctx a3interface.ArmaExtensionContext,
command string,
args []string,
) (string, error) {
- return armatak_service_ManageGeoObject_putGeoObject(args)
-}
+ sanitazeArgs(args)
-func armatak_controller_ManageGeoObject_getGeoObject(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManageGeoObject_getGeoObject(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManageGeoObject_getGeoObjectByZone(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManageGeoObject_getGeoObjectByZone(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManageEmergency_postEmergency(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManageEmergency_postEmergency(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManageEmergency_getEmergency(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManageEmergency_getEmergency(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManageEmergency_deleteEmergency(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManageEmergency_deleteEmergency(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManageChat_postChatToAll(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManageChat_postChatToAll(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManageRoute_postRoute(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManageRoute_postRoute(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManagePresence_postPresence(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManagePresence_postPresence(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManagePresence_putPresence(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManagePresence_putPresence(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManageVideoStream_postVideoStream(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManageVideoStream_postVideoStream(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_Sensor_postDrone(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_Sensor_postDrone(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_Sensor_postSPI(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_Sensor_postSPI(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
-}
-
-func armatak_controller_ManageKML_postKML(
- ctx a3interface.ArmaExtensionContext,
- data string,
-) (string, error) {
- return "a", nil
-}
-func armatak_controller_args_ManageKML_postKML(
- ctx a3interface.ArmaExtensionContext,
- command string,
- args []string,
-) (string, error) {
- return "a", nil
+ return "", nil
}
diff --git a/extensions/armatak/main.go b/extensions/armatak/main.go
index 50be3f8..02f4262 100644
--- a/extensions/armatak/main.go
+++ b/extensions/armatak/main.go
@@ -18,122 +18,17 @@ func init() {
a3interface.SetVersion("0.0.0")
a3interface.RegisterErrorChan(a3ErrorChannel)
- a3interface.NewRegistration("ping").
- SetDefaultResponse("Pong").
+ a3interface.NewRegistration("get_uid").
+ SetDefaultResponse("getting uuid4").
SetRunInBackground(false).
- SetFunction(armatak_controller_ping_server).
+ SetFunction(armatak_controller_get_uid).
+ SetArgsFunction(armatak_controller_args_get_uid).
Register()
- a3interface.NewRegistration("ManageAPI/getHelp").
- SetDefaultResponse("[Requested Get Help Command, starting background process]").
- SetRunInBackground(true).
- SetFunction(armatak_controller_ManageAPI_getHelp).
- SetArgsFunction(armatak_controller_args_ManageAPI_getHelp).
- Register()
-
- a3interface.NewRegistration("ManageGeoObject/postGeoObject").
- SetDefaultResponse("[Requested postGeoObject Command, starting background process]").
+ a3interface.NewRegistration("get_auth_token").
+ SetDefaultResponse("getting uuid4").
SetRunInBackground(false).
- SetFunction(armatak_controller_ManageGeoObject_postGeoObject).
- SetArgsFunction(armatak_controller_args_ManageGeoObject_postGeoObject).
+ SetFunction(armatak_controller_get_auth_token).
+ SetArgsFunction(armatak_controller_args_get_auth_token).
Register()
-
- a3interface.NewRegistration("ManageGeoObject/putGeoObject").
- SetDefaultResponse("[Requested putGeoObject Command, starting background process]").
- SetRunInBackground(true).
- SetFunction(armatak_controller_ManageGeoObject_putGeoObject).
- SetArgsFunction(armatak_controller_args_ManageGeoObject_putGeoObject).
- Register()
- /*
- a3interface.NewRegistration("ManageGeoObject/getGeoObject").
- SetDefaultResponse("[Requested getGeoObject Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManageGeoObject_getGeoObject).
- SetArgsFunction(armatak_controller_args_ManageGeoObject_getGeoObject).
- Register()
-
- a3interface.NewRegistration("ManageGeoObject/getGeoObjectByZone").
- SetDefaultResponse("[Requested getGeoObjectByZone Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManageGeoObject_getGeoObjectByZone).
- SetArgsFunction(armatak_controller_args_ManageGeoObject_getGeoObjectByZone).
- Register()
-
- a3interface.NewRegistration("ManageEmergency/postEmergency").
- SetDefaultResponse("[Requested postEmergency Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManageEmergency_postEmergency).
- SetArgsFunction(armatak_controller_args_ManageEmergency_postEmergency).
- Register()
-
- a3interface.NewRegistration("ManageEmergency/getEmergency").
- SetDefaultResponse("[Requested getEmergency Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManageEmergency_getEmergency).
- SetArgsFunction(armatak_controller_args_ManageEmergency_getEmergency).
- Register()
-
- a3interface.NewRegistration("ManageEmergency/deleteEmergency").
- SetDefaultResponse("[Requested deleteEmergency Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManageEmergency_deleteEmergency).
- SetArgsFunction(armatak_controller_args_ManageEmergency_deleteEmergency).
- Register()
-
- a3interface.NewRegistration("ManageChat/postChatToAll").
- SetDefaultResponse("[Requested postChatToAll Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManageChat_postChatToAll).
- SetArgsFunction(armatak_controller_args_ManageChat_postChatToAll).
- Register()
-
- a3interface.NewRegistration("ManageRoute/postRoute").
- SetDefaultResponse("[Requested postRoute Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManageRoute_postRoute).
- SetArgsFunction(armatak_controller_args_ManageRoute_postRoute).
- Register()
-
- a3interface.NewRegistration("ManagePresence/postPresence").
- SetDefaultResponse("[Requested postPresence Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManagePresence_postPresence).
- SetArgsFunction(armatak_controller_args_ManagePresence_postPresence).
- Register()
-
- a3interface.NewRegistration("ManagePresence/putPresence").
- SetDefaultResponse("[Requested putPresence Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManagePresence_putPresence).
- SetArgsFunction(armatak_controller_args_ManagePresence_putPresence).
- Register()
-
- a3interface.NewRegistration("ManageVideoStream/postVideoStream").
- SetDefaultResponse("[Requested postVideoStream Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManageVideoStream_postVideoStream).
- SetArgsFunction(armatak_controller_args_ManageVideoStream_postVideoStream).
- Register()
-
- a3interface.NewRegistration("Sensor/postDrone").
- SetDefaultResponse("[Requested postDrone Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_Sensor_postDrone).
- SetArgsFunction(armatak_controller_args_Sensor_postDrone).
- Register()
-
- a3interface.NewRegistration("Sensor/postSPI").
- SetDefaultResponse("[Requested postSPI Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_Sensor_postSPI).
- SetArgsFunction(armatak_controller_args_Sensor_postSPI).
- Register()
-
- a3interface.NewRegistration("ManageKML/postKML").
- SetDefaultResponse("[Requested postKML Command, starting background process]").
- SetRunInBackground(false).
- SetFunction(armatak_controller_ManageKML_postKML).
- SetArgsFunction(armatak_controller_args_ManageKML_postKML).
- Register()
- */
}
diff --git a/extensions/armatak/service.go b/extensions/armatak/service.go
index 51769f3..0e8acf4 100644
--- a/extensions/armatak/service.go
+++ b/extensions/armatak/service.go
@@ -1,120 +1,45 @@
package main
import (
- "strconv"
+ "encoding/json"
+
+ "github.com/google/uuid"
)
-func armatak_service_ManageAPI_getHelp() (string, error) {
- return getRequest("manageAPI/getHelp") // ERROR - returning unsuported on 2.2 FTS (API is returning this, not my fault)
+func armatak_service_get_uid() (string, error) {
+ return uuid.New().String(), nil
}
-func armatak_service_ManageGeoObject_postGeoObject(args []string) (string, error) {
- sanitazeArgs(args)
-
- latitude, latitudeError := strconv.ParseFloat(args[1], 32)
-
- if latitudeError != nil {
- return "", latitudeError
+func armatak_service_get_auth_token(args []string) (string, error) {
+ authInfo := AuthInfo{
+ Username: args[1],
+ Password: args[2],
}
- longitude, longitudeError := strconv.ParseFloat(args[2], 32)
+ response, responseError := postRequestWithoutToken(args[0]+"/api/login?include_auth_token", authInfo)
- if longitudeError != nil {
- return "", longitudeError
+ if responseError != nil {
+ return "", responseError
}
- bearing, bearingError := strconv.ParseFloat(args[4], 32)
+ jsonString := string(response)
- if bearingError != nil {
- bearing = 0
+ var data struct {
+ Meta struct{} `json:"meta"`
+ Response struct {
+ CSRFToken string `json:"csrf_token"`
+ User struct {
+ AuthenticationToken string `json:"authentication_token"`
+ } `json:"user"`
+ } `json:"response"`
}
- payload := GeoObject{
- UID: args[0],
- Longitude: longitude,
- Latitude: latitude,
- Attitude: args[3],
- Bearing: int(bearing),
- GeoObject: args[5],
- How: "nonCoT",
- Name: args[6],
- Timeout: 600,
+ err := json.Unmarshal([]byte(jsonString), &data)
+ if err != nil {
+ return "", err
}
- return postRequest(args[7]+"/ManageGeoObject/postGeoObject", payload, args[8])
+ authToken := data.Response.User.AuthenticationToken
+
+ return authToken, nil
}
-
-func armatak_service_ManageGeoObject_putGeoObject(args []string) (string, error) {
- sanitazeArgs(args)
-
- latitude, latitudeError := strconv.ParseFloat(args[1], 32)
-
- if latitudeError != nil {
- return "", latitudeError
- }
-
- longitude, longitudeError := strconv.ParseFloat(args[2], 32)
-
- if longitudeError != nil {
- return "", longitudeError
- }
-
- bearing, bearingError := strconv.ParseFloat(args[4], 32)
-
- if bearingError != nil {
- bearing = 0
- }
-
- uid := ""
-
- if args[0] != "" {
- uid = args[0]
- }
-
- payload := GeoObject{
- UID: uid,
- Longitude: longitude,
- Latitude: latitude,
- Attitude: args[3],
- Bearing: int(bearing),
- GeoObject: args[5],
- How: "nonCoT",
- Name: args[6],
- Timeout: 600,
- }
-
- return putRequest(args[7]+"/ManageGeoObject/putGeoObject", payload, args[8])
-}
-
-func armatak_service_ManageGeoObject_getGeoObject() {}
-
-func armatak_service_ManageGeoObject_getGeoObjectByZone() {}
-
-func armatak_service_ManageEmergency_postEmergency() {}
-
-func armatak_service_ManageEmergency_getEmergency() {}
-
-func armatak_service_ManageEmergency_deleteEmergency() {}
-
-func armatak_service_ManageChat_postChatToAll(args []string) (string, error) {
- payload := Message{
- Message: args[0],
- Sender: "ARMATAK",
- }
-
- return postRequest(args[1]+"/ManageChat/postChatToAll", payload, args[2])
-}
-
-func armatak_service_ManageRoute_postRoute() {}
-
-func armatak_service_ManagePresence_postPresence() {}
-
-func armatak_service_ManagePresence_putPresence() {}
-
-func armatak_service_ManageVideoStream_postVideoStream() {}
-
-func armatak_service_Sensor_postDrone() {}
-
-func armatak_service_Sensor_postSPI() {}
-
-func armatak_service_ManageKML_postKML() {}