aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinteck <minteck@phoenixnet.tech>2021-11-03 12:11:04 +0100
committerMinteck <minteck@phoenixnet.tech>2021-11-03 12:11:04 +0100
commit79f4b6c75e6dcdf10167f7e6e6c52db8f23bde83 (patch)
tree8553583a19ba2388f728c5bce541add45d5d7408
parente35f78637bceb6bbc7085dd837cd1fb1b0166818 (diff)
downloadwolfeye-js-79f4b6c75e6dcdf10167f7e6e6c52db8f23bde83.tar.gz
wolfeye-js-79f4b6c75e6dcdf10167f7e6e6c52db8f23bde83.tar.bz2
wolfeye-js-79f4b6c75e6dcdf10167f7e6e6c52db8f23bde83.zip
Fix Gitea
-rw-r--r--package.json2
-rw-r--r--server/gitea.js19
-rw-r--r--server/gitea.old.js116
3 files changed, 130 insertions, 7 deletions
diff --git a/package.json b/package.json
index 8c0db3d..6c932a2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "satellite",
- "version": "2.1.5",
+ "version": "2.2.0",
"description": "Minteck Projects Web Server",
"main": "server/core.js",
"scripts": {
diff --git a/server/gitea.js b/server/gitea.js
index 314fca8..983b291 100644
--- a/server/gitea.js
+++ b/server/gitea.js
@@ -3,16 +3,23 @@ global.serverRoot = __dirname + "/..";
global.fs = require('fs')
log.info("Reading configuration...")
global.config = require('../global/config.json')
+global.mpws = require('./version');
log.verbose("Initializing Gitea projects refresh...")
+function get(url) {
+ return {
+ stdout: require('child_process').execSync("curl -s -A \"Sattelite/" + mpws.version + "\" -X GET \"https://source.minteck.org/" + url + "\" -H \"accept: application/json\" -H \"authorization: Basic " + fs.readFileSync(serverRoot + "/auth.txt") + "\"")
+ };
+}
+
function giteaRefresh() {
giteaDataTmp = [];
repos = [];
log.info("Refreshing Gitea cache...")
- orgs_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/orgs', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+ orgs_raw = JSON.parse(get("/api/v1/orgs").stdout.toString());
let orgs = [];
for (let org of orgs_raw) {
@@ -24,7 +31,7 @@ function giteaRefresh() {
let orgs_mtk = [];
for (let org of orgs) {
log.verbose("Gathering members of '" + org + "'...");
- members_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/orgs/' + org + '/members', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+ members_raw = JSON.parse(get("/api/v1/orgs/" + org + "/members").stdout.toString());
let members = [];
for (let member of members_raw) {
@@ -44,7 +51,7 @@ function giteaRefresh() {
log.verbose("Minteck part of " + orgs_mtk.length + "/" + orgs.length + " orgs, exclusing themself");
log.verbose("Gathering personal projects");
- personal_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/users/minteck/repos', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+ personal_raw = JSON.parse(get("/api/v1/users/minteck/repos").stdout.toString());
for (let repo of personal_raw) {
repos.push(repo.full_name);
@@ -53,7 +60,7 @@ function giteaRefresh() {
for (let org of orgs_mtk) {
log.verbose("Gathering projects from '" + org + "'");
- org_projects_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/users/' + org + '/repos', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+ org_projects_raw = JSON.parse(get("/api/v1/users/" + org + "/repos").stdout.toString());
for (let repo of org_projects_raw) {
repos.push(repo.full_name);
@@ -66,7 +73,7 @@ function giteaRefresh() {
thisRepo = {};
log.verbose("Gathering info about " + repo);
- repo_data = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/repos/' + repo, '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+ repo_data = JSON.parse(get('/api/v1/repos/' + repo).stdout.toString());
if (!thisRepo.empty && !thisRepo.private && !thisRepo.internal) {
thisRepo.name = repo_data.full_name.trim() !== "" ? repo_data.full_name : null;
@@ -75,7 +82,7 @@ function giteaRefresh() {
thisRepo.website = repo_data.website.trim() !== "" ? repo_data.website : null;
thisRepo.update = repo_data.updated_at.trim() !== "" ? repo_data.updated_at : null;
- sattelite_data = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/repos/' + repo + '/contents/SatteliteGiteaData.txt', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+ sattelite_data = JSON.parse(get("/api/v1/repos/" + repo + "/contents/SatteliteGiteaData.txt").stdout.toString());
if (!sattelite_data.documentation_url) {
thisRepo.name = Buffer.from(sattelite_data.content, "base64").toString();
diff --git a/server/gitea.old.js b/server/gitea.old.js
new file mode 100644
index 0000000..42ab251
--- /dev/null
+++ b/server/gitea.old.js
@@ -0,0 +1,116 @@
+global.log = require('./log')
+global.serverRoot = __dirname + "/..";
+global.fs = require('fs')
+log.info("Reading configuration...")
+global.config = require('../global/config.json')
+
+log.verbose("Initializing Gitea projects refresh...")
+
+function get(url) {
+ if (require('os').platform() === "win32") {
+ return require('child_process').spawnSync("curl", ["-X", 'GET', url, '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]);
+ } else {
+ return {
+ stdout: require('child_process').execSync("curl -X GET \"" + url + "\" -H \"accept: application/json\" -H \"authorization: Basic " + fs.readFileSync(serverRoot + "/auth.txt") + "\"")
+ }
+ }
+}
+
+function giteaRefresh() {
+ giteaDataTmp = [];
+ repos = [];
+
+ log.info("Refreshing Gitea cache...")
+
+ orgs_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/orgs', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+
+ let orgs = [];
+ for (let org of orgs_raw) {
+ orgs.push(org.username);
+ }
+
+ log.verbose("Found " + orgs.length + " orgs");
+
+ let orgs_mtk = [];
+ for (let org of orgs) {
+ log.verbose("Gathering members of '" + org + "'...");
+ members_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/orgs/' + org + '/members', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+
+ let members = [];
+ for (let member of members_raw) {
+ members.push(member.login);
+ }
+
+ log.verbose("Has " + members.length + " members");
+
+ if (members.includes("minteck")) {
+ log.verbose("Includes Minteck, adding to list");
+ orgs_mtk.push(org);
+ } else {
+ log.verbose("Doesn't include Minteck, not adding to list");
+ }
+ }
+
+ log.verbose("Minteck part of " + orgs_mtk.length + "/" + orgs.length + " orgs, exclusing themself");
+
+ log.verbose("Gathering personal projects");
+ personal_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/users/minteck/repos', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+
+ for (let repo of personal_raw) {
+ repos.push(repo.full_name);
+ }
+
+ for (let org of orgs_mtk) {
+ log.verbose("Gathering projects from '" + org + "'");
+
+ org_projects_raw = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/users/' + org + '/repos', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+
+ for (let repo of org_projects_raw) {
+ repos.push(repo.full_name);
+ }
+ }
+
+ log.verbose("Found " + repos.length + " projects: " + repos.join(", "));
+
+ for (let repo of repos) {
+ thisRepo = {};
+
+ log.verbose("Gathering info about " + repo);
+ repo_data = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/repos/' + repo, '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+
+ if (!thisRepo.empty && !thisRepo.private && !thisRepo.internal) {
+ thisRepo.name = repo_data.full_name.trim() !== "" ? repo_data.full_name : null;
+ thisRepo.icon = repo_data.avatar_url.trim() !== "" ? repo_data.avatar_url : null;
+ thisRepo.size = repo_data.size;
+ thisRepo.website = repo_data.website.trim() !== "" ? repo_data.website : null;
+ thisRepo.update = repo_data.updated_at.trim() !== "" ? repo_data.updated_at : null;
+
+ sattelite_data = JSON.parse(require('child_process').spawnSync("curl", ["-X", 'GET', 'https://source.minteck.org/api/v1/repos/' + repo + '/contents/SatteliteGiteaData.txt', '-H', 'accept: application/json', '-H', 'authorization: Basic ' + fs.readFileSync(serverRoot + "/auth.txt")]).stdout.toString());
+
+ if (!sattelite_data.documentation_url) {
+ thisRepo.name = Buffer.from(sattelite_data.content, "base64").toString();
+ }
+
+ giteaDataTmp.push(thisRepo);
+ }
+ }
+
+ fs.writeFileSync("../global/gitea.json", JSON.stringify(giteaDataTmp, null, 4));
+ log.info("Gitea cache successfully refreshed");
+}
+
+setInterval(() => {
+ try {
+ giteaRefresh()
+ } catch (e) {
+ log.error("Gitea projects refresh failed: " + e.message)
+ }
+}, 3600000)
+
+setTimeout(() => {
+ try {
+ giteaRefresh()
+ } catch (e) {
+ log.error("Gitea projects refresh failed: " + e.message)
+ }
+}, 1000) \ No newline at end of file