Compare commits
1 Commits
main
...
renovate/c
Author | SHA1 | Date | |
---|---|---|---|
a50f13a648 |
4
.babelrc
4
.babelrc
@ -1,3 +1,5 @@
|
||||
{
|
||||
"plugins": ["@babel/plugin-proposal-class-properties"]
|
||||
"plugins": [
|
||||
"@babel/plugin-proposal-class-properties"
|
||||
]
|
||||
}
|
||||
|
@ -1,3 +1,19 @@
|
||||
{
|
||||
"parser": "babel-eslint"
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es6": true
|
||||
},
|
||||
"extends": [
|
||||
"standard"
|
||||
],
|
||||
"globals": {
|
||||
"Atomics": "readonly",
|
||||
"SharedArrayBuffer": "readonly"
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2018
|
||||
},
|
||||
"rules": {
|
||||
},
|
||||
"parser": "babel-eslint"
|
||||
}
|
||||
|
@ -1,43 +0,0 @@
|
||||
name: Publish Docker Image
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "main"
|
||||
|
||||
jobs:
|
||||
docker:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Restore Docker Cache
|
||||
uses: actions/cache@v3
|
||||
id: docker-cache
|
||||
with:
|
||||
path: /usr/bin/docker
|
||||
key: ${{ runner.os }}-docker
|
||||
|
||||
- name: Install Docker (if not cached)
|
||||
if: steps.docker-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
wget -q -O /tmp/docker.tgz https://download.docker.com/linux/static/stable/x86_64/docker-20.10.23.tgz \
|
||||
&& tar --extract --file /tmp/docker.tgz --directory /usr/bin --strip-components 1 --no-same-owner docker/docker \
|
||||
&& rm -rf /tmp/* &&
|
||||
echo "Done"
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
- name: Login to Repo
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.REPO_USERNAME }}
|
||||
password: ${{ secrets.REPO_TOKEN }}
|
||||
|
||||
- name: Build and Push
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
push: true
|
||||
tags: fascinated/minetrack:latest
|
@ -4,7 +4,7 @@
|
||||
|
||||
# Minetrack
|
||||
|
||||
Minetrack makes it easy to keep an eye on your favorite Minecraft servers. Simple and hackable, Minetrack easily runs on any hardware. Use it for monitoring, analytics, or just for fun. [Check it out](https://mc.fascinated.cc/).
|
||||
Minetrack makes it easy to keep an eye on your favorite Minecraft servers. Simple and hackable, Minetrack easily runs on any hardware. Use it for monitoring, analytics, or just for fun. [Check it out](https://minetrack.me).
|
||||
|
||||
### This project is not actively supported
|
||||
|
||||
@ -51,7 +51,7 @@ Minetrack can be built and run with Docker from this repository in several ways:
|
||||
|
||||
### Build and deploy directly with Docker
|
||||
|
||||
```bash
|
||||
```
|
||||
# build image with name minetrack and tag latest
|
||||
docker build . --tag minetrack:latest
|
||||
|
||||
@ -67,7 +67,7 @@ The published port can be changed by modifying the parameter argument, e.g.:
|
||||
|
||||
### Build and deploy with docker-compose
|
||||
|
||||
```bash
|
||||
```
|
||||
# build and start service
|
||||
docker-compose up --build
|
||||
|
||||
@ -79,7 +79,7 @@ docker-compose down
|
||||
|
||||
The following configuration enables Nginx to act as reverse proxy for a Minetrack instance that is available at port 8080 on localhost:
|
||||
|
||||
```nginx
|
||||
```
|
||||
server {
|
||||
server_name minetrack.example.net;
|
||||
listen 80;
|
||||
|
@ -2,18 +2,8 @@
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Minetrack</title>
|
||||
<meta charset="UTF-8" />
|
||||
|
||||
<!-- Discord Embed -->
|
||||
<meta content="Minetrack" property="og:title" />
|
||||
<meta
|
||||
content="Tracking minecraft servers since 2023"
|
||||
property="og:description"
|
||||
/>
|
||||
<meta content="https://mc.fascinated.cc/" property="og:url" />
|
||||
|
||||
<link rel="stylesheet" href="../css/main.css" />
|
||||
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;700&display=swap"
|
||||
@ -21,7 +11,11 @@
|
||||
|
||||
<link rel="icon" type="image/svg+xml" href="../images/logo.svg" />
|
||||
|
||||
<meta charset="UTF-8" />
|
||||
|
||||
<script defer type="module" src="../js/main.js"></script>
|
||||
|
||||
<title>Minetrack</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
@ -4,8 +4,8 @@
|
||||
"ip": "0.0.0.0"
|
||||
},
|
||||
"rates": {
|
||||
"pingAll": 30000,
|
||||
"connectTimeout": 5000
|
||||
"pingAll": 15000,
|
||||
"connectTimeout": 2500
|
||||
},
|
||||
"oldPingsCleanup": {
|
||||
"enabled": false,
|
||||
@ -13,6 +13,6 @@
|
||||
},
|
||||
"logFailedPings": true,
|
||||
"logToDatabase": true,
|
||||
"graphDuration": 604800000,
|
||||
"serverGraphDuration": 360000
|
||||
"graphDuration": 86400000,
|
||||
"serverGraphDuration": 180000
|
||||
}
|
||||
|
@ -2,19 +2,17 @@ version: "3"
|
||||
|
||||
services:
|
||||
minetrack:
|
||||
image: fascinated/minetrack:latest
|
||||
# or
|
||||
# build: https://git.fascinated.cc/Fascinated/Minetrack.git
|
||||
build: https://git.fascinated.cc/Fascinated/Minetrack.git
|
||||
container_name: minetrack
|
||||
dns:
|
||||
- 8.8.8.8
|
||||
- 1.1.1.1
|
||||
ports:
|
||||
- "8880:8080"
|
||||
- "8080:8080"
|
||||
volumes:
|
||||
# Copy these from the git repo
|
||||
- ./servers.json:/usr/src/minetrack/servers.json
|
||||
- ./config.json:/usr/src/minetrack/config.json
|
||||
|
||||
- ./data:/usr/src/minetrack/data # The sqlite database will be stored here
|
||||
- ./data:/data # The sqlite database will be stored here
|
||||
restart: always
|
||||
|
@ -6,7 +6,6 @@ const MessageOf = require("./message");
|
||||
|
||||
const config = require("../config");
|
||||
const minecraftVersions = require("../minecraft_versions");
|
||||
const { formatMsToTime } = require("./utils/timeUtils");
|
||||
|
||||
class App {
|
||||
serverRegistrations = [];
|
||||
@ -75,11 +74,9 @@ class App {
|
||||
|
||||
// Send configuration data for rendering the page
|
||||
return {
|
||||
// graphDurationLabel:
|
||||
// config.graphDurationLabel ||
|
||||
// Math.floor(config.graphDuration / (60 * 60 * 1000)) + "h",
|
||||
graphDurationLabel:
|
||||
config.graphDurationLabel || formatMsToTime(config.graphDuration),
|
||||
config.graphDurationLabel ||
|
||||
Math.floor(config.graphDuration / (60 * 60 * 1000)) + "h",
|
||||
graphMaxLength: TimeTracker.getMaxGraphDataLength(),
|
||||
serverGraphMaxLength: TimeTracker.getMaxServerGraphDataLength(),
|
||||
servers: this.serverRegistrations.map((serverRegistration) =>
|
||||
|
@ -239,6 +239,7 @@ class Database {
|
||||
|
||||
// Record not found
|
||||
if (data[0] === undefined) {
|
||||
// eslint-disable-next-line node/no-callback-literal
|
||||
callback(false);
|
||||
return;
|
||||
}
|
||||
@ -247,6 +248,7 @@ class Database {
|
||||
const timestamp = data[0].timestamp;
|
||||
|
||||
// Allow null player counts and timestamps, the frontend will safely handle them
|
||||
// eslint-disable-next-line node/no-callback-literal
|
||||
callback(true, playerCount, timestamp);
|
||||
}
|
||||
);
|
||||
@ -270,8 +272,10 @@ class Database {
|
||||
// Allow null timestamps, the frontend will safely handle them
|
||||
// This allows insertion of free standing records without a known timestamp
|
||||
if (playerCount !== null) {
|
||||
// eslint-disable-next-line node/no-callback-literal
|
||||
callback(true, playerCount, timestamp);
|
||||
} else {
|
||||
// eslint-disable-next-line node/no-callback-literal
|
||||
callback(false);
|
||||
}
|
||||
}
|
||||
|
@ -106,7 +106,6 @@ class PingController {
|
||||
|
||||
schedule() {
|
||||
setInterval(this.pingAll, config.rates.pingAll);
|
||||
// todo: make this a cron job?
|
||||
|
||||
this.pingAll();
|
||||
}
|
||||
|
@ -1,28 +0,0 @@
|
||||
/**
|
||||
* Formats a time in milliseconds to a human readable format
|
||||
* eg: 1000ms -> 1s or 60000ms -> 1m
|
||||
*
|
||||
* @param ms the time in milliseconds
|
||||
* @returns the formatted time
|
||||
*/
|
||||
function formatMsToTime(ms) {
|
||||
// this is really fucking shitty but it works!
|
||||
const seconds = Math.floor(ms / 1000);
|
||||
const minutes = Math.floor(seconds / 60);
|
||||
const hours = Math.floor(minutes / 60);
|
||||
const days = Math.floor(hours / 24);
|
||||
|
||||
if (days > 0) {
|
||||
return `${days}d`;
|
||||
} else if (hours > 0) {
|
||||
return `${hours}h`;
|
||||
} else if (minutes > 0) {
|
||||
return `${minutes}m`;
|
||||
} else {
|
||||
return `${seconds}s`;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
formatMsToTime,
|
||||
};
|
6
renovate.json
Normal file
6
renovate.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"local>Fascinated/renovate-config"
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user