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) {
2024-06-10 08:43:04 +02:00
if (issueInfo.title.includes(".onion") || issueInfo.title.includes(".ip2")) {
2024-04-21 23:49:47 +02:00
var replyComment =
2024-06-10 08:43:04 +02:00
[ 'Hello! I have detected that you are requesting to add an onion or I2P URL.' ,
'Please create a pull request instead for adding your onion or I2P url as an alternative to your clearnet URL : https://github.com/iv-org/documentation/edit/master/docs/instances.md'
2024-04-21 23:49:47 +02:00
] .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 }}' ,
2024-04-22 00:20:29 +02:00
json:true,
2024-04-21 23:49:47 +02:00
headers :
{ 'content-type' : 'application/x-www-form-urlencoded' },
form :
{ url : 'https://' + instanceHostname,
period : '300' ,
mute_until : 'forever' ,
published : 'true' ,
2024-05-15 13:51:56 +02:00
apdex_t : '1.0' ,
2024-04-21 23:49:47 +02:00
alias : instanceHostname,
string_match : 'An alternative front-end to YouTube' } };
request(optionsAddNewCheck, async function (error, response, body) {
if (error) throw new Error(error);
if (body.token) {
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.' ,
] .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
})
}