feat(core): Credentials for popular SecOps services, Part 1 (#6775)

This commit is contained in:
Michael Kret 2023-07-31 11:26:38 +03:00 committed by GitHub
parent 50b0dc21fd
commit 11567f946b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
56 changed files with 1724 additions and 4 deletions

View file

@ -0,0 +1,41 @@
import type {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class AlienVaultApi implements ICredentialType {
name = 'alienVaultApi';
displayName = 'AlienVault API';
icon = 'file:icons/AlienVault.png';
properties: INodeProperties[] = [
{
displayName: 'OTX Key',
name: 'accessToken',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'X-OTX-API-KEY': '={{$credentials.accessToken}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: 'https://otx.alienvault.com',
url: '/api/v1/user/me',
},
};
}

View file

@ -0,0 +1,85 @@
import type {
IAuthenticateGeneric,
ICredentialDataDecryptedObject,
ICredentialTestRequest,
ICredentialType,
IHttpRequestHelper,
INodeProperties,
} from 'n8n-workflow';
export class Auth0ManagementApi implements ICredentialType {
name = 'auth0ManagementApi';
displayName = 'Auth0 Management API';
icon = 'file:icons/Auth0.svg';
properties: INodeProperties[] = [
{
displayName: 'Session Token',
name: 'sessionToken',
type: 'hidden',
typeOptions: {
expirable: true,
},
default: '',
},
{
displayName: 'Auth0 Domain',
name: 'domain',
type: 'string',
required: true,
default: 'your-domain.eu.auth0.com',
},
{
displayName: 'Client ID',
name: 'clientId',
type: 'string',
required: true,
default: '',
},
{
displayName: 'Client Secret',
name: 'clientSecret',
type: 'string',
typeOptions: {
password: true,
},
required: true,
default: '',
},
];
async preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject) {
const { access_token } = (await this.helpers.httpRequest({
method: 'POST',
url: `https://${credentials.domain}/oauth/token`,
body: {
client_id: credentials.clientId,
client_secret: credentials.clientSecret,
audience: `https://${credentials.domain}/api/v2/`,
grant_type: 'client_credentials',
},
headers: {
'Content-Type': 'application/json',
},
})) as { access_token: string };
return { sessionToken: access_token };
}
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Authorization: '=Bearer {{$credentials.sessionToken}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: '=https://{{$credentials.domain}}',
url: '/api/v2/clients',
},
};
}

View file

@ -134,7 +134,7 @@ export class Aws implements ICredentialType {
documentationUrl = 'aws';
icon = 'file:AWS.svg';
icon = 'file:icons/AWS.svg';
properties: INodeProperties[] = [
{

View file

@ -0,0 +1,45 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class CarbonBlackApi implements ICredentialType {
name = 'carbonBlackApi';
displayName = 'Carbon Black API';
icon = 'file:icons/vmware.svg';
documentationUrl = 'carbonblack';
properties: INodeProperties[] = [
{
displayName: 'URL',
name: 'apiUrl',
type: 'string',
placeholder: 'https://defense.conferdeploy.net/',
default: '',
},
{
displayName: 'Access Token',
name: 'accessToken',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'X-Auth-Token': '={{$credentials.accessToken}}',
},
},
};
// test: ICredentialTestRequest = {
// request: {
// baseURL: '={{$credentials.apiUrl}}',
// url: 'integrationServices/v3/auditlogs',
// },
// };
}

View file

@ -0,0 +1,36 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class CiscoMerakiApi implements ICredentialType {
name = 'ciscoMerakiApi';
displayName = 'Cisco Meraki API';
icon = 'file:icons/Cisco.svg';
properties: INodeProperties[] = [
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'X-Cisco-Meraki-API-Key': '={{$credentials.apiKey}}',
},
},
};
// test: ICredentialTestRequest = {
// request: {
// baseURL: 'https://api.meraki.com/api/v1',
// url: '/organizations',
// },
// };
}

View file

@ -0,0 +1,115 @@
import type {
ICredentialDataDecryptedObject,
ICredentialTestRequest,
ICredentialType,
IHttpRequestOptions,
INodeProperties,
} from 'n8n-workflow';
import axios from 'axios';
export class CiscoSecureEndpointApi implements ICredentialType {
name = 'ciscoSecureEndpointApi';
displayName = 'Cisco Secure Endpoint (AMP) API';
icon = 'file:icons/Cisco.svg';
properties: INodeProperties[] = [
{
displayName: 'Region',
name: 'region',
type: 'options',
options: [
{
name: 'Asia Pacific, Japan, and China',
value: 'apjc.amp',
},
{
name: 'Europe',
value: 'eu.amp',
},
{
name: 'North America',
value: 'amp',
},
],
default: 'amp',
},
{
displayName: 'Client ID',
name: 'clientId',
type: 'string',
default: '',
required: true,
},
{
displayName: 'Client Secret',
name: 'clientSecret',
type: 'string',
typeOptions: {
password: true,
},
default: '',
required: true,
},
];
async authenticate(
credentials: ICredentialDataDecryptedObject,
requestOptions: IHttpRequestOptions,
): Promise<IHttpRequestOptions> {
const clientId = credentials.clientId as string;
const clientSecret = credentials.clientSecret as string;
const region = credentials.region as string;
const secureXToken = await axios({
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Accept: 'application/json',
},
auth: {
username: clientId,
password: clientSecret,
},
method: 'POST',
data: new URLSearchParams({
grant_type: 'client_credentials',
}).toString(),
url: `https://visibility.${region}.cisco.com/iroh/oauth2/token`,
});
const secureEndpointToken = await axios({
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Accept: 'application/json',
Authorization: `Bearer ${secureXToken.data.access_token}`,
},
method: 'POST',
data: new URLSearchParams({
grant_type: 'client_credentials',
}).toString(),
url: `https://api.${region}.cisco.com/v3/access_tokens`,
});
const requestOptionsWithAuth: IHttpRequestOptions = {
...requestOptions,
headers: {
...requestOptions.headers,
Authorization: `Bearer ${secureEndpointToken.data.access_token}`,
},
};
return requestOptionsWithAuth;
}
test: ICredentialTestRequest = {
request: {
baseURL: '=https://api.{{$credentials.region}}.cisco.com',
url: '/v3/organizations',
qs: {
size: 10,
},
},
};
}

View file

@ -0,0 +1,80 @@
import type {
IAuthenticateGeneric,
ICredentialDataDecryptedObject,
ICredentialTestRequest,
ICredentialType,
IHttpRequestHelper,
INodeProperties,
} from 'n8n-workflow';
export class CiscoUmbrellaApi implements ICredentialType {
name = 'ciscoUmbrellaApi';
displayName = 'Cisco Umbrella API';
icon = 'file:icons/Cisco.svg';
properties: INodeProperties[] = [
{
displayName: 'Session Token',
name: 'sessionToken',
type: 'hidden',
typeOptions: {
expirable: true,
},
default: '',
},
{
displayName: 'API Key',
name: 'apiKey',
// eslint-disable-next-line n8n-nodes-base/cred-class-field-unobscured-sensitive-input
type: 'string',
required: true,
default: '',
},
{
displayName: 'Secret',
name: 'secret',
type: 'string',
typeOptions: {
password: true,
},
required: true,
default: '',
},
];
async preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject) {
const url = 'https://api.umbrella.com';
const { access_token } = (await this.helpers.httpRequest({
method: 'POST',
url: `${
url.endsWith('/') ? url.slice(0, -1) : url
}/auth/v2/token?grant_type=client_credentials`,
auth: {
username: credentials.apiKey as string,
password: credentials.secret as string,
},
headers: {
'Content-Type': 'x-www-form-urlencoded',
},
})) as { access_token: string };
return { sessionToken: access_token };
}
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Authorization: '=Bearer {{$credentials.sessionToken}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: 'https://api.umbrella.com',
url: '/users',
},
};
}

View file

@ -9,6 +9,8 @@ export class CiscoWebexOAuth2Api implements ICredentialType {
documentationUrl = 'ciscowebex';
icon = 'file:icons/Cisco.svg';
properties: INodeProperties[] = [
{
displayName: 'Grant Type',

View file

@ -0,0 +1,82 @@
import type {
IAuthenticateGeneric,
ICredentialDataDecryptedObject,
ICredentialTestRequest,
ICredentialType,
IHttpRequestHelper,
INodeProperties,
} from 'n8n-workflow';
export class CrowdStrikeOAuth2Api implements ICredentialType {
name = 'crowdStrikeOAuth2Api';
displayName = 'CrowdStrike OAuth2 API';
icon = 'file:icons/CrowdStrike.svg';
properties: INodeProperties[] = [
{
displayName: 'Session Token',
name: 'sessionToken',
type: 'hidden',
typeOptions: {
expirable: true,
},
default: '',
},
{
displayName: 'URL',
name: 'url',
type: 'string',
required: true,
default: '',
},
{
displayName: 'Client ID',
name: 'clientId',
type: 'string',
required: true,
default: '',
},
{
displayName: 'Client Secret',
name: 'clientSecret',
type: 'string',
typeOptions: {
password: true,
},
required: true,
default: '',
},
];
async preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject) {
const url = credentials.url as string;
const { access_token } = (await this.helpers.httpRequest({
method: 'POST',
url: `${url.endsWith('/') ? url.slice(0, -1) : url}/oauth2/token?client_id=${
credentials.clientId
}&client_secret=${credentials.clientSecret}`,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
})) as { access_token: string };
return { sessionToken: access_token };
}
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Authorization: '=Bearer {{$credentials.sessionToken}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: '={{$credentials?.url}}',
url: 'user-management/queries/users/v1',
},
};
}

View file

@ -0,0 +1,37 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class F5BigIpApi implements ICredentialType {
name = 'f5BigIpApi';
displayName = 'F5 Big-IP API';
icon = 'file:icons/F5.svg';
properties: INodeProperties[] = [
{
displayName: 'Username',
name: 'username',
type: 'string',
default: '',
required: true,
},
{
displayName: 'Password',
name: 'password',
type: 'string',
typeOptions: { password: true },
default: '',
required: true,
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
auth: {
username: '={{$credentials.username}}',
password: '={{$credentials.password}}',
},
},
};
}

View file

@ -0,0 +1,29 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class FortiGateApi implements ICredentialType {
name = 'fortiGateApi';
displayName = 'Fortinet FortiGate API';
icon = 'file:icons/Fortinet.svg';
properties: INodeProperties[] = [
{
displayName: 'Access Token',
name: 'accessToken',
type: 'string',
typeOptions: { password: true },
default: '',
required: true,
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
qs: {
access_token: '={{$credentials.accessToken}}',
},
},
};
}

View file

@ -20,7 +20,7 @@ export class GoogleApi implements ICredentialType {
documentationUrl = 'google/service-account';
icon = 'file:Google.svg';
icon = 'file:icons/Google.svg';
properties: INodeProperties[] = [
{

View file

@ -9,7 +9,7 @@ export class GoogleOAuth2Api implements ICredentialType {
documentationUrl = 'google/oauth-generic';
icon = 'file:Google.svg';
icon = 'file:icons/Google.svg';
properties: INodeProperties[] = [
{

View file

@ -0,0 +1,29 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class HybridAnalysisApi implements ICredentialType {
name = 'hybridAnalysisApi';
displayName = 'Hybrid Analysis API';
icon = 'file:icons/Hybrid.png';
properties: INodeProperties[] = [
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'api-key': '={{$credentials.apiKey}}',
},
},
};
}

View file

@ -0,0 +1,37 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class ImpervaWafApi implements ICredentialType {
name = 'impervaWafApi';
displayName = 'Imperva WAF API';
icon = 'file:icons/Imperva.svg';
properties: INodeProperties[] = [
{
displayName: 'API ID',
name: 'apiID',
type: 'string',
default: '',
required: true,
},
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
default: '',
required: true,
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'x-API-Id': '={{$credentials.apiID}}',
'x-API-Key': '={{$credentials.apiKey}}',
},
},
};
}

View file

@ -0,0 +1,60 @@
import type {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class KibanaApi implements ICredentialType {
name = 'kibanaApi';
displayName = 'Kibana API';
icon = 'file:icons/Kibana.svg';
properties: INodeProperties[] = [
{
displayName: 'URL',
name: 'url',
type: 'string',
required: true,
default: '',
placeholder: 'http://localhost:5601',
},
{
displayName: 'Username',
name: 'username',
type: 'string',
required: true,
default: '',
},
{
displayName: 'Password',
name: 'password',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'kbn-xsrf': true,
},
auth: {
username: '={{$credentials.username}}',
password: '={{$credentials.password}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: '={{$credentials.url}}',
url: '/api/features',
},
};
}

View file

@ -0,0 +1,23 @@
import type { ICredentialType, INodeProperties } from 'n8n-workflow';
export class MicrosoftEntraOAuth2Api implements ICredentialType {
name = 'microsoftEntraOAuth2Api';
displayName = 'Microsoft Entra ID (Azure Active Directory) API';
extends = ['microsoftOAuth2Api'];
icon = 'file:icons/Azure.svg';
documentationUrl = 'microsoft';
properties: INodeProperties[] = [
{
displayName: 'Scope',
name: 'scope',
type: 'hidden',
default:
'openid offline_access AccessReview.ReadWrite.All Directory.ReadWrite.All NetworkAccessPolicy.ReadWrite.All DelegatedAdminRelationship.ReadWrite.All EntitlementManagement.ReadWrite.All',
},
];
}

View file

@ -5,7 +5,7 @@ export class MicrosoftOAuth2Api implements ICredentialType {
extends = ['oAuth2Api'];
icon = 'file:Microsoft.svg';
icon = 'file:icons/Microsoft.svg';
displayName = 'Microsoft OAuth2 API';

View file

@ -0,0 +1,60 @@
import type {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class MistApi implements ICredentialType {
name = 'mistApi';
displayName = 'Mist API';
icon = 'file:icons/Mist.svg';
documentationUrl = 'mist';
properties: INodeProperties[] = [
{
displayName: 'API Token',
name: 'token',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
{
displayName: 'Region',
name: 'region',
type: 'options',
options: [
{
name: 'Europe',
value: 'eu',
},
{
name: 'Global',
value: 'global',
},
],
default: 'eu',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Authorization: '=Token {{$credentials.token}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: '=https://api{{$credentials.region === "eu" ? ".eu" : ""}}.mist.com',
url: '/api/v1/self',
method: 'GET',
},
};
}

View file

@ -0,0 +1,49 @@
import type {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class OktaApi implements ICredentialType {
name = 'oktaApi';
displayName = 'Okta API';
icon = 'file:icons/Okta.svg';
properties: INodeProperties[] = [
{
displayName: 'URL',
name: 'url',
type: 'string',
required: true,
default: '',
placeholder: 'https://dev-123456.okta.com',
},
{
displayName: 'SSWS Access Token',
name: 'accessToken',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Authorization: '=SSWS {{$credentials.accessToken}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: '={{$credentials.url}}',
url: '/api/v1/api-tokens',
},
};
}

View file

@ -0,0 +1,29 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class OpenCTIApi implements ICredentialType {
name = 'openCtiApi';
displayName = 'OpenCTI API';
icon = 'file:icons/OpenCTI.png';
properties: INodeProperties[] = [
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
default: '',
required: true,
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Authorization: '=Bearer {{$credentials.apiKey}}',
},
},
};
}

View file

@ -0,0 +1,31 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class QRadarApi implements ICredentialType {
name = 'qRadarApi';
displayName = 'QRadar API';
icon = 'file:icons/IBM.svg';
documentationUrl = 'qradar';
properties: INodeProperties[] = [
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
SEC: '={{$credentials.apiKey}}',
},
},
};
}

View file

@ -0,0 +1,56 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class QualysApi implements ICredentialType {
name = 'qualysApi';
displayName = 'Qualys API';
icon = 'file:icons/Qualys.svg';
documentationUrl = 'qualys';
properties: INodeProperties[] = [
{
displayName: 'Username',
name: 'username',
type: 'string',
default: '',
required: true,
},
{
displayName: 'Password',
name: 'password',
type: 'string',
typeOptions: { password: true },
default: '',
required: true,
},
{
displayName: 'Requested With',
name: 'requestedWith',
type: 'string',
default: 'n8n application',
description: 'User description, like a user agent',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'X-Requested-With': '={{$credentials.requestedWith}}',
},
auth: {
username: '={{$credentials.username}}',
password: '={{$credentials.password}}',
},
},
};
// test: ICredentialTestRequest = {
// request: {
// baseURL: 'https://qualysapi.qualys.com',
// url: '/api/2.0/fo/asset/host/?action=list',
// },
// };
}

View file

@ -0,0 +1,38 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class RecordedFutureApi implements ICredentialType {
name = 'recordedFutureApi';
displayName = 'Recorded Future API';
documentationUrl = 'recordedfuture';
icon = 'file:icons/RecordedFuture.svg';
properties: INodeProperties[] = [
{
displayName: 'Access Token',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'X-RFToken': '={{$credentials.accessToken}}',
},
},
};
// test: ICredentialTestRequest = {
// request: {
// baseURL: 'https://api.recordedfuture.com/v2',
// url: '/alert/search?limit=1',
// },
// };
}

View file

@ -0,0 +1,31 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class SekoiaApi implements ICredentialType {
name = 'sekoiaApi';
displayName = 'Sekoia API';
icon = 'file:icons/Sekoia.svg';
documentationUrl = 'sekoia';
properties: INodeProperties[] = [
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Authorization: '=Bearer {{$credentials.apiKey}}',
},
},
};
}

View file

@ -0,0 +1,44 @@
import type {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class ShufflerApi implements ICredentialType {
name = 'shufflerApi';
displayName = 'Shuffler API';
icon = 'file:icons/Shuffler.svg';
documentationUrl = 'shuffler';
properties: INodeProperties[] = [
{
displayName: 'API Key',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Authorization: '=Bearer {{$credentials.apiKey}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: 'https://shuffler.io/api',
url: '/v1/users/getusers',
method: 'GET',
},
};
}

View file

@ -0,0 +1,37 @@
import type { IAuthenticateGeneric, ICredentialType, INodeProperties } from 'n8n-workflow';
export class TrellixEpoApi implements ICredentialType {
name = 'trellixEpoApi';
displayName = 'Trellix (McAfee) ePolicy Orchestrator API';
icon = 'file:icons/Trellix.svg';
properties: INodeProperties[] = [
{
displayName: 'Username',
name: 'username',
type: 'string',
default: '',
required: true,
},
{
displayName: 'Password',
name: 'password',
type: 'string',
typeOptions: { password: true },
default: '',
required: true,
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
auth: {
username: '={{$credentials.username}}',
password: '={{$credentials.password}}',
},
},
};
}

View file

@ -0,0 +1,41 @@
import type {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class VirusTotalApi implements ICredentialType {
name = 'virusTotalApi';
displayName = 'Virus Total API';
icon = 'file:icons/VirusTotal.svg';
properties: INodeProperties[] = [
{
displayName: 'API Token',
name: 'accessToken',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'x-apikey': '={{$credentials.accessToken}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: 'https://www.virustotal.com/api/v3',
url: '/popular_threat_categories',
},
};
}

View file

@ -0,0 +1,137 @@
import type {
IAuthenticateGeneric,
ICredentialDataDecryptedObject,
ICredentialTestRequest,
ICredentialType,
IHttpRequestHelper,
INodeProperties,
} from 'n8n-workflow';
export class ZscalerZiaApi implements ICredentialType {
name = 'zscalerZiaApi';
displayName = 'Zscaler ZIA API';
documentationUrl = 'zscaler';
icon = 'file:icons/Zscaler.svg';
properties: INodeProperties[] = [
{
displayName: 'Cookie',
name: 'cookie',
type: 'hidden',
typeOptions: {
expirable: true,
},
default: '',
},
{
displayName: 'Base URL',
name: 'baseUrl',
type: 'string',
default: '',
placeholder: 'e.g. zsapi.zscalerthree.net',
required: true,
},
{
displayName: 'Username',
name: 'username',
type: 'string',
default: '',
required: true,
},
{
displayName: 'Password',
name: 'password',
type: 'string',
typeOptions: { password: true },
default: '',
required: true,
},
{
displayName: 'Api Key',
name: 'apiKey',
type: 'string',
typeOptions: {
password: true,
},
default: '',
required: true,
},
];
async preAuthentication(this: IHttpRequestHelper, credentials: ICredentialDataDecryptedObject) {
const { baseUrl, username, password, apiKey } = credentials;
const url = (baseUrl as string).endsWith('/')
? (baseUrl as string).slice(0, -1)
: (baseUrl as string);
const now = Date.now().toString();
const obfuscate = (key: string, timestamp: string) => {
const high = timestamp.substring(timestamp.length - 6);
let low = (parseInt(high) >> 1).toString();
let obfuscatedApiKey = '';
while (low.length < 6) {
low = '0' + low;
}
for (let i = 0; i < high.length; i++) {
obfuscatedApiKey += key.charAt(parseInt(high.charAt(i)));
}
for (let j = 0; j < low.length; j++) {
obfuscatedApiKey += key.charAt(parseInt(low.charAt(j)) + 2);
}
return obfuscatedApiKey;
};
const response = await this.helpers.httpRequest({
method: 'POST',
baseURL: `https://${url}`,
url: '/api/v1/authenticatedSession',
headers: {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache',
},
body: {
apiKey: obfuscate(apiKey as string, now),
username,
password,
timestamp: now,
},
returnFullResponse: true,
});
const headers = response.headers;
const cookie = (headers['set-cookie'] as string[])
?.find((entrt) => entrt.includes('JSESSIONID'))
?.split(';')
?.find((entry) => entry.includes('JSESSIONID'));
if (!cookie) {
throw new Error('No cookie returned. Please check your credentials.');
}
return { cookie };
}
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
Cookie: '={{$credentials.cookie}}',
},
},
};
test: ICredentialTestRequest = {
request: {
url: '=https://{{$credentials.baseUrl}}/api/v1/authSettings/exemptedUrls',
},
};
}

View file

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
<path d="M29.307 9.932l-3.146-9.932h-20.365l-3.104 9.932c-1.802 5.75 0.042 12.271 5.089 16.021l8.229 6.047 8.208-6.068c5.005-3.75 6.911-10.25 5.089-16.021l-8.214 6.104 3.12 9.938-8.208-6.13-8.208 6.104 3.141-9.911-8.25-6.063 10.177-0.063 3.146-9.891 3.141 9.87z"/>
</svg>

After

Width:  |  Height:  |  Size: 358 B

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="256px" height="242px" viewBox="0 0 256 242" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<title>Azure</title>
<defs>
<linearGradient x1="58.9717389%" y1="7.4114724%" x2="37.1905196%" y2="103.76182%" id="Azure-linearGradient-1">
<stop stop-color="#114A8B" offset="0%"></stop>
<stop stop-color="#0669BC" offset="100%"></stop>
</linearGradient>
<linearGradient x1="59.7188447%" y1="52.3127289%" x2="52.6914332%" y2="54.8636556%" id="Azure-linearGradient-2">
<stop stop-color="#000000" stop-opacity="0.3" offset="0%"></stop>
<stop stop-color="#000000" stop-opacity="0.2" offset="7.1%"></stop>
<stop stop-color="#000000" stop-opacity="0.1" offset="32.1%"></stop>
<stop stop-color="#000000" stop-opacity="0.05" offset="62.3%"></stop>
<stop stop-color="#000000" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<linearGradient x1="37.2789399%" y1="4.60005789%" x2="62.4733904%" y2="99.9794963%" id="Azure-linearGradient-3">
<stop stop-color="#3CCBF4" offset="0%"></stop>
<stop stop-color="#2892DF" offset="100%"></stop>
</linearGradient>
</defs>
<g>
<path d="M85.3432536,0.00290931225 L161.095926,0.00290931225 L82.4572158,233.000999 C80.7999506,237.910266 76.1963409,241.216897 71.0148908,241.216897 L12.0605874,241.216897 C8.17631708,241.216897 4.52963465,239.346777 2.26398956,236.191716 C-0.00165554136,233.036655 -0.608845705,228.983428 0.632808896,225.302959 L73.8980192,8.2188071 C75.5546242,3.30737742 80.1599649,0 85.3432536,0 L85.3432536,0.00290931225 Z" fill="url(#Azure-linearGradient-1)"></path>
<path d="M195.422901,156.282432 L75.2973984,156.282432 C73.0119231,156.279908 70.9577304,157.676287 70.1192383,159.802395 C69.2807461,161.928503 69.8287946,164.351151 71.5007459,165.909349 L148.690618,237.955558 C150.937998,240.051977 153.897138,241.216897 156.970521,241.216897 L224.990241,241.216897 L195.422901,156.282432 Z" fill="#0078D4"></path>
<path d="M85.3432536,0.00282026831 C80.0982223,-0.017218565 75.4499031,3.37677358 73.8718354,8.37881927 L0.722997576,225.105126 C-0.602635687,228.800183 -0.0443562611,232.909431 2.21904685,236.116884 C4.48244996,239.324337 8.16695154,241.227505 12.0925898,241.216941 L72.5684635,241.216941 C77.154039,240.397586 80.9441027,237.174364 82.4892183,232.779891 L97.0765099,189.788984 L149.182292,238.389046 C151.365814,240.195147 154.104928,241.193803 156.938519,241.216941 L224.705129,241.216941 L194.983595,156.282435 L108.341367,156.3028 L161.369401,0.00282026831 L85.3432536,0.00282026831 Z" fill="url(#Azure-linearGradient-2)"></path>
<path d="M182.098251,8.20716985 C180.443985,3.30365177 175.845517,0.00290931225 170.670472,0.00290931225 L86.2451404,0.00290931225 C91.4198966,0.00290931225 96.0178956,3.30421162 97.6729189,8.20716985 L170.941039,225.30005 C172.18363,228.981191 171.576996,233.035501 169.311351,236.191716 C167.045705,239.34793 163.398467,241.219806 159.51326,241.219806 L243.941501,241.219806 C247.826196,241.219806 251.472566,239.346605 253.737531,236.190534 C256.002496,233.034464 256.608798,228.980705 255.366371,225.30005 L182.098251,8.20716985 Z" fill="url(#Azure-linearGradient-3)"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="216"
height="114"
fill="#049fd9"
id="svg24">
<path
d="m 106.48,76.238 c -0.282,-0.077 -4.621,-1.196 -9.232,-1.196 -8.73,0 -13.986,4.714 -13.986,11.734 0,6.214 4.397,9.313 9.674,10.98 0.585,0.193 1.447,0.463 2.021,0.653 2.349,0.739 4.224,1.837 4.224,3.739 0,2.127 -2.167,3.504 -6.878,3.504 -4.14,0 -8.109,-1.184 -8.945,-1.395 v 8.637 c 0.466,0.099 5.183,1.025 10.222,1.025 7.248,0 15.539,-3.167 15.539,-12.595 0,-4.573 -2.8,-8.783 -8.947,-10.737 L 97.559,89.755 C 96,89.263 93.217,88.466 93.217,86.181 c 0,-1.805 2.062,-3.076 5.859,-3.076 3.276,0 7.263,1.101 7.404,1.145 z m 80.041,18.243 c 0,5.461 -4.183,9.879 -9.796,9.879 -5.619,0 -9.791,-4.418 -9.791,-9.879 0,-5.45 4.172,-9.87 9.791,-9.87 5.613,0 9.796,4.42 9.796,9.87 m -9.796,-19.427 c -11.544,0 -19.823,8.707 -19.823,19.427 0,10.737 8.279,19.438 19.823,19.438 11.543,0 19.834,-8.701 19.834,-19.438 0,-10.72 -8.291,-19.427 -19.834,-19.427 M 70.561,113.251 H 61.089 V 75.719 h 9.472"
id="path10" />
<path
d="m 48.07,76.399 c -0.89,-0.264 -4.18,-1.345 -8.636,-1.345 -11.526,0 -19.987,8.218 -19.987,19.427 0,12.093 9.34,19.438 19.987,19.438 4.23,0 7.459,-1.002 8.636,-1.336 v -10.075 c -0.407,0.226 -3.503,1.992 -7.957,1.992 -6.31,0 -10.38,-4.441 -10.38,-10.019 0,-5.748 4.246,-10.011 10.38,-10.011 4.53,0 7.576,1.805 7.957,2.004"
id="path12" />
<use
xlink:href="#path12"
transform="translate(98.86)"
id="use14" />
<g
id="g22">
<path
d="m 61.061,4.759 c 0,-2.587 -2.113,-4.685 -4.703,-4.685 -2.589,0 -4.702,2.098 -4.702,4.685 v 49.84 c 0,2.602 2.113,4.699 4.702,4.699 2.59,0 4.703,-2.097 4.703,-4.699 z M 35.232,22.451 c 0,-2.586 -2.112,-4.687 -4.702,-4.687 -2.59,0 -4.702,2.101 -4.702,4.687 v 22.785 c 0,2.601 2.112,4.699 4.702,4.699 2.59,0 4.702,-2.098 4.702,-4.699 z M 9.404,35.383 C 9.404,32.796 7.292,30.699 4.702,30.699 2.115,30.699 0,32.796 0,35.383 v 9.853 c 0,2.601 2.115,4.699 4.702,4.699 2.59,0 4.702,-2.098 4.702,-4.699"
id="path16" />
<use
xlink:href="#path16"
transform="matrix(-1,0,0,1,112.717,0)"
id="use18" />
</g>
<use
xlink:href="#g22"
transform="matrix(-1,0,0,1,216,0)"
id="use20" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 1000 1000">
<defs><style>.svg-red{fill:#e4002b}.svg-white{fill:#fff}</style></defs>
<title>F5 Logo</title>
<g id="F5Logo">
<path class="svg-red" d="M940.4 894.5a30.9 30.9 0 0 1 9.4 23 32.4 32.4 0 0 1-55.4 23 32 32 0 0 1-9.4-23 32.5 32.5 0 0 1 32.4-32.6 30.9 30.9 0 0 1 23 9.6Zm3.8-3.7a36.6 36.6 0 0 0-26.8-11 37.7 37.7 0 1 0 26.8 64.3 37.7 37.7 0 0 0 0-53.4ZM923 915.7a18.8 18.8 0 0 1-7 .9h-6.5v-15h6.3c4 0 7 .5 8.7 1.5s2.8 3.1 2.8 6a6.4 6.4 0 0 1-4.3 6.5Zm-20.8 22.2h7.3v-16.2h5.8c3.8 0 6.6.4 8.1 1.3 2.6 1.6 3.9 4.7 3.9 9.5v3.3l.1 1.3a3 3 0 0 1 .1.5c0 .2.1.3.2.3h6.8l-.2-.4a4.4 4.4 0 0 1-.4-2.1v-6.1a11.5 11.5 0 0 0-2.4-6.5c-1.5-2.2-3.9-3.5-7.1-4.1a17 17 0 0 0 6-2c2.7-1.8 4-4.6 4-8.2 0-5.2-2-8.7-6.4-10.5-2.4-1-6.1-1.5-11.3-1.5h-14.5Z"/>
<path class="svg-white" d="M958.6 620.3c2.7-53.3-7.2-110.8-53.6-162.8-47.7-51.4-128.2-95-293.7-105.2 8.6-26.8 16.1-51.4 24-76.5 99 3.5 187.1 10.6 262 20.3 6-26.8 9.2-53 15.3-78.4q-11.4-16.7-24.2-32.4c-35.6-4.2-71.2-13-109.4-18a1995.1 1995.1 0 0 0-164.4-14.1 85384 85384 0 0 0-130.1 390.5C730.7 565 825.5 631.4 820 725c-5 50.6-51.1 96.5-112 102-72.2 4.9-105.3-24.4-127-56.4a9594.8 9594.8 0 0 1-58.7-89c-5.5-9.2-12.8-3.2-19.4 3.2a9738 9738 0 0 1-43.9 42.3c-9.4 8.2-7.3 15.3-4 22.2a8042 8042 0 0 0 39.6 91.8c21.5 13.2 122.9 31.2 198.7 25.6A336.7 336.7 0 0 0 862 802.5c52.5-40.7 90.7-95.5 96.6-182.2Z"/>
<path class="svg-white" d="M97.3 796.3q14.2 19.3 30.2 37.1a2114 2114 0 0 0 302 29.2l-1-34.5c-67.9-3.8-99.1-14.2-104.5-27.6-4.6-10.7-5.4-26.7-6.3-42.4a5198.9 5198.9 0 0 1-5-330.5c38-.7 75.8-1 115.5-1.5 19.2-8.7 37.3-17.4 56.5-26l.1-39.3c-58.8.2-114.6 1.2-170.6 2.8 1.6-47.7 3.5-91.6 6.3-134.5 2-28.2 21.5-48.8 41.6-50.4 32.3-1.3 61.2 11.6 89.3 24 15.4 7.5 30.7 15 46.5 23 7.6 2 16.6 3.8 22-2.7 9.4-11.2 18.3-21.5 27.5-32.3 5-7.4 2.9-11.6.8-14.3a2834 2834 0 0 0-58.2-44.6c-11.8-8-30.5-9.7-49-9.7-7.3 0-14.6.2-21.5.4-18.9 1-43 4-82.4 13.7-88.8 23.9-195.4 85.8-206.7 187a1982 1982 0 0 0-3.7 49.9c-25.1 2-48 3.9-69.5 6a1557 1557 0 0 0-3.5 57.6c21.8-1.3 44.6-2.5 70-3.6-3.8 106.2-.3 212.1 9.7 310.3 1.7 14.9 3.3 29.7 1.4 39.2-1.6 9.1-16.3 13.9-37.5 13.7Z"/>
<path class="svg-red" d="M912.7 217.7c-6.2 25.3-9.4 51.6-15.3 78.4-75-9.7-163-16.8-262-20.3-8 25-15.5 49.7-24 76.5 165.5 10.2 246 53.8 293.7 105.2 46.4 52 56.2 109.5 53.5 162.8-6 86.7-44.1 141.5-96.6 182.1-53 40-117.3 59.8-168.7 64.2-75.7 5.6-177-12.4-198.6-25.6a7418 7418 0 0 1-39.6-91.8c-3.3-6.9-5.4-14 4-22.2a9738 9738 0 0 0 43.9-42.3c6.6-6.4 13.9-12.4 19.4-3.2 20.4 31.4 39.5 60.3 58.6 89 21.7 32 54.8 61.3 127.2 56.4 60.7-5.4 107-51.4 111.9-102 5.3-93.6-89.4-160-335.7-181.3C531.7 401 577.8 263 614.6 153.3c58.5 2.7 112.6 7.5 164.4 14.2 38.2 4.8 73.8 13.7 109.4 17.8A500 500 0 0 0 0 500a497.6 497.6 0 0 0 97.3 296.3c21.2.2 35.9-4.6 37.5-13.7 1.9-9.6.3-24.3-1.4-39.2-10-98.2-13.5-204.1-9.8-310.3a4430 4430 0 0 0-70 3.6c1-19.7 2-38.3 3.6-57.6 21.6-2.1 44.4-4 69.5-6 1-17 2.2-33.3 3.7-49.8C141.7 222 248.3 160 337.1 136.2a435.4 435.4 0 0 1 82.4-13.6c6.9-.3 14.2-.5 21.6-.5 18.4 0 37 1.7 48.9 9.7 19.2 14.4 38 28.7 58.2 44.6 2 2.7 4.2 7-.8 14.3L520 223c-5.4 6.5-14.4 4.8-22 2.8-15.8-8.1-31-15.6-46.5-23-28-12.5-57-25.4-89.3-24-20.1 1.5-39.6 22.1-41.6 50.3-2.8 42.9-4.7 86.8-6.3 134.5 56-1.6 111.8-2.6 170.7-2.9l-.1 39.4c-19.2 8.6-37.3 17.3-56.6 26-39.7.5-77.5.8-115.5 1.5a5178 5178 0 0 0 5 330.5c1 15.7 1.8 31.7 6.3 42.3 5.4 13.5 36.6 23.8 104.6 27.7l1 34.4a2112.6 2112.6 0 0 1-302-29A500 500 0 0 0 1000 500a497.6 497.6 0 0 0-87.3-282.4Z"/>
<path class="svg-red" d="M127.5 833.4Z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -0,0 +1,7 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1537 1101" width="1537" height="1101">
<title>fortinet-logo-svg</title>
<style>
.s0 { fill: #ee3124 }
</style>
<path id="Layer" fill-rule="evenodd" class="s0" d="m0.2 408.6h434.5v285.8h-434.5zm554.7-406.3h426.8v285.8h-426.8zm0 811h426.8v285.8h-426.8zm545.4-404.7h436v285.8h-436zm-665.6-406.3v287.3h-434.5v-32.4c17-129.8 87.8-231.8 178.7-254.9zm1.6 811v285.8h-268.1c-86.3-27.8-152.5-126.7-167.9-250.3v-35.5zm1100-526.8h-436v-285.8h257.3c90.9 24.7 161.8 126.7 178.7 254.9zm-436 814.1v-285.7h436v35.5c-16.9 123.6-83.2 220.9-167.9 250.2z"/>
</svg>

After

Width:  |  Height:  |  Size: 617 B

View file

Before

Width:  |  Height:  |  Size: 688 B

After

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View file

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1000px" height="401.149px" viewBox="0 0 1000 401.149" enable-background="new 0 0 1000 401.149" xml:space="preserve">
<g>
<g>
<polygon id="Rectangle-path" fill="#1F70C1" points="0,373.217 194.433,373.217 194.433,401.05 0,401.05 "/>
<polygon id="Rectangle-path_1_" fill="#1F70C1" points="0,319.83 194.433,319.83 194.433,347.761 0,347.761 "/>
<polygon id="Rectangle-path_2_" fill="#1F70C1" points="55.468,266.541 138.867,266.541 138.867,294.473 55.468,294.473 "/>
<polygon id="Rectangle-path_3_" fill="#1F70C1" points="55.468,213.253 138.867,213.253 138.867,241.185 55.468,241.185 "/>
<polygon id="Rectangle-path_4_" fill="#1F70C1" points="55.468,159.964 138.867,159.964 138.867,187.896 55.468,187.896 "/>
<polygon id="Rectangle-path_5_" fill="#1F70C1" points="55.468,106.577 138.867,106.577 138.867,134.509 55.468,134.509 "/>
<rect id="Rectangle-path_6_" y="53.288" fill="#1F70C1" width="194.433" height="27.932"/>
<rect id="Rectangle-path_7_" fill="#1F70C1" width="194.433" height="27.932"/>
</g>
<g>
<path id="Shape_16_" fill="#1F70C1" d="M222.167,347.761h299.029c5.051-8.617,8.815-18.027,11.094-27.932H222.167V347.761z"/>
<path id="Shape_17_" fill="#1F70C1" d="M497.92,213.253H277.734v27.932h243.463C514.857,230.487,507.032,221.078,497.92,213.253z"
/>
<path id="Shape_18_" fill="#1F70C1" d="M277.734,159.964v27.932H497.92c9.311-7.825,17.135-17.235,23.277-27.932H277.734z"/>
<path id="Shape_19_" fill="#1F70C1" d="M521.197,53.288H222.167V81.22H532.29C529.715,71.315,525.951,61.906,521.197,53.288z"/>
<path id="Shape_20_" fill="#1F70C1" d="M429.279,0H222.167v27.932h278.526C482.072,10.697,456.815,0,429.279,0z"/>
<rect id="Rectangle-path_8_" x="277.734" y="106.577" fill="#1F70C1" width="83.3" height="27.932"/>
<path id="Shape_21_" fill="#1F70C1" d="M444.433,134.509h87.163c2.476-8.914,3.764-18.324,3.764-27.932h-90.927L444.433,134.509
L444.433,134.509z"/>
<polygon id="Rectangle-path_9_" fill="#1F70C1" points="277.734,266.541 361.034,266.541 361.034,294.473 277.734,294.473 "/>
<path id="Shape_22_" fill="#1F70C1" d="M444.433,266.541v27.932h90.927c0-9.608-1.288-19.017-3.764-27.932H444.433z"/>
<path id="Shape_23_" fill="#1F70C1" d="M222.167,400.852l207.112,0.297c27.734,0,52.793-10.697,71.513-27.932H222.167V400.852z"/>
</g>
<g>
<polygon id="Rectangle-path_10_" fill="#1F70C1" points="555.567,373.217 694.433,373.217 694.433,401.05 555.567,401.05 "/>
<polygon id="Rectangle-path_11_" fill="#1F70C1" points="555.567,319.83 694.433,319.83 694.433,347.761 555.567,347.761 "/>
<polygon id="Rectangle-path_12_" fill="#1F70C1" points="611.034,266.541 694.433,266.541 694.433,294.473 611.034,294.473 "/>
<polygon id="Rectangle-path_13_" fill="#1F70C1" points="611.034,213.253 694.433,213.253 694.433,241.185 611.034,241.185 "/>
<polygon id="Shape_24_" fill="#1F70C1" points="733.063,53.288 555.567,53.288 555.567,81.22 742.67,81.22 "/>
<polygon id="Shape_25_" fill="#1F70C1" points="714.639,0 555.567,0 555.567,27.932 724.247,27.932 "/>
<polygon id="Rectangle-path_14_" fill="#1F70C1" points="861.034,373.217 1000,373.217 1000,401.05 861.034,401.05 "/>
<polygon id="Rectangle-path_15_" fill="#1F70C1" points="861.034,319.83 1000,319.83 1000,347.761 861.034,347.761 "/>
<polygon id="Rectangle-path_16_" fill="#1F70C1" points="861.034,266.541 944.433,266.541 944.433,294.473 861.034,294.473 "/>
<polygon id="Rectangle-path_17_" fill="#1F70C1" points="861.034,213.253 944.433,213.253 944.433,241.185 861.034,241.185 "/>
<polygon id="Shape_26_" fill="#1F70C1" points="861.034,187.896 944.433,187.896 944.433,159.964 861.034,159.964
861.034,159.964 785.559,159.964 777.734,182.548 769.909,159.964 694.433,159.964 694.433,159.964 611.034,159.964
611.034,187.896 694.433,187.896 694.433,162.242 703.249,187.896 852.219,187.896 861.034,162.242 "/>
<polygon id="Shape_27_" fill="#1F70C1" points="944.433,106.577 803.982,106.577 794.374,134.509 944.433,134.509 "/>
<polygon id="Shape_28_" fill="#1F70C1" points="840.927,0 831.319,27.932 1000,27.932 1000,0 "/>
<polygon id="Shape_29_" fill="#1F70C1" points="777.734,400.852 787.341,373.217 768.126,373.217 "/>
<polygon id="Shape_30_" fill="#1F70C1" points="759.311,347.761 796.157,347.761 806.062,319.83 749.505,319.83 "/>
<polygon id="Shape_31_" fill="#1F70C1" points="740.59,294.473 814.877,294.473 824.683,266.541 730.784,266.541 "/>
<polygon id="Shape_32_" fill="#1F70C1" points="721.969,241.185 833.597,241.185 843.106,213.253 712.361,213.253 "/>
<polygon id="Shape_33_" fill="#1F70C1" points="611.034,134.509 761.093,134.509 751.486,106.577 611.034,106.577 "/>
<polygon id="Shape_34_" fill="#1F70C1" points="812.896,81.22 1000,81.22 1000,53.288 822.405,53.288 "/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

View file

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Layer_1"
x="0"
y="0"
viewBox="0 0 499.99999 500.00001"
xml:space="preserve"
sodipodi:docname="Imperva.svg"
width="500"
height="500"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs7" /><sodipodi:namedview
id="namedview5"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="1.4340829"
inkscape:cx="240.22322"
inkscape:cy="231.15819"
inkscape:window-width="1920"
inkscape:window-height="1014"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="g972" /><g
id="g972"
transform="matrix(12.458909,0,0,12.458909,53.149238,131.60215)"><g
id="g2429"
transform="matrix(1.1703821,0,0,1.1703821,-3.1165512,2.2431085)"><path
style="fill:#235ae6;fill-opacity:1"
d="m 26.462714,0.80306724 c 3.4,0 5.5,2.39999996 5.5,6.19999996 V 17.903067 h -4.6 V 8.0030672 c 0,-1.8 -0.8,-3 -2.4,-3 -1.2,0 -2.3,0.8 -2.6,2.2 V 18.003067 h -4.7 V 8.1030672 c 0,-1.8 -0.8,-3 -2.4,-3 -1.2,0 -2.3,0.8 -2.6,2.2 V 18.103067 H 8.0627141 V 1.1030672 h 4.5999999 v 1.4 c 0.8,-1 2.4,-1.79999996 4.2,-1.79999996 2,0 3.6,0.89999996 4.5,2.09999996 1.1,-1.1 2.7,-1.99999996 5.1,-1.99999996 z"
id="path944"
sodipodi:nodetypes="ssccsscccssccccccscs" /><path
style="fill:#235ae6;fill-opacity:1"
d="M 4.9627141,17.903067 H 0.36271409 V 1.1030672 H 4.9627141 Z"
id="path942"
sodipodi:nodetypes="ccccc" /><path
style="fill:#000000;fill-opacity:1"
d="M 4.9627141,-5.6969328 H 0.36271409 v 4.6 H 4.9627141 Z"
id="path2"
sodipodi:nodetypes="ccccc" /></g></g></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="256px" height="328px" viewBox="0 0 256 328" version="1.1" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid">
<title>Kibana</title>
<g>
<polygon fill="#F04E98" points="256 0 -4.7684239e-17 0 2.20275616e-13 294.78912"></polygon>
<path d="M2.27373675e-13,122.88 L2.27373675e-13,294.78912 L122.19392,154.08128 C85.8624,134.27712 44.288,122.88 2.27373675e-13,122.88" fill="#343741"></path>
<path d="M148.589568,170.540032 L23.200768,314.944512 L12.131328,327.683072 L250.866688,327.683072 C237.769728,263.130112 200.301568,207.496192 148.589568,170.540032" fill="#00BFB3"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 690 B

View file

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 272 B

View file

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="490"
height="490"
viewBox="0 0 129.64583 129.64583"
version="1.1"
id="svg5"
xml:space="preserve"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="mist.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.0419012"
inkscape:cx="405.98859"
inkscape:cy="259.14165"
inkscape:window-width="1920"
inkscape:window-height="1007"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs2" /><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><g
id="g2105"
transform="matrix(1.7489635,0,0,1.7489635,-162.276,-145.04238)"><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1634"
width="11.222793"
height="11.133011"
x="115.57233"
y="122.46314"
ry="1.2569518" /><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1895-5"
width="11.222793"
height="11.133011"
x="133.7308"
y="122.46314"
ry="1.2569518" /><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1895-35"
width="11.222793"
height="11.133011"
x="151.05879"
y="122.46314"
ry="1.2569518" /><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1895-62"
width="11.222793"
height="11.133011"
x="151.05879"
y="106.03299"
ry="1.2569518" /><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1895-9"
width="11.222793"
height="11.133011"
x="133.7308"
y="106.03299"
ry="1.2569518" /><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1895-2"
width="11.222793"
height="11.133011"
x="151.05879"
y="89.961891"
ry="1.2569518" /><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1916"
width="11.222793"
height="11.133011"
x="97.413849"
y="138.8933"
ry="1.2569518" /><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1895-3"
width="11.222793"
height="11.133011"
x="115.57233"
y="138.8933"
ry="1.2569518" /><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1895-6"
width="11.222793"
height="11.133011"
x="133.7308"
y="138.8933"
ry="1.2569518" /><rect
style="fill:#1963ae;fill-opacity:1;stroke-width:0.264583"
id="rect1895-7"
width="11.222793"
height="11.133011"
x="151.05879"
y="138.8933"
ry="1.2569518" /></g></g></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View file

@ -0,0 +1,9 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1271 1512" width="1271" height="1512">
<title>qualys-svg</title>
<style>
.s0 { fill: #ed2e26 }
.s1 { fill: #ffffff }
</style>
<path id="Layer" class="s0" d="m634.9 0c413.6 0 621.5 221.1 621.5 221.1 0 0 23.8 163.7 8.6 493.3-22.9 497.9-629.9 796.9-630 797 0 0-607-299.1-629.9-797-15.2-329.6 8.6-493.3 8.6-493.3 0 0 207.7-221.1 621.2-221.1z"/>
<path id="Layer" class="s1" d="m556 997.1c100.4 52.7 250.3 91.2 408.6 111.6-26.3 39.2-96.6 106.2-137.7 128.9-189.5-31.1-356-96.7-469.9-195-121.7-105.2-186.1-242.4-186.1-396.9-0.4-123.3 48.3-241.6 135.4-329 87.1-87.3 205.4-136.4 328.7-136.4 123.4 0 241.7 49.1 328.8 136.4 87 87.4 135.7 205.7 135.3 329 0 34.2-3.9 68.2-11.6 101.5-7.8 33.3-19.3 65.6-34.4 96.2-15.1 30.7-33.6 59.5-55.3 85.9-21.6 26.5-46.2 50.4-73.3 71.2-74.2-6.8-151.8-27.8-187-47.9 90.6-57.8 208.2-170.2 208.2-306.9 0-40.8-8.1-81.1-23.7-118.8-15.7-37.6-38.6-71.8-67.4-100.6-28.8-28.9-63.1-51.7-100.7-67.4-37.7-15.6-78.1-23.6-118.9-23.7-171.1 0-310.4 143.2-310.4 319.3 0 146.8 77.9 262.1 231.4 342.6z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="500"
height="500"
viewBox="0 0 132.29166 132.29167"
version="1.1"
id="svg5"
xml:space="preserve"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
sodipodi:docname="RecordedFuture.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="1.0582793"
inkscape:cx="154.49607"
inkscape:cy="295.76312"
inkscape:window-width="1920"
inkscape:window-height="1019"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2" /><defs
id="defs2" /><g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Layer 2"><path
id="path232"
style="fill:#000000;fill-opacity:1;stroke-width:0.556055"
d="m 66.134978,8.3391846 c -3.958286,-1.547e-4 -7.198432,3.7746914 -7.167,7.1407194 0.09844,10.542557 1.81e-4,17.701735 0.09711,26.402771 0.03749,3.365674 3.208018,7.140255 7.165859,7.14072 3.958288,1.54e-4 7.164845,-3.774559 7.167011,-7.14072 0.0067,-10.652222 -0.15297,-16.586224 -0.09594,-26.402771 0.0199,-3.366116 -3.208721,-7.1408741 -7.167007,-7.1407194 z M 40.106906,23.262633 c -3.958286,-1.55e-4 -7.198432,3.774693 -7.167,7.14072 0.09844,10.542557 1.81e-4,62.783923 0.09711,71.484957 0.03749,3.3657 3.208017,7.14026 7.165858,7.14072 3.958288,1.6e-4 7.164837,-3.77453 7.167003,-7.14072 0.0067,-10.65222 -0.152992,-61.668411 -0.09596,-71.484957 0.0199,-3.366116 -3.208714,-7.140875 -7.167,-7.14072 z m 52.055,0 c -3.95777,5.75e-4 -7.198437,3.775024 -7.167003,7.14072 0.09837,10.542557 2.44e-4,62.783923 0.09704,71.484957 0.03758,3.3657 3.208017,7.14026 7.165853,7.14072 3.958301,1.6e-4 7.164832,-3.77453 7.167003,-7.14072 0.0065,-10.65222 -0.152974,-61.668411 -0.09594,-71.484957 0.01986,-3.365784 -3.208083,-7.140145 -7.165853,-7.14072 z M 14.127955,57.05742 a 9.0884303,9.0884303 0 0 0 -9.0884065,9.088413 9.0884303,9.0884303 0 0 0 9.0884065,9.088413 9.0884303,9.0884303 0 0 0 9.088407,-9.088413 9.0884303,9.0884303 0 0 0 -9.088407,-9.088413 z m 52.055002,0 a 9.0884303,9.0884303 0 0 0 -9.088407,9.088413 9.0884303,9.0884303 0 0 0 9.088407,9.088413 9.0884303,9.0884303 0 0 0 9.088398,-9.088413 9.0884303,9.0884303 0 0 0 -9.088398,-9.088413 z m 51.980753,0 a 9.0884303,9.0884303 0 0 0 -9.08842,9.088413 9.0884303,9.0884303 0 0 0 9.08842,9.088413 9.0884303,9.0884303 0 0 0 9.08841,-9.088413 9.0884303,9.0884303 0 0 0 -9.08841,-9.088413 z M 66.134978,83.268271 c -3.958286,-1.54e-4 -7.198432,3.774714 -7.167,7.14072 0.09844,10.542559 1.81e-4,17.701739 0.09711,26.402769 0.03749,3.3657 3.208018,7.14026 7.165859,7.14072 3.958288,1.6e-4 7.164845,-3.77454 7.167011,-7.14072 0.0067,-10.65222 -0.15297,-16.58623 -0.09594,-26.402769 0.0199,-3.366094 -3.208721,-7.140874 -7.167007,-7.14072 z" /></g></svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="500"
height="500"
viewBox="0 0 500 500"
fill="none"
version="1.1"
id="svg4"
sodipodi:docname="sekoiaio.svg"
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs8" />
<sodipodi:namedview
id="namedview6"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="false"
inkscape:zoom="0.89972337"
inkscape:cx="723"
inkscape:cy="210.62029"
inkscape:window-width="1920"
inkscape:window-height="1012"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M 250.05513,25.000028 C 205.55238,24.989116 162.04525,38.175916 125.03725,62.892616 88.028912,87.609314 59.181557,122.74565 42.143432,163.8581 c -17.038237,41.112 -21.50235,86.35388 -12.8268,130.00388 8.675438,43.64887 30.100275,83.74499 61.56495,115.21799 31.464668,31.47188 71.556298,52.9065 115.202918,61.59263 43.64775,8.68612 88.89075,4.23337 130.00725,-12.79463 41.1165,-17.028 76.25925,-45.86625 100.98563,-82.86862 C 461.80263,338.00698 475,294.50323 475,250.00048 474.9415,190.3541 451.22538,133.16585 409.05475,90.984876 366.883,48.803454 309.7015,25.072928 250.05513,25.000028 Z m 0,408.670192 c -36.33975,0 -71.86275,-10.77637 -102.078,-30.96787 C 117.76255,382.51197 94.214392,353.81548 80.310292,320.24098 66.406195,286.66648 62.770645,249.7226 69.864107,214.08148 76.957682,178.44035 94.461662,145.70398 120.1615,120.01201 145.861,94.319826 178.603,76.826079 214.24638,69.743304 c 35.64225,-7.082888 72.585,-3.436763 106.155,10.477462 33.57112,13.91411 62.262,37.471274 82.44337,67.691584 20.18138,30.22088 30.9465,65.74838 30.93525,102.08813 -0.0146,48.73162 -19.37137,95.46637 -53.82112,129.93524 -34.44863,34.47 -81.171,53.856 -129.90375,53.89988 z m -11.3805,-268.73999 c 16.44412,-10.98788 35.77837,-16.8525 55.557,-16.8525 26.52187,0 51.957,10.53562 70.71075,29.28937 18.75262,18.75375 29.28937,44.18888 29.28937,70.71075 0,19.7775 -5.86575,39.11175 -16.85362,55.557 -10.98788,16.44413 -26.60513,29.26238 -44.8785,36.83025 -18.27225,7.569 -38.37938,9.549 -57.77775,5.69138 -19.39725,-3.85875 -37.21613,-13.383 -51.201,-27.36788 -13.98488,-13.986 -23.51025,-31.80375 -27.36788,-51.20212 -3.85875,-19.39838 -1.87762,-39.50438 5.69025,-57.77775 7.569,-18.27225 20.38613,-33.8895 36.83138,-44.8785 z m 22.977,131.90625 c 9.6435,6.444 20.98125,9.88312 32.58,9.88312 15.5475,-0.0146 30.456,-6.19762 41.4495,-17.19225 10.99462,-10.99462 17.17762,-25.902 17.19225,-41.4495 0,-11.59875 -3.44025,-22.9365 -9.88313,-32.58 -6.444,-9.6435 -15.60262,-17.15962 -26.31825,-21.59775 -10.7145,-4.43925 -22.50562,-5.60025 -33.88162,-3.33787 -11.37488,2.2635 -21.82388,7.848 -30.02513,16.04925 -8.20125,8.20125 -13.78575,18.65025 -16.04812,30.02625 -2.2635,11.37487 -1.1025,23.166 3.33675,33.88162 4.43812,10.7145 11.95425,19.87313 21.59775,26.31713 z M 128.8465,167.30848 h 44.2305 v 163.46137 h -44.2305 z"
fill="#0a083b"
id="path2"
sodipodi:nodetypes="ccccccsccccccsccccccccccscscccccccsccccccsccsccccc"
style="stroke-width:1.125" />
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View file

@ -0,0 +1,5 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 0L-1.48522e-08 13.3913L4.40052 13.3913L4.40052 4.46465L22 4.46465L22 2.44001e-08L0 0Z" fill="#FF8444"/>
<path d="M17.5995 8.60864L17.5995 17.5353L-9.90052e-09 17.5353L-1.48522e-08 22L22 22L22 8.60864L17.5995 8.60864Z" fill="#FF8444"/>
<path d="M13.3915 8.60864L8.60889 8.60864L8.60889 13.3913L13.3915 13.3913L13.3915 8.60864Z" fill="#FF8444"/>
</svg>

After

Width:  |  Height:  |  Size: 459 B

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg id="c" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 260.12 218.23"><defs><style>.f{fill:url(#e);}</style><linearGradient id="e" x1="0" y1="107.61" x2="260.12" y2="107.61" gradientUnits="userSpaceOnUse"><stop offset=".07" stop-color="#3600ff"/><stop offset=".12" stop-color="#2e17ff"/><stop offset=".25" stop-color="#1a54ff"/><stop offset=".36" stop-color="#0c7fff"/><stop offset=".45" stop-color="#039aff"/><stop offset=".5" stop-color="#00a5ff"/><stop offset="1" stop-color="#00d300"/></linearGradient></defs><g id="d"><path class="f" d="M91.97,215.22H0S168.15,0,168.15,0h91.97L91.97,215.22Z"/></g></svg>

After

Width:  |  Height:  |  Size: 694 B

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<svg viewBox="165.097 116 268.436 236.784" xmlns="http://www.w3.org/2000/svg">
<path d="M 208.338 254.089 L 86.453 372.481 L 354.889 372.481 L 354.889 135.697 L 86.453 135.697 L 208.338 254.089 Z M 330.345 348.803 L 143.208 348.803 L 243.618 253.498 L 145.908 159.377 L 330.345 159.377 L 330.345 348.803 Z" fill="#3b61ff" style="" transform="matrix(1, 0, 0, 1, 78.643982, -19.696911)"/>
</svg>

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -0,0 +1,9 @@
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1570 974" width="1570" height="974">
<title>logo (34)-svg</title>
<style>
.s0 { fill: #236bf5 }
</style>
<g id="nav">
<path id="Layer" fill-rule="evenodd" class="s0" d="m1566.1 496.2c25.3 155.6-109.7 243.2-246.6 253.3-87.1 179.3-394.3 300.2-660 169.8-113.2 17.2-176.3-11.3-224.4-65.6 96.9-125.3 391.6-350.7 751.6-234.1 192.4 62 242.3-84 193.9-138.7-181.4-206-591-20.6-605.5-5.1 160.8-246.4 736.2-315.4 791 20.4zm-551.3-283c0.9 0-130.9-47-315 32.6q-2.8-1-5.5-2.1-2.8-1.1-5.5-2.2-2.8-1.2-5.5-2.5-2.7-1.3-5.3-2.6c177.2-117.7 332.4-167.7 465.4-148.3-80.6-92.4-466.9-160.5-688.3 61.5-273.6-53.9-465.2 178.1-454.3 390 10.9 211.8 242.1 344.1 373.8 308q1.1-0.1 2.3-0.2 1.2 0 2.4 0 1.2 0 2.3 0 1.2 0.1 2.4 0.2c29.4-139.9 148.2-465.7 630.8-634.4z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 828 B

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg fill="#000000" width="800px" height="800px" viewBox="0 0 32 32" id="icon" xmlns="http://www.w3.org/2000/svg">
<defs>
<style>
.cls-1 {
fill: none;
}
</style>
</defs>
<path d="M32,16.77V13.8372c0-2.4818-2.4817-3.8355-4.5123-3.8355a6.7446,6.7446,0,0,0-3.8354,1.5793,5.066,5.066,0,0,0-3.61-1.5793,5.9389,5.9389,0,0,0-3.8354,1.5793,3.8172,3.8172,0,0,0-3.3842-1.5793A3.4913,3.4913,0,0,0,9.482,11.8232L6.5058,18.575,3.2011,11.0011a1.67,1.67,0,0,0-2.1883-.8656h0A1.67,1.67,0,0,0,.1536,12.37L4.25,21.2824s.6769,1.5793,2.0305,1.5793a1.9088,1.9088,0,0,0,2.0306-1.1281c.3124-.4687,2.6809-5.45,4.1078-8.4692a.5679.5679,0,0,1,1.0812.2437v7.4868a1.8462,1.8462,0,0,0,1.6848,1.8629,1.8051,1.8051,0,0,0,1.9251-1.801V14.8524a1.9177,1.9177,0,0,1,3.8354,0v6.2044a1.8049,1.8049,0,0,0,3.61,0V14.8524a1.9177,1.9177,0,0,1,3.8354,0v6.2044a1.8049,1.8049,0,0,0,3.61,0Z"/>
<rect id="_Transparent_Rectangle_" data-name="&lt;Transparent Rectangle&gt;" class="cls-1" width="32" height="32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -41,10 +41,12 @@
"dist/credentials/AirtableApi.credentials.js",
"dist/credentials/AirtableOAuth2Api.credentials.js",
"dist/credentials/AirtableTokenApi.credentials.js",
"dist/credentials/AlienVaultApi.credentials.js",
"dist/credentials/Amqp.credentials.js",
"dist/credentials/ApiTemplateIoApi.credentials.js",
"dist/credentials/AsanaApi.credentials.js",
"dist/credentials/AsanaOAuth2Api.credentials.js",
"dist/credentials/Auth0ManagementApi.credentials.js",
"dist/credentials/AutomizyApi.credentials.js",
"dist/credentials/AutopilotApi.credentials.js",
"dist/credentials/Aws.credentials.js",
@ -61,9 +63,13 @@
"dist/credentials/BubbleApi.credentials.js",
"dist/credentials/CalApi.credentials.js",
"dist/credentials/CalendlyApi.credentials.js",
"dist/credentials/CarbonBlackApi.credentials.js",
"dist/credentials/ChargebeeApi.credentials.js",
"dist/credentials/CircleCiApi.credentials.js",
"dist/credentials/CiscoMerakiApi.credentials.js",
"dist/credentials/CiscoSecureEndpointApi.credentials.js",
"dist/credentials/CiscoWebexOAuth2Api.credentials.js",
"dist/credentials/CiscoUmbrellaApi.credentials.js",
"dist/credentials/CitrixAdcApi.credentials.js",
"dist/credentials/CloudflareApi.credentials.js",
"dist/credentials/ClearbitApi.credentials.js",
@ -77,6 +83,7 @@
"dist/credentials/CopperApi.credentials.js",
"dist/credentials/CortexApi.credentials.js",
"dist/credentials/CrateDb.credentials.js",
"dist/credentials/CrowdStrikeOAuth2Api.credentials.js",
"dist/credentials/CrowdDevApi.credentials.js",
"dist/credentials/CustomerIoApi.credentials.js",
"dist/credentials/DeepLApi.credentials.js",
@ -96,6 +103,7 @@
"dist/credentials/ERPNextApi.credentials.js",
"dist/credentials/EventbriteApi.credentials.js",
"dist/credentials/EventbriteOAuth2Api.credentials.js",
"dist/credentials/F5BigIpApi.credentials.js",
"dist/credentials/FacebookGraphApi.credentials.js",
"dist/credentials/FacebookGraphAppApi.credentials.js",
"dist/credentials/FigmaApi.credentials.js",
@ -104,6 +112,7 @@
"dist/credentials/FormIoApi.credentials.js",
"dist/credentials/FormstackApi.credentials.js",
"dist/credentials/FormstackOAuth2Api.credentials.js",
"dist/credentials/FortiGateApi.credentials.js",
"dist/credentials/FreshdeskApi.credentials.js",
"dist/credentials/FreshserviceApi.credentials.js",
"dist/credentials/FreshworksCrmApi.credentials.js",
@ -161,7 +170,9 @@
"dist/credentials/HubspotOAuth2Api.credentials.js",
"dist/credentials/HumanticAiApi.credentials.js",
"dist/credentials/HunterApi.credentials.js",
"dist/credentials/HybridAnalysisApi.credentials.js",
"dist/credentials/Imap.credentials.js",
"dist/credentials/ImpervaWafApi.credentials.js",
"dist/credentials/IntercomApi.credentials.js",
"dist/credentials/InvoiceNinjaApi.credentials.js",
"dist/credentials/IterableApi.credentials.js",
@ -171,6 +182,7 @@
"dist/credentials/JotFormApi.credentials.js",
"dist/credentials/Kafka.credentials.js",
"dist/credentials/KeapOAuth2Api.credentials.js",
"dist/credentials/KibanaApi.credentials.js",
"dist/credentials/KitemakerApi.credentials.js",
"dist/credentials/KoBoToolboxApi.credentials.js",
"dist/credentials/Ldap.credentials.js",
@ -200,6 +212,7 @@
"dist/credentials/MessageBirdApi.credentials.js",
"dist/credentials/MetabaseApi.credentials.js",
"dist/credentials/MicrosoftDynamicsOAuth2Api.credentials.js",
"dist/credentials/MicrosoftEntraOAuth2Api.credentials.js",
"dist/credentials/MicrosoftExcelOAuth2Api.credentials.js",
"dist/credentials/MicrosoftGraphSecurityOAuth2Api.credentials.js",
"dist/credentials/MicrosoftOAuth2Api.credentials.js",
@ -211,6 +224,7 @@
"dist/credentials/MindeeInvoiceApi.credentials.js",
"dist/credentials/MindeeReceiptApi.credentials.js",
"dist/credentials/MispApi.credentials.js",
"dist/credentials/MistApi.credentials.js",
"dist/credentials/MoceanApi.credentials.js",
"dist/credentials/MondayComApi.credentials.js",
"dist/credentials/MondayComOAuth2Api.credentials.js",
@ -232,9 +246,11 @@
"dist/credentials/OAuth1Api.credentials.js",
"dist/credentials/OAuth2Api.credentials.js",
"dist/credentials/OdooApi.credentials.js",
"dist/credentials/OktaApi.credentials.js",
"dist/credentials/OneSimpleApi.credentials.js",
"dist/credentials/OnfleetApi.credentials.js",
"dist/credentials/OpenAiApi.credentials.js",
"dist/credentials/OpenCTIApi.credentials.js",
"dist/credentials/OpenWeatherMapApi.credentials.js",
"dist/credentials/OrbitApi.credentials.js",
"dist/credentials/OuraApi.credentials.js",
@ -255,11 +271,14 @@
"dist/credentials/PushbulletOAuth2Api.credentials.js",
"dist/credentials/PushcutApi.credentials.js",
"dist/credentials/PushoverApi.credentials.js",
"dist/credentials/QRadarApi.credentials.js",
"dist/credentials/QualysApi.credentials.js",
"dist/credentials/QuestDb.credentials.js",
"dist/credentials/QuickBaseApi.credentials.js",
"dist/credentials/QuickBooksOAuth2Api.credentials.js",
"dist/credentials/RabbitMQ.credentials.js",
"dist/credentials/RaindropOAuth2Api.credentials.js",
"dist/credentials/RecordedFutureApi.credentials.js",
"dist/credentials/RedditOAuth2Api.credentials.js",
"dist/credentials/Redis.credentials.js",
"dist/credentials/RocketchatApi.credentials.js",
@ -271,6 +290,7 @@
"dist/credentials/SeaTableApi.credentials.js",
"dist/credentials/SecurityScorecardApi.credentials.js",
"dist/credentials/SegmentApi.credentials.js",
"dist/credentials/SekoiaApi.credentials.js",
"dist/credentials/SendGridApi.credentials.js",
"dist/credentials/BrevoApi.credentials.js",
"dist/credentials/SendyApi.credentials.js",
@ -292,6 +312,7 @@
"dist/credentials/SplunkApi.credentials.js",
"dist/credentials/SpontitApi.credentials.js",
"dist/credentials/SpotifyOAuth2Api.credentials.js",
"dist/credentials/ShufflerApi.credentials.js",
"dist/credentials/SshPassword.credentials.js",
"dist/credentials/SshPrivateKey.credentials.js",
"dist/credentials/StackbyApi.credentials.js",
@ -314,6 +335,7 @@
"dist/credentials/TogglApi.credentials.js",
"dist/credentials/TotpApi.credentials.js",
"dist/credentials/TravisCiApi.credentials.js",
"dist/credentials/TrellixEpoApi.credentials.js",
"dist/credentials/TrelloApi.credentials.js",
"dist/credentials/TwakeCloudApi.credentials.js",
"dist/credentials/TwakeServerApi.credentials.js",
@ -329,6 +351,7 @@
"dist/credentials/UptimeRobotApi.credentials.js",
"dist/credentials/UrlScanIoApi.credentials.js",
"dist/credentials/VeroApi.credentials.js",
"dist/credentials/VirusTotalApi.credentials.js",
"dist/credentials/VonageApi.credentials.js",
"dist/credentials/VenafiTlsProtectCloudApi.credentials.js",
"dist/credentials/VenafiTlsProtectDatacenterApi.credentials.js",
@ -351,6 +374,7 @@
"dist/credentials/ZohoOAuth2Api.credentials.js",
"dist/credentials/ZoomApi.credentials.js",
"dist/credentials/ZoomOAuth2Api.credentials.js",
"dist/credentials/ZscalerZiaApi.credentials.js",
"dist/credentials/ZulipApi.credentials.js"
],
"nodes": [