deal with a bunch of dumb malformed urls hitting demo site

again, I shouldn't accommodate this, but I'm tired of the dumb errors
This commit is contained in:
Dan Janosik 2024-11-18 09:45:59 -05:00
parent 4b9bf30a5f
commit 70f6f8de3c
No known key found for this signature in database
GPG key ID: 70C0B166321C0AF8
4 changed files with 119 additions and 8 deletions

2
app.js
View file

@ -118,6 +118,7 @@ debugLog(`Default cacheId '${global.cacheId}'`);
global.btcNodeSemver = "0.0.0";
const cleanupRouter = require('./routes/cleanupRouter.js');
const baseActionsRouter = require('./routes/baseRouter.js');
const internalApiActionsRouter = require('./routes/internalApiRouter.js');
const apiActionsRouter = require('./routes/apiRouter.js');
@ -1153,6 +1154,7 @@ expressApp.use(csrfProtection, (req, res, next) => {
next();
});
expressApp.use(config.baseUrl, cleanupRouter);
expressApp.use(config.baseUrl, baseActionsRouter);
expressApp.use(config.baseUrl + 'internal-api/', internalApiActionsRouter);
expressApp.use(config.baseUrl + 'api/', apiActionsRouter);

View file

@ -979,7 +979,7 @@ function logError(errorId, err, optionalUserData = {}, logStacktrace=true) {
};
}
if (optionalUserData && err.message) {
if (optionalUserData && err && err.message) {
optionalUserData.errorMsg = err.message;
}

View file

@ -1360,13 +1360,6 @@ router.get("/block-analysis", function(req, res, next) {
next();
});
/*
router.get("/tx/tx/:transactionId", asyncHandler(async (req, res, next) => {
res.redirect(301, `${config.baseUrl}tx/${req.params.transactionId}`);
return;
}));*/
router.get("/tx/:transactionId@:blockHeight", asyncHandler(async (req, res, next) => {
req.query.blockHeight = req.params.blockHeight;
req.url = "/tx/" + req.params.transactionId;

116
routes/cleanupRouter.js Normal file
View file

@ -0,0 +1,116 @@
"use strict";
const debug = require("debug");
const debugLog = debug("btcexp:cleanup");
const express = require('express');
const csrfApi = require('csurf');
const router = express.Router();
const util = require('util');
const moment = require('moment');
const qrcode = require('qrcode');
const bitcoinjs = require('bitcoinjs-lib');
const bip32 = require('bip32');
const bs58check = require('bs58check');
const { bech32, bech32m } = require("bech32");
const sha256 = require("crypto-js/sha256");
const hexEnc = require("crypto-js/enc-hex");
const Decimal = require("decimal.js");
const semver = require("semver");
const markdown = require("markdown-it")();
const asyncHandler = require("express-async-handler");
const utils = require('./../app/utils.js');
const coins = require("./../app/coins.js");
const config = require("./../app/config.js");
const coreApi = require("./../app/api/coreApi.js");
const addressApi = require("./../app/api/addressApi.js");
const rpcApi = require("./../app/api/rpcApi.js");
const btcQuotes = require("./../app/coins/btcQuotes.js");
function logUrlError(req, type) {
let userAgent = req.headers['user-agent'];
utils.logError(`DoubleUrl`, null, {"type": "block/block", "userAgent":userAgent}, false);
}
router.get("/block/block/:blockHash", asyncHandler(async (req, res, next) => {
logUrlError(req, "block/block");
res.redirect(301, `${config.baseUrl}block/${req.params.blockHash}`);
return;
}));
router.get("/block/address/:address", asyncHandler(async (req, res, next) => {
logUrlError(req, "block/address");
res.redirect(301, `${config.baseUrl}address/${req.params.address}`);
return;
}));
router.get("/block/tx/:txid", asyncHandler(async (req, res, next) => {
logUrlError(req, "block/tx");
res.redirect(301, `${config.baseUrl}tx/${req.params.txid}`);
return;
}));
router.get("/tx/tx/:transactionId", asyncHandler(async (req, res, next) => {
logUrlError(req, "tx/tx");
res.redirect(301, `${config.baseUrl}tx/${req.params.transactionId}`);
return;
}));
router.get("/tx/block/:blockHash", asyncHandler(async (req, res, next) => {
logUrlError(req, "block/tx");
res.redirect(301, `${config.baseUrl}block/${req.params.blockHash}`);
return;
}));
router.get("/block-height/address/:address", asyncHandler(async (req, res, next) => {
logUrlError(req, "block-height/address");
res.redirect(301, `${config.baseUrl}address/${req.params.address}`);
return;
}));
router.get("/block-height/tx/:txid", asyncHandler(async (req, res, next) => {
logUrlError(req, "block-height/tx");
res.redirect(301, `${config.baseUrl}tx/${req.params.txid}`);
return;
}));
router.get("/block-height/block-height/:blockHeight", asyncHandler(async (req, res, next) => {
logUrlError(req, "block-height/block-height");
res.redirect(301, `${config.baseUrl}block-height/${req.params.blockHeight}`);
return;
}));
module.exports = router;