Coder Social home page Coder Social logo

kdudkov / goatak Goto Github PK

View Code? Open in Web Editor NEW
106.0 7.0 31.0 11.71 MB

go ATAK/CivTAK fast and simple server and client

Home Page: https://github.com/kdudkov/goatak/wiki

License: GNU Affero General Public License v3.0

Makefile 0.37% Go 76.92% JavaScript 8.82% CSS 0.06% Shell 1.38% HTML 12.32% Dockerfile 0.12%
atak civtak cursor-on-target webtak cot tak tak-server

goatak's Introduction

GoATAK - free ATAK/CivTAK server & client

This is fast & simple implementation of TAK server/CoT router and ATAK client with web interface.

binary builds can be downloaded from releases page

Free public server

We offer a public TAK server for the community free of charge. Credentials to join test group:

  • address: takserver.ru
  • set Enroll for Client Certificate
  • user test
  • password 111111

iTAK connect qr-code:

QR

GoATAK server features

  • v1 (XML) and v2 (protobuf) CoT protocol support
  • certificate enrollment (v1 and v2) support
  • mission packages management
  • datasync / missions basic support
  • user management with cli tool
  • video feeds management
  • visibility scopes for users (devices can communicate and see each other within one scope only)
  • default preferences and maps provisioning to connected devices
  • ability to log all cot's and cli utility to view cot's log and convert it to json or gpx

you can run it with docker, using docker run -p 8088:8088 -p 8080:8080 -p 8999:8999 kdudkov/goatak_server:latest

Client features

  • v1 (XML) and v2 (protobuf) CoT protocol support
  • SSL connection support, tested with FreeTakServer , Argustak and urpc.info
  • web-ui, ideal for big screen situation awareness center usage
  • unit track - your target unit is always in the center of map
  • RedX tool - to measure distance and bearing
  • Digital Pointer - send DP position to all other contacts
  • Add and edit units on map
  • ability to log all cot's and cli utility to view cot's log and convert it to json or gpx

Client screen

Libraries used

CI

By me a beer 🍺

goatak's People

Contributors

cslamar avatar kavinsky avatar kdudkov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

goatak's Issues

EUD disconnect kills server process.

I have an android device running the current playstore version (v4.10.0.39) of ATAK. I am running goatak version server_0.14.6_linux_amd64. I can connect from ATAK to the server using port 8999, however if I disconnect (uncheck the box beside the server profile in ATAK) from the server it crashes.

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x68 pc=0xb154bb]

goroutine 22 [running]:
main.(*App).RemoveHandlerCb(0xc000290a90, {0xebe720, 0xc000342680})
	github.com/kdudkov/goatak/cmd/goatak_server/main.go:203 +0x15b
github.com/kdudkov/goatak/internal/client.(*ConnClientHandler).stopHandle(0xc0000a61a0?)
	github.com/kdudkov/goatak/internal/client/client_handler.go:360 +0xda
github.com/kdudkov/goatak/internal/client.(*ConnClientHandler).handleRead(0xc000342680)
	github.com/kdudkov/goatak/internal/client/client_handler.go:224 +0x723
created by github.com/kdudkov/goatak/internal/client.(*ConnClientHandler).Start in goroutine 38
	github.com/kdudkov/goatak/internal/client/client_handler.go:131 +0xed

I also tested this with client_0.14.6_linux_amd64 running on the same machine by stopping the client (ctrl+d in the window running the client process) and produced the same result.

$ ./goatak_server
version unknown:0.14.6
{"level":"info","ts":1704493303.925199,"caller":"goatak_server/udpserver.go:15","msg":"listening UDP at :8999"}
{"level":"info","ts":1704493303.925332,"caller":"goatak_server/tcpserver.go:15","msg":"listening TCP at :8999"}
{"level":"info","ts":1704493303.9256148,"caller":"goatak_server/http_server.go:103","msg":"listening admin api calls at :8088"}
{"level":"info","ts":1704493303.9256127,"caller":"goatak_server/http_server.go:103","msg":"listening marti api calls at :8080"}
{"level":"info","ts":1704493303.9257321,"caller":"goatak_server/http_server.go:103","msg":"listening cert api calls at :8446"}
{"level":"info","ts":1704493309.5388691,"caller":"goatak_server/tcpserver.go:29","msg":"TCP connection from 127.0.0.1:54014"}
{"level":"info","ts":1704493309.5389545,"logger":"client tcp:127.0.0.1:54014","caller":"client/client_handler.go:129","msg":"starting","addr":"tcp:127.0.0.1:54014"}
{"level":"info","ts":1704493309.5407484,"logger":"marti_api","caller":"goatak_server/air_gases.go:71","msg":"GET /Marti/api/contacts/all, client: 127.0.0.1:43108, time :564.63µs","user":"","status":200}
{"level":"info","ts":1704493309.540827,"caller":"goatak_server/main.go:213","msg":"new contact: ANDROID-5465737455736572 TestUser"}
{"level":"info","ts":1704493309.5409472,"caller":"goatak_server/processors.go:95","msg":"new contact ANDROID-5465737455736572 (TestUser) a-f-G-U-C"}
{"level":"info","ts":1704493309.5410256,"logger":"client tcp:127.0.0.1:54014","caller":"client/client_handler.go:258","msg":"client tcp:127.0.0.1:54014 switch to v.1","addr":"tcp:127.0.0.1:54014"}
{"level":"info","ts":1704493323.4859045,"logger":"client tcp:127.0.0.1:54014","caller":"client/client_handler.go:180","msg":"EOF","addr":"tcp:127.0.0.1:54014"}
{"level":"info","ts":1704493323.4859793,"logger":"client tcp:127.0.0.1:54014","caller":"client/client_handler.go:351","msg":"stopping","addr":"tcp:127.0.0.1:54014"}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x68 pc=0xb154bb]

goroutine 53 [running]:
main.(*App).RemoveHandlerCb(0xc0001f7790, {0xebe720, 0xc00055a340})
	github.com/kdudkov/goatak/cmd/goatak_server/main.go:203 +0x15b
github.com/kdudkov/goatak/internal/client.(*ConnClientHandler).stopHandle(0xc000112410?)
	github.com/kdudkov/goatak/internal/client/client_handler.go:360 +0xda
github.com/kdudkov/goatak/internal/client.(*ConnClientHandler).handleRead(0xc00055a340)
	github.com/kdudkov/goatak/internal/client/client_handler.go:224 +0x723
created by github.com/kdudkov/goatak/internal/client.(*ConnClientHandler).Start in goroutine 13
	github.com/kdudkov/goatak/internal/client/client_handler.go:131 +0xed

(Question) Lines on map

Is it possible goatak client could display lines on the map if sent CoT message in such a way that would generate a line originating from gps location of the client?

There is a problem when accessing the embedFS on Windows build.

The console will show something like "open templetes/head.html file not exist" and which leads to the web ui failure.
I have solved the problem by adding

fname = strings.ReplaceAll(fname, "\\", "/")

which means change the Windows like separator into Unix like separator, before the filename sends to fs.Readfile()

However, maybe my solution is not so perfect and may cause other problems, could you please check if my solution always work nice or fix it with another way?

iTAK Compatibility

We can't connect using iTAK, using TCP nor TCP SSL.

Is iTAK supported?

Duplicated message to Freetakserver

22.04 with GoAtak client connected to the free Freetakserver online.

When sending a message it appears duplicated in list of messages. For example, when connecting to the Freetakserver you get the first intro message. Sending a message such as “test” and going to view messages shows it twice and message found goes from one (initial welcome message) to account of three. In the console where goatak client is running it also appears there’s an issue getting a list of clients, but I will double check again.

Is this a known incompatibility with Freetakserver?

Broadcasting COTs are seen from all Scopes

Steps to reproduce:

  1. Login using WinTAK using an account with scope: scopeA
  2. Login with other device using an account with scope: scopeB
  3. Create a COT with Account A and press Broadcast.
  4. Scope B can see the broadcasted COT

A quick question...

Im attempting to install this on a raspberry pi. The docker command gives me this:

"WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
exec ./goatak_server: exec format error"

Is there no docker for Arm64?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.