This commit is contained in:
parent
ec78765e4f
commit
f7acde85c0
5 changed files with 18 additions and 32 deletions
|
@ -23,11 +23,6 @@ jobs:
|
||||||
with:
|
with:
|
||||||
go-version: '1.23'
|
go-version: '1.23'
|
||||||
|
|
||||||
# - name: Install dependencies
|
|
||||||
# run: |
|
|
||||||
# sudo apt-get update
|
|
||||||
# sudo apt-get install -y task
|
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: task test
|
run: task test
|
||||||
|
|
||||||
|
@ -35,16 +30,6 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
task build VERSION=${{ github.event.inputs.version }}
|
task build VERSION=${{ github.event.inputs.version }}
|
||||||
|
|
||||||
# - name: Upload Release Asset
|
|
||||||
# uses: actions/upload-release-asset@v1
|
|
||||||
# env:
|
|
||||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
# with:
|
|
||||||
# upload_url: ${{ github.event.release.upload_url }}
|
|
||||||
# asset_path: ./lobby2-${{ github.ref_name }}-amd64
|
|
||||||
# asset_name: lobby2-${{ github.ref_name }}-amd64
|
|
||||||
# asset_content_type: application/octet-stream
|
|
||||||
|
|
||||||
- uses: actions/forgejo-release@v2
|
- uses: actions/forgejo-release@v2
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
|
@ -19,4 +19,4 @@ tasks:
|
||||||
cmds:
|
cmds:
|
||||||
- go mod tidy
|
- go mod tidy
|
||||||
- mkdir -p bin
|
- mkdir -p bin
|
||||||
- go build -o bin/lobby2-{{ .VERSION }}-amd64 cli/*.go
|
- go build -o bin/lobby2-{{ .VERSION }}-linux-amd64 cli/*.go
|
||||||
|
|
|
@ -28,7 +28,7 @@ func masterAction(c *cli.Context) error {
|
||||||
func nodeAction(c *cli.Context) error {
|
func nodeAction(c *cli.Context) error {
|
||||||
cfg := GetConfig()
|
cfg := GetConfig()
|
||||||
|
|
||||||
r := refresher.NewRefresher(cfg.NodeDirPath, cfg.ConfigPath)
|
r := refresher.NewRefresher(cfg.NodePath, cfg.ConfigPath)
|
||||||
r.Loop()
|
r.Loop()
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -11,8 +11,8 @@ type Config struct {
|
||||||
APIToken string `envconfig:"TOKEN" default:""`
|
APIToken string `envconfig:"TOKEN" default:""`
|
||||||
|
|
||||||
DumpPath string `envconfig:"DUMP_PATH" default:"/var/lib/lobby2/nodes.json"`
|
DumpPath string `envconfig:"DUMP_PATH" default:"/var/lib/lobby2/nodes.json"`
|
||||||
ConfigPath string `envconfig:"CONFIG_PATH" default:"/var/lib/lobby2/config.json"`
|
ConfigPath string `envconfig:"CONFIG_PATH" default:"/etc/lobby2/config.json"`
|
||||||
NodeDirPath string `envconfig:"NODE_DIR_PATH" default:"/var/lib/lobby2/node"`
|
NodePath string `envconfig:"NODE_PATH" default:"/etc/lobby2/node.json"`
|
||||||
|
|
||||||
DropAfterSeconds int64 `envconfig:"DROP_AFTER_SECONDS" default:"60"`
|
DropAfterSeconds int64 `envconfig:"DROP_AFTER_SECONDS" default:"60"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,24 +7,23 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.ceperka.net/rosti/lobby2/nodes"
|
"gitea.ceperka.net/rosti/lobby2/nodes"
|
||||||
)
|
)
|
||||||
|
|
||||||
const refreshIntervalSeconds = 15
|
const refreshIntervalSeconds = 15
|
||||||
const nodeFileName = "node.json"
|
|
||||||
|
|
||||||
// Refresher loads local node info and sends them to the master node.
|
// Refresher loads local node info and sends them to the master node.
|
||||||
type Refresher struct {
|
type Refresher struct {
|
||||||
configPath string
|
configPath string
|
||||||
nodeDirPath string
|
nodePath string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRefresher(nodeDirPath string, configPath string) *Refresher {
|
func NewRefresher(nodePath string, configPath string) *Refresher {
|
||||||
return &Refresher{
|
return &Refresher{
|
||||||
nodeDirPath: nodeDirPath,
|
nodePath: nodePath,
|
||||||
configPath: configPath,
|
configPath: configPath,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,7 +112,7 @@ func (r *Refresher) getConfig() (NodeConfig, error) {
|
||||||
|
|
||||||
// TODO: rewrite this to load Node structure
|
// TODO: rewrite this to load Node structure
|
||||||
func (r *Refresher) loadNode() (*nodes.Node, error) {
|
func (r *Refresher) loadNode() (*nodes.Node, error) {
|
||||||
filePath := path.Join(r.nodeDirPath, nodeFileName)
|
filePath := r.nodePath
|
||||||
_, err := os.Stat(filePath)
|
_, err := os.Stat(filePath)
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
err = r.initNodeFile()
|
err = r.initNodeFile()
|
||||||
|
@ -122,7 +121,7 @@ func (r *Refresher) loadNode() (*nodes.Node, error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
content, err := os.ReadFile(path.Join(r.nodeDirPath, nodeFileName))
|
content, err := os.ReadFile(r.nodePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to read file: %w", err)
|
return nil, fmt.Errorf("failed to read file: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -156,7 +155,7 @@ func (r *Refresher) initNodeFile() error {
|
||||||
return fmt.Errorf("failed to marshal node: %w", err)
|
return fmt.Errorf("failed to marshal node: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = os.WriteFile(path.Join(r.nodeDirPath, nodeFileName), nodeBytes, 0640)
|
err = os.WriteFile(r.nodePath, nodeBytes, 0640)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to write node file: %w", err)
|
return fmt.Errorf("failed to write node file: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -165,9 +164,11 @@ func (r *Refresher) initNodeFile() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Refresher) createNodePath() error {
|
func (r *Refresher) createNodePath() error {
|
||||||
_, err := os.Stat(r.nodeDirPath)
|
d := filepath.Dir(r.nodePath)
|
||||||
|
|
||||||
|
_, err := os.Stat(d)
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
err = os.MkdirAll(r.nodeDirPath, 0755)
|
err = os.MkdirAll(d, 0755)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to create node dir: %w", err)
|
return fmt.Errorf("failed to create node dir: %w", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue