mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
🔀 Merge branch 'pemontto-ignore-bots'
This commit is contained in:
commit
2d33848637
37
package-lock.json
generated
37
package-lock.json
generated
|
@ -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",
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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');
|
||||
|
|
|
@ -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",
|
||||
|
|
Loading…
Reference in a new issue