Markus-Rost 4 anos atrás
pai
commit
8bf7c71697
4 arquivos alterados com 15 adições e 13 exclusões
  1. 9 9
      dashboard/index.js
  2. 2 2
      dashboard/settings.js
  3. 3 2
      dashboard/src/index.js
  4. 1 0
      interactions/inline.js

+ 9 - 9
dashboard/index.js

@@ -50,8 +50,8 @@ const files = new Map([
 	return [file, {path: filepath, contentType}];
 } ));
 
-const server = http.createServer((req, res) => {
-	if ( req.method === 'POST' && req.url.startsWith( '/guild/' ) ) {
+const server = http.createServer( (req, res) => {
+	if ( req.method === 'POST' && req.headers['content-type'] === 'application/x-www-form-urlencoded' && req.url.startsWith( '/guild/' ) ) {
 		let args = req.url.split('/');
 		let state = req.headers.cookie?.split('; ')?.filter( cookie => {
 			return cookie.split('=')[0] === 'wikibot' && /^"(\w*(?:-\d+)*)"$/.test(( cookie.split('=')[1] || '' ));
@@ -61,17 +61,17 @@ const server = http.createServer((req, res) => {
 		&& /^(?:default|new|\d+)$/.test(args[4]) && settingsData.has(state)
 		&& settingsData.get(state).guilds.isMember.has(args[2]) ) {
 			if ( process.env.READONLY ) return save_response(`${req.url}?save=failed`);
-			let body = '';
+			let body = [];
 			req.on( 'data', chunk => {
-				body += chunk.toString();
+				body.push(chunk);
 			} );
 			req.on( 'error', () => {
-				console.log( error );
+				console.log( '- Dashboard: ' + error );
 				res.end('error');
 			} );
 			return req.on( 'end', () => {
 				var settings = {};
-				body.split('&').forEach( arg => {
+				Buffer.concat(body).toString().split('&').forEach( arg => {
 					if ( arg ) {
 						let setting = decodeURIComponent(arg.replace( /\+/g, ' ' )).split('=');
 						if ( setting[0] && setting.slice(1).join('=').trim() ) {
@@ -211,11 +211,11 @@ const server = http.createServer((req, res) => {
 	if ( reqURL.searchParams.get('refresh') === 'success' ) action = 'refresh';
 	if ( reqURL.searchParams.get('refresh') === 'failed' ) action = 'refreshfail';
 	return dashboard(res, dashboardLang, state, reqURL, action);
-});
+} );
 
-server.listen(8080, 'localhost', () => {
+server.listen( 8080, 'localhost', () => {
 	console.log( '- Dashboard: Server running at http://localhost:8080/' );
-});
+} );
 
 
 String.prototype.replaceSave = function(pattern, replacement) {

+ 2 - 2
dashboard/settings.js

@@ -354,8 +354,8 @@ function update_settings(res, userSettings, guild, type, settings) {
 				if ( fresponse.statusCode === 404 && typeof fresponse.body === 'string' ) {
 					let api = cheerio.load(fresponse.body)('head link[rel="EditURI"]').prop('href');
 					if ( api ) {
-						wikinew = new Wiki(api.split('api.php?')[0], wikinew);
-						return got.get( wikinew + 'api.php?action=query&meta=siteinfo&siprop=general|extensions&format=json' );
+						wiki = new Wiki(api.split('api.php?')[0], wiki);
+						return got.get( wiki + 'api.php?action=query&meta=siteinfo&siprop=general|extensions&format=json' );
 					}
 				}
 			}

+ 3 - 2
dashboard/src/index.js

@@ -116,6 +116,7 @@ if ( wiki ) {
 			else {
 				wikinew = wikinew.replace( /\/(?:api|load|index)\.php(?:|\?.*)$/, '' ).replace( /\/$/, '' );
 			}
+			var readonly = wiki.hasAttribute('readonly');
 			wiki.setAttribute('readonly', '');
 			wikicheck.setAttribute('disabled', '');
 			fetch( '/api?wiki=' + encodeURIComponent( wikinew ), {
@@ -150,7 +151,7 @@ if ( wiki ) {
 					wikichecknotice.append(noticeTitle, noticeText, noticeNote);
 					return;
 				}
-				wiki.value = response.wiki;
+				if ( !readonly ) wiki.value = response.wiki;
 				if ( document.location.pathname.split('/')[3] === 'rcscript' ) {
 					if ( !response.MediaWiki ) {
 						wiki.setCustomValidity(lang('outdated.title'));
@@ -250,7 +251,7 @@ if ( wiki ) {
 			}, function(error) {
 				console.log(error)
 			} ).finally( function() {
-				wiki.removeAttribute('readonly');
+				if ( !readonly ) wiki.removeAttribute('readonly');
 				wikicheck.removeAttribute('disabled');
 			} );
 		}

+ 1 - 0
interactions/inline.js

@@ -62,6 +62,7 @@ function slash_inline(interaction, lang, wiki, channel) {
 		data: {
 			type: 5,
 			data: {
+				allowed_mentions,
 				flags: 0
 			}
 		}