🔀 Merge branch 'pemontto-ignore-bots'

This commit is contained in:
Jan Oberhauser 2022-01-02 10:20:39 +01:00
commit 2d33848637
4 changed files with 33 additions and 32 deletions

37
package-lock.json generated
View file

@ -27204,6 +27204,11 @@
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
},
"isbot": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/isbot/-/isbot-3.4.0.tgz",
"integrity": "sha512-0WOb6bbJ6gtpWVHQ30r5MzqvSrCNbZ70wFXAJWdXt/0LulF59uvBQnPgA7IelbOXEpV+CtLWkDxLB4TU7f0+VA=="
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
@ -33267,38 +33272,6 @@
"thenify-all": "^1.0.0"
}
},
"n8n-core": {
"version": "0.96.0",
"resolved": "https://registry.npmjs.org/n8n-core/-/n8n-core-0.96.0.tgz",
"integrity": "sha512-FwcLt9tYATP2FJkEkiGlbQCdzzdShTcXfpd6ba0RDeOAwvKK+IIoMvlnaU4ClhJX5og7wvLDouAOWRj9UjjdRQ==",
"requires": {
"axios": "^0.21.1",
"client-oauth2": "^4.2.5",
"cron": "~1.7.2",
"crypto-js": "~4.1.1",
"file-type": "^14.6.2",
"form-data": "^4.0.0",
"lodash.get": "^4.4.2",
"mime-types": "^2.1.27",
"n8n-workflow": "~0.79.0",
"oauth-1.0a": "^2.2.6",
"p-cancelable": "^2.0.0",
"qs": "^6.10.1",
"request": "^2.88.2",
"request-promise-native": "^1.0.7"
}
},
"n8n-workflow": {
"version": "0.79.0",
"resolved": "https://registry.npmjs.org/n8n-workflow/-/n8n-workflow-0.79.0.tgz",
"integrity": "sha512-ylzM1l7M00gfAnCcQtdRn2DzYZ+7vyWu2gfVe5crpOJnuoLstYbUF+UgShXyrlugdMg6GV86w9mE0iRkgbMb/Q==",
"requires": {
"lodash.get": "^4.4.2",
"lodash.isequal": "^4.5.0",
"riot-tmpl": "^3.0.8",
"xml2js": "^0.4.23"
}
},
"named-placeholders": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz",

View file

@ -21,6 +21,7 @@ import * as fs from 'fs';
import * as formidable from 'formidable';
import * as isbot from 'isbot';
function authorizationError(resp: Response, realm: string, responseCode: number, message?: string) {
if (message === undefined) {
@ -536,6 +537,13 @@ export class Wait implements INodeType {
the received file. If the data gets received via "Form-Data Multipart"
it will be the prefix and a number starting with 0 will be attached to it.`,
},
{
displayName: 'Ignore Bots',
name: 'ignoreBots',
type: 'boolean',
default: false,
description: 'Set to true to ignore requests from bots like link previewers and web crawlers',
},
{
displayName: 'Response Data',
name: 'responseData',
@ -656,6 +664,11 @@ export class Wait implements INodeType {
const headers = this.getHeaderData();
const realm = 'Webhook';
const ignoreBots = options.ignoreBots as boolean;
if (ignoreBots && isbot((headers as IDataObject)['user-agent'] as string)) {
return authorizationError(resp, realm, 403);
}
if (incomingAuthentication === 'basicAuth') {
// Basic authorization is needed to call webhook
const httpBasicAuth = await this.getCredentials('httpBasicAuth');

View file

@ -20,6 +20,8 @@ import * as fs from 'fs';
import * as formidable from 'formidable';
import * as isbot from 'isbot';
function authorizationError(resp: Response, realm: string, responseCode: number, message?: string) {
if (message === undefined) {
message = 'Authorization problem!';
@ -281,6 +283,13 @@ export class Webhook implements INodeType {
the received file to. If the data gets received via "Form-Data Multipart"
it will be the prefix and a number starting with 0 will be attached to it.`,
},
{
displayName: 'Ignore Bots',
name: 'ignoreBots',
type: 'boolean',
default: false,
description: 'Set to true to ignore requests from bots like link previewers and web crawlers',
},
{
displayName: 'Response Data',
name: 'responseData',
@ -391,6 +400,11 @@ export class Webhook implements INodeType {
const headers = this.getHeaderData();
const realm = 'Webhook';
const ignoreBots = options.ignoreBots as boolean;
if (ignoreBots && isbot((headers as IDataObject)['user-agent'] as string)) {
return authorizationError(resp, realm, 403);
}
if (authentication === 'basicAuth') {
// Basic authorization is needed to call webhook
const httpBasicAuth = await this.getCredentials('httpBasicAuth');

View file

@ -709,6 +709,7 @@
"iconv-lite": "^0.6.2",
"ics": "^2.27.0",
"imap-simple": "^4.3.0",
"isbot": "^3.3.4",
"iso-639-1": "^2.1.3",
"jsonwebtoken": "^8.5.1",
"kafkajs": "^1.14.0",