Skip to content

Commit

Permalink
ignore bot agent
Browse files Browse the repository at this point in the history
  • Loading branch information
yukukotani committed Sep 12, 2020
1 parent 2a0a977 commit bec3515
Show file tree
Hide file tree
Showing 4 changed files with 325 additions and 1 deletion.
22 changes: 22 additions & 0 deletions isuumo/webapp/nodejs/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,32 @@ const dbinfo = {
connectionLimit: 10,
};

const BOT_REGEX = [
/ISUCONbot(-Mobile)?/,
/ISUCONbot-Image\//,
/Mediapartners-ISUCON/,
/ISUCONCoffee/,
/ISUCONFeedSeeker(Beta)?/,
/crawler \(https:\/\/isucon\.invalid\/(support\/faq\/|help\/jp\/)/,
/isubot/,
/Isupider/,
/Isupider(-image)?\+/,
/(bot|crawler|spider)(?:[-_ .\/;@()]|$)/i
]

const app = express();
const db = mysql.createPool(dbinfo);
app.set("db", db);

app.use(function (req, res, next) {
const agent = req.get('User-Agent');
if (BOT_REGEX.some((regex) => regex.test(agent))) {
console.log("BOT blocked: " + agent)
res.status(503).send();
}
next()
})

app.use(morgan("combined"));
app.use(express.json());
app.post("/initialize", async (req, res, next) => {
Expand Down
69 changes: 69 additions & 0 deletions isuumo/webapp/nodejs/newrelic.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
'use strict'
/**
* New Relic agent configuration.
*
* See lib/config/default.js in the agent distribution for a more complete
* description of configuration variables and their potential values.
*/
exports.config = {
/**
* Array of application names.
*/
app_name: ['isucon10q'],
/**
* Your New Relic license key.
*/
license_key: '1d879f03efacd1ef15f3a5c7edaf21ba2e7eNRAL',
/**
* This setting controls distributed tracing.
* Distributed tracing lets you see the path that a request takes through your
* distributed system. Enabling distributed tracing changes the behavior of some
* New Relic features, so carefully consult the transition guide before you enable
* this feature: https://docs.newrelic.com/docs/transition-guide-distributed-tracing
* Default is false.
*/
distributed_tracing: {
/**
* Enables/disables distributed tracing.
*
* @env NEW_RELIC_DISTRIBUTED_TRACING_ENABLED
*/
enabled: false
},
logging: {
/**
* Level at which to log. 'trace' is most useful to New Relic when diagnosing
* issues with the agent, 'info' and higher will impose the least overhead on
* production applications.
*/
level: 'info'
},
/**
* When true, all request headers except for those listed in attributes.exclude
* will be captured for all traces, unless otherwise specified in a destination's
* attributes include/exclude lists.
*/
allow_all_headers: true,
attributes: {
/**
* Prefix of attributes to exclude from all destinations. Allows * as wildcard
* at end.
*
* NOTE: If excluding headers, they must be in camelCase form to be filtered.
*
* @env NEW_RELIC_ATTRIBUTES_EXCLUDE
*/
exclude: [
'request.headers.cookie',
'request.headers.authorization',
'request.headers.proxyAuthorization',
'request.headers.setCookie*',
'request.headers.x*',
'response.headers.cookie',
'response.headers.authorization',
'response.headers.proxyAuthorization',
'response.headers.setCookie*',
'response.headers.x*'
]
}
}
232 changes: 232 additions & 0 deletions isuumo/webapp/nodejs/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit bec3515

Please sign in to comment.