Initial commit
This commit is contained in:
revize
2e8d1fc078
|
@ -0,0 +1,3 @@
|
||||||
|
node_modules
|
||||||
|
.DS_Store
|
||||||
|
build
|
|
@ -0,0 +1,15 @@
|
||||||
|
# services
|
||||||
|
|
||||||
|
To install dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bun install
|
||||||
|
```
|
||||||
|
|
||||||
|
To run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bun run index.ts
|
||||||
|
```
|
||||||
|
|
||||||
|
This project was created using `bun init` in bun v0.1.13. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime.
|
Binární soubor nebyl zobrazen.
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"name": "gweicz-services",
|
||||||
|
"module": "index.ts",
|
||||||
|
"scripts": {
|
||||||
|
"build": "bun scripts/build.js"
|
||||||
|
},
|
||||||
|
"type": "module",
|
||||||
|
"devDependencies": {
|
||||||
|
"bun-types": "^0.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"js-yaml": "^4.1.0",
|
||||||
|
"jsonata": "^1.8.6"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
const yaml = require('js-yaml')
|
||||||
|
const fs = require('fs')
|
||||||
|
const jsonata = require('jsonata')
|
||||||
|
|
||||||
|
const outputFn = 'build/spec.json'
|
||||||
|
|
||||||
|
const strategies = {
|
||||||
|
async default (conf, all) {
|
||||||
|
const req = await fetch(conf.url)
|
||||||
|
const resp = await req.json()
|
||||||
|
return jsonata(conf.query).evaluate(resp)
|
||||||
|
},
|
||||||
|
async github (conf, all) {
|
||||||
|
const req = await fetch('https://api.github.com/repos/@@/releases/latest'.replace(/@@/, all.repo))
|
||||||
|
const resp = await req.json()
|
||||||
|
return jsonata('$match(tag_name,/^v(.+)/)[0].groups[0]').evaluate(resp)
|
||||||
|
},
|
||||||
|
async html (conf, all) {
|
||||||
|
const req = await fetch(conf.url)
|
||||||
|
const resp = await req.text()
|
||||||
|
return resp.match(conf.query)[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getVersions (config, all) {
|
||||||
|
const local = await strategies[config.from.strategy ? config.from.strategy : 'default'](config.from, all)
|
||||||
|
const latest = await strategies[config.to.strategy ? config.to.strategy : 'default'](config.to, all)
|
||||||
|
return { local, latest }
|
||||||
|
}
|
||||||
|
|
||||||
|
async function build () {
|
||||||
|
const spec = yaml.load(fs.readFileSync('./spec/services.yaml'))
|
||||||
|
|
||||||
|
for (const item of spec.services) {
|
||||||
|
|
||||||
|
item.url = item.host ? `https://${item.host}` : item.url
|
||||||
|
item.versions = await getVersions(item.version_conf, item)
|
||||||
|
delete item.version_conf
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.writeFileSync(outputFn, JSON.stringify(spec, null, 2))
|
||||||
|
console.log(`saved: ${outputFn}`)
|
||||||
|
console.log('build done')
|
||||||
|
}
|
||||||
|
|
||||||
|
build()
|
|
@ -0,0 +1,100 @@
|
||||||
|
services:
|
||||||
|
- name: Gitea
|
||||||
|
host: git.gwei.cz
|
||||||
|
repo: go-gitea/gitea
|
||||||
|
monitor: 6
|
||||||
|
version_conf:
|
||||||
|
from:
|
||||||
|
url: https://git.gwei.cz/api/v1/version
|
||||||
|
query: version
|
||||||
|
to:
|
||||||
|
strategy: github
|
||||||
|
|
||||||
|
- name: Mastodon
|
||||||
|
host: social.gwei.cz
|
||||||
|
repo: mastodon/mastodon
|
||||||
|
monitor: 3
|
||||||
|
version_conf:
|
||||||
|
from:
|
||||||
|
url: https://social.gwei.cz/nodeinfo/2.0
|
||||||
|
query: software.version
|
||||||
|
to:
|
||||||
|
strategy: github
|
||||||
|
|
||||||
|
- name: Synapse (Matrix)
|
||||||
|
repo: matrix-org/synapse
|
||||||
|
monitor: 1
|
||||||
|
version_conf:
|
||||||
|
from:
|
||||||
|
url: https://gwei.cz/_synapse/admin/v1/server_version
|
||||||
|
query: server_version
|
||||||
|
to:
|
||||||
|
strategy: github
|
||||||
|
|
||||||
|
- name: Cinny
|
||||||
|
repo: cinnyapp/cinny
|
||||||
|
monitor: 8
|
||||||
|
version_conf:
|
||||||
|
from:
|
||||||
|
url: https://cinny.gwei.cz/version.json
|
||||||
|
query: $match(version,/^v(.+)/)[0].groups[0]
|
||||||
|
to:
|
||||||
|
strategy: github
|
||||||
|
|
||||||
|
- name: Tor Relay (#1) (Exit)
|
||||||
|
monitor: 34
|
||||||
|
version_conf:
|
||||||
|
from:
|
||||||
|
url: https://onionoo.torproject.org/details?lookup=F36E7C8746649077DA254397F721851ABBD4B528
|
||||||
|
query: relays[0].version
|
||||||
|
to:
|
||||||
|
strategy: html
|
||||||
|
url: https://www.torproject.org/download/tor/
|
||||||
|
query: "<td>(\\d+\\.\\d+\\.\\d+\\.\\d+)<\/td>"
|
||||||
|
|
||||||
|
- name: Tor Relay (#2)
|
||||||
|
monitor: 33
|
||||||
|
version_conf:
|
||||||
|
from:
|
||||||
|
url: https://onionoo.torproject.org/details?lookup=6DD7CFE5DAE710940E8DF978A5495085FEBB1703
|
||||||
|
query: relays[0].version
|
||||||
|
to:
|
||||||
|
strategy: html
|
||||||
|
url: https://www.torproject.org/download/tor/
|
||||||
|
query: "<td>(\\d+\\.\\d+\\.\\d+\\.\\d+)<\/td>"
|
||||||
|
|
||||||
|
- name: Discourse (Gwei.cz)
|
||||||
|
host: forum.gwei.cz
|
||||||
|
repo: discourse/discourse
|
||||||
|
monitor: 2
|
||||||
|
version_conf:
|
||||||
|
from:
|
||||||
|
strategy: html
|
||||||
|
url: https://forum.gwei.cz
|
||||||
|
query: 'content="Discourse ([^\s]+) -'
|
||||||
|
to:
|
||||||
|
strategy: github
|
||||||
|
|
||||||
|
- name: Discourse (dCZK)
|
||||||
|
host: forum.dczk.cz
|
||||||
|
repo: discourse/discourse
|
||||||
|
monitor: 2
|
||||||
|
version_conf:
|
||||||
|
from:
|
||||||
|
strategy: html
|
||||||
|
url: https://forum.dczk.cz
|
||||||
|
query: 'content="Discourse ([^\s]+) -'
|
||||||
|
to:
|
||||||
|
strategy: github
|
||||||
|
|
||||||
|
- name: SFTPGo
|
||||||
|
host: sftpgo.gwei.cz
|
||||||
|
repo: drakkan/sftpgo
|
||||||
|
monitor: 37
|
||||||
|
version_conf:
|
||||||
|
from:
|
||||||
|
strategy: html
|
||||||
|
url: https://sftpgo.gwei.cz/web/admin/login
|
||||||
|
query: 'WebAdmin - ([^<]+)<\/h1>'
|
||||||
|
to:
|
||||||
|
strategy: github
|
Načítá se…
Odkázat v novém úkolu