News Security

This commit is contained in:
Kamesuta 2021-02-25 10:25:15 +09:00
parent 4cb68127d6
commit 2d159c9dc8
2 changed files with 62 additions and 2 deletions

View File

@ -4,6 +4,7 @@
// Requirements // Requirements
const cp = require('child_process') const cp = require('child_process')
const crypto = require('crypto') const crypto = require('crypto')
const request = require('request')
const {URL} = require('url') const {URL} = require('url')
// Internal Requirements // Internal Requirements
@ -1163,11 +1164,70 @@ document.getElementById('settingsFileSystemButton').onclick = () => {
shell.openPath(CACHE_SETTINGS_MODS_DIR) shell.openPath(CACHE_SETTINGS_MODS_DIR)
} }
/**
* Fetch Notion URL
*/
(async function () {
function joinSession(uuid, accessToken, serverId) {
return new Promise((resolve, reject) => {
request.post('https://sessionserver.mojang.com/session/minecraft/join',
{
json: true,
body: {
selectedProfile: uuid,
accessToken,
serverId
}
},
function (error, response, body) {
if (error) {
logger.error('Error during validation.', error)
reject(error)
} else {
if (response.statusCode === 403) {
resolve(false)
} else {
// 204 if valid
resolve(true)
}
}
})
})
}
function fetchNotionURL(uuid, username) {
return new Promise((resolve, reject) => {
request.post('https://asia-northeast1-kuncraft.cloudfunctions.net/numalauncher-news',
{
json: true,
body: {
uuid,
username
}
},
function (error, response, body) {
if (error) {
logger.error('Error during validation.', error)
reject(error)
} else {
resolve(body.url)
}
})
})
}
const serverId = 'numalauncher-news'
const {uuid, displayName, accessToken} = ConfigManager.getSelectedAccount()
if (await joinSession(uuid, accessToken, serverId)) {
notion.src = await fetchNotionURL(uuid, displayName)
}
})()
/** /**
* Notion injection * Notion injection
*/ */
notion.contentWindow.localStorage.setItem('theme','{"mode":"dark"}') notion.contentWindow.localStorage.setItem('theme','{"mode":"dark"}')
notion.contentWindow.addEventListener('DOMContentLoaded', event => { notion.onload = (() => {
const notionDoc = notion.contentWindow.document const notionDoc = notion.contentWindow.document
// CSS // CSS

View File

@ -10,7 +10,7 @@
<div id="notionContainer"> <div id="notionContainer">
<iframe <iframe
id="notion" id="notion"
src="https://www.notion.so/teamkun/News-be3a005c2c0c461389da5329bba85055" src="about:blank"
allowtransparency="allowtransparency" allowtransparency="allowtransparency"
> >
</iframe> </iframe>