mirror of
https://github.com/PretendoNetwork/juxtaposition-ui.git
synced 2026-09-09 09:55:33 -05:00
Added check to bypass auth for the cdn
This commit is contained in:
committed by
jay.poff@outlook.com
parent
11be7687d5
commit
9fb074bf3d
@@ -2,27 +2,55 @@ const config = require('../config.json');
|
||||
const util = require('../authentication');
|
||||
|
||||
function auth(request, response, next) {
|
||||
if(!request.headers["x-nintendo-parampack"] || !request.headers["x-nintendo-servicetoken"]) {
|
||||
return response.render('console/ban_notification.ejs', {
|
||||
user: null,
|
||||
error: "Missing auth headers"
|
||||
});
|
||||
if(request.path.includes('/css/') || request.path.includes('/fonts/')
|
||||
|| request.path.includes('/js/') || request.path.includes('/icons/') || request.path.includes('/banner/')) {
|
||||
request.directory = request.subdomains[1];
|
||||
return next()
|
||||
}
|
||||
|
||||
if(request.subdomains.indexOf('admin') !== -1) {
|
||||
if(request.path === '/login' || request.path === '/token' || request.path === '/favicon.ico') {
|
||||
return next()
|
||||
}
|
||||
else {
|
||||
if(request.cookies.token === undefined || request.cookies.token === null)
|
||||
{
|
||||
return response.redirect('/login');
|
||||
}
|
||||
let pid = util.data.processServiceToken(request.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
return response.redirect('/login');
|
||||
}
|
||||
else {
|
||||
request.pid = pid;
|
||||
return next();
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
let pid = util.data.processServiceToken(request.headers["x-nintendo-servicetoken"]);
|
||||
let paramPackData = util.data.decodeParamPack(request.headers["x-nintendo-parampack"]);
|
||||
if(pid === null)
|
||||
return response.render('console/ban_notification.ejs', {
|
||||
if(!request.headers["x-nintendo-parampack"] || !request.headers["x-nintendo-servicetoken"]) {
|
||||
return response.render('portal/ban_notification.ejs', {
|
||||
user: null,
|
||||
error: "Unable to parse service token. Are you using a NNID?"
|
||||
error: "Missing auth headers"
|
||||
});
|
||||
}
|
||||
else {
|
||||
response.header('X-Nintendo-WhiteList', config.whitelist);
|
||||
request.lang = util.data.processLanguage(request.headers["x-nintendo-parampack"]);
|
||||
request.pid = pid;
|
||||
request.paramPackData = paramPackData;
|
||||
request.directory = request.subdomains[1];
|
||||
return next();
|
||||
let pid = util.data.processServiceToken(request.headers["x-nintendo-servicetoken"]);
|
||||
let paramPackData = util.data.decodeParamPack(request.headers["x-nintendo-parampack"]);
|
||||
if(pid === null)
|
||||
return response.render('portal/ban_notification.ejs', {
|
||||
user: null,
|
||||
error: "Unable to parse service token. Are you using a NNID?"
|
||||
});
|
||||
else {
|
||||
response.header('X-Nintendo-WhiteList', config.whitelist);
|
||||
request.lang = util.data.processLanguage(request.headers["x-nintendo-parampack"]);
|
||||
request.pid = pid;
|
||||
request.paramPackData = paramPackData;
|
||||
request.directory = request.subdomains[1];
|
||||
return next();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,8 @@ const endpointSchema = new Schema({
|
||||
api_host: String,
|
||||
portal_host: String,
|
||||
n3ds_host: String
|
||||
}
|
||||
},
|
||||
guest: Boolean,
|
||||
});
|
||||
|
||||
endpointSchema.methods.updateHosts = async function({host, api_host, portal_host, n3ds_host}) {
|
||||
@@ -19,6 +20,11 @@ endpointSchema.methods.updateHosts = async function({host, api_host, portal_host
|
||||
await this.save();
|
||||
};
|
||||
|
||||
endpointSchema.methods.updateGuest = async function(mode) {
|
||||
this.set('guest', mode);
|
||||
await this.save();
|
||||
}
|
||||
|
||||
const ENDPOINT = model('ENDPOINT', endpointSchema);
|
||||
|
||||
module.exports = {
|
||||
|
||||
@@ -3,6 +3,7 @@ const express = require('express');
|
||||
const morgan = require('morgan');
|
||||
const ejs = require('ejs');
|
||||
const xmlparser = require('./middleware/xml-parser');
|
||||
const cookieParser = require('cookie-parser');
|
||||
const auth = require('./middleware/auth');
|
||||
const database = require('./database');
|
||||
const logger = require('./logger');
|
||||
@@ -29,6 +30,7 @@ app.use(express.urlencoded({
|
||||
parameterLimit: 100000
|
||||
}));
|
||||
app.use(xmlparser);
|
||||
app.use(cookieParser());
|
||||
app.use(auth);
|
||||
|
||||
|
||||
|
||||
@@ -12,656 +12,384 @@ const snowflake = require('node-snowflake').Snowflake;
|
||||
var storage = multer.memoryStorage();
|
||||
var upload = multer({ storage: storage });
|
||||
|
||||
router.get('/communities/all', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
res.send(await database.getCommunities(-1))
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
router.get('/communities/all', async function(req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
if(user !== null)
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
res.send(await database.getCommunities(-1))
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.get('/communities/:communityID', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
res.send(await database.getCommunityByID(req.params.communityID))
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
router.get('/communities/:communityID', async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
if(user !== null)
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
res.send(await database.getCommunityByID(req.params.communityID))
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.post('/communities/:communityID/delete', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to delete a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
|
||||
let community = await database.getCommunityByID(req.params.communityID);
|
||||
if(community !== null) {
|
||||
community.delete().then(err => function () {
|
||||
res.send(err);
|
||||
});
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] deleted community ' + community.name);
|
||||
}
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
router.post('/communities/:communityID/delete', async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
if(user !== null)
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to delete a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
let community = await database.getCommunityByID(req.params.communityID);
|
||||
if(community !== null) {
|
||||
community.delete().then(err => function () {
|
||||
res.send(err);
|
||||
});
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] deleted community ' + community.name);
|
||||
}
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.post('/communities/:communityID/update', upload.fields([{name: 'browserIcon', maxCount: 1}, { name: 'CTRbrowserHeader', maxCount: 1}, { name: 'WiiUbrowserHeader', maxCount: 1}]), function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
router.post('/communities/:communityID/update', upload.fields([{name: 'browserIcon', maxCount: 1}, { name: 'CTRbrowserHeader', maxCount: 1}, { name: 'WiiUbrowserHeader', maxCount: 1}]), async function(req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to update a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
const community = await database.getCommunityByID(req.params.communityID);
|
||||
const files = JSON.parse(JSON.stringify(req.files));
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
if(req.body.name && community.name !== req.body.name)
|
||||
community.name = req.body.name;
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to update a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
if(req.body.description && community.description !== req.body.description)
|
||||
community.description = req.body.description;
|
||||
|
||||
const community = await database.getCommunityByID(req.params.communityID);
|
||||
const files = JSON.parse(JSON.stringify(req.files));
|
||||
|
||||
if(req.body.name && community.name !== req.body.name)
|
||||
community.name = req.body.name;
|
||||
|
||||
if(req.body.description && community.description !== req.body.description)
|
||||
community.description = req.body.description;
|
||||
|
||||
if(req.body.title_ids[0] !== community.title_ids[0] && req.body.title_ids[1] !== community.title_ids[1] && req.body.title_ids[2] !== community.title_ids[2]
|
||||
if(req.body.title_ids[0] !== community.title_ids[0] && req.body.title_ids[1] !== community.title_ids[1] && req.body.title_ids[2] !== community.title_ids[2]
|
||||
&& req.body.title_ids[0] !== '' && req.body.title_ids[1] !== '' && req.body.title_ids[2] !== '') {
|
||||
community.title_id = req.body.title_ids;
|
||||
community.title_ids = req.body.title_ids;
|
||||
}
|
||||
|
||||
if(req.body.icon && community.icon !== req.body.icon)
|
||||
community.icon = req.body.icon;
|
||||
|
||||
if(req.files.browserIcon) {
|
||||
community.browser_icon = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
community.browser_thumbnail = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
}
|
||||
if(req.files.CTRbrowserHeader)
|
||||
community.CTR_browser_header = `data:image/png;base64,${req.files.CTRbrowserHeader[0].buffer.toString('base64')}`;
|
||||
|
||||
if(req.files.WiiUbrowserHeader)
|
||||
community.WiiU_browser_header = `data:image/png;base64,${req.files.WiiUbrowserHeader[0].buffer.toString('base64')}`;
|
||||
|
||||
if(req.body.is_recommended)
|
||||
community.is_recommended = req.body.is_recommended;
|
||||
|
||||
if(req.body.has_shop_page)
|
||||
community.has_shop_page = req.body.has_shop_page;
|
||||
|
||||
if(req.body.platform_id)
|
||||
community.platform_id = req.body.platform_id;
|
||||
|
||||
community.save();
|
||||
res.sendStatus(200);
|
||||
util.data.refreshCache();
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] updated community ' + community.name);
|
||||
community.title_id = req.body.title_ids;
|
||||
community.title_ids = req.body.title_ids;
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
});
|
||||
if(req.body.icon && community.icon !== req.body.icon)
|
||||
community.icon = req.body.icon;
|
||||
|
||||
router.post('/communities/new', upload.fields([{name: 'browserIcon', maxCount: 1}, { name: 'CTRbrowserHeader', maxCount: 1}, { name: 'WiiUbrowserHeader', maxCount: 1}]), function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to create a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
JSON.parse(JSON.stringify(req.files));
|
||||
let browserIcon, CTRHeader, WiiUHeader, thumb;
|
||||
if(req.files.browserIcon) {
|
||||
browserIcon = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
thumb = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
}
|
||||
if(req.files.CTRbrowserHeader)
|
||||
CTRHeader = `data:image/png;base64,${req.files.CTRbrowserHeader[0].buffer.toString('base64')}`;
|
||||
|
||||
if(req.files.WiiUbrowserHeader)
|
||||
WiiUHeader = `data:image/png;base64,${req.files.WiiUbrowserHeader[0].buffer.toString('base64')}`;
|
||||
const document = {
|
||||
empathy_count: 0,
|
||||
id: snowflake.nextId(),
|
||||
has_shop_page: req.body.has_shop_page,
|
||||
platform_id: req.body.platform_ID,
|
||||
icon: req.body.icon,
|
||||
created_at: moment(new Date()),
|
||||
title_ids: req.body.title_ids,
|
||||
title_id: req.body.title_ids,
|
||||
community_id: snowflake.nextId(),
|
||||
is_recommended: req.body.is_recommended,
|
||||
name: req.body.name,
|
||||
browser_icon: `data:image/png;base64,${browserIcon.toString('base64')}`,
|
||||
CTR_browser_header: `data:image/png;base64,${CTRHeader.toString('base64')}`,
|
||||
WiiU_browser_header: `data:image/png;base64,${WiiUHeader.toString('base64')}`,
|
||||
browser_thumbnail: `data:image/png;base64,${thumb.toString('base64')}`,
|
||||
description: req.body.description,
|
||||
};
|
||||
const newCommunity = new COMMUNITY(document);
|
||||
newCommunity.save();
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] created community ' + newCommunity.name);
|
||||
if(req.files.browserIcon) {
|
||||
community.browser_icon = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
community.browser_thumbnail = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
if(req.files.CTRbrowserHeader)
|
||||
community.CTR_browser_header = `data:image/png;base64,${req.files.CTRbrowserHeader[0].buffer.toString('base64')}`;
|
||||
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
});
|
||||
if(req.files.WiiUbrowserHeader)
|
||||
community.WiiU_browser_header = `data:image/png;base64,${req.files.WiiUbrowserHeader[0].buffer.toString('base64')}`;
|
||||
|
||||
router.post('/communities/:communityID/sub/new', upload.fields([{name: 'browserIcon', maxCount: 1}, { name: 'CTRbrowserHeader', maxCount: 1}, { name: 'WiiUbrowserHeader', maxCount: 1}]), function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
if(req.body.is_recommended)
|
||||
community.is_recommended = req.body.is_recommended;
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(req.body.has_shop_page)
|
||||
community.has_shop_page = req.body.has_shop_page;
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
if(req.body.platform_id)
|
||||
community.platform_id = req.body.platform_id;
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to create a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
const community = await database.getCommunityByID(req.params.communityID);
|
||||
let browserIcon, CTRHeader, WiiUHeader, thumb;
|
||||
if(req.files.browserIcon) {
|
||||
browserIcon = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
}
|
||||
else {
|
||||
browserIcon = community.browser_icon;
|
||||
thumb = community.browser_thumbnail;
|
||||
}
|
||||
if(req.files.CTRbrowserHeader)
|
||||
CTRHeader = `data:image/png;base64,${req.files.CTRbrowserHeader[0].buffer.toString('base64')}`;
|
||||
else
|
||||
CTRHeader = community.CTR_browser_header;
|
||||
if(req.files.WiiUbrowserHeader)
|
||||
WiiUHeader = `data:image/png;base64,${req.files.WiiUbrowserHeader[0].buffer.toString('base64')}`;
|
||||
else
|
||||
WiiUHeader = community.WiiU_browser_header;
|
||||
JSON.parse(JSON.stringify(req.files));
|
||||
const document = {
|
||||
name: req.body.name,
|
||||
description: req.body.description,
|
||||
parent: req.body.parent,
|
||||
type: req.body.type,
|
||||
empathy_count: 0,
|
||||
id: snowflake.nextId(),
|
||||
has_shop_page: req.body.has_shop_page,
|
||||
platform_id: req.body.platform_ID,
|
||||
icon: req.body.icon,
|
||||
created_at: moment(new Date()),
|
||||
title_ids: req.body.title_ids,
|
||||
title_id: req.body.title_ids,
|
||||
community_id: snowflake.nextId(),
|
||||
is_recommended: req.body.is_recommended,
|
||||
browser_icon: browserIcon,
|
||||
browser_thumbnail: thumb,
|
||||
CTR_browser_header: CTRHeader,
|
||||
WiiU_browser_header: WiiUHeader,
|
||||
};
|
||||
const newCommunity = new COMMUNITY(document);
|
||||
newCommunity.save();
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] created community ' + newCommunity.name);
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/discovery/update', upload.none(), function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
let endpoint = await database.getServerConfig();
|
||||
endpoint.has_error = req.body.has_error;
|
||||
endpoint.save();
|
||||
res.send(endpoint);
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/users/all', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
res.send(await database.getUsers(-1))
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/users/loadPosts', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let post = await database.getPostByID(req.query.postID);
|
||||
let newPosts = await database.getUserPostsAfterTimestamp(post, 5);
|
||||
let communityMap = await util.data.getCommunityHash();
|
||||
if(newPosts.length > 0)
|
||||
{
|
||||
res.render('console/more_posts.ejs', {
|
||||
communityMap: communityMap,
|
||||
moment: moment,
|
||||
user: user,
|
||||
newPosts: newPosts,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
res.sendStatus(204);
|
||||
}
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/users/:userID', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
res.send(await database.getUserByPID(req.params.userID))
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/users/:userID/update', upload.none(), function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let parentUser = await database.getUserByPID(pid);
|
||||
let user = await database.getUserByPID(req.params.userID);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(parentUser.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
user.account_status = req.body.account_status;
|
||||
user.ban_reason = req.body.ban_reason;
|
||||
user.ban_lift_date = moment(req.body.ban_date);
|
||||
user.save();
|
||||
res.sendStatus(200);
|
||||
util.data.refreshCache();
|
||||
logger.audit('[' + parentUser.user_id + ' - ' + parentUser.pid + '] banned ' + user.user_id + ' until ' + user.ban_lift_date + ' for ' + user.ban_reason);
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/posts/:postID/delete', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
|
||||
if(pid === null)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to delete a post and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
|
||||
let post = await database.getPostByID(req.params.postID);
|
||||
if(post !== null) {
|
||||
post.delete().then(err => function () {
|
||||
res.send(err);
|
||||
});
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] deleted post by ' + post.screen_name);
|
||||
}
|
||||
else
|
||||
res.sendStatus(404)
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/notifications', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
await database.pushNewNotificationToAll('Testing a system wide notification and linking to a post', '/users/me')
|
||||
community.save();
|
||||
res.sendStatus(200);
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
util.data.refreshCache();
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] updated community ' + community.name);
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.post('/posts/new', upload.none(), function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
throw new Error('No service token supplied');
|
||||
router.post('/communities/new', upload.fields([{name: 'browserIcon', maxCount: 1}, { name: 'CTRbrowserHeader', maxCount: 1}, { name: 'WiiUbrowserHeader', maxCount: 1}]), async function(req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to create a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
JSON.parse(JSON.stringify(req.files));
|
||||
let browserIcon, CTRHeader, WiiUHeader, thumb;
|
||||
if(req.files.browserIcon) {
|
||||
browserIcon = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
thumb = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
}
|
||||
if(req.files.CTRbrowserHeader)
|
||||
CTRHeader = `data:image/png;base64,${req.files.CTRbrowserHeader[0].buffer.toString('base64')}`;
|
||||
|
||||
if(pid === null)
|
||||
if(req.files.WiiUbrowserHeader)
|
||||
WiiUHeader = `data:image/png;base64,${req.files.WiiUbrowserHeader[0].buffer.toString('base64')}`;
|
||||
const document = {
|
||||
empathy_count: 0,
|
||||
id: snowflake.nextId(),
|
||||
has_shop_page: req.body.has_shop_page,
|
||||
platform_id: req.body.platform_ID,
|
||||
icon: req.body.icon,
|
||||
created_at: moment(new Date()),
|
||||
title_ids: req.body.title_ids,
|
||||
title_id: req.body.title_ids,
|
||||
community_id: snowflake.nextId(),
|
||||
is_recommended: req.body.is_recommended,
|
||||
name: req.body.name,
|
||||
browser_icon: `data:image/png;base64,${browserIcon.toString('base64')}`,
|
||||
CTR_browser_header: `data:image/png;base64,${CTRHeader.toString('base64')}`,
|
||||
WiiU_browser_header: `data:image/png;base64,${WiiUHeader.toString('base64')}`,
|
||||
browser_thumbnail: `data:image/png;base64,${thumb.toString('base64')}`,
|
||||
description: req.body.description,
|
||||
};
|
||||
const newCommunity = new COMMUNITY(document);
|
||||
newCommunity.save();
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] created community ' + newCommunity.name);
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.post('/communities/:communityID/sub/new', upload.fields([{name: 'browserIcon', maxCount: 1}, { name: 'CTRbrowserHeader', maxCount: 1}, { name: 'WiiUbrowserHeader', maxCount: 1}]), async function(req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to create a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
const community = await database.getCommunityByID(req.params.communityID);
|
||||
let browserIcon, CTRHeader, WiiUHeader, thumb;
|
||||
if(req.files.browserIcon) {
|
||||
browserIcon = `data:image/png;base64,${req.files.browserIcon[0].buffer.toString('base64')}`;
|
||||
}
|
||||
else {
|
||||
browserIcon = community.browser_icon;
|
||||
thumb = community.browser_thumbnail;
|
||||
}
|
||||
if(req.files.CTRbrowserHeader)
|
||||
CTRHeader = `data:image/png;base64,${req.files.CTRbrowserHeader[0].buffer.toString('base64')}`;
|
||||
else
|
||||
CTRHeader = community.CTR_browser_header;
|
||||
if(req.files.WiiUbrowserHeader)
|
||||
WiiUHeader = `data:image/png;base64,${req.files.WiiUbrowserHeader[0].buffer.toString('base64')}`;
|
||||
else
|
||||
WiiUHeader = community.WiiU_browser_header;
|
||||
JSON.parse(JSON.stringify(req.files));
|
||||
const document = {
|
||||
name: req.body.name,
|
||||
description: req.body.description,
|
||||
parent: req.body.parent,
|
||||
type: req.body.type,
|
||||
empathy_count: 0,
|
||||
id: snowflake.nextId(),
|
||||
has_shop_page: req.body.has_shop_page,
|
||||
platform_id: req.body.platform_ID,
|
||||
icon: req.body.icon,
|
||||
created_at: moment(new Date()),
|
||||
title_ids: req.body.title_ids,
|
||||
title_id: req.body.title_ids,
|
||||
community_id: snowflake.nextId(),
|
||||
is_recommended: req.body.is_recommended,
|
||||
browser_icon: browserIcon,
|
||||
browser_thumbnail: thumb,
|
||||
CTR_browser_header: CTRHeader,
|
||||
WiiU_browser_header: WiiUHeader,
|
||||
};
|
||||
const newCommunity = new COMMUNITY(document);
|
||||
newCommunity.save();
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] created community ' + newCommunity.name);
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.post('/discovery/update', upload.none(), async function(req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
let endpoint = await database.getServerConfig();
|
||||
endpoint.has_error = req.body.has_error;
|
||||
endpoint.save();
|
||||
res.send(endpoint);
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.get('/users/all', async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let user = await database.getUserByPID(pid);
|
||||
res.send(await database.getUsers(-1))
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
if(user !== null)
|
||||
router.get('/users/loadPosts', async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
let post = await database.getPostByID(req.query.postID);
|
||||
let newPosts = await database.getUserPostsAfterTimestamp(post, 5);
|
||||
let communityMap = await util.data.getCommunityHash();
|
||||
if(newPosts.length > 0)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to create a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
let community = await database.getCommunityByID(req.body.olive_community_id);
|
||||
let appData = "";
|
||||
if (req.body.app_data) {
|
||||
appData = req.body.app_data.replace(/\0/g, "").trim();
|
||||
}
|
||||
let painting = "", paintingURI = "";
|
||||
if (req.body.painting && req.body.painting !== 'eJztwTEBACAMA7DCNRlIQRbu4ZoEviTJTNvjZNUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL55fYLL3w==') {
|
||||
painting = req.body.painting.replace(/\0/g, "").trim();
|
||||
paintingURI = await util.data.processPainting(painting);
|
||||
}
|
||||
let screenshot = "";
|
||||
if (req.body.screenshot) {
|
||||
screenshot = req.body.screenshot.replace(/\0/g, "").trim();
|
||||
}
|
||||
const document = {
|
||||
title_id: community.title_id[0],
|
||||
community_id: community.community_id,
|
||||
screen_name: user.user_id,
|
||||
body: req.body.body,
|
||||
app_data: appData,
|
||||
painting: painting,
|
||||
painting_uri: paintingURI,
|
||||
screenshot: screenshot,
|
||||
country_id: 49,
|
||||
created_at: new Date(),
|
||||
feeling_id: req.body.emotion,
|
||||
id: snowflake.nextId(),
|
||||
is_autopost: req.body.is_autopost,
|
||||
is_spoiler: req.body.is_spoiler,
|
||||
is_app_jumpable: req.body.is_app_jumpable,
|
||||
language_id: req.body.language_id,
|
||||
mii: user.mii,
|
||||
mii_face_url: user.pfp_uri,
|
||||
pid: pid,
|
||||
platform_id: 0,
|
||||
region_id: 2,
|
||||
verified: user.official
|
||||
};
|
||||
const newPost = new POST(document);
|
||||
newPost.save();
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] created community ' + newCommunity.name);
|
||||
res.render('console/more_posts.ejs', {
|
||||
communityMap: communityMap,
|
||||
moment: moment,
|
||||
user: user,
|
||||
newPosts: newPosts,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
{
|
||||
res.sendStatus(204);
|
||||
}
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
}).catch(error =>
|
||||
router.get('/users/:userID', async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
res.statusCode = 400;
|
||||
let response = {
|
||||
error_code: 400,
|
||||
message: error.message
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
|
||||
res.send(await database.getUserByPID(req.params.userID))
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.post('/users/:userID/update', upload.none(), async function(req, res) {
|
||||
let parentUser = await database.getUserByPID(req.pid);
|
||||
let user = await database.getUserByPID(req.params.userID);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(parentUser.pid) === -1)
|
||||
throw new Error('Invalid credentials supplied');
|
||||
user.account_status = req.body.account_status;
|
||||
user.ban_reason = req.body.ban_reason;
|
||||
user.ban_lift_date = moment(req.body.ban_date);
|
||||
user.save();
|
||||
res.sendStatus(200);
|
||||
util.data.refreshCache();
|
||||
logger.audit('[' + parentUser.user_id + ' - ' + parentUser.pid + '] banned ' + user.user_id + ' until ' + user.ban_lift_date + ' for ' + user.ban_reason);
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.post('/posts/:postID/delete', async function(req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to delete a post and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
let post = await database.getPostByID(req.params.postID);
|
||||
if(post !== null) {
|
||||
post.delete().then(err => function () {
|
||||
res.send(err);
|
||||
});
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] deleted post by ' + post.screen_name);
|
||||
}
|
||||
else
|
||||
res.sendStatus(404)
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
router.get('/notifications', async function(req, res) {
|
||||
await database.pushNewNotificationToAll('Testing a system wide notification and linking to a post', '/users/me')
|
||||
res.sendStatus(200);
|
||||
});
|
||||
|
||||
router.post('/posts/new', upload.none(), async function(req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
|
||||
if(user !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to create a community and is not authorized');
|
||||
throw new Error('Invalid credentials supplied');
|
||||
}
|
||||
let community = await database.getCommunityByID(req.body.olive_community_id);
|
||||
let appData = "";
|
||||
if (req.body.app_data) {
|
||||
appData = req.body.app_data.replace(/\0/g, "").trim();
|
||||
}
|
||||
let painting = "", paintingURI = "";
|
||||
if (req.body.painting && req.body.painting !== 'eJztwTEBACAMA7DCNRlIQRbu4ZoEviTJTNvjZNUFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL55fYLL3w==') {
|
||||
painting = req.body.painting.replace(/\0/g, "").trim();
|
||||
paintingURI = await util.data.processPainting(painting);
|
||||
}
|
||||
let screenshot = "";
|
||||
if (req.body.screenshot) {
|
||||
screenshot = req.body.screenshot.replace(/\0/g, "").trim();
|
||||
}
|
||||
const document = {
|
||||
title_id: community.title_id[0],
|
||||
community_id: community.community_id,
|
||||
screen_name: user.user_id,
|
||||
body: req.body.body,
|
||||
app_data: appData,
|
||||
painting: painting,
|
||||
painting_uri: paintingURI,
|
||||
screenshot: screenshot,
|
||||
country_id: 49,
|
||||
created_at: new Date(),
|
||||
feeling_id: req.body.emotion,
|
||||
id: snowflake.nextId(),
|
||||
is_autopost: req.body.is_autopost,
|
||||
is_spoiler: req.body.is_spoiler,
|
||||
is_app_jumpable: req.body.is_app_jumpable,
|
||||
language_id: req.body.language_id,
|
||||
mii: user.mii,
|
||||
mii_face_url: user.pfp_uri,
|
||||
pid: pid,
|
||||
platform_id: 0,
|
||||
region_id: 2,
|
||||
verified: user.official
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
const newPost = new POST(document);
|
||||
newPost.save();
|
||||
res.sendStatus(200);
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] created community ' + newCommunity.name);
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
@@ -11,45 +11,13 @@ var multer = require('multer');
|
||||
var upload = multer({ dest: 'uploads/' });
|
||||
var router = express.Router();
|
||||
|
||||
var cookieParser = require('cookie-parser');
|
||||
router.use(cookieParser());
|
||||
|
||||
router.get('/', upload.none(), function (req, res) {
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
res.render('admin/admin_home.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8)
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
router.get('/', upload.none(), async function (req, res) {
|
||||
console.log(req.cookies.token)
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
res.render('admin/admin_home.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8)
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/css/juxt.css', function (req, res) {
|
||||
@@ -60,633 +28,215 @@ router.get('/favicon.ico', function (req, res) {
|
||||
res.sendFile('css/favicon.ico', {root: path.join(__dirname, '../../../../webfiles/console/')});
|
||||
});
|
||||
|
||||
router.get('/icons/:image_id.png', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
let community = await database.getCommunityByID(req.params.image_id.toString());
|
||||
if(community !== null) {
|
||||
if(community.browser_icon.indexOf('data:image/png;base64,') !== -1)
|
||||
res.send(Buffer.from(community.browser_icon.replace('data:image/png;base64,',''), 'base64'));
|
||||
router.get('/icons/:image_id.png', async function (req, res) {
|
||||
let community = await database.getCommunityByID(req.params.image_id.toString());
|
||||
if(community !== null) {
|
||||
if(community.browser_icon.indexOf('data:image/png;base64,') !== -1)
|
||||
res.send(Buffer.from(community.browser_icon.replace('data:image/png;base64,',''), 'base64'));
|
||||
else
|
||||
res.send(Buffer.from(community.browser_icon, 'base64'));
|
||||
}
|
||||
else {
|
||||
let user = await database.getUserByPID(req.params.image_id.toString());
|
||||
if(user !== null)
|
||||
if(user.pfp_uri.indexOf('data:image/png;base64,') !== -1)
|
||||
res.send(Buffer.from(user.pfp_uri.replace('data:image/png;base64,',''), 'base64'));
|
||||
else
|
||||
res.send(Buffer.from(community.browser_icon, 'base64'));
|
||||
}
|
||||
else {
|
||||
let user = await database.getUserByPID(req.params.image_id.toString());
|
||||
if(user !== null)
|
||||
if(user.pfp_uri.indexOf('data:image/png;base64,') !== -1)
|
||||
res.send(Buffer.from(user.pfp_uri.replace('data:image/png;base64,',''), 'base64'));
|
||||
else
|
||||
res.send(Buffer.from(user.pfp_uri, 'base64'));
|
||||
else
|
||||
res.sendStatus(404);
|
||||
}
|
||||
}).catch(error => {
|
||||
console.error(error);
|
||||
res.sendStatus(404)
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/banner/:image_id.png', function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
let community = await database.getCommunityByID(req.params.image_id.toString());
|
||||
if(community !== null)
|
||||
if(community.WiiU_browser_header.indexOf('data:image/png;base64,') !== -1)
|
||||
res.send(Buffer.from(community.WiiU_browser_header.replace('data:image/png;base64,',''), 'base64'));
|
||||
else
|
||||
res.send(Buffer.from(community.WiiU_browser_header, 'base64'));
|
||||
res.send(Buffer.from(user.pfp_uri, 'base64'));
|
||||
else
|
||||
res.sendStatus(404);
|
||||
}).catch(error => {
|
||||
console.error(error);
|
||||
res.sendStatus(404)
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/banner/:image_id.png', async function (req, res) {
|
||||
let community = await database.getCommunityByID(req.params.image_id.toString());
|
||||
if(community !== null)
|
||||
if(community.WiiU_browser_header.indexOf('data:image/png;base64,') !== -1)
|
||||
res.send(Buffer.from(community.WiiU_browser_header.replace('data:image/png;base64,',''), 'base64'));
|
||||
else
|
||||
res.send(Buffer.from(community.WiiU_browser_header, 'base64'));
|
||||
else
|
||||
res.sendStatus(404);
|
||||
});
|
||||
|
||||
router.get('/discovery', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
res.render('admin/admin_discovery.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/discovery', upload.none(), function (req, res) {
|
||||
router.get('/communities', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
let communities = await database.getCommunities(100)
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
res.render('admin/admin_discovery.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
res.render('admin/admin_communities.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
communities: communities,
|
||||
moment: moment,
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/communities', upload.none(), function (req, res) {
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
let communities = await database.getCommunities(100)
|
||||
|
||||
res.render('admin/admin_communities.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
communities: communities,
|
||||
moment: moment,
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
router.get('/audit', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
res.render('admin/admin_audit.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/audit', upload.none(), function (req, res) {
|
||||
router.get('/announcements', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
let community = await database.getCommunityByID('announcements');
|
||||
let newPosts = await database.getNewPostsByCommunity(community, 100);
|
||||
let totalNumPosts = await database.getTotalPostsByCommunity(community);
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
res.render('admin/admin_audit.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
res.render('admin/admin_announcements.ejs', {
|
||||
community: community,
|
||||
newPosts: newPosts,
|
||||
totalNumPosts: totalNumPosts,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/announcements', upload.none(), function (req, res) {
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
let community = await database.getCommunityByID('announcements');
|
||||
let newPosts = await database.getNewPostsByCommunity(community, 100);
|
||||
let totalNumPosts = await database.getTotalPostsByCommunity(community);
|
||||
|
||||
res.render('admin/admin_announcements.ejs', {
|
||||
community: community,
|
||||
newPosts: newPosts,
|
||||
totalNumPosts: totalNumPosts,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/communities/new', upload.none(), function (req, res) {
|
||||
router.get('/communities/new', upload.none(), async function (req, res) {
|
||||
var communityID = req.query.CID;
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
res.render('admin/admin_new_community.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
communityID: communityID
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
res.render('admin/admin_new_community.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
communityID: communityID
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/communities/:communityID', upload.none(), function (req, res) {
|
||||
router.get('/communities/:communityID', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
let community = await database.getCommunityByID(req.params.communityID.toString());
|
||||
let newPosts = await database.getNewPostsByCommunity(community, 100);
|
||||
let totalNumPosts = await database.getTotalPostsByCommunity(community);
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
let community = await database.getCommunityByID(req.params.communityID.toString());
|
||||
let newPosts = await database.getNewPostsByCommunity(community, 100);
|
||||
let totalNumPosts = await database.getTotalPostsByCommunity(community);
|
||||
|
||||
res.render('admin/admin_community.ejs', {
|
||||
community: community,
|
||||
newPosts: newPosts,
|
||||
totalNumPosts: totalNumPosts,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/communities/:communityID/edit', upload.none(), function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
let community = await database.getCommunityByID(req.params.communityID.toString());
|
||||
res.render('admin/admin_edit_community.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
community: community,
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
res.render('admin/admin_community.ejs', {
|
||||
community: community,
|
||||
newPosts: newPosts,
|
||||
totalNumPosts: totalNumPosts,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/communities/:communityID/sub', upload.none(), function (req, res) {
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
let communities = await database.getSubCommunities(req.params.communityID.toString());
|
||||
|
||||
res.render('admin/admin_sub_communities.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
communities: communities,
|
||||
moment: moment,
|
||||
communityID: req.params.communityID.toString()
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/communities/:communityID/sub/new', upload.none(), function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
let community = await database.getCommunityByID(req.params.communityID.toString());
|
||||
res.render('admin/admin_edit_sub_community.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
community: community,
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
router.get('/communities/:communityID/edit', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
let community = await database.getCommunityByID(req.params.communityID.toString());
|
||||
res.render('admin/admin_edit_community.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
community: community,
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/users', upload.none(), function (req, res) {
|
||||
router.get('/communities/:communityID/sub', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
let communities = await database.getSubCommunities(req.params.communityID.toString());
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
let users = await database.getUsers(100);
|
||||
res.render('admin/admin_users.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
users: users,
|
||||
moment: moment
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
res.render('admin/admin_sub_communities.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
communities: communities,
|
||||
moment: moment,
|
||||
communityID: req.params.communityID.toString()
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/users/:userID', upload.none(), function (req, res) {
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(req.params.userID);
|
||||
let parentUser = await database.getUserByPID(pid)
|
||||
if(user === null)
|
||||
res.sendStatus(404);
|
||||
let newPosts = await database.getNumberUserPostsByID(req.params.userID, 50);
|
||||
let numPosts = await database.getTotalPostsByUserID(req.params.userID);
|
||||
let communityMap = await util.data.getCommunityHash();
|
||||
|
||||
res.render('admin/admin_user.ejs', {
|
||||
communityMap: communityMap,
|
||||
moment: moment,
|
||||
parentUser: parentUser,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
newPosts: newPosts,
|
||||
numPosts: numPosts,
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
router.get('/communities/:communityID/sub/new', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
let community = await database.getCommunityByID(req.params.communityID.toString());
|
||||
res.render('admin/admin_edit_sub_community.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
community: community,
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/users/:userID/edit', upload.none(), function (req, res) {
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(req.params.userID);
|
||||
let parentUser = await database.getUserByPID(pid)
|
||||
if(user === null)
|
||||
res.sendStatus(404);
|
||||
let newPosts = await database.getNumberUserPostsByID(req.params.userID, 50);
|
||||
let numPosts = await database.getTotalPostsByUserID(req.params.userID);
|
||||
|
||||
res.render('admin/admin_edit_user.ejs', {
|
||||
moment: moment,
|
||||
parentUser: parentUser,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
newPosts: newPosts,
|
||||
numPosts: numPosts,
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
router.get('/users', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
let users = await database.getUsers(100);
|
||||
res.render('admin/admin_users.ejs', {
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
users: users,
|
||||
moment: moment
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/posts/new', upload.none(), function (req, res) {
|
||||
router.get('/users/:userID', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.params.userID);
|
||||
let parentUser = await database.getUserByPID(req.pid)
|
||||
if(user === null)
|
||||
res.sendStatus(404);
|
||||
let newPosts = await database.getNumberUserPostsByID(req.params.userID, 50);
|
||||
let numPosts = await database.getTotalPostsByUserID(req.params.userID);
|
||||
let communityMap = await util.data.getCommunityHash();
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.redirect('/login');
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
let community = await database.getCommunityByID('announcements');
|
||||
|
||||
res.render('admin/admin_new_post.ejs', {
|
||||
community: community,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
res.render('admin/admin_user.ejs', {
|
||||
communityMap: communityMap,
|
||||
moment: moment,
|
||||
parentUser: parentUser,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
newPosts: newPosts,
|
||||
numPosts: numPosts,
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/login', upload.none(), function (req, res) {
|
||||
router.get('/users/:userID/edit', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.params.userID);
|
||||
let parentUser = await database.getUserByPID(req.pid)
|
||||
if(user === null)
|
||||
res.sendStatus(404);
|
||||
let newPosts = await database.getNumberUserPostsByID(req.params.userID, 50);
|
||||
let numPosts = await database.getTotalPostsByUserID(req.params.userID);
|
||||
|
||||
database.connect().then(async e => {
|
||||
if(req.cookies.token === null)
|
||||
{
|
||||
res.render('admin_login.ejs', {});
|
||||
return;
|
||||
}
|
||||
let pid = util.data.processServiceToken(req.cookies.token);
|
||||
if(pid === null)
|
||||
{
|
||||
res.render('admin/admin_login.ejs', {});
|
||||
return;
|
||||
}
|
||||
let user = await database.getUserByPID(pid);
|
||||
res.render('admin/admin_edit_user.ejs', {
|
||||
moment: moment,
|
||||
parentUser: parentUser,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
newPosts: newPosts,
|
||||
numPosts: numPosts,
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/posts/new', upload.none(), async function (req, res) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
let community = await database.getCommunityByID('announcements');
|
||||
|
||||
res.render('admin/admin_new_post.ejs', {
|
||||
community: community,
|
||||
user: user,
|
||||
account_server: config.account_server_domain.slice(8),
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/login', upload.none(), async function (req, res) {
|
||||
if(req.cookies.token === undefined)
|
||||
{
|
||||
return res.render('admin/admin_login.ejs', {});
|
||||
}
|
||||
else
|
||||
res.redirect('/');
|
||||
|
||||
}).catch(error => {
|
||||
console.log(error);
|
||||
res.set("Content-Type", "application/xml");
|
||||
res.statusCode = 400;
|
||||
response = {
|
||||
result: {
|
||||
has_error: 1,
|
||||
version: 1,
|
||||
code: 400,
|
||||
error_code: 15,
|
||||
message: "SERVER_ERROR"
|
||||
}
|
||||
};
|
||||
res.send("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + xml(response));
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
router.get('/token', upload.none(), function (req, res) {
|
||||
router.get('/token', upload.none(), async function (req, res) {
|
||||
let port;
|
||||
if(req.hostname.includes('miiverse'))
|
||||
port = 'http://'
|
||||
else
|
||||
port = 'https://'
|
||||
request.get({
|
||||
url: "http://" + config.account_server_domain + "/v1/api/provider/service_token/@me",
|
||||
url: port + config.account_server_domain + "/v1/api/provider/service_token/@me",
|
||||
headers: {
|
||||
'X-Nintendo-Client-ID': config["X-Nintendo-Client-ID"],
|
||||
'X-Nintendo-Client-Secret': config["X-Nintendo-Client-Secret"],
|
||||
@@ -710,62 +260,52 @@ router.get('/token', upload.none(), function (req, res) {
|
||||
});
|
||||
});
|
||||
|
||||
router.post('/login', upload.none(), function (req, res) {
|
||||
database.connect().then(async e => {
|
||||
let user_id = req.body.user_id;
|
||||
let user = await database.getUserByUsername(user_id);
|
||||
let password = req.body.password;
|
||||
if(user !== null && password !== null)
|
||||
{
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] is not authorized to access the application');
|
||||
throw new Error('User is not authorized to access the application');
|
||||
}
|
||||
|
||||
let password_hash = await util.data.nintendoPasswordHash(password, user.pid);
|
||||
await request.post({
|
||||
url: "https://" + config.account_server_domain + "/v1/api/oauth20/access_token/generate",
|
||||
headers: {
|
||||
'X-Nintendo-Client-ID': config["X-Nintendo-Client-ID"],
|
||||
'X-Nintendo-Client-Secret': config["X-Nintendo-Client-Secret"],
|
||||
'X-Nintendo-Title-ID': '0005001010040100'
|
||||
},
|
||||
form: {
|
||||
user_id: user_id,
|
||||
password_type: 'hash',
|
||||
password: password_hash,
|
||||
grant_type: 'password'
|
||||
}
|
||||
}, function (error, response, body) {
|
||||
if (!error && response.statusCode === 200) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] signed into the application');
|
||||
res.send(body);
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log(body)
|
||||
res.statusCode = 403;
|
||||
let response = {
|
||||
error_code: 403,
|
||||
message: 'Invalid account ID or password'
|
||||
};
|
||||
res.send(response);
|
||||
}
|
||||
|
||||
});
|
||||
router.post('/login', upload.none(), async function (req, res) {
|
||||
let port;
|
||||
if(req.hostname.includes('miiverse'))
|
||||
port = 'http://'
|
||||
else
|
||||
port = 'https://'
|
||||
let user_id = req.body.user_id;
|
||||
let user = await database.getUserByUsername(user_id);
|
||||
let password = req.body.password;
|
||||
if(user !== null && password !== null) {
|
||||
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] is not authorized to access the application');
|
||||
throw new Error('User is not authorized to access the application');
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
|
||||
}).catch(error =>
|
||||
{
|
||||
res.statusCode = 504;
|
||||
let response = {
|
||||
error_code: 504,
|
||||
message: error.message
|
||||
};
|
||||
res.send(response);
|
||||
});
|
||||
let password_hash = await util.data.nintendoPasswordHash(password, user.pid);
|
||||
await request.post({
|
||||
url: port + config.account_server_domain + "/v1/api/oauth20/access_token/generate",
|
||||
headers: {
|
||||
'X-Nintendo-Client-ID': config["X-Nintendo-Client-ID"],
|
||||
'X-Nintendo-Client-Secret': config["X-Nintendo-Client-Secret"],
|
||||
'X-Nintendo-Title-ID': '0005001010040100'
|
||||
},
|
||||
form: {
|
||||
user_id: user_id,
|
||||
password_type: 'hash',
|
||||
password: password_hash,
|
||||
grant_type: 'password'
|
||||
}
|
||||
}, function (error, response, body) {
|
||||
if (!error && response.statusCode === 200) {
|
||||
logger.audit('[' + user.user_id + ' - ' + user.pid + '] signed into the application');
|
||||
res.send(body);
|
||||
}
|
||||
else {
|
||||
console.log(body)
|
||||
res.statusCode = 403;
|
||||
let response = {
|
||||
error_code: 403,
|
||||
message: 'Invalid account ID or password'
|
||||
};
|
||||
res.send(response);
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
throw new Error('Invalid account ID or password');
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
|
||||
@@ -52,11 +52,15 @@ router.get('/:post_id', async function (req, res) {
|
||||
|
||||
router.post('/:post_id/new', upload.none(), async function (req, res, next) {
|
||||
let user = await database.getUserByPID(req.pid);
|
||||
if(user.account_status !== 0) {
|
||||
if(user.account_status !== 0 || req.body.olive_community_id === 'announcements') {
|
||||
throw new Error('User not allowed to post')
|
||||
}
|
||||
let parentPost = await database.getPostByID(req.params.post_id.toString())
|
||||
let community = await database.getCommunityByID(req.body.olive_community_id);
|
||||
if(req.body.body === '' && req.body.painting === '' && req.body.screenshot === '') {
|
||||
res.status(422);
|
||||
return res.redirect('/posts/' + req.params.post_id.toString());
|
||||
}
|
||||
let appData = "";
|
||||
if (req.body.app_data) {
|
||||
appData = req.body.app_data.replace(/\0/g, "").trim();
|
||||
@@ -99,7 +103,8 @@ router.post('/:post_id/new', upload.none(), async function (req, res, next) {
|
||||
};
|
||||
const newPost = new POST(document);
|
||||
newPost.save();
|
||||
await database.pushNewNotificationByPID(parentPost.pid, user.user_id + ' replied to your post!', '/posts/' + parentPost.id)
|
||||
if(parentPost.pid !== user.pid)
|
||||
await database.pushNewNotificationByPID(parentPost.pid, user.user_id + ' replied to your post!', '/posts/' + parentPost.id)
|
||||
res.redirect('/posts/' + req.params.post_id.toString());
|
||||
});
|
||||
|
||||
@@ -109,6 +114,10 @@ router.post('/new', upload.none(), async function (req, res, next) {
|
||||
throw new Error('User not allowed to post')
|
||||
}
|
||||
let community = await database.getCommunityByID(req.body.olive_community_id);
|
||||
if(req.body.body === '' && req.body.painting === '' && req.body.screenshot === '') {
|
||||
res.status(422);
|
||||
return res.redirect('/communities/' + community.community_id + '/new');
|
||||
}
|
||||
let appData = "";
|
||||
if (req.body.app_data) {
|
||||
appData = req.body.app_data.replace(/\0/g, "").trim();
|
||||
|
||||
@@ -7,7 +7,6 @@ var moment = require('moment');
|
||||
var router = express.Router();
|
||||
|
||||
router.get('/', async function (req, res) {
|
||||
console.log(req.pid);
|
||||
try {
|
||||
if(req.pid === 1000000000) {
|
||||
res.render(req.directory + '/guest_notice.ejs', {
|
||||
|
||||
@@ -59,8 +59,8 @@ router.get('/show', async function (req, res) {
|
||||
let user = await database.getUserByPID(userID);
|
||||
if(user === null)
|
||||
res.sendStatus(404);
|
||||
if(user.pid === parentUser.pid)
|
||||
res
|
||||
if(parentUser === user)
|
||||
res.redirect('/users/me');
|
||||
let newPosts = await database.getNumberUserPostsByID(user.pid, 10);
|
||||
let numPosts = await database.getTotalPostsByUserID(user.pid);
|
||||
let communityMap = await util.data.getCommunityHash();
|
||||
|
||||
@@ -111,6 +111,78 @@ router.get('/notifications.json', async function (req, res) {
|
||||
{
|
||||
message_count: 0,
|
||||
notification_count: user.notification_list.filter(notification => notification.read === false).length,
|
||||
"messages": [
|
||||
{
|
||||
"screen_name": "JayDaBirb",
|
||||
"mii_face_url": "http://mii-images.account.pretendo.cc/",
|
||||
"is_official": true,
|
||||
"is_read": false,
|
||||
"created_at": "2020-04-29 01:04:80",
|
||||
"feeling_id": 1,
|
||||
"id": 1255383017044709400,
|
||||
"message_content": "https://invite.gg/pretendo"
|
||||
},
|
||||
{
|
||||
"screen_name": "PNID_Test06",
|
||||
"mii_face_url": "http://mii-images.account.pretendo.cc/",
|
||||
"is_official": false,
|
||||
"is_read": true,
|
||||
"created_at": "2020-05-18 02:17:50",
|
||||
"feeling_id": 1,
|
||||
"id": 1244384456055709400,
|
||||
"message_content": "Testing message number 2 updated"
|
||||
},
|
||||
{
|
||||
"screen_name": "PNID_Test14",
|
||||
"mii_face_url": "http://mii-images.account.pretendo.cc/",
|
||||
"is_official": false,
|
||||
"is_read": true,
|
||||
"created_at": "2020-05-18 02:17:50",
|
||||
"feeling_id": 1,
|
||||
"id": 1244384118059519400,
|
||||
"message_content": "Testing message number 3"
|
||||
},
|
||||
{
|
||||
"screen_name": "PNID_Test65",
|
||||
"mii_face_url": "http://mii-images.account.pretendo.cc/",
|
||||
"is_official": false,
|
||||
"is_read": true,
|
||||
"created_at": "2020-05-18 02:17:50",
|
||||
"feeling_id": 1,
|
||||
"id": 1244465118055709400,
|
||||
"message_content": "Did you know our Miiverse fork is called Juxt? pretty cool huh? ;)"
|
||||
},
|
||||
{
|
||||
"screen_name": "AnotherTestUser",
|
||||
"mii_face_url": "http://mii-images.account.pretendo.cc/",
|
||||
"is_official": false,
|
||||
"is_read": true,
|
||||
"created_at": "2020-05-18 02:17:50",
|
||||
"feeling_id": 1,
|
||||
"id": 1244384118792519400,
|
||||
"message_content": "Frick frack tic tak"
|
||||
},
|
||||
{
|
||||
"screen_name": "WowAnotherUserHuh",
|
||||
"mii_face_url": "http://mii-images.account.pretendo.cc/",
|
||||
"is_official": false,
|
||||
"is_read": true,
|
||||
"created_at": "2020-05-18 02:17:50",
|
||||
"feeling_id": 1,
|
||||
"id": 1244384648059589400,
|
||||
"message_content": "Hey kid want some meme?"
|
||||
},
|
||||
{
|
||||
"screen_name": "OkayLastOneIPromise",
|
||||
"mii_face_url": "http://mii-images.account.pretendo.cc/",
|
||||
"is_official": false,
|
||||
"is_read": true,
|
||||
"created_at": "2020-05-18 02:17:50",
|
||||
"feeling_id": 1,
|
||||
"id": 1244386594569545800,
|
||||
"message_content": "I promise this is the last time I'll ask for mod pls I'm sorry"
|
||||
}
|
||||
],
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
</td>
|
||||
<td>
|
||||
<div data-pjax="/communities/all">
|
||||
<button class="outlined-button" style=" margin-top: -35px; right: 60px; position: absolute;"><%= lang.all_communities.show_all %></button>
|
||||
<button class="outlined-button" style=" margin-top: -25px; right: 50px; position: absolute;"><%= lang.all_communities.show_all %></button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -75,9 +75,9 @@
|
||||
<div class="post-screenshot-picker" onclick="loadScreenshots()">
|
||||
<div class="post-screenshot-picker-icon"></div>
|
||||
<div class="post-screenshot-picker-dropdown">
|
||||
<div><img src="" class="post-screenshot-preview" id="post-top-screen-preview" onclick="document.getElementById('screenshot-value').value = wiiuMainApplication.getScreenShot(true);"></div>
|
||||
<div><img src="" class="post-screenshot-preview" id="post-bottom-screen-preview" onclick="document.getElementById('screenshot-value').value = wiiuMainApplication.getScreenShot(false);"></div>
|
||||
<div onclick="document.getElementById('screenshot-value').value = ''; loadScreenshots()">No Screenshot</div>
|
||||
<div><img src="" class="post-screenshot-preview" id="post-top-screen-preview" onclick="selectScreenshot(1)"></div>
|
||||
<div><img src="" class="post-screenshot-preview" id="post-bottom-screen-preview" onclick="selectScreenshot(2)"></div>
|
||||
<div onclick="selectScreenshot(0)">No Screenshot</div>
|
||||
<input type="hidden" id="screenshot-value" name="screenshot" value="">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -215,13 +215,11 @@ ul, ol, menu, li {
|
||||
|
||||
.post-wrapper {
|
||||
text-align: center;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 1065px;
|
||||
background-color: rgba(255,255,255,1);
|
||||
border: 1.5px solid #d6d2d2;
|
||||
border-radius: 10px;
|
||||
margin-bottom: 0;
|
||||
margin: 40px auto 0;
|
||||
|
||||
}
|
||||
|
||||
@@ -303,7 +301,7 @@ ul, ol, menu, li {
|
||||
}
|
||||
|
||||
.post-user-info-wrapper {
|
||||
margin-bottom: 40px;
|
||||
margin-bottom: 50px;
|
||||
margin-left: 15px;
|
||||
min-width: 520px;
|
||||
}
|
||||
@@ -834,8 +832,8 @@ td.messages-list-wrapper.end {
|
||||
border-radius: 10px;
|
||||
white-space: nowrap;
|
||||
overflow-x: auto;
|
||||
box-shadow: 0 3px 15px 0 rgba(0, 0, 0, 0);
|
||||
-webkit-box-shadow: 0 3px 15px 0 rgba(0, 0, 0, 0);
|
||||
box-shadow: 0 3px 15px 0 rgba(0, 0, 0, 0.5);
|
||||
-webkit-box-shadow: 0 3px 15px 0 rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
#search-icon {
|
||||
@@ -887,7 +885,7 @@ td.messages-list-wrapper.end {
|
||||
vertical-align: bottom;
|
||||
width: 300px;
|
||||
margin-left: 30px;
|
||||
margin-bottom: 130px;
|
||||
margin-bottom: 110px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
@@ -1126,7 +1124,7 @@ h4 {
|
||||
.community-page-post-yeah-button-wrapper {
|
||||
position: absolute;
|
||||
right: 148px;
|
||||
margin-top: -110px;
|
||||
margin-top: -70px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
@@ -1160,7 +1158,7 @@ h4 {
|
||||
color: #673DB6;
|
||||
margin-left: 440px;
|
||||
margin-bottom: 0;
|
||||
margin-top: -94px;
|
||||
margin-top: -50px;
|
||||
font-weight: bold;
|
||||
font-size: large;
|
||||
position: absolute;
|
||||
@@ -1177,7 +1175,8 @@ h4 {
|
||||
}
|
||||
|
||||
.community-page-post-user-icon {
|
||||
width: 90px;
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
border-radius: 10px;
|
||||
margin-right: 15px;
|
||||
float: left;
|
||||
@@ -1188,6 +1187,7 @@ h4 {
|
||||
|
||||
.community-page-post-user-icon.verified{
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
margin-right: 15px;
|
||||
float: left;
|
||||
border: 5px solid #673DB6;
|
||||
@@ -1653,7 +1653,7 @@ iframe {
|
||||
margin-top: -25px;
|
||||
margin-left: 30px;
|
||||
background-color: #eee;
|
||||
width: 527px;
|
||||
width: 530px;
|
||||
padding: 20px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
@@ -1764,17 +1764,30 @@ iframe {
|
||||
position: absolute;
|
||||
margin-top: 14px;
|
||||
width: 215px;
|
||||
height: 293px;
|
||||
height: 320px;
|
||||
border: 5px solid #c4bfbf;
|
||||
border-radius: 10px;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
.post-screenshot-picker-dropdown > div:last-of-type {
|
||||
margin-left: 18px;
|
||||
margin-top: 20px;
|
||||
height: 32px;
|
||||
width: 175px;
|
||||
text-align: center;
|
||||
border: 3px solid #673DB6;
|
||||
color: #673DB6;
|
||||
background: white;
|
||||
border-radius: 10px;
|
||||
padding-top: 11px;
|
||||
}
|
||||
|
||||
.post-screenshot-preview {
|
||||
width: 180px;
|
||||
height: 100px;
|
||||
border-radius: 5px;
|
||||
padding-top: 15px;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.announcements-banner {
|
||||
|
||||
@@ -3,6 +3,7 @@ var updateCheck = setInterval(checkForUpdates, 30000);
|
||||
{
|
||||
var blankMemo = 'iVBORw0KGgoAAAANSUhEUgAAAUAAAAB4CAQAAAApx+NVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAAEgAAABIAEbJaz4AAAAJdnBBZwAAAUAAAAB4AFsbTy8AAAZ0SURBVHja7Z3pkqUgDIVhqt//lZkf6kURkCUhEM43VX1tF+Q2Z8IWgnXOACDGP+kMgL2BAIEoECAQBQIEokCAQBQIEIgCAQJRIEAgCgQIRIEAgSh/0hkwxhj7OoP5wV0QFqDNnocM9SMoQFt0B0SoGwEBllS49nEEEerFjnXHCsXnCO8GKzJQgG1yggh1M0iAdxnVv/ApQkhQEwME2Cc++nTATDB3QuhEY4PfIEEdMAqQS3zXOUhQA2xTcV40jkF+ufNgJZgs4CWOfisVT8meP2EFV4ehE3K3fVRpueQ1SHBtyKtgLxle+YX3gDUhFaAlrHo997RsxL5CgitD2AbkEN8bd7b8IDsdkFlAevmFbTx763QcR2j/rQ+RBeTvENy9YtD71QOJBRwrv3frD9XxuhAIcETxu4j83mfAenQLkLvrkZ4HsZ/3gPkhagNyyM89hJUXGeXgNxhJ50wIZ+uv1a5BgivRZQHp5dciunBUEH3klZhgXXBadKm5Dpe4E23B9eiogvvsX14srvqJ/LNgVgZbwC8Ruey1EglCfmvBKkBem3WfpOtLCchBLkB+KxU+PcYJAvDQLMCrBWir3KKoXRXA6jR3QvrkRrNIvfx9YFaap+LaC9tGhFRvz1zE5xpWcT065oIpnO49tkA+3g0hNe4HCa4GmUNqz8gd2JfJpuLq3w7WpsMCYlkk6GeqIOWwafvRLMAysdRJCtZ0Pzot4FjJIE6gPgirYAgC1MPeBuRs17mCM6MpGc8EHoFOCF3MGPqU50O7nEV6wa7ibOyO+ILM9eRXtlOKbkjdscpcRo87jan347PJlFbEmu/1K+4RkEQjxP6AdWGD6v6w463Be5OcMjGU/MfyUR00y+ubzipYxibZ37+x1AcLLslhbum9/R1phcUdi7pllhYbf8HYj99TeXDZlXol05hPhzOtEuyuguNVyDjPZ8695MrbtOEzruB5V/gG3VV0hwBbiqeW/FYPY9pRHKk/Oxc7b8g4dXSse7zpuJ3lLrbv9HnFo7Xi9XQJkDdK89VO+mop8eWgLI/ti0pbI3xp6pQQOSPQ/0FqU+QsklRHgsb61aagR3zGkOwTwrUsvLx4eV1jfT5KttoO24z0LUhdLUaSjWrKCobxS7C+06cOdzB6CGZC9G8l6H6tLk3fag7IQvTqxd1644CaTgsYH6eTsn98QoH0uGBxx5KVH71Vhvz46LCAs1S+s+QDtMC8Kg6API0ChPwADU1VMKX8ejsOuryk90M4Sn6u41DnewzWRDQ0R+nuR3XA/q1EkwCpirgvHU0+IfvSNRdMMTdav19I/hnYv7WYYKekHKFnyReQ32qIC/DLsR/VrG5IPKL7oLNasH/r0e0R7Qi8oiGcfSEZhqFwSx/v2g5mYKIQvRDQjpAKsLfD0G4H+RdoAh6IesF0i9Trg1FAeitDsijpTOr85FgF5oHcdEEoQO59e2uWBWEVxyqQtgE5Yzm1pYj54tkhtYBnkr8j+hhZpSlKr1QGpTAI0JivqFatqdWkdH9GVywBXTAJsHVL6lw6rQF9Ib2ZYRMgxWYKPXb0sHqIZzA7jAL8vSJ5xRU/0ZJJSHAFBgjwfFHzkz2V9z2kEEQ4I8MEeHtlxb29TvvPsGrhlgsQpTwCAry9PHmFPlOxeDVUMWwg5XZEPaJHFlrpIk/3CB7uTIlMR4Rr14q4S74sGC2UZnMBfndTnu1ICJSaiRxSJUjvPfI+G3Zh4vPMJRvrAM/2FvDJtTfbsxV4v+aP3Wu2pU5cGB4yZnMBhkUfjhzm7k1tUJbbvOEt4Vh0nL0EuXkVfHDt7OZ+R+Z3piU1l3QDuyQXn6l+j1PqZ2sLWEOdfSrZS7RsJ2Jd+w28gQCLoBZBOHJok7KM3aMJCLCJZ1Vd/lRdGJKY/FKWeNVRzG0FyGVPSrZWjOfnuB7awnu/3J57DGvy+BadCxb70ufnTF/9uSOdi145ftM1a7NhLzhVeLK9Tpfse7vIWGSsAl6TDQXYtrZkFuJD3i5oL86W6zRbCtBmW4A2+JwJHdXunQ0FeDXkTXYud/ZBj/Qo4uw5f7JlJySO74cen8e51YaH/RTfrDl8su0wzBvfCUjZE5ts/M9U2KnZ7DnZsAr+JjUbscLgr5/XXgMIMEPKO8Y+fq5T2DOCKjhDOCfhgisQXj+wgB2s09KaFwiwGe9+agzE2Aqq4E/SAzJlHn0gx3+hA6gOwQ/rcwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxNy0wNy0wMVQwMTowMzo0MyswMDowMHj1DbQAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTctMDctMDFUMDE6MDM6NDMrMDA6MDAJqLUIAAAAAElFTkSuQmCC';
|
||||
}
|
||||
|
||||
/* global Pjax */
|
||||
function initNavBar() {
|
||||
var buttons = document.querySelectorAll("li[data-pjax]");
|
||||
@@ -146,7 +147,7 @@ function hideOverlay() {
|
||||
document.getElementsByClassName('community-page-info-container')[0].style.display = '';
|
||||
document.getElementsByClassName('community-page-post-box')[0].style.display = '';
|
||||
document.getElementsByClassName('user-page-tab-table')[0].style.display = '';
|
||||
document.getElementById('main').style.marginLeft = '225px';
|
||||
document.getElementById('main').style.marginLeft = '';
|
||||
document.body.style.backgroundColor = "rgba(232,236,236,1)";
|
||||
wiiuSound.playSoundByName('SE_OLV_CANCEL', 1)
|
||||
}
|
||||
@@ -176,7 +177,7 @@ function hideNewPostScreen() {
|
||||
document.getElementsByClassName('community-page-post-box')[0].style.display = '';
|
||||
document.getElementsByClassName('community-page-header-overlay')[0].style.display = '';
|
||||
document.getElementById('community-new-post-wrapper').style.display = '';
|
||||
document.getElementById('main').style.marginLeft = '225px';
|
||||
document.getElementById('main').style.marginLeft = '';
|
||||
document.body.style.backgroundColor = "rgba(232,236,236,1)";
|
||||
wiiuSound.playSoundByName('SE_OLV_CANCEL', 1)
|
||||
}
|
||||
@@ -726,6 +727,28 @@ function loadScreenshots() {
|
||||
else
|
||||
dropdown.style.display = 'block';
|
||||
}
|
||||
function selectScreenshot(select) {
|
||||
var screenshot;
|
||||
switch (select) {
|
||||
case 1:
|
||||
screenshot = wiiuMainApplication.getScreenShot(true);
|
||||
document.getElementById('screenshot-value').value = screenshot
|
||||
document.getElementsByClassName('post-screenshot-picker-icon')[0].style.backgroundImage = "url('data:image/png;base64," + screenshot + "')";
|
||||
document.getElementsByClassName('post-screenshot-picker-icon')[0].style.backgroundSize = '90%';
|
||||
break;
|
||||
case 2:
|
||||
screenshot = wiiuMainApplication.getScreenShot(false);
|
||||
document.getElementById('screenshot-value').value = screenshot;
|
||||
document.getElementsByClassName('post-screenshot-picker-icon')[0].style.backgroundImage = "url('data:image/png;base64," + screenshot + "')";
|
||||
document.getElementsByClassName('post-screenshot-picker-icon')[0].style.backgroundSize = '90%';
|
||||
break;
|
||||
default:
|
||||
document.getElementById('screenshot-value').value = '';
|
||||
document.getElementsByClassName('post-screenshot-picker-icon')[0].style.backgroundImage = '';
|
||||
document.getElementsByClassName('post-screenshot-picker-icon')[0].style.backgroundSize = '';
|
||||
break;
|
||||
}
|
||||
}
|
||||
function searchCommunities() {
|
||||
var input, filter, table, tr, td, i, j, txtValue;
|
||||
input = document.getElementById("search-bar");
|
||||
|
||||
Reference in New Issue
Block a user