Initial version in Go (switching from PHP to Go)
parent
27ec647ef5
commit
53e618a9ed
|
@ -0,0 +1,21 @@
|
||||||
|
# Changelog
|
||||||
|
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Unreleased
|
||||||
|
|
||||||
|
#### Links
|
||||||
|
- upstream: https://code.lindeas.com/lindeas/jilo-agent/releases/tag/v0.1
|
||||||
|
- codeberg: https://codeberg.org/lindeas/jilo-agent/releases/tag/v0.1
|
||||||
|
- github: https://github.com/lindeas/jilo-agent/releases/tag/v0.1
|
||||||
|
- gitlab: https://gitlab.com/lindeas/jilo-agent/-/releases/v0.1
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Initial version in PHP
|
||||||
|
- Added endpoint for /nginx, /prosody, /jicofo, /nginx
|
||||||
|
- Added a config file
|
||||||
|
- New version in folder "go", written in Go
|
||||||
|
- Added endpoint for /nginx
|
||||||
|
- Initial vesion of a build script
|
|
@ -1,3 +1,7 @@
|
||||||
# jilo-agent
|
# jilo-agent
|
||||||
|
|
||||||
Jilo Agent - a remote agent for Jilo Web
|
Jilo Agent - a remote agent for Jilo Web
|
||||||
|
|
||||||
|
Initial version is in PHP.
|
||||||
|
|
||||||
|
The current version is in "go" folder and is in Go.
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
go build -o jilo-agent main.go
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*
|
||||||
|
Jilo Agent
|
||||||
|
|
||||||
|
Description: Remote agent for Jilo Web with http API
|
||||||
|
Author: Yasen Pramatarov
|
||||||
|
License: GPLv2
|
||||||
|
Project URL: https://lindeas.com/jilo
|
||||||
|
Year: 2024
|
||||||
|
Version: 0.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"os/exec"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// NginxData holds the nginx data structure for the API response to /nginx
|
||||||
|
type NginxData struct {
|
||||||
|
NginxState string `json:"nginx_status"`
|
||||||
|
NginxConnections int `json:"nginx_connections"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// getNginxState checks the status of the nginx service
|
||||||
|
func getNginxState() string {
|
||||||
|
output, err := exec.Command("systemctl", "is-active", "nginx").Output()
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error checking the nginx state: %v", err)
|
||||||
|
return "error"
|
||||||
|
}
|
||||||
|
state := strings.TrimSpace(string(output))
|
||||||
|
if state == "active" {
|
||||||
|
return "running"
|
||||||
|
}
|
||||||
|
return "not running"
|
||||||
|
}
|
||||||
|
|
||||||
|
// getNginxConnections gets the number of active connections to the specified web port
|
||||||
|
func getNginxConnections() int {
|
||||||
|
output, err := exec.Command("bash", "-c", "netstat -an | grep ':80' | wc -l").Output()
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error counting the Nginx connections: %v", err)
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
connections := strings.TrimSpace(string(output))
|
||||||
|
connectionsInt, err := strconv.Atoi(connections)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error converting connections to integer number: %v", err)
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
return connectionsInt
|
||||||
|
}
|
||||||
|
|
||||||
|
// nginxHandler handles the /nginx endpoint
|
||||||
|
func nginxHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
data := NginxData {
|
||||||
|
NginxState: getNginxState(),
|
||||||
|
NginxConnections: getNginxConnections(),
|
||||||
|
}
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
json.NewEncoder(w).Encode(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
// main sets up the http server and the routes
|
||||||
|
func main() {
|
||||||
|
http.HandleFunc("/nginx", nginxHandler)
|
||||||
|
fmt.Println("Starting agent server on port 8080.")
|
||||||
|
if err := http.ListenAndServe(":8080", nil); err != nil {
|
||||||
|
log.Fatalf("Could not start the server: %v\n", err)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue