diff --git a/server/package-lock.json b/server/package-lock.json
index a8bf5c3..da9a5c0 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -198,6 +198,15 @@
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ=="
},
+ "axios": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz",
+ "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=",
+ "requires": {
+ "follow-redirects": "^1.3.0",
+ "is-buffer": "^1.1.5"
+ }
+ },
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@@ -1106,6 +1115,24 @@
"write": "^0.2.1"
}
},
+ "follow-redirects": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz",
+ "integrity": "sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==",
+ "requires": {
+ "debug": "=3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -1513,6 +1540,11 @@
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0="
},
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ },
"is-builtin-module": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
diff --git a/server/package.json b/server/package.json
index 55afbd9..63736dd 100644
--- a/server/package.json
+++ b/server/package.json
@@ -7,6 +7,7 @@
},
"author": "QuantumStack",
"dependencies": {
+ "axios": "^0.18.0",
"body-parser": "^1.18.3",
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
diff --git a/server/routes/admin.js b/server/routes/admin.js
index 337b14f..c945a40 100644
--- a/server/routes/admin.js
+++ b/server/routes/admin.js
@@ -4,6 +4,7 @@ const json2csv = require('json2csv').parse;
const User = require('./../models/User');
const Entry = require('./../models/Entry');
const adminRequired = require('./../util/adminRequired');
+const version = require('./../util/version');
const router = express.Router();
@@ -17,6 +18,7 @@ router.get('/lab', adminRequired, (req, res) => {
course: process.env.CMULAB_COURSE,
loc: process.env.CMULAB_LOC,
isLab: true,
+ version: version(),
});
});
@@ -25,6 +27,7 @@ router.get('/csv', adminRequired, (req, res) => {
course: process.env.CMULAB_COURSE,
loc: process.env.CMULAB_LOC,
isCsv: true,
+ version: version(),
});
});
@@ -33,6 +36,7 @@ router.get('/delete', adminRequired, (req, res) => {
course: process.env.CMULAB_COURSE,
loc: process.env.CMULAB_LOC,
isDelete: true,
+ version: version(),
});
});
@@ -44,6 +48,7 @@ router.get('/users', adminRequired, (req, res, next) => {
loc: process.env.CMULAB_LOC,
isUsers: true,
users,
+ version: version(),
});
});
});
diff --git a/server/util/version.js b/server/util/version.js
new file mode 100644
index 0000000..9b43695
--- /dev/null
+++ b/server/util/version.js
@@ -0,0 +1,22 @@
+const axios = require('axios');
+
+const current = 'v1.0';
+let latest;
+
+function check() {
+ axios.get('https://api.github.com/repos/QuantumStack/CMULab/releases')
+ .then((res) => {
+ latest = res.data[0].tag_name;
+ })
+ .catch(() => {
+ latest = current;
+ });
+}
+
+check();
+setInterval(check, 86400000);
+
+module.exports = () => {
+ if (current === latest) return { update: false };
+ return { update: true, latest, current };
+};
diff --git a/server/views/admin.hbs b/server/views/admin.hbs
index 5ef6767..fac3d6b 100644
--- a/server/views/admin.hbs
+++ b/server/views/admin.hbs
@@ -1,6 +1,22 @@
CMULab {{course}}
-
+
+{{#if version.update}}
+
+
+
+
+
+ QuantumStack has released a
new version of CMULab. You are currently using {{version.current}}, but
{{version.latest}} is now available. Please visit our
GitHub repository to download the update and deploy it onto your CMULab instance. Go to the
release page to see what's new.
+
+
+
+
+{{else}}
+
+{{/if}}