2024-04-22 00:03:29 +02:00
name : Add instance to updown.io
2024-04-21 23:49:47 +02:00
on :
issues :
types : [ opened, reopened]
jobs :
replycomment :
runs-on : ubuntu-latest
permissions : write-all
steps :
- uses : actions/checkout@v3
if : contains(github.event.issue.labels.*.name, 'instance-add')
- uses : actions/setup-node@v3
if : contains(github.event.issue.labels.*.name, 'instance-add')
with :
node-version : 16
2024-04-22 00:07:13 +02:00
- run : npm install request linkifyjs
2024-04-21 23:49:47 +02:00
if : contains(github.event.issue.labels.*.name, 'instance-add')
- uses : actions/github-script@v6
if : contains(github.event.issue.labels.*.name, 'instance-add')
with :
script : |
var issueInfo = (await github.rest.issues.get({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
})).data;
var linkify = require("linkifyjs");
var issueTitleParseUrl = linkify.find(issueInfo.title);
if (issueTitleParseUrl.length !== 0) {
if (issueInfo.title.includes(".onion")) {
var replyComment =
[ 'Hello! I have detected that you are requesting to add an onion URL.' ,
'Please create a pull request instead for adding your onion url as an alternative to your clearnet URL : https://github.com/iv-org/documentation/edit/master/docs/instances.md'
] .join('\n');
await github.rest.issues.createComment({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
body : replyComment
});
await github.rest.issues.update({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
state : 'closed'
});
}
else {
var instanceHostname = (new URL(issueTitleParseUrl[0].href)).hostname;
var request = require("request");
var optionsAddNewCheck = { method: 'POST',
url : 'https://updown.io/api/checks?api-key=${{ secrets.UPDOWN_API_KEY }}' ,
headers :
{ 'content-type' : 'application/x-www-form-urlencoded' },
form :
{ url : 'https://' + instanceHostname,
period : '300' ,
mute_until : 'forever' ,
published : 'true' ,
alias : instanceHostname,
string_match : 'An alternative front-end to YouTube' } };
request(optionsAddNewCheck, async function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
if (body.token) {
var optionsGetStatusPages = {
method : 'GET' ,
2024-04-22 00:03:29 +02:00
url : 'https://updown.io/api/status_pages?api-key=${{ secrets.UPDOWN_API_KEY }}'
2024-04-21 23:49:47 +02:00
};
request(optionsGetStatusPages, async function (error, response, body) {
if (error) throw new Error(error);
const statusPage = body.filter(element => element.token === "resvf");
let checksOfStatusPage = statusPage[0].checks;
checksOfStatusPage.push(body.token)
var optionsAddCheckToStatusPage = {
method : 'PUT' ,
url : 'https://updown.io/api/status_pages/resvf?api-key=${{ secrets.UPDOWN_API_KEY }}' ,
headers : {
'content-type' : 'application/json'
},
2024-04-22 00:03:29 +02:00
json : {checks : checksOfStatusPage}
2024-04-21 23:49:47 +02:00
};
request(optionsAddCheckToStatusPage, async function (error, response, body) {
if (error) throw new Error(error);
});
});
var replyComment =
['Hello! Your instance has been added to our monitoring system : https://updown.io/' + body.token,
'You need to wait 30 days before we add your instance, this is to evaluate that your instance will keep a good uptime for one month.' ,
'' ,
'Make sure you double checked all the mandatory checks or this will slow down the process of adding your instance!' ,
'' ,
'Please consult these two important tutorials:' ,
'' ,
'- Escaping the YouTube block ([403 errors in playback](https://github.com/iv-org/invidious/issues/4045)) : https://docs.invidious.io/ipv6-rotator/',
'' ,
'- Improving the performance and the stability of your public instance : https://docs.invidious.io/improve-public-instance/',
'' ,
'It is highly recommended to follow these tutorials because it will allow the instance to stay stable and performant over the long term.' ,
'' ,
'Please consider joining the Matrix room for public instance maintainers by joining our Matrix room : https://matrix.to/#/#invidious:matrix.org',
'then pinging @ unixfox, @ TheFrenchGhosty and @ SamantazFox for asking to be invited to the Matrix room.' ,
'We discuss troubles managing a public instance, sharing some advices and more.'
] .join('\n');
await github.rest.issues.createComment({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
body : replyComment
})
await github.rest.issues.addLabels({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
labels : [ 'wait-30-days' ]
})
}
});
}
}
else {
var replyComment =
[ 'Domain not detected in the title, please edit the title by correcting it like this:' ,
'Issue title example : `[New instance] https://myinstance.com`'
] .join('\n');
await github.rest.issues.createComment({
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
body : replyComment
})
}