No description
Find a file
2023-11-24 14:19:39 +01:00
.idea First Commit 2023-11-23 15:42:07 +01:00
dashboard.json Dateien nach "/" hochladen 2023-11-24 14:19:39 +01:00
docker-compose.yml First Commit 2023-11-23 15:42:07 +01:00
Dockerfile First Commit 2023-11-23 15:42:07 +01:00
go.mod First Commit 2023-11-23 15:42:07 +01:00
go.sum First Commit 2023-11-23 15:42:07 +01:00
LICENSE Initial commit 2023-11-23 15:34:58 +01:00
main.go replace query with header 2023-11-24 11:26:12 +01:00
README.md README.md aktualisiert 2023-11-24 14:03:49 +01:00

Go Location Logger

A simple Go program that handles location data sent via HTTP POST requests and inserts it into a MySQL database.

Features

  • Handles JSON payloads containing location data.
  • Inserts location data into a MySQL database.
  • Utilizes headers X-Limit-U and X-Limit-D for specifying user and device information in HTTP requests.

Prerequisites

Before running the program, ensure you have the following:

Installation

  1. Clone the repository:

    git clone https://github.com/yourusername/go-location-logger.git
    
  2. Navigate to the project directory:

    cd go-location-logger
    
  3. Install dependencies:

    go get -u github.com/sirupsen/logrus
    
  4. Create an .env file in the project root with your environment variables:

    # .env
    
    DB_USER=your_db_user
    DB_PASSWORD=your_db_password
    DB_HOST=your_db_host
    DB_PORT=your_db_port
    DB_NAME=your_db_name
    

Usage

Running with Docker Compose

  1. Create a Docker network:

    docker network create app-network
    
  2. Use Docker Compose to start the services:

    docker-compose up -d
    
  3. Access your Go application at http://localhost:8080. Make HTTP POST requests as described in the README.md.

  4. To stop the services, run:

    docker-compose down
    

Running without Docker

If you prefer not to use Docker, you can run the Go application directly using:

go run main.go

The server will start on http://localhost:8080.

Make a POST request with a JSON payload to http://localhost:8080/?device=your_device&user=your_user. The JSON payload should include location data.

Example:

curl -X POST -H "Content-Type: application/json" \
  -H "X-Limit-U: your_user" \
  -H "X-Limit-D: your_device" \
  -H "Authorization: Basic your_token" \
  -d '{
    "_type": "location",
    "tst": 1700820453,
    "lat": 37.7749,
    "lon": -122.4194,
    "alt": 90,
    "batt": 94,
    "acc": 35,
    "bs": 2,
    "p": 99.314,
    "created_at": 1700820457,
    "BSSID": "e8:48:b8:7f:b4:d4",
    "SSID": "Mr.Puhu",
    "vac": 20,
    "tag": "Arbeit",
    "topic": "owntracks/simono41/6193B679-AD67-4B93-9DF2-158501A055AF",
    "conn": "w",
    "m": 1,
    "tid": "AF"
  }' \
  http://localhost:8080/

Contributing

Feel free to open issues or submit pull requests.

License

This project is licensed under the MIT License - see the LICENSE file for details.