├── .devcontainer ├── devcontainer.json └── docker-compose.devcontainer.yml ├── .github ├── scripts │ ├── akto-cicd.sh │ ├── akto-inventory.js │ ├── akto-testsigma.sh │ ├── deploy-script.sh │ └── vulnerable_checker.js └── workflows │ ├── akto-inventory.yaml │ ├── beamer.yml │ ├── beamerAndDiscord.yml │ ├── codeql.yml │ ├── csvUpdate.yml │ ├── data-ingestion.yml │ ├── discord-release-msg.yml │ ├── e2e_tests.yml │ ├── prod.yml │ ├── releaseOnlyUI.yml │ ├── semgrep.yml │ ├── staging.yml │ └── testsigma.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── Makefile ├── README.md ├── apps ├── api-analyser │ ├── Dockerfile │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── akto │ │ │ │ └── analyser │ │ │ │ ├── Main.java │ │ │ │ └── ResourceAnalyser.java │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── akto │ │ │ └── analyser │ │ │ └── ResourceAnalyserTest.java │ └── start.sh ├── api-runtime │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── akto │ │ │ │ │ ├── dependency │ │ │ │ │ ├── DependencyAnalyser.java │ │ │ │ │ └── store │ │ │ │ │ │ ├── BFStore.java │ │ │ │ │ │ ├── HashSetStore.java │ │ │ │ │ │ └── Store.java │ │ │ │ │ ├── parsers │ │ │ │ │ └── HttpCallParser.java │ │ │ │ │ ├── runtime │ │ │ │ │ ├── APICatalogSync.java │ │ │ │ │ ├── ConcurrentHashSet.java │ │ │ │ │ ├── Flow.java │ │ │ │ │ ├── KafkaHealthMetricSyncTask.java │ │ │ │ │ ├── Main.java │ │ │ │ │ ├── MarkovSync.java │ │ │ │ │ ├── PayloadAnalyzer.java │ │ │ │ │ ├── RelationshipSync.java │ │ │ │ │ ├── URLAggregator.java │ │ │ │ │ ├── merge │ │ │ │ │ │ ├── MergeOnHostOnly.java │ │ │ │ │ │ ├── MergeOnSlash.java │ │ │ │ │ │ └── MergeSimilarUrls.java │ │ │ │ │ └── policies │ │ │ │ │ │ ├── AktoPolicyNew.java │ │ │ │ │ │ ├── AuthPolicy.java │ │ │ │ │ │ └── SetFieldPolicy.java │ │ │ │ │ └── utils │ │ │ │ │ ├── CalculateJob.java │ │ │ │ │ ├── CustomAuthUtil.java │ │ │ │ │ ├── DataInsertionUtil.java │ │ │ │ │ ├── RedactSampleData.java │ │ │ │ │ ├── SampleDataToSTI.java │ │ │ │ │ └── libs │ │ │ │ │ └── utils │ │ │ │ │ └── src │ │ │ │ │ └── main │ │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── akto │ │ │ │ │ └── runtime │ │ │ │ │ └── policies │ │ │ │ │ └── ApiAccessTypePolicyUtil.java │ │ │ └── resources │ │ │ │ ├── log_check.json │ │ │ │ └── version.txt │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── akto │ │ │ ├── dependency │ │ │ └── TestDependencyAnalyser.java │ │ │ ├── parsers │ │ │ ├── KafkaParserTest.java │ │ │ ├── TestDBSync.java │ │ │ ├── TestDump2.java │ │ │ ├── TestMergingNew.java │ │ │ └── TrafficMetricsUpdateTest.java │ │ │ ├── runtime │ │ │ ├── FlowTest.java │ │ │ ├── MarkovTest.java │ │ │ ├── RelationshipTest.java │ │ │ ├── TestApiCatalogSync.java │ │ │ ├── TestMainSubFunctions.java │ │ │ ├── merge │ │ │ │ └── TestMergeOnHostOnly.java │ │ │ └── policies │ │ │ │ ├── ApiAccessTypePolicyTest.java │ │ │ │ ├── AuthPolicyTest.java │ │ │ │ ├── SetFieldPolicyTest.java │ │ │ │ ├── TestAktoPolicy.java │ │ │ │ └── TestAktoPolicyWithoutDbCall.java │ │ │ ├── scripts │ │ │ └── InsertRecordsInKafka.java │ │ │ └── utils │ │ │ ├── CustomAuthUtilTest.java │ │ │ ├── McpRequestResponseUtilsTest.java │ │ │ ├── SampleDataToSTITest.java │ │ │ └── TestRedactSampleData.java │ └── start.sh ├── billing │ ├── Dockerfile │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── akto │ │ │ │ ├── action │ │ │ │ ├── billing │ │ │ │ │ └── OrganizationAction.java │ │ │ │ ├── selfhosted │ │ │ │ │ └── InfoAction.java │ │ │ │ └── usage │ │ │ │ │ └── UsageAction.java │ │ │ │ ├── listener │ │ │ │ └── InitializerListener.java │ │ │ │ └── util │ │ │ │ ├── DateUtils.java │ │ │ │ └── UsageCalculator.java │ │ │ └── resources │ │ │ └── struts.xml │ └── web │ │ └── WEB-INF │ │ └── web.xml ├── dashboard │ ├── .babelrc │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── entrypoint.sh │ ├── package-lock.json │ ├── package.json │ ├── pom.xml │ ├── set_xmx.sh │ ├── src │ │ ├── main │ │ │ ├── DockerFile │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── akto │ │ │ │ │ ├── action │ │ │ │ │ ├── APICatalogAction.java │ │ │ │ │ ├── AccessTokenAction.java │ │ │ │ │ ├── AccountAction.java │ │ │ │ │ ├── AddUserToAccountAction.java │ │ │ │ │ ├── AdminSettingsAction.java │ │ │ │ │ ├── ApiCollectionsAction.java │ │ │ │ │ ├── ApiInfoAction.java │ │ │ │ │ ├── ApiTokenAction.java │ │ │ │ │ ├── AzureBoardsIntegrationAction.java │ │ │ │ │ ├── BurpJarAction.java │ │ │ │ │ ├── CleanAction.java │ │ │ │ │ ├── CodeAnalysisAction.java │ │ │ │ │ ├── CustomAuthTypeAction.java │ │ │ │ │ ├── CustomDataTypeAction.java │ │ │ │ │ ├── DashboardAction.java │ │ │ │ │ ├── DbLogsAction.java │ │ │ │ │ ├── DependencyAction.java │ │ │ │ │ ├── EventMetricsAction.java │ │ │ │ │ ├── ExportSampleDataAction.java │ │ │ │ │ ├── FilterAction.java │ │ │ │ │ ├── HarAction.java │ │ │ │ │ ├── HomeAction.java │ │ │ │ │ ├── IgnoreFalsePositivesAction.java │ │ │ │ │ ├── InfraMetricsAction.java │ │ │ │ │ ├── InternalAction.java │ │ │ │ │ ├── InviteUserAction.java │ │ │ │ │ ├── JiraIntegrationAction.java │ │ │ │ │ ├── LoadersAction.java │ │ │ │ │ ├── LoginAction.java │ │ │ │ │ ├── LogoutAction.java │ │ │ │ │ ├── LogsAction.java │ │ │ │ │ ├── MiddlewareConfigAction.java │ │ │ │ │ ├── OnboardingAction.java │ │ │ │ │ ├── OpenApiAction.java │ │ │ │ │ ├── ParamStateAction.java │ │ │ │ │ ├── PostmanAction.java │ │ │ │ │ ├── ProfileAction.java │ │ │ │ │ ├── ReportAction.java │ │ │ │ │ ├── RoleAction.java │ │ │ │ │ ├── SensitiveFieldAction.java │ │ │ │ │ ├── SignupAction.java │ │ │ │ │ ├── TagConfigsAction.java │ │ │ │ │ ├── TeamAction.java │ │ │ │ │ ├── TrafficAction.java │ │ │ │ │ ├── UserAction.java │ │ │ │ │ ├── ValidateEmailAction.java │ │ │ │ │ ├── WebhookAction.java │ │ │ │ │ ├── agents │ │ │ │ │ │ ├── AgentAction.java │ │ │ │ │ │ ├── AgentHelperAction.java │ │ │ │ │ │ └── ModelAction.java │ │ │ │ │ ├── billing │ │ │ │ │ │ └── UsageAction.java │ │ │ │ │ ├── gpt │ │ │ │ │ │ ├── GptAction.java │ │ │ │ │ │ ├── GptConfigAction.java │ │ │ │ │ │ ├── data_extractors │ │ │ │ │ │ │ ├── DataExtractor.java │ │ │ │ │ │ │ ├── ListApisEndpointNames.java │ │ │ │ │ │ │ ├── ListHeaderNames.java │ │ │ │ │ │ │ ├── ListHeaderNamesWithValues.java │ │ │ │ │ │ │ └── filters │ │ │ │ │ │ │ │ ├── Filter.java │ │ │ │ │ │ │ │ └── FilterJunkEndpoints.java │ │ │ │ │ │ ├── handlers │ │ │ │ │ │ │ ├── FindAuthRelatedTokens.java │ │ │ │ │ │ │ ├── FindRequestResponseHeaders.java │ │ │ │ │ │ │ ├── GenerateCurlForTest.java │ │ │ │ │ │ │ ├── GenerateRegex.java │ │ │ │ │ │ │ ├── GptQuery.java │ │ │ │ │ │ │ ├── GroupApisByFunctionality.java │ │ │ │ │ │ │ ├── ListApisByType.java │ │ │ │ │ │ │ ├── ListSensitiveParameters.java │ │ │ │ │ │ │ ├── QueryHandler.java │ │ │ │ │ │ │ ├── QueryHandlerFactory.java │ │ │ │ │ │ │ └── SuggestTests.java │ │ │ │ │ │ ├── result_fetchers │ │ │ │ │ │ │ ├── AsyncResultFetcherStrategy.java │ │ │ │ │ │ │ ├── ResultFetcherStrategy.java │ │ │ │ │ │ │ ├── SelfHostedLlmResultFetcherStrategy.java │ │ │ │ │ │ │ └── SimpleResultFetcherStrategy.java │ │ │ │ │ │ ├── utils │ │ │ │ │ │ │ └── HeadersUtils.java │ │ │ │ │ │ └── validators │ │ │ │ │ │ │ ├── ApiCollectionAllowedValidation.java │ │ │ │ │ │ │ └── ValidateQuery.java │ │ │ │ │ ├── graph │ │ │ │ │ │ └── SvcToSvcGraphAction.java │ │ │ │ │ ├── growth_tools │ │ │ │ │ │ └── PublicApiAction.java │ │ │ │ │ ├── metrics │ │ │ │ │ │ └── MetricsAction.java │ │ │ │ │ ├── misc │ │ │ │ │ │ └── OtpAction.java │ │ │ │ │ ├── observe │ │ │ │ │ │ ├── InventoryAction.java │ │ │ │ │ │ └── Utils.java │ │ │ │ │ ├── quick_start │ │ │ │ │ │ └── QuickStartAction.java │ │ │ │ │ ├── settings │ │ │ │ │ │ ├── AdvancedTrafficFiltersAction.java │ │ │ │ │ │ ├── ApiAuditLogsAction.java │ │ │ │ │ │ ├── DefaultPayloadAction.java │ │ │ │ │ │ └── ModuleInfoAction.java │ │ │ │ │ ├── siem │ │ │ │ │ │ └── SplunkAction.java │ │ │ │ │ ├── test_editor │ │ │ │ │ │ └── SaveTestEditorAction.java │ │ │ │ │ ├── testing │ │ │ │ │ │ ├── AccessMatrixTaskAction.java │ │ │ │ │ │ ├── AuthMechanismAction.java │ │ │ │ │ │ ├── LoginRecorderAction.java │ │ │ │ │ │ ├── OtpTestDataAction.java │ │ │ │ │ │ ├── ScriptAction.java │ │ │ │ │ │ ├── StartTestAction.java │ │ │ │ │ │ ├── TestCollectionConfigurationAction.java │ │ │ │ │ │ ├── TestRolesAction.java │ │ │ │ │ │ ├── TestSuiteAction.java │ │ │ │ │ │ ├── TestTemplatesAction.java │ │ │ │ │ │ ├── Utils.java │ │ │ │ │ │ └── WorkflowTestAction.java │ │ │ │ │ ├── testing_issues │ │ │ │ │ │ └── IssuesAction.java │ │ │ │ │ ├── threat_detection │ │ │ │ │ │ ├── AbstractThreatDetectionAction.java │ │ │ │ │ │ ├── ActivityData.java │ │ │ │ │ │ ├── DailyActorsCount.java │ │ │ │ │ │ ├── DashboardMaliciousEvent.java │ │ │ │ │ │ ├── DashboardThreatActor.java │ │ │ │ │ │ ├── DashboardThreatApi.java │ │ │ │ │ │ ├── FilterYamlTemplateAction.java │ │ │ │ │ │ ├── MaliciousPayloadsResponse.java │ │ │ │ │ │ ├── SubCategoryWiseData.java │ │ │ │ │ │ ├── SuspectSampleDataAction.java │ │ │ │ │ │ ├── ThreatActivityTimeline.java │ │ │ │ │ │ ├── ThreatActorAction.java │ │ │ │ │ │ ├── ThreatActorPerCountry.java │ │ │ │ │ │ ├── ThreatApiAction.java │ │ │ │ │ │ ├── ThreatCategoryCount.java │ │ │ │ │ │ ├── ThreatConfiguration.java │ │ │ │ │ │ └── ThreatConfigurationAction.java │ │ │ │ │ ├── tpi │ │ │ │ │ │ └── GoogleAuthAction.java │ │ │ │ │ ├── traffic_metrics │ │ │ │ │ │ ├── TrafficAlertsAction.java │ │ │ │ │ │ └── TrafficMetricsAction.java │ │ │ │ │ ├── user │ │ │ │ │ │ ├── AzureSsoAction.java │ │ │ │ │ │ ├── GithubSsoAction.java │ │ │ │ │ │ ├── OktaSsoAction.java │ │ │ │ │ │ └── UserInfoAction.java │ │ │ │ │ └── waf │ │ │ │ │ │ ├── AwsWafAction.java │ │ │ │ │ │ └── CloudflareWafAction.java │ │ │ │ │ ├── filter │ │ │ │ │ ├── AuthorizationFilter.java │ │ │ │ │ ├── ForbiddenEndpointsFilter.java │ │ │ │ │ ├── GrowthToolsFilter.java │ │ │ │ │ ├── HttpMethodFilter.java │ │ │ │ │ ├── InfraMetricsFilter.java │ │ │ │ │ ├── LoggingFilter.java │ │ │ │ │ ├── MetaInfoFilter.java │ │ │ │ │ ├── MongoConnectCheckFilter.java │ │ │ │ │ ├── RateLimitFilter.java │ │ │ │ │ ├── SecurityHeadersFilter.java │ │ │ │ │ └── UserDetailsFilter.java │ │ │ │ │ ├── interceptor │ │ │ │ │ ├── CollectionInterceptor.java │ │ │ │ │ ├── ContextBasedUsageInterceptor.java │ │ │ │ │ ├── RoleAccessInterceptor.java │ │ │ │ │ ├── UsageInterceptor.java │ │ │ │ │ └── UsageInterceptorUtil.java │ │ │ │ │ ├── listener │ │ │ │ │ ├── AfterMongoConnectListener.java │ │ │ │ │ ├── InfraMetricsListener.java │ │ │ │ │ ├── InitializerListener.java │ │ │ │ │ ├── KafkaListener.java │ │ │ │ │ ├── RequestEventListener.java │ │ │ │ │ └── RuntimeListener.java │ │ │ │ │ └── utils │ │ │ │ │ ├── AccountHTTPCallParserAktoPolicyInfo.java │ │ │ │ │ ├── AktoCustomException.java │ │ │ │ │ ├── ApiInfoKeyToSampleData.java │ │ │ │ │ ├── Auth0.java │ │ │ │ │ ├── AutomatedApiGroupsUtils.java │ │ │ │ │ ├── CustomHttpsWrapper.java │ │ │ │ │ ├── DeleteTestRunUtils.java │ │ │ │ │ ├── GithubLogin.java │ │ │ │ │ ├── GithubSync.java │ │ │ │ │ ├── HtmlCleanPolicy.java │ │ │ │ │ ├── Intercom.java │ │ │ │ │ ├── JWT.java │ │ │ │ │ ├── Mention.java │ │ │ │ │ ├── OktaLogin.java │ │ │ │ │ ├── RandomString.java │ │ │ │ │ ├── RateLimitCache.java │ │ │ │ │ ├── RiskScoreOfCollections.java │ │ │ │ │ ├── RiskScoreTestingEndpointsUtils.java │ │ │ │ │ ├── TestTemplateUtils.java │ │ │ │ │ ├── Token.java │ │ │ │ │ ├── TrafficFilterUtil.java │ │ │ │ │ ├── Utils.java │ │ │ │ │ ├── billing │ │ │ │ │ └── OrganizationUtils.java │ │ │ │ │ ├── cloud │ │ │ │ │ ├── CloudType.java │ │ │ │ │ ├── Utils.java │ │ │ │ │ ├── serverless │ │ │ │ │ │ ├── ServerlessFunction.java │ │ │ │ │ │ ├── UpdateFunctionRequest.java │ │ │ │ │ │ └── aws │ │ │ │ │ │ │ └── Lambda.java │ │ │ │ │ └── stack │ │ │ │ │ │ ├── Stack.java │ │ │ │ │ │ ├── aws │ │ │ │ │ │ └── AwsStack.java │ │ │ │ │ │ └── dto │ │ │ │ │ │ └── StackState.java │ │ │ │ │ ├── crons │ │ │ │ │ ├── Crons.java │ │ │ │ │ ├── JobsCron.java │ │ │ │ │ ├── SyncCron.java │ │ │ │ │ ├── TokenGeneratorCron.java │ │ │ │ │ └── UpdateSensitiveInfoInApiInfo.java │ │ │ │ │ ├── jobs │ │ │ │ │ ├── CleanInventory.java │ │ │ │ │ ├── CleanTestingJob.java │ │ │ │ │ ├── DeactivateCollections.java │ │ │ │ │ ├── JobUtils.java │ │ │ │ │ └── MatchingJob.java │ │ │ │ │ ├── platform │ │ │ │ │ ├── DashboardStackDetails.java │ │ │ │ │ └── MirroringStackDetails.java │ │ │ │ │ ├── scripts │ │ │ │ │ └── FixMultiSTIs.java │ │ │ │ │ └── sso │ │ │ │ │ ├── CustomSamlSettings.java │ │ │ │ │ └── SsoUtils.java │ │ │ └── resources │ │ │ │ ├── LlmSampleApiData.json │ │ │ │ ├── SampleApiData.json │ │ │ │ ├── cloud_formation_templates │ │ │ │ ├── akto_aws_mirroring.yaml │ │ │ │ └── kubernetes_setup.yaml │ │ │ │ ├── google_client_secrets_01.json │ │ │ │ ├── inbuilt_llm_test_yaml_files │ │ │ │ ├── InsecureOutputHandling#1.yml │ │ │ │ ├── InsecureOutputHandling#2.yml │ │ │ │ ├── LLMEncoding#1.yml │ │ │ │ ├── LLMEncoding#2.yml │ │ │ │ ├── LLMEncoding#4.yml │ │ │ │ ├── LLMEncoding#5.yml │ │ │ │ ├── LLMInsecureOutput#1.yml │ │ │ │ ├── LLMInsecureOutput#2.yml │ │ │ │ ├── LLMInsecureOutput#3.yml │ │ │ │ ├── LLMObfuscation.yml │ │ │ │ ├── LLMOverreliance#1.yml │ │ │ │ ├── LLMOverreliance#2.yml │ │ │ │ ├── LLMOverreliance#4.yml │ │ │ │ ├── LLMOverreliance#5.yml │ │ │ │ ├── LLMOverreliance#6.yml │ │ │ │ ├── LLMOverrelianceCompleteMalwareARM64.yml │ │ │ │ ├── LLMOverrelianceCompleteMalwareC.yml │ │ │ │ ├── LLMOverrelianceCompleteMalwareCPP.yml │ │ │ │ ├── LLMOverrelianceCompleteMalwareCSharp.yml │ │ │ │ ├── LLMOverrelianceCompleteMalwareRust.yml │ │ │ │ ├── LLMOverrelianceCompleteMalwareSwift.yml │ │ │ │ ├── LLMOverrelianceCompleteMalwarex86-64.yml │ │ │ │ ├── LLMOverrelianceEvadeMalwareARM64.yml │ │ │ │ ├── LLMOverrelianceEvadeMalwareC.yml │ │ │ │ ├── LLMOverrelianceEvadeMalwareCPP.yml │ │ │ │ ├── LLMOverrelianceEvadeMalwareCSharp.yml │ │ │ │ ├── LLMOverrelianceEvadeMalwareRust.yml │ │ │ │ ├── LLMOverrelianceEvadeMalwareSwift.yml │ │ │ │ ├── LLMOverrelianceEvadeMalwarex86-64.yml │ │ │ │ ├── LLMOverrelianceEvadeMalwarex86.yml │ │ │ │ ├── LLMOverrelianceMalwarePayloadsARM64.yml │ │ │ │ ├── LLMOverrelianceMalwarePayloadsC.yml │ │ │ │ ├── LLMOverrelianceMalwarePayloadsCPP.yml │ │ │ │ ├── LLMOverrelianceMalwarePayloadsCSharp.yml │ │ │ │ ├── LLMOverrelianceMalwarePayloadsSwift.yml │ │ │ │ ├── LLMOverrelianceMalwarePayloadsx86-64.yml │ │ │ │ ├── LLMOverrelianceMalwarePayloadsx86.yml │ │ │ │ ├── LLMOverrelianceMalwareSubfunctionARM64.yml │ │ │ │ ├── LLMOverrelianceMalwareSubfunctionC.yml │ │ │ │ ├── LLMOverrelianceMalwareSubfunctionCPP.yml │ │ │ │ ├── LLMOverrelianceMalwareSubfunctionCSharp.yml │ │ │ │ ├── LLMOverrelianceMalwareSubfunctionRust.yml │ │ │ │ ├── LLMOverrelianceMalwareSubfunctionSwift.yml │ │ │ │ ├── LLMOverrelianceMalwareSubfunctionx86-64.yml │ │ │ │ ├── LLMOverrelianceMalwareSubfunctionx86.yml │ │ │ │ ├── LLMOverrelianceMisleading.yml │ │ │ │ ├── LLMOverreliancePackageHallucination.yml │ │ │ │ ├── LLMOverrelianceWrongAnswer#2.yml │ │ │ │ ├── PromptInjectionBasic.yml │ │ │ │ ├── PromptInjectionBasicHello.yml │ │ │ │ ├── PromptInjectionBasicV2.yml │ │ │ │ ├── PromptInjectionSTANTest.yml │ │ │ │ ├── PromptInjectionXSSTest.yml │ │ │ │ ├── PromptLeakInjection.yml │ │ │ │ └── SensitiveDataExposurePassword.yml │ │ │ │ ├── inbuilt_test_yaml_files │ │ │ │ ├── AbusingCRLFInHeaders.yaml │ │ │ │ ├── AddUserId.yaml │ │ │ │ ├── AirflowConfigurationExposure.yaml │ │ │ │ ├── AmazonDockerConfig.yaml │ │ │ │ ├── ApacheConfig.yaml │ │ │ │ ├── AppendXSS.yaml │ │ │ │ ├── AppspecYmlDisclosure.yaml │ │ │ │ ├── BOLAByChangingAuthToken.yaml │ │ │ │ ├── BasicXSS.yaml │ │ │ │ ├── BypassCaptchaRemovingCookie.yaml │ │ │ │ ├── BypassCaptchaUsingHeader.yaml │ │ │ │ ├── CORSMisconfigurationInvalidOrigin.yaml │ │ │ │ ├── CORSMisconfigurationWhitelistOrigin.yaml │ │ │ │ ├── CSRFLoginAttack.yaml │ │ │ │ ├── CgiPrintEnv.yaml │ │ │ │ ├── CircleciConfig.yaml │ │ │ │ ├── CommandInjectionByAddingQueryParams.yaml │ │ │ │ ├── ConfigJson.yaml │ │ │ │ ├── ConfigRuby.yaml │ │ │ │ ├── ConfigurationListing.yaml │ │ │ │ ├── ContentTypeHeaderMissing.yaml │ │ │ │ ├── CookieMisconfiguration.yaml │ │ │ │ ├── DebugVars.yaml │ │ │ │ ├── DefaultLoginCredentials.yml │ │ │ │ ├── DescriptiveErrorMessageInvalidPayloads.yaml │ │ │ │ ├── DjangoDefaultHomepageEnabled.yaml │ │ │ │ ├── DjangoUrlExposed.yaml │ │ │ │ ├── DockerComposeConfig.yaml │ │ │ │ ├── DockerfileHiddenDisclosure.yaml │ │ │ │ ├── EsmtprcConfig.yaml │ │ │ │ ├── ExpressDefaultHomepageEnabled.yaml │ │ │ │ ├── ExpressStackTraceEnabled.yaml │ │ │ │ ├── FetchSensitiveFilesViaSSRF.yaml │ │ │ │ ├── FirebaseConfigExposure.yaml │ │ │ │ ├── FirebaseUnauthenticated.yaml │ │ │ │ ├── FlaskDebugModeEnabled.yaml │ │ │ │ ├── FtpCredentialsExposure.yaml │ │ │ │ ├── GitConfig.yaml │ │ │ │ ├── GitConfigNginxoffbyslash.yaml │ │ │ │ ├── GitCredentialsDisclosure.yaml │ │ │ │ ├── GithubWorkflowsDisclosure.yaml │ │ │ │ ├── GraphqlDebugModeEnabled.yaml │ │ │ │ ├── GraphqlDevelopmentConsoleExposed.yaml │ │ │ │ ├── GraphqlFieldSuggestionEnabled.yaml │ │ │ │ ├── GraphqlIntrospectionEnabled.yaml │ │ │ │ ├── GraphqlTypeIntrospectionAllowed.yaml │ │ │ │ ├── HeadMethodTest.yaml │ │ │ │ ├── HeaderReflectedInInvalidUrl.yaml │ │ │ │ ├── HttpResponseSplitting.yaml │ │ │ │ ├── InvalidFileInput.yaml │ │ │ │ ├── JWTSigningInClientSide.yaml │ │ │ │ ├── JwtAddJku.yaml │ │ │ │ ├── JwtInvalidSignature.yaml │ │ │ │ ├── JwtNoneAlgo.yaml │ │ │ │ ├── KernelOpenCommandInjection.yaml │ │ │ │ ├── KubernetesKustomizationDisclosure.yaml │ │ │ │ ├── LFIAddingNewParam.yaml │ │ │ │ ├── LFIInParameter.yaml │ │ │ │ ├── LFIInPath.yaml │ │ │ │ ├── LaravelDebugModeEnabled.yaml │ │ │ │ ├── LaravelDefaultHomepageEnabled.yaml │ │ │ │ ├── LaravelEnv.yaml │ │ │ │ ├── LaravelTelescopeEnabled.yaml │ │ │ │ ├── MassAssignmentChangeAccount.yaml │ │ │ │ ├── MassAssignmentChangeAdmin.yaml │ │ │ │ ├── MassAssignmentChangeRole.yaml │ │ │ │ ├── MassAssignmentCreateAdminUser.yaml │ │ │ │ ├── MisconfiguredDocker.yaml │ │ │ │ ├── MsmtpConfig.yaml │ │ │ │ ├── MustContainResponseHeaders.yaml │ │ │ │ ├── NginxConfig.yaml │ │ │ │ ├── NginxDefaultPageEnabled.yaml │ │ │ │ ├── NginxServerVersionDisclosed.yaml │ │ │ │ ├── NginxStatusVisible.yaml │ │ │ │ ├── NoAuth.yaml │ │ │ │ ├── OldApiVersion.yaml │ │ │ │ ├── OpenRedirect.yaml │ │ │ │ ├── OpenRedirectHostHeaderInjection.yaml │ │ │ │ ├── OpenRedirectInPath.yaml │ │ │ │ ├── OpenRedirectSubdomainWhitelist.yaml │ │ │ │ ├── OracleEbsCredentials.yaml │ │ │ │ ├── PageDos.yaml │ │ │ │ ├── ParameterPollution.yaml │ │ │ │ ├── ParametersConfig.yaml │ │ │ │ ├── PortScanningViaSSRF.yaml │ │ │ │ ├── PrometheusMetrics.yaml │ │ │ │ ├── RailsDebugModeEnabled.yaml │ │ │ │ ├── RailsDefaultHomepageEnabled.yaml │ │ │ │ ├── RandomMethodTest.yaml │ │ │ │ ├── RedisConfig.yaml │ │ │ │ ├── RemoveCSRF.yaml │ │ │ │ ├── RemoveCaptcha.yaml │ │ │ │ ├── ReplaceCSRF.yaml │ │ │ │ ├── ReplayCaptcha.yaml │ │ │ │ ├── RobomongoCredential.yaml │ │ │ │ ├── SSRFOnAWSMetaEndpointAbusingEnclosedAlphanumerics.yaml │ │ │ │ ├── SSRFOnAwsMetaEndpoint.yaml │ │ │ │ ├── SSRFOnCSVUpload.yaml │ │ │ │ ├── SSRFOnFiles.yaml │ │ │ │ ├── SSRFOnImageUpload.yaml │ │ │ │ ├── SSRFOnLocalhost.yaml │ │ │ │ ├── SSRFOnLocalhostDNSPinning.yaml │ │ │ │ ├── SSRFOnLocalhostEncoded.yaml │ │ │ │ ├── SSRFOnPDFUpload.yaml │ │ │ │ ├── SSRFOnXMLUpload.yaml │ │ │ │ ├── SSTIInFlaskAndJinja.yaml │ │ │ │ ├── SSTIInFreemarker.yaml │ │ │ │ ├── SSTIInTwig.yaml │ │ │ │ ├── ServerPrivateKeys.yaml │ │ │ │ ├── ServerVersionExposedInvalid.yaml │ │ │ │ ├── ServerVersionExposedValid.yaml │ │ │ │ ├── SessionFixation.yaml │ │ │ │ ├── SftpConfigExposure.yaml │ │ │ │ ├── SonarqubePublicProjects.yaml │ │ │ │ ├── SpringBootBeansActuatorExposed.yaml │ │ │ │ ├── SpringBootConfigPropsActuatorExposed.yaml │ │ │ │ ├── SpringBootEnvActuatorExposed.yaml │ │ │ │ ├── SpringBootHttpTraceActuatorExposed.yaml │ │ │ │ ├── SpringBootThreadDumpActuatorExposed.yaml │ │ │ │ ├── SshAuthorizedKeys.yaml │ │ │ │ ├── SshKnownHosts.yaml │ │ │ │ ├── StrutsDebugModeEnabled.yaml │ │ │ │ ├── StrutsOgnlConsoleEnabled.yaml │ │ │ │ ├── TextInjectionViaInvalidUrls.yaml │ │ │ │ ├── TraceMethodTest.yaml │ │ │ │ ├── TrackMethodTest.yaml │ │ │ │ ├── UnauthenticatedMongoExpress.yaml │ │ │ │ ├── UnwantedResponseHeaders.yaml │ │ │ │ ├── WgetrcConfig.yaml │ │ │ │ ├── WpconfigAwsKeys.yaml │ │ │ │ ├── XSSInPath.yaml │ │ │ │ └── XSSViaFilename.yaml │ │ │ │ ├── lamdba.template │ │ │ │ ├── struts.xml │ │ │ │ ├── testingSourcesRepoTree.json │ │ │ │ ├── tests-library-master.zip │ │ │ │ └── version.txt │ │ └── test │ │ │ ├── java │ │ │ └── com │ │ │ │ └── akto │ │ │ │ ├── action │ │ │ │ ├── TestAccountAction.java │ │ │ │ ├── TestApiCollectionsAction.java │ │ │ │ ├── TestCodeAnalysisAction.java │ │ │ │ ├── TestCustomAuthTypeAction.java │ │ │ │ ├── TestCustomDataTypeAction.java │ │ │ │ ├── TestExportSampleDataAction.java │ │ │ │ ├── TestHarAction.java │ │ │ │ ├── TestIgnoreFalsePositivesAction.java │ │ │ │ ├── TestInviteUserAction.java │ │ │ │ ├── TestParamStateAction.java │ │ │ │ ├── TestProfileExpired.java │ │ │ │ ├── TestRoleAction.java │ │ │ │ ├── TestSignupAction.java │ │ │ │ ├── TestSwaggerData.java │ │ │ │ ├── TestWebhookAction.java │ │ │ │ ├── UploadHarPcapTest.java │ │ │ │ ├── observe │ │ │ │ │ └── TestInventoryAction.java │ │ │ │ ├── quick_start │ │ │ │ │ └── TestQuickStartAction.java │ │ │ │ ├── testing │ │ │ │ │ ├── TestRolesActionTest.java │ │ │ │ │ ├── TestRunTestsFromEditor.java │ │ │ │ │ ├── TestSaveTestEditorAction.java │ │ │ │ │ ├── TestScriptAction.java │ │ │ │ │ └── TestStartTestAction.java │ │ │ │ ├── testing_issues │ │ │ │ │ └── IssuesActionTest.java │ │ │ │ └── traffic_metrics │ │ │ │ │ └── TestTrafficMetricsAction.java │ │ │ │ ├── listener │ │ │ │ ├── TestFileTypes.java │ │ │ │ ├── TestFintechTypes.java │ │ │ │ ├── TestInitializerListener.java │ │ │ │ └── TestListener.java │ │ │ │ └── utils │ │ │ │ ├── TestFixMultiSTIs.java │ │ │ │ ├── TestModifyPayload.java │ │ │ │ ├── TestRateLimitCache.java │ │ │ │ ├── TestUpdatesInCollections.java │ │ │ │ └── TestUtils.java │ │ │ └── resources │ │ │ ├── pii_source.json │ │ │ ├── pii_source_2.json │ │ │ ├── restapi_81.har │ │ │ └── restapi_swagger.json │ └── web │ │ ├── META-INF │ │ └── MANIFEST.MF │ │ ├── WEB-INF │ │ ├── jetty-web.xml │ │ └── web.xml │ │ ├── pages │ │ ├── error.jsp │ │ ├── login.jsp │ │ ├── mongo-error.jsp │ │ ├── verify_email.jsp │ │ └── welcome.jsp │ │ ├── polaris_web │ │ ├── .babelrc │ │ ├── package-lock.json │ │ ├── package.json │ │ └── web │ │ │ ├── META-INF │ │ │ └── MANIFEST.MF │ │ │ ├── WEB-INF │ │ │ ├── jetty-web.xml │ │ │ └── web.xml │ │ │ ├── pages │ │ │ ├── error.jsp │ │ │ ├── login.jsp │ │ │ ├── mongo-error.jsp │ │ │ └── welcome.jsp │ │ │ ├── public │ │ │ ├── HAR.svg │ │ │ ├── Nginx.svg │ │ │ ├── TCP.svg │ │ │ ├── aktoApis_logo.svg │ │ │ ├── akto_colored.svg │ │ │ ├── akto_logo.svg │ │ │ ├── akto_name_with_logo.svg │ │ │ ├── aws.svg │ │ │ ├── beanstalk.svg │ │ │ ├── burp.svg │ │ │ ├── burp_logo.svg │ │ │ ├── ciCd_logo.svg │ │ │ ├── circle_check.svg │ │ │ ├── circle_icon.svg │ │ │ ├── discord.svg │ │ │ ├── ebpf.svg │ │ │ ├── eks.svg │ │ │ ├── email_icon_big.svg │ │ │ ├── envoy.svg │ │ │ ├── fargate.svg │ │ │ ├── favicon.svg │ │ │ ├── favicon2.svg │ │ │ ├── favicon3.svg │ │ │ ├── favicon4.svg │ │ │ ├── four_sq.svg │ │ │ ├── gcp.svg │ │ │ ├── gpt_logo.svg │ │ │ ├── kong.svg │ │ │ ├── kubernetes.svg │ │ │ ├── logo.svg │ │ │ ├── manifest.json │ │ │ ├── mongo_error_meme.png │ │ │ ├── notif_icon.svg │ │ │ ├── postman.svg │ │ │ ├── postman_logo.svg │ │ │ ├── slack_logo.svg │ │ │ ├── webhooks_logo.svg │ │ │ └── zero_logo.svg │ │ │ ├── src │ │ │ ├── apps │ │ │ │ ├── dashboard │ │ │ │ │ ├── components │ │ │ │ │ │ ├── CollectionComponent.jsx │ │ │ │ │ │ ├── ConditionComponent.jsx │ │ │ │ │ │ ├── ConditionsPicker.jsx │ │ │ │ │ │ ├── DetailsPage.jsx │ │ │ │ │ │ ├── GraphMetric.jsx │ │ │ │ │ │ ├── TestRolesConditionsPicker.jsx │ │ │ │ │ │ ├── WelcomeBackDetailsModal.jsx │ │ │ │ │ │ ├── aktoGpt │ │ │ │ │ │ │ ├── AktoGptLayout.jsx │ │ │ │ │ │ │ ├── BotResponse.jsx │ │ │ │ │ │ │ ├── IntroComponent.jsx │ │ │ │ │ │ │ ├── PromptContainer.jsx │ │ │ │ │ │ │ ├── ResponseComponent.jsx │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── banners │ │ │ │ │ │ │ ├── BannerLayout.jsx │ │ │ │ │ │ │ └── EmptyScreensLayout.jsx │ │ │ │ │ │ ├── charts │ │ │ │ │ │ │ ├── BarGraph.jsx │ │ │ │ │ │ │ ├── LineChart.jsx │ │ │ │ │ │ │ └── StackedChart.jsx │ │ │ │ │ │ ├── icons.js │ │ │ │ │ │ ├── layouts │ │ │ │ │ │ │ ├── ContextualLayout.jsx │ │ │ │ │ │ │ ├── ContextualLayoutStyle.css │ │ │ │ │ │ │ ├── DateRangeFilter.jsx │ │ │ │ │ │ │ ├── DateRangePicker.jsx │ │ │ │ │ │ │ ├── Dropdown.jsx │ │ │ │ │ │ │ ├── FlyLayout.jsx │ │ │ │ │ │ │ ├── LayoutWithTabs.js │ │ │ │ │ │ │ ├── LearnPopoverComponent.jsx │ │ │ │ │ │ │ ├── OperatorDropdown.jsx │ │ │ │ │ │ │ ├── PageWithCard.jsx │ │ │ │ │ │ │ ├── PageWithMultipleCards.jsx │ │ │ │ │ │ │ ├── PasswordTextField.jsx │ │ │ │ │ │ │ ├── SingleDate.jsx │ │ │ │ │ │ │ ├── header │ │ │ │ │ │ │ │ ├── Headers.css │ │ │ │ │ │ │ │ └── Headers.js │ │ │ │ │ │ │ ├── leftnav │ │ │ │ │ │ │ │ ├── LeftNav.css │ │ │ │ │ │ │ │ └── LeftNav.js │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── progress │ │ │ │ │ │ │ └── SpinnerCentered.jsx │ │ │ │ │ │ ├── shared │ │ │ │ │ │ │ ├── APICollectionDescriptionModal.jsx │ │ │ │ │ │ │ ├── ApiCollectionsDropdown.jsx │ │ │ │ │ │ │ ├── ConcentricCirclesChart.jsx │ │ │ │ │ │ │ ├── ConfirmationModal.jsx │ │ │ │ │ │ │ ├── CopyCommand.jsx │ │ │ │ │ │ │ ├── DonutChart.jsx │ │ │ │ │ │ │ ├── DropdownSearch.jsx │ │ │ │ │ │ │ ├── ErrorComponent.jsx │ │ │ │ │ │ │ ├── FileUpload.jsx │ │ │ │ │ │ │ ├── GridRows.jsx │ │ │ │ │ │ │ ├── HeadingWithTooltip.jsx │ │ │ │ │ │ │ ├── InlineEditableText.jsx │ │ │ │ │ │ │ ├── JiraTicketCreationModal.jsx │ │ │ │ │ │ │ ├── MarkdownViewer.jsx │ │ │ │ │ │ │ ├── ResourceListModal.jsx │ │ │ │ │ │ │ ├── SampleData.js │ │ │ │ │ │ │ ├── SampleDataComponent.jsx │ │ │ │ │ │ │ ├── SampleDataList.js │ │ │ │ │ │ │ ├── SearchField.jsx │ │ │ │ │ │ │ ├── SearchableResourceList.jsx │ │ │ │ │ │ │ ├── SemiCircleProgress.jsx │ │ │ │ │ │ │ ├── ShowListInBadge.jsx │ │ │ │ │ │ │ ├── StepperComponent.jsx │ │ │ │ │ │ │ ├── SummaryCardInfo.jsx │ │ │ │ │ │ │ ├── TextFieldWithInfo.jsx │ │ │ │ │ │ │ ├── TitleWithInfo.jsx │ │ │ │ │ │ │ ├── TooltipText.jsx │ │ │ │ │ │ │ ├── UploadFile.jsx │ │ │ │ │ │ │ ├── customDiffEditor.js │ │ │ │ │ │ │ ├── customEditor.js │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ └── treeView │ │ │ │ │ │ │ │ ├── PrettifyChildren.jsx │ │ │ │ │ │ │ │ ├── PrettifyDisplayName.jsx │ │ │ │ │ │ │ │ ├── TreeViewTable.jsx │ │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ └── tables │ │ │ │ │ │ │ ├── GithubServerTable.js │ │ │ │ │ │ │ ├── GithubSimpleTable.js │ │ │ │ │ │ │ ├── TableContext.js │ │ │ │ │ │ │ ├── TableStore.js │ │ │ │ │ │ │ ├── cells │ │ │ │ │ │ │ ├── GithubCell.js │ │ │ │ │ │ │ └── cell.css │ │ │ │ │ │ │ ├── rows │ │ │ │ │ │ │ ├── GithubRow.js │ │ │ │ │ │ │ └── row.css │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ ├── tableReducer.js │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ ├── pages │ │ │ │ │ │ ├── AlertsBanner.jsx │ │ │ │ │ │ ├── Dashboard.jsx │ │ │ │ │ │ ├── agent_team │ │ │ │ │ │ │ ├── AgentRowCard.tsx │ │ │ │ │ │ │ ├── AgentTeam.tsx │ │ │ │ │ │ │ ├── agentRowCard.css │ │ │ │ │ │ │ ├── agents.store.ts │ │ │ │ │ │ │ ├── agents │ │ │ │ │ │ │ │ └── FindVulnerabilities.tsx │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ ├── ActivityTable.tsx │ │ │ │ │ │ │ │ ├── AgentHeader.tsx │ │ │ │ │ │ │ │ ├── AgentImage.tsx │ │ │ │ │ │ │ │ ├── AgentWindow.tsx │ │ │ │ │ │ │ │ ├── AgentWindowCore.tsx │ │ │ │ │ │ │ │ ├── ApiGroupAgentInitializer.jsx │ │ │ │ │ │ │ │ ├── BlockedState.css │ │ │ │ │ │ │ │ ├── BlockedState.tsx │ │ │ │ │ │ │ │ ├── DropDownAgentInitializer.jsx │ │ │ │ │ │ │ │ ├── ModelPicker.tsx │ │ │ │ │ │ │ │ ├── PromptComposer.tsx │ │ │ │ │ │ │ │ ├── RepositoryInitializer.tsx │ │ │ │ │ │ │ │ ├── SensitiveDataAgentInitializer.jsx │ │ │ │ │ │ │ │ ├── TestFalsePositiveInitializer.jsx │ │ │ │ │ │ │ │ ├── agentResponses │ │ │ │ │ │ │ │ │ ├── AgentOutput.tsx │ │ │ │ │ │ │ │ │ ├── ApiGroupOutput.tsx │ │ │ │ │ │ │ │ │ ├── AuthOptions.tsx │ │ │ │ │ │ │ │ │ ├── BatchedOutput.tsx │ │ │ │ │ │ │ │ │ ├── OutputSelector.tsx │ │ │ │ │ │ │ │ │ ├── SelectRepoComp.jsx │ │ │ │ │ │ │ │ │ ├── SelectedChoices.tsx │ │ │ │ │ │ │ │ │ └── Subprocess.tsx │ │ │ │ │ │ │ │ ├── composer.styles.css │ │ │ │ │ │ │ │ └── finalctas │ │ │ │ │ │ │ │ │ ├── APISRequiredCTA.tsx │ │ │ │ │ │ │ │ │ ├── AgentCoreCTA.tsx │ │ │ │ │ │ │ │ │ ├── AgentFinalCTA.tsx │ │ │ │ │ │ │ │ │ ├── SourceCodeAnalyserCTA.tsx │ │ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ │ ├── constants.ts │ │ │ │ │ │ │ ├── intermediate.store.ts │ │ │ │ │ │ │ ├── transform.js │ │ │ │ │ │ │ ├── types.ts │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ ├── dashboard.css │ │ │ │ │ │ ├── dashboard │ │ │ │ │ │ │ ├── HomeDashboard.jsx │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ ├── ActivityTracker.jsx │ │ │ │ │ │ │ │ ├── BannerRow.jsx │ │ │ │ │ │ │ │ ├── CoverageCard.jsx │ │ │ │ │ │ │ │ ├── DashboardBanner.jsx │ │ │ │ │ │ │ │ ├── InitialSteps.jsx │ │ │ │ │ │ │ │ ├── NullData.jsx │ │ │ │ │ │ │ │ ├── Pipeline.jsx │ │ │ │ │ │ │ │ └── RiskScoreTrend.jsx │ │ │ │ │ │ │ ├── new_components │ │ │ │ │ │ │ │ ├── CustomProgressBar.jsx │ │ │ │ │ │ │ │ ├── EmptyCard.jsx │ │ │ │ │ │ │ │ ├── InfoCard.jsx │ │ │ │ │ │ │ │ ├── ProgressBarChart.jsx │ │ │ │ │ │ │ │ ├── SmoothChart.jsx │ │ │ │ │ │ │ │ ├── SummaryCard.jsx │ │ │ │ │ │ │ │ ├── TestSummaryCard.jsx │ │ │ │ │ │ │ │ └── TestSummaryCardsList.jsx │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ ├── home │ │ │ │ │ │ │ ├── HomePage.js │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ └── module.js │ │ │ │ │ │ ├── issues │ │ │ │ │ │ │ ├── IssuesPage │ │ │ │ │ │ │ │ ├── CompliancePage.jsx │ │ │ │ │ │ │ │ ├── CriticalFindingsGraph.jsx │ │ │ │ │ │ │ │ ├── CriticalUnsecuredAPIsOverTimeGraph.jsx │ │ │ │ │ │ │ │ ├── IssuesCheckbox.jsx │ │ │ │ │ │ │ │ ├── IssuesPage.jsx │ │ │ │ │ │ │ │ ├── SummaryInfo.jsx │ │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ ├── mcp-security │ │ │ │ │ │ │ └── McpSecurityPage.jsx │ │ │ │ │ │ ├── observe │ │ │ │ │ │ │ ├── AllSensitiveData │ │ │ │ │ │ │ │ └── AllSensitiveData.jsx │ │ │ │ │ │ │ ├── GetPrettifyEndpoint.jsx │ │ │ │ │ │ │ ├── OpenApiSpec.jsx │ │ │ │ │ │ │ ├── PageObserve.jsx │ │ │ │ │ │ │ ├── SensitiveDataExposure │ │ │ │ │ │ │ │ └── SensitiveDataExposure.jsx │ │ │ │ │ │ │ ├── SingleRequest │ │ │ │ │ │ │ │ └── SingleRequest.jsx │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── api_collections │ │ │ │ │ │ │ │ ├── APIQuery.jsx │ │ │ │ │ │ │ │ ├── ApiChanges.jsx │ │ │ │ │ │ │ │ ├── ApiCollections.jsx │ │ │ │ │ │ │ │ ├── ApiDependency.jsx │ │ │ │ │ │ │ │ ├── ApiDependencyEdge.jsx │ │ │ │ │ │ │ │ ├── ApiDependencyNode.jsx │ │ │ │ │ │ │ │ ├── ApiDetails.jsx │ │ │ │ │ │ │ │ ├── ApiEndpoints.jsx │ │ │ │ │ │ │ │ ├── ApiGroupModal.jsx │ │ │ │ │ │ │ │ ├── ApiSchema.jsx │ │ │ │ │ │ │ │ ├── CreateNewCollectionModal.jsx │ │ │ │ │ │ │ │ ├── Documented.jsx │ │ │ │ │ │ │ │ ├── RunTest.jsx │ │ │ │ │ │ │ │ ├── RunTestConfiguration.jsx │ │ │ │ │ │ │ │ ├── RunTestSuiteRow.jsx │ │ │ │ │ │ │ │ ├── RunTestSuites.jsx │ │ │ │ │ │ │ │ ├── SelectSource.jsx │ │ │ │ │ │ │ │ ├── Utils.js │ │ │ │ │ │ │ │ ├── WorkflowTests.jsx │ │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ │ ├── api_inventory.css │ │ │ │ │ │ │ │ ├── api_query_component │ │ │ │ │ │ │ │ │ └── SaveAsCollectionModal.jsx │ │ │ │ │ │ │ │ ├── component │ │ │ │ │ │ │ │ │ ├── AdvancedSettingsComponent.jsx │ │ │ │ │ │ │ │ │ ├── ApiChangesTable.jsx │ │ │ │ │ │ │ │ │ ├── CollectionsPageBanner.jsx │ │ │ │ │ │ │ │ │ ├── CopyEndpoint.jsx │ │ │ │ │ │ │ │ │ ├── SetUserEnvPopupComponent.jsx │ │ │ │ │ │ │ │ │ ├── SourceLocation.jsx │ │ │ │ │ │ │ │ │ └── StyledEndpoint.jsx │ │ │ │ │ │ │ │ ├── data │ │ │ │ │ │ │ │ │ └── apiChanges.js │ │ │ │ │ │ │ │ └── run_test_suites.css │ │ │ │ │ │ │ ├── data_types │ │ │ │ │ │ │ │ ├── DataTypes.css │ │ │ │ │ │ │ │ ├── DataTypes.jsx │ │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ │ ├── observeStore.js │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ ├── onboarding │ │ │ │ │ │ │ ├── Onboarding.css │ │ │ │ │ │ │ ├── Onboarding.jsx │ │ │ │ │ │ │ ├── OnboardingStore.js │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ ├── CollectionSelection.jsx │ │ │ │ │ │ │ │ ├── OnboardingBuilder.jsx │ │ │ │ │ │ │ │ ├── OnboardingLayout.jsx │ │ │ │ │ │ │ │ ├── ResultsSummary.jsx │ │ │ │ │ │ │ │ ├── SetConfig.jsx │ │ │ │ │ │ │ │ ├── SuitesCard.jsx │ │ │ │ │ │ │ │ ├── TestSuites.jsx │ │ │ │ │ │ │ │ └── TestSuitesCard.jsx │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ ├── quick_start │ │ │ │ │ │ │ ├── QuickStart.css │ │ │ │ │ │ │ ├── QuickStart.jsx │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ ├── ApiInventoryFromSourceCode.jsx │ │ │ │ │ │ │ │ ├── AwsSource.jsx │ │ │ │ │ │ │ │ ├── BitBucketSource.jsx │ │ │ │ │ │ │ │ ├── BurpSource.jsx │ │ │ │ │ │ │ │ ├── CompleteSetup.jsx │ │ │ │ │ │ │ │ ├── FargateSource.jsx │ │ │ │ │ │ │ │ ├── GithubSource.jsx │ │ │ │ │ │ │ │ ├── HybridSaasSource.jsx │ │ │ │ │ │ │ │ ├── Kubernetes.jsx │ │ │ │ │ │ │ │ ├── NewConnection.jsx │ │ │ │ │ │ │ │ ├── OpenApiSource.jsx │ │ │ │ │ │ │ │ ├── PostmanSource.jsx │ │ │ │ │ │ │ │ ├── RowCard.jsx │ │ │ │ │ │ │ │ ├── UpdateConnections.jsx │ │ │ │ │ │ │ │ └── shared │ │ │ │ │ │ │ │ │ ├── AddOnComponenet.jsx │ │ │ │ │ │ │ │ │ ├── BannerComponent.jsx │ │ │ │ │ │ │ │ │ ├── FutureConnection.jsx │ │ │ │ │ │ │ │ │ ├── InformationBannerComponent.jsx │ │ │ │ │ │ │ │ │ ├── JsonComponent.jsx │ │ │ │ │ │ │ │ │ ├── NoAccessComponent.jsx │ │ │ │ │ │ │ │ │ └── SourceCodeRepos.jsx │ │ │ │ │ │ │ ├── quickStartStore.js │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ ├── settings │ │ │ │ │ │ │ ├── Settings.jsx │ │ │ │ │ │ │ ├── about │ │ │ │ │ │ │ │ └── About.jsx │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── audit_logs │ │ │ │ │ │ │ │ └── AuditLogs.jsx │ │ │ │ │ │ │ ├── auth_types │ │ │ │ │ │ │ │ ├── AuthTypeDetails.jsx │ │ │ │ │ │ │ │ ├── AuthTypes.jsx │ │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ │ ├── billing │ │ │ │ │ │ │ │ ├── Billing.jsx │ │ │ │ │ │ │ │ ├── SelfHosted.jsx │ │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ │ └── billing.css │ │ │ │ │ │ │ ├── default_payloads │ │ │ │ │ │ │ │ ├── DefaultPayloads.jsx │ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ │ ├── health_logs │ │ │ │ │ │ │ │ ├── HealthLogs.jsx │ │ │ │ │ │ │ │ ├── Logs.jsx │ │ │ │ │ │ │ │ └── LogsContainer.jsx │ │ │ │ │ │ │ ├── help_and_support │ │ │ │ │ │ │ │ └── Help.jsx │ │ │ │ │ │ │ ├── integrations │ │ │ │ │ │ │ │ ├── AWSWaf.jsx │ │ │ │ │ │ │ │ ├── AgentConfig.jsx │ │ │ │ │ │ │ │ ├── AktoGPT.jsx │ │ │ │ │ │ │ │ ├── ApiTokens.jsx │ │ │ │ │ │ │ │ ├── AzureBoards.jsx │ │ │ │ │ │ │ │ ├── BurpSuite.jsx │ │ │ │ │ │ │ │ ├── CICD.jsx │ │ │ │ │ │ │ │ ├── CloudflareWaf.jsx │ │ │ │ │ │ │ │ ├── F5Waf.jsx │ │ │ │ │ │ │ │ ├── GithubAppIntegration.jsx │ │ │ │ │ │ │ │ ├── GithubSso.jsx │ │ │ │ │ │ │ │ ├── Integrations.jsx │ │ │ │ │ │ │ │ ├── IntegrationsLayout.jsx │ │ │ │ │ │ │ │ ├── Jira.jsx │ │ │ │ │ │ │ │ ├── OktaIntegration.jsx │ │ │ │ │ │ │ │ ├── Postman.jsx │ │ │ │ │ │ │ │ ├── Slack.jsx │ │ │ │ │ │ │ │ ├── Splunk.jsx │ │ │ │ │ │ │ │ ├── TokensLayout.jsx │ │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ │ ├── DeleteModal.jsx │ │ │ │ │ │ │ │ │ ├── Details.jsx │ │ │ │ │ │ │ │ │ ├── LineComponent.jsx │ │ │ │ │ │ │ │ │ └── StepsComponent.jsx │ │ │ │ │ │ │ │ ├── gmailWebhooks │ │ │ │ │ │ │ │ │ ├── GmailWebhook.jsx │ │ │ │ │ │ │ │ │ └── GmailWebhookCore.jsx │ │ │ │ │ │ │ │ ├── reducers │ │ │ │ │ │ │ │ │ └── useJiraReducer.js │ │ │ │ │ │ │ │ ├── sso │ │ │ │ │ │ │ │ │ ├── AzureSso.jsx │ │ │ │ │ │ │ │ │ ├── CustomSamlSso.jsx │ │ │ │ │ │ │ │ │ └── GoogleSamlSso.jsx │ │ │ │ │ │ │ │ ├── teamsWebhooks │ │ │ │ │ │ │ │ │ ├── TeamsWebhook.jsx │ │ │ │ │ │ │ │ │ └── TeamsWebhooks.jsx │ │ │ │ │ │ │ │ ├── webhookLayout │ │ │ │ │ │ │ │ │ ├── WebhookCore.jsx │ │ │ │ │ │ │ │ │ └── WebhooksCore.jsx │ │ │ │ │ │ │ │ └── webhooks │ │ │ │ │ │ │ │ │ ├── Webhook.jsx │ │ │ │ │ │ │ │ │ ├── Webhooks.jsx │ │ │ │ │ │ │ │ │ └── webhooksStore.js │ │ │ │ │ │ │ ├── metrics │ │ │ │ │ │ │ │ └── Metrics.jsx │ │ │ │ │ │ │ ├── module.js │ │ │ │ │ │ │ ├── nav │ │ │ │ │ │ │ │ └── SettingsLeftNav.jsx │ │ │ │ │ │ │ ├── rbac │ │ │ │ │ │ │ │ └── utils.js │ │ │ │ │ │ │ ├── roles │ │ │ │ │ │ │ │ └── Roles.jsx │ │ │ │ │ │ │ ├── settings.css │ │ │ │ │ │ │ ├── tags │ │ │ │ │ │ │ │ ├── TagDetails.jsx │ │ │ │ │ │ │ │ ├── Tags.jsx │ │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ │ ├── test_library │ │ │ │ │ │ │ │ ├── TestLibrary.jsx │ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ │ ├── threat_configuration │ │ │ │ │ │ │ │ ├── ThreatActorConfig.jsx │ │ │ │ │ │ │ │ └── ThreatConfiguration.jsx │ │ │ │ │ │ │ ├── traffic-conditions │ │ │ │ │ │ │ │ ├── AdvancedTrafficFilters.jsx │ │ │ │ │ │ │ │ └── api.js │ │ │ │ │ │ │ ├── undo_demerged_apis │ │ │ │ │ │ │ │ └── UndoDemergedApis.jsx │ │ │ │ │ │ │ └── users │ │ │ │ │ │ │ │ ├── InviteUserModal.jsx │ │ │ │ │ │ │ │ └── Users.jsx │ │ │ │ │ │ ├── test_editor │ │ │ │ │ │ │ ├── TestEditor.css │ │ │ │ │ │ │ ├── TestEditor.jsx │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ ├── EmptySampleApi.jsx │ │ │ │ │ │ │ │ ├── SampleApi.jsx │ │ │ │ │ │ │ │ ├── TestEditorFileExplorer.jsx │ │ │ │ │ │ │ │ ├── YamlEditor.jsx │ │ │ │ │ │ │ │ └── editor_config │ │ │ │ │ │ │ │ │ ├── editorSetup.js │ │ │ │ │ │ │ │ │ ├── keywordSnippets.js │ │ │ │ │ │ │ │ │ ├── keywords.js │ │ │ │ │ │ │ │ │ └── snippets.js │ │ │ │ │ │ │ ├── testEditorStore.js │ │ │ │ │ │ │ ├── tests_table │ │ │ │ │ │ │ │ ├── TestsFlyLayout.jsx │ │ │ │ │ │ │ │ ├── TestsTablePage.jsx │ │ │ │ │ │ │ │ └── YamlComponent.jsx │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ ├── testing │ │ │ │ │ │ │ ├── DependencyTable │ │ │ │ │ │ │ │ ├── DependencyTable.js │ │ │ │ │ │ │ │ ├── EditGlobalDataFields.js │ │ │ │ │ │ │ │ ├── EditModal.js │ │ │ │ │ │ │ │ ├── EditTextField.js │ │ │ │ │ │ │ │ ├── GlobalVarModal.js │ │ │ │ │ │ │ │ └── TableExpand.js │ │ │ │ │ │ │ ├── PageTesting.jsx │ │ │ │ │ │ │ ├── SingleTestRunPage │ │ │ │ │ │ │ │ ├── ReRunModal.jsx │ │ │ │ │ │ │ │ ├── SingleTestRunPage.js │ │ │ │ │ │ │ │ ├── SummaryTable.jsx │ │ │ │ │ │ │ │ ├── TrendChart.jsx │ │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ │ ├── TestRoleAccessMatrix │ │ │ │ │ │ │ │ └── TestRoleAccessMatrix.jsx │ │ │ │ │ │ │ ├── TestRoleSettings │ │ │ │ │ │ │ │ ├── AuthComponent.jsx │ │ │ │ │ │ │ │ ├── DeleteModal.jsx │ │ │ │ │ │ │ │ ├── DescriptionCard.jsx │ │ │ │ │ │ │ │ ├── ParamsCard.jsx │ │ │ │ │ │ │ │ ├── SavedParamComponent.jsx │ │ │ │ │ │ │ │ ├── ScopeRoleDropdown.jsx │ │ │ │ │ │ │ │ ├── TestRoleConstants.jsx │ │ │ │ │ │ │ │ └── TestRoleSettings.jsx │ │ │ │ │ │ │ ├── TestRolesPage │ │ │ │ │ │ │ │ └── TestRolesPage.jsx │ │ │ │ │ │ │ ├── TestRunResultPage │ │ │ │ │ │ │ │ ├── TestRunResultFlyout.jsx │ │ │ │ │ │ │ │ ├── TestRunResultFull.jsx │ │ │ │ │ │ │ │ ├── TestRunResultPage.jsx │ │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ │ ├── TestRunsPage │ │ │ │ │ │ │ │ ├── ChartypeComponent.jsx │ │ │ │ │ │ │ │ ├── TestRunsPage.js │ │ │ │ │ │ │ │ └── TestrunsBannerComponent.jsx │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── configurations │ │ │ │ │ │ │ │ ├── ConfigureTestCollectionPropertyDialog.jsx │ │ │ │ │ │ │ │ └── TestCollectionConfiguration.jsx │ │ │ │ │ │ │ ├── testSuite │ │ │ │ │ │ │ │ ├── FlyLayoutSuite.jsx │ │ │ │ │ │ │ │ ├── TestSuite.jsx │ │ │ │ │ │ │ │ ├── TestSuiteRow.jsx │ │ │ │ │ │ │ │ ├── flyLayoutSuite.css │ │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ │ ├── testingStore.js │ │ │ │ │ │ │ ├── transform.js │ │ │ │ │ │ │ ├── user_config │ │ │ │ │ │ │ │ ├── AuthParams.jsx │ │ │ │ │ │ │ │ ├── Automated.jsx │ │ │ │ │ │ │ │ ├── HardCoded.jsx │ │ │ │ │ │ │ │ ├── JsonRecording.jsx │ │ │ │ │ │ │ │ ├── LoginForm.jsx │ │ │ │ │ │ │ │ ├── LoginStepBuilder.jsx │ │ │ │ │ │ │ │ ├── OtpVerification.jsx │ │ │ │ │ │ │ │ ├── TlsAuth.jsx │ │ │ │ │ │ │ │ └── UserConfig.jsx │ │ │ │ │ │ │ ├── vulnerability_report │ │ │ │ │ │ │ │ ├── Category.jsx │ │ │ │ │ │ │ │ ├── HttpRequestResponseViewer.jsx │ │ │ │ │ │ │ │ ├── Issue.jsx │ │ │ │ │ │ │ │ ├── ReportConclusion.jsx │ │ │ │ │ │ │ │ ├── ReportFindings.jsx │ │ │ │ │ │ │ │ ├── ReportHeader.jsx │ │ │ │ │ │ │ │ ├── ReportRecommendations.jsx │ │ │ │ │ │ │ │ ├── ReportSummary.jsx │ │ │ │ │ │ │ │ ├── ReportSummaryInfoCard.jsx │ │ │ │ │ │ │ │ ├── ReportTOC.jsx │ │ │ │ │ │ │ │ ├── VulnerabilityReport.jsx │ │ │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ │ └── workflow_test │ │ │ │ │ │ │ │ ├── BlankNode.jsx │ │ │ │ │ │ │ │ ├── EndNode.jsx │ │ │ │ │ │ │ │ ├── InputArgumentsDialog.jsx │ │ │ │ │ │ │ │ ├── ScheduleBox.jsx │ │ │ │ │ │ │ │ ├── StartNode.jsx │ │ │ │ │ │ │ │ ├── TemplateStringEditor.jsx │ │ │ │ │ │ │ │ ├── TextFieldCloseable.jsx │ │ │ │ │ │ │ │ ├── Workflow.jsx │ │ │ │ │ │ │ │ ├── WorkflowBuilder.jsx │ │ │ │ │ │ │ │ ├── WorkflowResultsDrawer.jsx │ │ │ │ │ │ │ │ ├── WorkflowTestBuilder.jsx │ │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ │ ├── start-node.css │ │ │ │ │ │ │ │ └── store.js │ │ │ │ │ │ ├── threat_detection │ │ │ │ │ │ │ ├── ThreatActorPage.jsx │ │ │ │ │ │ │ ├── ThreatApiPage.jsx │ │ │ │ │ │ │ ├── ThreatDetectionPage.jsx │ │ │ │ │ │ │ ├── ThreatPolicyPage.jsx │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ ├── ActivityLog.jsx │ │ │ │ │ │ │ │ ├── ActorDetails.jsx │ │ │ │ │ │ │ │ ├── FilterComponent.jsx │ │ │ │ │ │ │ │ ├── NormalSampleDetails.jsx │ │ │ │ │ │ │ │ ├── SampleDetails.jsx │ │ │ │ │ │ │ │ ├── SusDataTable.jsx │ │ │ │ │ │ │ │ ├── ThreatActivityTimeline.jsx │ │ │ │ │ │ │ │ ├── ThreatActorsTable.jsx │ │ │ │ │ │ │ │ ├── ThreatApiSubcategoryCount.jsx │ │ │ │ │ │ │ │ ├── ThreatApisTable.jsx │ │ │ │ │ │ │ │ ├── ThreatSummary.jsx │ │ │ │ │ │ │ │ ├── ThreatWorldMap.jsx │ │ │ │ │ │ │ │ ├── TopThreatTypeChart.jsx │ │ │ │ │ │ │ │ └── flags │ │ │ │ │ │ │ │ │ ├── AD.svg │ │ │ │ │ │ │ │ │ ├── AE.svg │ │ │ │ │ │ │ │ │ ├── AF.svg │ │ │ │ │ │ │ │ │ ├── AG.svg │ │ │ │ │ │ │ │ │ ├── AI.svg │ │ │ │ │ │ │ │ │ ├── AL.svg │ │ │ │ │ │ │ │ │ ├── AM.svg │ │ │ │ │ │ │ │ │ ├── AO.svg │ │ │ │ │ │ │ │ │ ├── AR.svg │ │ │ │ │ │ │ │ │ ├── AS.svg │ │ │ │ │ │ │ │ │ ├── AT.svg │ │ │ │ │ │ │ │ │ ├── AU.svg │ │ │ │ │ │ │ │ │ ├── AW.svg │ │ │ │ │ │ │ │ │ ├── AX.svg │ │ │ │ │ │ │ │ │ ├── AZ.svg │ │ │ │ │ │ │ │ │ ├── BA.svg │ │ │ │ │ │ │ │ │ ├── BB.svg │ │ │ │ │ │ │ │ │ ├── BD.svg │ │ │ │ │ │ │ │ │ ├── BE.svg │ │ │ │ │ │ │ │ │ ├── BF.svg │ │ │ │ │ │ │ │ │ ├── BG.svg │ │ │ │ │ │ │ │ │ ├── BH.svg │ │ │ │ │ │ │ │ │ ├── BI.svg │ │ │ │ │ │ │ │ │ ├── BJ.svg │ │ │ │ │ │ │ │ │ ├── BL.svg │ │ │ │ │ │ │ │ │ ├── BM.svg │ │ │ │ │ │ │ │ │ ├── BN.svg │ │ │ │ │ │ │ │ │ ├── BO.svg │ │ │ │ │ │ │ │ │ ├── BQ-1.svg │ │ │ │ │ │ │ │ │ ├── BQ-2.svg │ │ │ │ │ │ │ │ │ ├── BQ.svg │ │ │ │ │ │ │ │ │ ├── BR.svg │ │ │ │ │ │ │ │ │ ├── BS.svg │ │ │ │ │ │ │ │ │ ├── BT.svg │ │ │ │ │ │ │ │ │ ├── BW.svg │ │ │ │ │ │ │ │ │ ├── BY.svg │ │ │ │ │ │ │ │ │ ├── BZ.svg │ │ │ │ │ │ │ │ │ ├── CA.svg │ │ │ │ │ │ │ │ │ ├── CC.svg │ │ │ │ │ │ │ │ │ ├── CD-1.svg │ │ │ │ │ │ │ │ │ ├── CD.svg │ │ │ │ │ │ │ │ │ ├── CF.svg │ │ │ │ │ │ │ │ │ ├── CH.svg │ │ │ │ │ │ │ │ │ ├── CK.svg │ │ │ │ │ │ │ │ │ ├── CL.svg │ │ │ │ │ │ │ │ │ ├── CM.svg │ │ │ │ │ │ │ │ │ ├── CN.svg │ │ │ │ │ │ │ │ │ ├── CO.svg │ │ │ │ │ │ │ │ │ ├── CR.svg │ │ │ │ │ │ │ │ │ ├── CU.svg │ │ │ │ │ │ │ │ │ ├── CW.svg │ │ │ │ │ │ │ │ │ ├── CX.svg │ │ │ │ │ │ │ │ │ ├── CY.svg │ │ │ │ │ │ │ │ │ ├── CZ.svg │ │ │ │ │ │ │ │ │ ├── DE.svg │ │ │ │ │ │ │ │ │ ├── DJ.svg │ │ │ │ │ │ │ │ │ ├── DK.svg │ │ │ │ │ │ │ │ │ ├── DM.svg │ │ │ │ │ │ │ │ │ ├── DO.svg │ │ │ │ │ │ │ │ │ ├── DS.svg │ │ │ │ │ │ │ │ │ ├── DZ.svg │ │ │ │ │ │ │ │ │ ├── EC.svg │ │ │ │ │ │ │ │ │ ├── EE.svg │ │ │ │ │ │ │ │ │ ├── EG.svg │ │ │ │ │ │ │ │ │ ├── EH.svg │ │ │ │ │ │ │ │ │ ├── ER.svg │ │ │ │ │ │ │ │ │ ├── ES.svg │ │ │ │ │ │ │ │ │ ├── ET.svg │ │ │ │ │ │ │ │ │ ├── FI.svg │ │ │ │ │ │ │ │ │ ├── FJ.svg │ │ │ │ │ │ │ │ │ ├── FK.svg │ │ │ │ │ │ │ │ │ ├── FM.svg │ │ │ │ │ │ │ │ │ ├── FO.svg │ │ │ │ │ │ │ │ │ ├── FR.svg │ │ │ │ │ │ │ │ │ ├── GA.svg │ │ │ │ │ │ │ │ │ ├── GB-2.svg │ │ │ │ │ │ │ │ │ ├── GB.svg │ │ │ │ │ │ │ │ │ ├── GD.svg │ │ │ │ │ │ │ │ │ ├── GE.svg │ │ │ │ │ │ │ │ │ ├── GG.svg │ │ │ │ │ │ │ │ │ ├── GH.svg │ │ │ │ │ │ │ │ │ ├── GI.svg │ │ │ │ │ │ │ │ │ ├── GL.svg │ │ │ │ │ │ │ │ │ ├── GM.svg │ │ │ │ │ │ │ │ │ ├── GN.svg │ │ │ │ │ │ │ │ │ ├── GQ.svg │ │ │ │ │ │ │ │ │ ├── GR.svg │ │ │ │ │ │ │ │ │ ├── GT.svg │ │ │ │ │ │ │ │ │ ├── GU.svg │ │ │ │ │ │ │ │ │ ├── GW.svg │ │ │ │ │ │ │ │ │ ├── GY.svg │ │ │ │ │ │ │ │ │ ├── HK.svg │ │ │ │ │ │ │ │ │ ├── HN.svg │ │ │ │ │ │ │ │ │ ├── HR.svg │ │ │ │ │ │ │ │ │ ├── HT.svg │ │ │ │ │ │ │ │ │ ├── HU.svg │ │ │ │ │ │ │ │ │ ├── ID.svg │ │ │ │ │ │ │ │ │ ├── IE.svg │ │ │ │ │ │ │ │ │ ├── IL.svg │ │ │ │ │ │ │ │ │ ├── IM.svg │ │ │ │ │ │ │ │ │ ├── IN.svg │ │ │ │ │ │ │ │ │ ├── IO.svg │ │ │ │ │ │ │ │ │ ├── IQ.svg │ │ │ │ │ │ │ │ │ ├── IR.svg │ │ │ │ │ │ │ │ │ ├── IS.svg │ │ │ │ │ │ │ │ │ ├── IT.svg │ │ │ │ │ │ │ │ │ ├── JE.svg │ │ │ │ │ │ │ │ │ ├── JM.svg │ │ │ │ │ │ │ │ │ ├── JO.svg │ │ │ │ │ │ │ │ │ ├── JP.svg │ │ │ │ │ │ │ │ │ ├── KE.svg │ │ │ │ │ │ │ │ │ ├── KG.svg │ │ │ │ │ │ │ │ │ ├── KH.svg │ │ │ │ │ │ │ │ │ ├── KI.svg │ │ │ │ │ │ │ │ │ ├── KM.svg │ │ │ │ │ │ │ │ │ ├── KN.svg │ │ │ │ │ │ │ │ │ ├── KP.svg │ │ │ │ │ │ │ │ │ ├── KR.svg │ │ │ │ │ │ │ │ │ ├── KW.svg │ │ │ │ │ │ │ │ │ ├── KY.svg │ │ │ │ │ │ │ │ │ ├── KZ.svg │ │ │ │ │ │ │ │ │ ├── LA.svg │ │ │ │ │ │ │ │ │ ├── LB.svg │ │ │ │ │ │ │ │ │ ├── LC.svg │ │ │ │ │ │ │ │ │ ├── LI.svg │ │ │ │ │ │ │ │ │ ├── LK.svg │ │ │ │ │ │ │ │ │ ├── LR.svg │ │ │ │ │ │ │ │ │ ├── LS.svg │ │ │ │ │ │ │ │ │ ├── LT.svg │ │ │ │ │ │ │ │ │ ├── LU.svg │ │ │ │ │ │ │ │ │ ├── LV.svg │ │ │ │ │ │ │ │ │ ├── LY.svg │ │ │ │ │ │ │ │ │ ├── MA.svg │ │ │ │ │ │ │ │ │ ├── MC.svg │ │ │ │ │ │ │ │ │ ├── MD.svg │ │ │ │ │ │ │ │ │ ├── ME.svg │ │ │ │ │ │ │ │ │ ├── MG.svg │ │ │ │ │ │ │ │ │ ├── MH.svg │ │ │ │ │ │ │ │ │ ├── MK.svg │ │ │ │ │ │ │ │ │ ├── ML.svg │ │ │ │ │ │ │ │ │ ├── MM.svg │ │ │ │ │ │ │ │ │ ├── MN.svg │ │ │ │ │ │ │ │ │ ├── MO.svg │ │ │ │ │ │ │ │ │ ├── MP.svg │ │ │ │ │ │ │ │ │ ├── MQ.svg │ │ │ │ │ │ │ │ │ ├── MR.svg │ │ │ │ │ │ │ │ │ ├── MS.svg │ │ │ │ │ │ │ │ │ ├── MT.svg │ │ │ │ │ │ │ │ │ ├── MU.svg │ │ │ │ │ │ │ │ │ ├── MV.svg │ │ │ │ │ │ │ │ │ ├── MW.svg │ │ │ │ │ │ │ │ │ ├── MX.svg │ │ │ │ │ │ │ │ │ ├── MY.svg │ │ │ │ │ │ │ │ │ ├── MZ.svg │ │ │ │ │ │ │ │ │ ├── NA.svg │ │ │ │ │ │ │ │ │ ├── NE.svg │ │ │ │ │ │ │ │ │ ├── NF.svg │ │ │ │ │ │ │ │ │ ├── NG.svg │ │ │ │ │ │ │ │ │ ├── NI.svg │ │ │ │ │ │ │ │ │ ├── NL.svg │ │ │ │ │ │ │ │ │ ├── NO.svg │ │ │ │ │ │ │ │ │ ├── NP.svg │ │ │ │ │ │ │ │ │ ├── NR.svg │ │ │ │ │ │ │ │ │ ├── NU.svg │ │ │ │ │ │ │ │ │ ├── NZ.svg │ │ │ │ │ │ │ │ │ ├── OM.svg │ │ │ │ │ │ │ │ │ ├── PA.svg │ │ │ │ │ │ │ │ │ ├── PE.svg │ │ │ │ │ │ │ │ │ ├── PF.svg │ │ │ │ │ │ │ │ │ ├── PG.svg │ │ │ │ │ │ │ │ │ ├── PH.svg │ │ │ │ │ │ │ │ │ ├── PK.svg │ │ │ │ │ │ │ │ │ ├── PL.svg │ │ │ │ │ │ │ │ │ ├── PN.svg │ │ │ │ │ │ │ │ │ ├── PR.svg │ │ │ │ │ │ │ │ │ ├── PS.svg │ │ │ │ │ │ │ │ │ ├── PT.svg │ │ │ │ │ │ │ │ │ ├── PW.svg │ │ │ │ │ │ │ │ │ ├── PY.svg │ │ │ │ │ │ │ │ │ ├── QA.svg │ │ │ │ │ │ │ │ │ ├── RO.svg │ │ │ │ │ │ │ │ │ ├── RS.svg │ │ │ │ │ │ │ │ │ ├── RU.svg │ │ │ │ │ │ │ │ │ ├── RW.svg │ │ │ │ │ │ │ │ │ ├── SA.svg │ │ │ │ │ │ │ │ │ ├── SB.svg │ │ │ │ │ │ │ │ │ ├── SC.svg │ │ │ │ │ │ │ │ │ ├── SE.svg │ │ │ │ │ │ │ │ │ ├── SG.svg │ │ │ │ │ │ │ │ │ ├── SI.svg │ │ │ │ │ │ │ │ │ ├── SK.svg │ │ │ │ │ │ │ │ │ ├── SL.svg │ │ │ │ │ │ │ │ │ ├── SM.svg │ │ │ │ │ │ │ │ │ ├── SN.svg │ │ │ │ │ │ │ │ │ ├── SO.svg │ │ │ │ │ │ │ │ │ ├── SR.svg │ │ │ │ │ │ │ │ │ ├── SS.svg │ │ │ │ │ │ │ │ │ ├── ST.svg │ │ │ │ │ │ │ │ │ ├── SV.svg │ │ │ │ │ │ │ │ │ ├── SX.svg │ │ │ │ │ │ │ │ │ ├── SY.svg │ │ │ │ │ │ │ │ │ ├── SZ.svg │ │ │ │ │ │ │ │ │ ├── TC.svg │ │ │ │ │ │ │ │ │ ├── TD.svg │ │ │ │ │ │ │ │ │ ├── TG.svg │ │ │ │ │ │ │ │ │ ├── TH.svg │ │ │ │ │ │ │ │ │ ├── TJ.svg │ │ │ │ │ │ │ │ │ ├── TK.svg │ │ │ │ │ │ │ │ │ ├── TL.svg │ │ │ │ │ │ │ │ │ ├── TM.svg │ │ │ │ │ │ │ │ │ ├── TN.svg │ │ │ │ │ │ │ │ │ ├── TO.svg │ │ │ │ │ │ │ │ │ ├── TR.svg │ │ │ │ │ │ │ │ │ ├── TT.svg │ │ │ │ │ │ │ │ │ ├── TV.svg │ │ │ │ │ │ │ │ │ ├── TW.svg │ │ │ │ │ │ │ │ │ ├── TZ.svg │ │ │ │ │ │ │ │ │ ├── UA.svg │ │ │ │ │ │ │ │ │ ├── UG.svg │ │ │ │ │ │ │ │ │ ├── US.svg │ │ │ │ │ │ │ │ │ ├── UY.svg │ │ │ │ │ │ │ │ │ ├── UZ.svg │ │ │ │ │ │ │ │ │ ├── VC.svg │ │ │ │ │ │ │ │ │ ├── VE.svg │ │ │ │ │ │ │ │ │ ├── VG.svg │ │ │ │ │ │ │ │ │ ├── VI.svg │ │ │ │ │ │ │ │ │ ├── VN.svg │ │ │ │ │ │ │ │ │ ├── VU.svg │ │ │ │ │ │ │ │ │ ├── WS.svg │ │ │ │ │ │ │ │ │ ├── YE.svg │ │ │ │ │ │ │ │ │ ├── ZA.svg │ │ │ │ │ │ │ │ │ ├── ZM.svg │ │ │ │ │ │ │ │ │ ├── ZW.svg │ │ │ │ │ │ │ │ │ ├── earth.svg │ │ │ │ │ │ │ │ │ ├── index.mjs │ │ │ │ │ │ │ │ │ └── script.js │ │ │ │ │ │ │ ├── dummyData.js │ │ │ │ │ │ │ └── transform.js │ │ │ │ │ │ └── transform.js │ │ │ │ │ └── store.js │ │ │ │ ├── main │ │ │ │ │ ├── App.js │ │ │ │ │ ├── ExpiredApp.js │ │ │ │ │ ├── LocalStorageStore.js │ │ │ │ │ ├── PersistStore.js │ │ │ │ │ ├── PollingProvider.jsx │ │ │ │ │ ├── SessionStore.js │ │ │ │ │ ├── TokenValidator.jsx │ │ │ │ │ ├── index.js │ │ │ │ │ ├── onboardingData.js │ │ │ │ │ └── setupTests.js │ │ │ │ └── signup │ │ │ │ │ ├── api.js │ │ │ │ │ ├── components │ │ │ │ │ ├── Auth0Redirects.jsx │ │ │ │ │ ├── SSOTextfield.jsx │ │ │ │ │ ├── SignUp.jsx │ │ │ │ │ ├── SignUpPageLayout.jsx │ │ │ │ │ ├── SignUpWithSSO.jsx │ │ │ │ │ └── ToastComponent.jsx │ │ │ │ │ ├── pages │ │ │ │ │ ├── PageBusinessEmail.jsx │ │ │ │ │ ├── PageCheckInbox.jsx │ │ │ │ │ └── SignupPage.jsx │ │ │ │ │ └── styles.css │ │ │ └── util │ │ │ │ ├── func.js │ │ │ │ ├── history.js │ │ │ │ ├── request.js │ │ │ │ ├── searchItems.js │ │ │ │ └── values.js │ │ │ ├── sw.js │ │ │ ├── webpack.config.dev.js │ │ │ └── webpack.config.js │ │ ├── public │ │ ├── CIS CONTROLS.svg │ │ ├── CSA CCM.svg │ │ ├── CYBERSECURITY MATURITY MODEL CERTIFICATION (CMMC).svg │ │ ├── FEDRAMP.svg │ │ ├── FISMA.svg │ │ ├── GDPR.svg │ │ ├── HAR.svg │ │ ├── HIPAA.svg │ │ ├── ISO 27001.svg │ │ ├── NIST 800-171.svg │ │ ├── NIST 800-53.svg │ │ ├── Nginx.svg │ │ ├── OWASP.svg │ │ ├── PCI DSS.svg │ │ ├── PaymentsMajor.svg │ │ ├── SOC 2.svg │ │ ├── TCP.svg │ │ ├── aca.svg │ │ ├── af.svg │ │ ├── agents │ │ │ ├── secret-agent-1.svg │ │ │ ├── secret-agent-2.svg │ │ │ ├── secret-agent-3.svg │ │ │ ├── secret-agent-4.svg │ │ │ └── secret-agent-5.svg │ │ ├── aks.svg │ │ ├── aktoApis_logo.svg │ │ ├── akto_colored.svg │ │ ├── akto_logo copy.svg │ │ ├── akto_logo.svg │ │ ├── akto_name_with_logo.svg │ │ ├── alert_hexagon.svg │ │ ├── analytics.svg │ │ ├── apigee.svg │ │ ├── aws.svg │ │ ├── awsWaf.svg │ │ ├── aws_api_gateway.svg │ │ ├── azure-boards.svg │ │ ├── azure.svg │ │ ├── azure_logo.svg │ │ ├── azureappservice.svg │ │ ├── beanstalk.svg │ │ ├── bitbucket.svg │ │ ├── burp.svg │ │ ├── burp_logo.svg │ │ ├── chat_major_help.svg │ │ ├── ciCd_logo.svg │ │ ├── circle_cancel.svg │ │ ├── circle_check.svg │ │ ├── circle_icon.svg │ │ ├── circle_tick_minor.svg │ │ ├── citrix.svg │ │ ├── cloudflare.svg │ │ ├── cloudflareWaf.png │ │ ├── copy_icon.svg │ │ ├── discord.svg │ │ ├── docker.svg │ │ ├── ebpf.svg │ │ ├── ecs.svg │ │ ├── eks.svg │ │ ├── envoy.svg │ │ ├── f5.svg │ │ ├── fargate.svg │ │ ├── favicon.svg │ │ ├── favicon2.svg │ │ ├── favicon3.svg │ │ ├── favicon4.svg │ │ ├── file_check.svg │ │ ├── file_lock.svg │ │ ├── file_plus.svg │ │ ├── four_sq.svg │ │ ├── g2-badge-1.png │ │ ├── g2-badge-2.png │ │ ├── gcp.svg │ │ ├── gcr.svg │ │ ├── gcrfunc.svg │ │ ├── github.svg │ │ ├── github_icon.svg │ │ ├── gitlab.svg │ │ ├── gke.svg │ │ ├── gmail.svg │ │ ├── go.svg │ │ ├── gpt_logo.svg │ │ ├── graphql_api.svg │ │ ├── haproxy.svg │ │ ├── ibmapiconnect.svg │ │ ├── info_filled_icon.svg │ │ ├── issues-event-icon.svg │ │ ├── istio.svg │ │ ├── java.svg │ │ ├── kong.svg │ │ ├── kongmesh.svg │ │ ├── kubernetes.svg │ │ ├── layer7.svg │ │ ├── logo.svg │ │ ├── logo_azuredevops.svg │ │ ├── logo_githubactions.svg │ │ ├── logo_gitlab.svg │ │ ├── logo_google.svg │ │ ├── logo_jenkins.svg │ │ ├── logo_jira.svg │ │ ├── manifest.json │ │ ├── mcp.svg │ │ ├── mongo_error_meme.png │ │ ├── ms_teams.svg │ │ ├── mulesoft.svg │ │ ├── nodejs.svg │ │ ├── notif_icon.svg │ │ ├── okta_logo.svg │ │ ├── openApi.svg │ │ ├── openshift.svg │ │ ├── postman.svg │ │ ├── postman_logo.svg │ │ ├── productss.png │ │ ├── python.svg │ │ ├── slack_logo.svg │ │ ├── splunk.svg │ │ ├── steps_icon.svg │ │ ├── tag_icon.svg │ │ ├── test_suite.svg │ │ ├── threescale.svg │ │ ├── upgrade.svg │ │ ├── vul_report_bg.svg │ │ ├── vulnerability_footer.png │ │ ├── vulnerability_header.png │ │ ├── webhooks_logo.svg │ │ ├── white_logo.svg │ │ ├── wizard.svg │ │ ├── xml_api.svg │ │ └── zero_logo.svg │ │ ├── src │ │ ├── apps │ │ │ ├── chrome_plugin │ │ │ │ ├── App.vue │ │ │ │ ├── main.js │ │ │ │ ├── router │ │ │ │ │ └── index.js │ │ │ │ ├── store │ │ │ │ │ ├── endpoints.js │ │ │ │ │ └── module.js │ │ │ │ ├── util │ │ │ │ │ └── catalog.js │ │ │ │ └── views │ │ │ │ │ └── Introduction.vue │ │ │ ├── dashboard │ │ │ │ ├── App.vue │ │ │ │ ├── api.js │ │ │ │ ├── appbar │ │ │ │ │ └── api.js │ │ │ │ ├── layouts │ │ │ │ │ ├── LayoutWithLeftPane.vue │ │ │ │ │ ├── LayoutWithRightPane.vue │ │ │ │ │ ├── LayoutWithTabs.vue │ │ │ │ │ ├── LayoutWithTopBrandingPane.vue │ │ │ │ │ └── SimpleLayout.vue │ │ │ │ ├── nav │ │ │ │ │ └── api.js │ │ │ │ ├── shared │ │ │ │ │ ├── api.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── ACard.vue │ │ │ │ │ │ ├── ActionsTray.vue │ │ │ │ │ │ ├── AddTrafficPrompt.vue │ │ │ │ │ │ ├── BannerHorizontal.vue │ │ │ │ │ │ ├── BannerVertical.vue │ │ │ │ │ │ ├── CodeBlock.vue │ │ │ │ │ │ ├── CountBox.vue │ │ │ │ │ │ ├── CreateAccountDialog.vue │ │ │ │ │ │ ├── DateRange.vue │ │ │ │ │ │ ├── DonutChart.vue │ │ │ │ │ │ ├── Favourite.vue │ │ │ │ │ │ ├── FilterColumn.vue │ │ │ │ │ │ ├── FilterList.vue │ │ │ │ │ │ ├── FilterNumber.vue │ │ │ │ │ │ ├── FilterSearch.vue │ │ │ │ │ │ ├── FixedColumnsTable.vue │ │ │ │ │ │ ├── GoogleAuth.vue │ │ │ │ │ │ ├── GridTable.vue │ │ │ │ │ │ ├── GroupAvatars.vue │ │ │ │ │ │ ├── IconMenu.vue │ │ │ │ │ │ ├── JSONViewer.vue │ │ │ │ │ │ ├── LineChart.vue │ │ │ │ │ │ ├── LoadingSnackBar.vue │ │ │ │ │ │ ├── NestedFilterList.vue │ │ │ │ │ │ ├── OwnerName.vue │ │ │ │ │ │ ├── PieChart.vue │ │ │ │ │ │ ├── SampleData.vue │ │ │ │ │ │ ├── SampleDataList.vue │ │ │ │ │ │ ├── SampleSingleSide.vue │ │ │ │ │ │ ├── ScheduleBox.vue │ │ │ │ │ │ ├── SensitiveChipGroup.vue │ │ │ │ │ │ ├── SensitiveParamsCard.vue │ │ │ │ │ │ ├── ServerTable.vue │ │ │ │ │ │ ├── SimpleMenu.vue │ │ │ │ │ │ ├── SimpleTable.vue │ │ │ │ │ │ ├── SimpleTextField.vue │ │ │ │ │ │ ├── SlackAuth.vue │ │ │ │ │ │ ├── Spinner.vue │ │ │ │ │ │ ├── TagChipGroup.vue │ │ │ │ │ │ ├── TestResultsTable.vue │ │ │ │ │ │ ├── TooltipText.vue │ │ │ │ │ │ ├── UploadFile.vue │ │ │ │ │ │ ├── buttons │ │ │ │ │ │ │ └── SecondaryButton.vue │ │ │ │ │ │ ├── charts │ │ │ │ │ │ │ └── StackedChart.vue │ │ │ │ │ │ ├── help │ │ │ │ │ │ │ └── HelpTooltip.vue │ │ │ │ │ │ ├── inputs │ │ │ │ │ │ │ ├── ChatGptInput.vue │ │ │ │ │ │ │ ├── NameInput.vue │ │ │ │ │ │ │ └── Search.vue │ │ │ │ │ │ ├── integrations │ │ │ │ │ │ │ ├── FormFieldMenu.vue │ │ │ │ │ │ │ ├── IntegrationCenter.vue │ │ │ │ │ │ │ ├── IntegrationLogo.vue │ │ │ │ │ │ │ └── IntegrationSummary.vue │ │ │ │ │ │ ├── jsontree │ │ │ │ │ │ │ ├── JSONView.vue │ │ │ │ │ │ │ └── JSONViewItem.vue │ │ │ │ │ │ ├── menus │ │ │ │ │ │ │ ├── ApiCollectionGroup.vue │ │ │ │ │ │ │ └── TestsLibrary.vue │ │ │ │ │ │ └── rows │ │ │ │ │ │ │ ├── ServerTableBlock.vue │ │ │ │ │ │ │ └── ServerTableRows.vue │ │ │ │ │ └── icons │ │ │ │ │ │ ├── AWS.vue │ │ │ │ │ │ ├── AktoWhite.vue │ │ │ │ │ │ ├── BookBookmark.vue │ │ │ │ │ │ ├── Burpsuite.vue │ │ │ │ │ │ ├── CICDIcon.vue │ │ │ │ │ │ ├── ChatGPT.vue │ │ │ │ │ │ ├── CurlyBraces.vue │ │ │ │ │ │ ├── CustomWebhooks.vue │ │ │ │ │ │ ├── DeleteIcon.vue │ │ │ │ │ │ ├── Discord.vue │ │ │ │ │ │ ├── FargateIcon.vue │ │ │ │ │ │ ├── GCP.vue │ │ │ │ │ │ ├── GithubIcon.vue │ │ │ │ │ │ ├── GithubName.vue │ │ │ │ │ │ ├── NGINX.vue │ │ │ │ │ │ ├── PlusIcon.vue │ │ │ │ │ │ ├── Postman.vue │ │ │ │ │ │ ├── Restapi.vue │ │ │ │ │ │ ├── SaveIcon.vue │ │ │ │ │ │ ├── Slack.vue │ │ │ │ │ │ ├── Swagger.vue │ │ │ │ │ │ ├── TestEditorIcon.vue │ │ │ │ │ │ ├── TrashDoubleTick.vue │ │ │ │ │ │ ├── TrashSingleTick.vue │ │ │ │ │ │ └── k8s.vue │ │ │ │ ├── store │ │ │ │ │ └── module.js │ │ │ │ ├── tools │ │ │ │ │ ├── CustomSampleDataApiModal.vue │ │ │ │ │ ├── SelectorModal.vue │ │ │ │ │ ├── SimpleModal.vue │ │ │ │ │ ├── TestEditorForWebsite.vue │ │ │ │ │ ├── TextEditor.vue │ │ │ │ │ ├── editorSetup.js │ │ │ │ │ ├── keywordSnippets.js │ │ │ │ │ └── snippets.js │ │ │ │ ├── util.js │ │ │ │ └── views │ │ │ │ │ ├── issues │ │ │ │ │ ├── PageIssues.vue │ │ │ │ │ ├── api.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── IssueBox.vue │ │ │ │ │ │ ├── IssuesDialog.vue │ │ │ │ │ │ └── IssuesFilters.vue │ │ │ │ │ └── store │ │ │ │ │ │ └── module.js │ │ │ │ │ ├── observe │ │ │ │ │ ├── changes │ │ │ │ │ │ ├── Changes.vue │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ └── BatchOperation.vue │ │ │ │ │ │ └── store │ │ │ │ │ │ │ └── module.js │ │ │ │ │ ├── collections │ │ │ │ │ │ ├── APICollections.vue │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ └── store │ │ │ │ │ │ │ └── module.js │ │ │ │ │ ├── inventory │ │ │ │ │ │ ├── Inventory.vue │ │ │ │ │ │ ├── Observe.vue │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ ├── APIEndpoints.vue │ │ │ │ │ │ │ ├── APIParameters.vue │ │ │ │ │ │ │ ├── Filters.vue │ │ │ │ │ │ │ ├── TestsSelector.vue │ │ │ │ │ │ │ └── WorkflowTestBuilder.vue │ │ │ │ │ │ └── store │ │ │ │ │ │ │ └── module.js │ │ │ │ │ ├── misc │ │ │ │ │ │ ├── ParamState.vue │ │ │ │ │ │ └── api.js │ │ │ │ │ └── sensitive │ │ │ │ │ │ ├── SensitiveData.vue │ │ │ │ │ │ └── store │ │ │ │ │ │ └── module.js │ │ │ │ │ ├── onboarding │ │ │ │ │ ├── Onboarding.vue │ │ │ │ │ ├── api.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── HintIcon.vue │ │ │ │ │ │ ├── NextButton.vue │ │ │ │ │ │ ├── OnboardingBuilder.vue │ │ │ │ │ │ ├── OnboardingDescription.vue │ │ │ │ │ │ ├── SelectCollectionComponent.vue │ │ │ │ │ │ ├── SelectTestSuite.vue │ │ │ │ │ │ ├── SetConfig.vue │ │ │ │ │ │ ├── TestSuiteCard.vue │ │ │ │ │ │ ├── TestingResultCard.vue │ │ │ │ │ │ └── TestingResultsSummary.vue │ │ │ │ │ └── store │ │ │ │ │ │ └── module.js │ │ │ │ │ ├── quickstart │ │ │ │ │ ├── PageQuickStart.vue │ │ │ │ │ ├── api.js │ │ │ │ │ └── components │ │ │ │ │ │ ├── AwsTrafficMirroring.vue │ │ │ │ │ │ ├── BurpSuiteIntegration.vue │ │ │ │ │ │ ├── BurpsuiteSource.vue │ │ │ │ │ │ ├── DataSourcesContent.vue │ │ │ │ │ │ ├── DetailExpansionPanel.vue │ │ │ │ │ │ ├── Fargate.vue │ │ │ │ │ │ ├── GcpTrafficMirroring.vue │ │ │ │ │ │ ├── KubernetesDaemonset.vue │ │ │ │ │ │ ├── LoadBalancers.vue │ │ │ │ │ │ ├── NginxSource.vue │ │ │ │ │ │ ├── PostmanSource.vue │ │ │ │ │ │ ├── SingleDataSource.vue │ │ │ │ │ │ └── StepBuilder.vue │ │ │ │ │ ├── settings │ │ │ │ │ ├── PageSettings.vue │ │ │ │ │ ├── api.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── Account.vue │ │ │ │ │ │ ├── Health.vue │ │ │ │ │ │ ├── TeamOverview.vue │ │ │ │ │ │ ├── auth_types │ │ │ │ │ │ │ ├── AuthTypeDetails.vue │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ └── store │ │ │ │ │ │ │ │ └── module.js │ │ │ │ │ │ ├── data_types │ │ │ │ │ │ │ ├── DataTypes.vue │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ ├── ConditionsTable.vue │ │ │ │ │ │ │ │ ├── DataTypeCard.vue │ │ │ │ │ │ │ │ ├── DataTypeDetails.vue │ │ │ │ │ │ │ │ ├── OperatorComponent.vue │ │ │ │ │ │ │ │ ├── ReviewTable.vue │ │ │ │ │ │ │ │ └── SimpleConditionComponent.vue │ │ │ │ │ │ │ └── store │ │ │ │ │ │ │ │ └── module.js │ │ │ │ │ │ ├── integrations │ │ │ │ │ │ │ ├── AktoApiIntegration.vue │ │ │ │ │ │ │ ├── AktoGptConfig.vue │ │ │ │ │ │ │ ├── ApiToken.vue │ │ │ │ │ │ │ ├── GithubSsoIntegration.vue │ │ │ │ │ │ │ ├── IntegrationCenter.vue │ │ │ │ │ │ │ ├── IntegrationSelector.vue │ │ │ │ │ │ │ ├── Postman.vue │ │ │ │ │ │ │ ├── SlackIntegration.vue │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ └── webhook │ │ │ │ │ │ │ │ ├── WebhookBuilder.vue │ │ │ │ │ │ │ │ └── WebhookIntegration.vue │ │ │ │ │ │ ├── tag_configs │ │ │ │ │ │ │ ├── TagConfigDetails.vue │ │ │ │ │ │ │ ├── TagSettings.vue │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ └── store │ │ │ │ │ │ │ │ └── module.js │ │ │ │ │ │ └── traffic_metrics │ │ │ │ │ │ │ ├── TrafficMetrics.vue │ │ │ │ │ │ │ └── api.js │ │ │ │ │ └── store │ │ │ │ │ │ └── module.js │ │ │ │ │ ├── testing │ │ │ │ │ ├── LogFetch.vue │ │ │ │ │ ├── PageTesting.vue │ │ │ │ │ ├── api.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── CreateTestingRun.vue │ │ │ │ │ │ ├── PDFExportHTML.vue │ │ │ │ │ │ ├── TagComponent.vue │ │ │ │ │ │ ├── TestResultDetails.vue │ │ │ │ │ │ ├── TestResultsDialog.vue │ │ │ │ │ │ ├── TestingRunResults.vue │ │ │ │ │ │ ├── TestingRunsTable.vue │ │ │ │ │ │ ├── react │ │ │ │ │ │ │ ├── BlankNode.jsx │ │ │ │ │ │ │ ├── EndNode.jsx │ │ │ │ │ │ │ ├── InputArgumentsDialog.jsx │ │ │ │ │ │ │ ├── ScheduleBox.jsx │ │ │ │ │ │ │ ├── StartNode.jsx │ │ │ │ │ │ │ ├── TemplateStringEditor.jsx │ │ │ │ │ │ │ ├── TextFieldCloseable.jsx │ │ │ │ │ │ │ ├── Workflow.jsx │ │ │ │ │ │ │ ├── WorkflowBuilder.jsx │ │ │ │ │ │ │ ├── WorkflowResultsDrawer.jsx │ │ │ │ │ │ │ ├── start-node.css │ │ │ │ │ │ │ └── store.js │ │ │ │ │ │ ├── test_roles │ │ │ │ │ │ │ ├── TestRoles.vue │ │ │ │ │ │ │ ├── api.js │ │ │ │ │ │ │ ├── components │ │ │ │ │ │ │ │ ├── RoleAuthMechanism.vue │ │ │ │ │ │ │ │ ├── RoleHardcodedAuth.vue │ │ │ │ │ │ │ │ ├── RoleSingleAuth.vue │ │ │ │ │ │ │ │ ├── TestRoleCard.vue │ │ │ │ │ │ │ │ ├── TestRoleConditionsTable.vue │ │ │ │ │ │ │ │ └── TestRolesConfigDetails.vue │ │ │ │ │ │ │ └── store │ │ │ │ │ │ │ │ └── module.js │ │ │ │ │ │ └── token │ │ │ │ │ │ │ ├── LoginStepBuilder.vue │ │ │ │ │ │ │ └── TokenAutomation.vue │ │ │ │ │ └── store │ │ │ │ │ │ └── module.js │ │ │ │ │ └── today │ │ │ │ │ ├── Today.vue │ │ │ │ │ ├── api.js │ │ │ │ │ ├── components │ │ │ │ │ ├── APIDetails.vue │ │ │ │ │ ├── APISecurityAudit.vue │ │ │ │ │ ├── APISummary.vue │ │ │ │ │ ├── APITestReport.vue │ │ │ │ │ ├── AuthProtocolSetup.vue │ │ │ │ │ ├── SpecFileDialog.vue │ │ │ │ │ ├── TestEnvSetup.vue │ │ │ │ │ └── TestingSetupModal.vue │ │ │ │ │ └── store │ │ │ │ │ └── module.js │ │ │ ├── login │ │ │ │ ├── App.vue │ │ │ │ ├── LoginFields.vue │ │ │ │ └── store │ │ │ │ │ ├── index.js │ │ │ │ │ └── modules │ │ │ │ │ └── auth │ │ │ │ │ ├── api.js │ │ │ │ │ └── module.js │ │ │ ├── main │ │ │ │ ├── App.vue │ │ │ │ ├── ExpiredApp.vue │ │ │ │ ├── main.js │ │ │ │ ├── router │ │ │ │ │ ├── index.js │ │ │ │ │ └── singlePageIndex.js │ │ │ │ └── store │ │ │ │ │ └── module.js │ │ │ └── signup │ │ │ │ ├── PageBusinessEmail.vue │ │ │ │ ├── PageCheckInbox.vue │ │ │ │ └── PageSignup.vue │ │ ├── assets │ │ │ ├── brand_name.svg │ │ │ ├── logo.png │ │ │ ├── logo.svg │ │ │ ├── logo_facebook.svg │ │ │ ├── logo_google.svg │ │ │ └── logo_nav.svg │ │ ├── plugins │ │ │ └── vuetify.js │ │ ├── theme │ │ │ └── default.sass │ │ └── util │ │ │ ├── constants.js │ │ │ ├── func.js │ │ │ ├── merge.js │ │ │ ├── notifications.js │ │ │ ├── obj.js │ │ │ ├── request.js │ │ │ └── testing.js │ │ ├── sw.js │ │ └── webpack.config.js ├── data-ingestion-service │ ├── Dockerfile │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── akto │ │ │ │ ├── action │ │ │ │ └── IngestionAction.java │ │ │ │ ├── filters │ │ │ │ └── AuthFilter.java │ │ │ │ ├── listener │ │ │ │ ├── InitializerListener.java │ │ │ │ └── RequestEventListener.java │ │ │ │ └── utils │ │ │ │ └── KafkaUtils.java │ │ │ ├── resources │ │ │ ├── struts.xml │ │ │ └── version.txt │ │ │ └── test │ │ │ └── java │ │ │ └── com │ │ │ └── akto │ │ │ └── data-ingestion-service │ │ │ └── ApiExecutorTest.java │ └── web │ │ └── WEB-INF │ │ └── web.xml ├── database-abstractor │ ├── Dockerfile │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── akto │ │ │ │ ├── action │ │ │ │ ├── AgentAction.java │ │ │ │ ├── CodeAnalysisAction.java │ │ │ │ └── DbAction.java │ │ │ │ ├── filter │ │ │ │ └── AuthFilter.java │ │ │ │ ├── listener │ │ │ │ ├── InitializerListener.java │ │ │ │ └── RequestEventListener.java │ │ │ │ └── merging │ │ │ │ ├── Cron.java │ │ │ │ ├── Lock.java │ │ │ │ └── MergingLogic.java │ │ │ └── resources │ │ │ └── struts.xml │ └── web │ │ └── WEB-INF │ │ └── web.xml ├── internal │ ├── Dockerfile │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── akto │ │ │ │ ├── action │ │ │ │ └── internal │ │ │ │ │ └── SubscriptionAction.java │ │ │ │ └── listener │ │ │ │ └── InitializerListener.java │ │ │ └── resources │ │ │ └── struts.xml │ └── web │ │ └── WEB-INF │ │ └── web.xml ├── mini-runtime │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── akto │ │ │ ├── hybrid_dependency │ │ │ ├── DependencyAnalyser.java │ │ │ └── store │ │ │ │ ├── BFStore.java │ │ │ │ ├── HashSetStore.java │ │ │ │ └── Store.java │ │ │ ├── hybrid_parsers │ │ │ └── HttpCallParser.java │ │ │ ├── hybrid_runtime │ │ │ ├── APICatalogSync.java │ │ │ ├── ConcurrentHashSet.java │ │ │ ├── Flow.java │ │ │ ├── KafkaHealthMetricSyncTask.java │ │ │ ├── Main.java │ │ │ ├── MarkovSync.java │ │ │ ├── PayloadAnalyzer.java │ │ │ ├── RelationshipSync.java │ │ │ ├── RuntimeVersion.java │ │ │ ├── URLAggregator.java │ │ │ ├── merge │ │ │ │ ├── MergeOnHostOnly.java │ │ │ │ ├── MergeOnSlash.java │ │ │ │ └── MergeSimilarUrls.java │ │ │ └── policies │ │ │ │ ├── AktoPolicyNew.java │ │ │ │ ├── AuthPolicy.java │ │ │ │ └── SetFieldPolicy.java │ │ │ └── utils │ │ │ ├── CustomAuthUtil.java │ │ │ ├── DataInsertionUtil.java │ │ │ ├── RedactSampleData.java │ │ │ └── SampleDataToSTI.java │ │ └── resources │ │ ├── log_check.json │ │ └── version.txt ├── pom.xml ├── source-code-analyser │ ├── Dockerfile │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── akto │ │ ├── BitbucketRepo.java │ │ ├── GithubRepo.java │ │ ├── Main.java │ │ └── SourceCodeAnalyserRepo.java ├── testing-cli │ ├── Dockerfile │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── akto │ │ │ │ └── testing_cli │ │ │ │ └── Main.java │ │ └── resources │ │ │ └── version.txt │ │ └── test │ │ └── java │ │ └── com │ │ └── akto │ │ └── testing_cli │ │ └── TestCli.java ├── testing │ ├── Dockerfile │ ├── pom.xml │ ├── src │ │ ├── main │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── akto │ │ │ │ ├── crons │ │ │ │ └── GetRunningTestsStatus.java │ │ │ │ ├── rules │ │ │ │ ├── BFLATest.java │ │ │ │ ├── RequiredConfigs.java │ │ │ │ └── TestPlugin.java │ │ │ │ ├── store │ │ │ │ ├── SampleMessageStore.java │ │ │ │ ├── TestRolesCache.java │ │ │ │ └── TestingUtil.java │ │ │ │ ├── test_editor │ │ │ │ ├── auth │ │ │ │ │ └── AuthValidator.java │ │ │ │ ├── execution │ │ │ │ │ ├── Build.java │ │ │ │ │ ├── Executor.java │ │ │ │ │ ├── ExecutorAlgorithm.java │ │ │ │ │ └── Memory.java │ │ │ │ └── strategy │ │ │ │ │ ├── InsertDataUtil.java │ │ │ │ │ └── Strategy.java │ │ │ │ ├── testing │ │ │ │ ├── AccessMatrixAnalyzer.java │ │ │ │ ├── ApiWorkflowExecutor.java │ │ │ │ ├── Main.java │ │ │ │ ├── NucleiExecutor.java │ │ │ │ ├── StatusCodeAnalyser.java │ │ │ │ ├── TestCompletion.java │ │ │ │ ├── TestExecutor.java │ │ │ │ ├── kafka_utils │ │ │ │ │ ├── ConsumerUtil.java │ │ │ │ │ ├── Producer.java │ │ │ │ │ └── TestingConfigurations.java │ │ │ │ ├── workflow_node_executor │ │ │ │ │ ├── ApiNodeExecutor.java │ │ │ │ │ ├── ConditionalGraphExecutor.java │ │ │ │ │ ├── GraphExecutor.java │ │ │ │ │ ├── GraphExecutorFactory.java │ │ │ │ │ ├── LinearGraphExecutor.java │ │ │ │ │ ├── NodeExecutor.java │ │ │ │ │ ├── NodeExecutorFactory.java │ │ │ │ │ ├── Utils.java │ │ │ │ │ └── YamlNodeExecutor.java │ │ │ │ └── yaml_tests │ │ │ │ │ ├── SecurityTestTemplate.java │ │ │ │ │ └── YamlTestTemplate.java │ │ │ │ └── testing_issues │ │ │ │ └── TestingIssuesHandler.java │ │ └── test │ │ │ ├── java │ │ │ └── com │ │ │ │ └── akto │ │ │ │ ├── rules │ │ │ │ └── TestTestPlugin.java │ │ │ │ ├── store │ │ │ │ └── TestSampleMessageStore.java │ │ │ │ ├── test_editor │ │ │ │ ├── TestUtils.java │ │ │ │ └── execution │ │ │ │ │ ├── ExecutorTest.java │ │ │ │ │ ├── TestAutomatedAuth.java │ │ │ │ │ └── TestVariableResolver.java │ │ │ │ ├── testing │ │ │ │ ├── ApiExecutorTest.java │ │ │ │ ├── ApiWorkflowExecutorTest.java │ │ │ │ ├── FilterValidationTests.java │ │ │ │ ├── StatusCodeAnalyserTest.java │ │ │ │ └── TestExecutorTest.java │ │ │ │ └── testing_issues │ │ │ │ └── TestingIssuesHandlerTest.java │ │ │ └── resources │ │ │ └── filter.yaml │ └── start.sh ├── threat-detection-backend │ ├── .gitignore │ ├── Dockerfile │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── akto │ │ └── threat │ │ └── backend │ │ ├── BackendVerticle.java │ │ ├── Main.java │ │ ├── constants │ │ ├── KafkaTopic.java │ │ └── MongoDBCollection.java │ │ ├── db │ │ ├── ActorInfoModel.java │ │ ├── AggregateSampleMaliciousEventModel.java │ │ ├── MaliciousEventModel.java │ │ └── SplunkIntegrationModel.java │ │ ├── interceptors │ │ ├── AuthenticationInterceptor.java │ │ └── Constants.java │ │ ├── router │ │ ├── ARouter.java │ │ ├── DashboardRouter.java │ │ └── ThreatDetectionRouter.java │ │ ├── service │ │ ├── MaliciousEventService.java │ │ ├── ThreatActorService.java │ │ └── ThreatApiService.java │ │ ├── tasks │ │ └── FlushMessagesToDB.java │ │ └── utils │ │ ├── KafkaUtils.java │ │ └── SplunkEvent.java └── threat-detection │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── pom.xml │ ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── akto │ │ │ │ └── threat │ │ │ │ └── detection │ │ │ │ ├── Main.java │ │ │ │ ├── actor │ │ │ │ ├── ActorGenerator.java │ │ │ │ └── SourceIPActorGenerator.java │ │ │ │ ├── cache │ │ │ │ ├── ApiCountCacheLayer.java │ │ │ │ ├── CounterCache.java │ │ │ │ ├── LongValueCodec.java │ │ │ │ └── RedisBackedCounterCache.java │ │ │ │ ├── constants │ │ │ │ ├── KafkaTopic.java │ │ │ │ └── RedisKeyInfo.java │ │ │ │ ├── crons │ │ │ │ └── ApiCountInfoRelayCron.java │ │ │ │ ├── db │ │ │ │ └── entity │ │ │ │ │ └── MaliciousEventEntity.java │ │ │ │ ├── dto │ │ │ │ └── MessageEnvelope.java │ │ │ │ ├── kafka │ │ │ │ └── KafkaProtoProducer.java │ │ │ │ ├── scripts │ │ │ │ └── KafkaBenchmark.java │ │ │ │ ├── session_factory │ │ │ │ └── SessionFactoryUtils.java │ │ │ │ ├── smart_event_detector │ │ │ │ └── window_based │ │ │ │ │ ├── Bin.java │ │ │ │ │ ├── Data.java │ │ │ │ │ └── WindowBasedThresholdNotifier.java │ │ │ │ ├── tasks │ │ │ │ ├── AbstractKafkaConsumerTask.java │ │ │ │ ├── MaliciousTrafficDetectorTask.java │ │ │ │ ├── RequestValidator.java │ │ │ │ ├── SendMaliciousEventsToBackend.java │ │ │ │ ├── Task.java │ │ │ │ └── ThreatConfigurationEvaluator.java │ │ │ │ └── utils │ │ │ │ ├── ApiCountInfoRelayUtils.java │ │ │ │ └── Utils.java │ │ └── resources │ │ │ ├── db │ │ │ └── migration │ │ │ │ ├── V1__enable_uuid.sql │ │ │ │ ├── V2__create_malicious_event_table.sql │ │ │ │ └── V3__add_alert_to_backend_column.sql │ │ │ ├── log4j2.xml │ │ │ ├── pet-schema.json │ │ │ ├── sample-payloads │ │ │ └── 4KB.json │ │ │ └── version.txt │ └── test │ │ └── java │ │ └── com │ │ └── akto │ │ └── threat │ │ └── detection │ │ └── tasks │ │ ├── RequestValidatorTest.java │ │ └── ThreatConfigurationEvaluatorTest.java │ └── start.sh ├── appspec.yml ├── automated-api-groups └── automated-api-groups.csv ├── buf.gen.remote.yaml ├── buf.gen.yaml ├── docker-compose.yml ├── docker.env ├── libs ├── dao │ ├── .gitignore │ ├── README.md │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── akto │ │ │ │ ├── DaoInit.java │ │ │ │ ├── dao │ │ │ │ ├── APIAuthDao.java │ │ │ │ ├── APIConfigsDao.java │ │ │ │ ├── APISpecDao.java │ │ │ │ ├── AccountSettingsDao.java │ │ │ │ ├── AccountsContextDao.java │ │ │ │ ├── AccountsContextDaoWithRbac.java │ │ │ │ ├── AccountsDao.java │ │ │ │ ├── ActivitiesDao.java │ │ │ │ ├── AktoDataTypeDao.java │ │ │ │ ├── AktoGptConfigDao.java │ │ │ │ ├── AnalyserLogsDao.java │ │ │ │ ├── ApiCollectionsDao.java │ │ │ │ ├── ApiInfoDao.java │ │ │ │ ├── ApiTokensDao.java │ │ │ │ ├── AttemptsDao.java │ │ │ │ ├── AuthMechanismsDao.java │ │ │ │ ├── AwsResourcesDao.java │ │ │ │ ├── AzureBoardsIntegrationDao.java │ │ │ │ ├── BackwardCompatibilityDao.java │ │ │ │ ├── BillingContextDao.java │ │ │ │ ├── BillingLogsDao.java │ │ │ │ ├── BurpPluginInfoDao.java │ │ │ │ ├── CodeAnalysisApiInfoDao.java │ │ │ │ ├── CodeAnalysisCollectionDao.java │ │ │ │ ├── CodeAnalysisRepoDao.java │ │ │ │ ├── CodeAnalysisSingleTypeInfoDao.java │ │ │ │ ├── CommonContextDao.java │ │ │ │ ├── ConfigsDao.java │ │ │ │ ├── CustomAuthTypeDao.java │ │ │ │ ├── CustomDataTypeDao.java │ │ │ │ ├── CustomRoleDao.java │ │ │ │ ├── DashboardLogsDao.java │ │ │ │ ├── DataIngestionLogsDao.java │ │ │ │ ├── DependencyFlowNodesDao.java │ │ │ │ ├── DependencyNodeDao.java │ │ │ │ ├── DibsDao.java │ │ │ │ ├── EndpointInfoDao.java │ │ │ │ ├── FilterSampleDataDao.java │ │ │ │ ├── HistoricalDataDao.java │ │ │ │ ├── JiraIntegrationDao.java │ │ │ │ ├── KafkaHealthMetricsDao.java │ │ │ │ ├── LogsDao.java │ │ │ │ ├── MCollection.java │ │ │ │ ├── MarkovDao.java │ │ │ │ ├── ModifyHostDetailsDao.java │ │ │ │ ├── OtpMessagesDao.java │ │ │ │ ├── OtpTestDataDao.java │ │ │ │ ├── PendingInviteCodesDao.java │ │ │ │ ├── ProtectionLogsDao.java │ │ │ │ ├── PupeteerLogsDao.java │ │ │ │ ├── RBACDao.java │ │ │ │ ├── RecordedLoginInputDao.java │ │ │ │ ├── RelationshipDao.java │ │ │ │ ├── ReplaceDetailsDao.java │ │ │ │ ├── RequestTemplatesDao.java │ │ │ │ ├── RuntimeFilterDao.java │ │ │ │ ├── RuntimeLogsDao.java │ │ │ │ ├── SSOConfigsDao.java │ │ │ │ ├── SampleDataDao.java │ │ │ │ ├── ScansDao.java │ │ │ │ ├── SensitiveParamInfoDao.java │ │ │ │ ├── SensitiveSampleDataDao.java │ │ │ │ ├── SetupDao.java │ │ │ │ ├── SignupDao.java │ │ │ │ ├── SingleTypeInfoDao.java │ │ │ │ ├── SuspectSampleDataDao.java │ │ │ │ ├── TagConfigsDao.java │ │ │ │ ├── TeamsDao.java │ │ │ │ ├── TestEnvSettingsDao.java │ │ │ │ ├── TestRunDao.java │ │ │ │ ├── TestingInstanceHeartBeatDao.java │ │ │ │ ├── ThirdPartyAccessDao.java │ │ │ │ ├── TrafficInfoDao.java │ │ │ │ ├── URLTemplateDao.java │ │ │ │ ├── UsersDao.java │ │ │ │ ├── agents │ │ │ │ │ ├── AgentHealthCheckDao.java │ │ │ │ │ ├── AgentModelDao.java │ │ │ │ │ ├── AgentRunDao.java │ │ │ │ │ └── AgentSubProcessSingleAttemptDao.java │ │ │ │ ├── api_protection_parse_layer │ │ │ │ │ └── AggregationLayerParser.java │ │ │ │ ├── audit_logs │ │ │ │ │ └── ApiAuditLogsDao.java │ │ │ │ ├── billing │ │ │ │ │ ├── OrganizationFlagsDao.java │ │ │ │ │ ├── OrganizationUsageDao.java │ │ │ │ │ ├── OrganizationsDao.java │ │ │ │ │ └── TokensDao.java │ │ │ │ ├── context │ │ │ │ │ └── Context.java │ │ │ │ ├── demo │ │ │ │ │ └── VulnerableRequestForTemplateDao.java │ │ │ │ ├── file │ │ │ │ │ └── FilesDao.java │ │ │ │ ├── filter │ │ │ │ │ └── MergedUrlsDao.java │ │ │ │ ├── graph │ │ │ │ │ ├── SvcToSvcGraphEdgesDao.java │ │ │ │ │ └── SvcToSvcGraphNodesDao.java │ │ │ │ ├── jobs │ │ │ │ │ └── JobsDao.java │ │ │ │ ├── loaders │ │ │ │ │ └── LoadersDao.java │ │ │ │ ├── metrics │ │ │ │ │ └── MetricDataDao.java │ │ │ │ ├── monitoring │ │ │ │ │ ├── FilterConfigYamlParser.java │ │ │ │ │ ├── FilterYamlTemplateDao.java │ │ │ │ │ └── ModuleInfoDao.java │ │ │ │ ├── notifications │ │ │ │ │ ├── CustomWebhooksDao.java │ │ │ │ │ ├── CustomWebhooksResultDao.java │ │ │ │ │ ├── EventsMetricsDao.java │ │ │ │ │ └── SlackWebhooksDao.java │ │ │ │ ├── pii │ │ │ │ │ └── PIISourceDao.java │ │ │ │ ├── runtime_filters │ │ │ │ │ └── AdvancedTrafficFiltersDao.java │ │ │ │ ├── settings │ │ │ │ │ └── DefaultPayloadsDao.java │ │ │ │ ├── test_editor │ │ │ │ │ ├── README.md │ │ │ │ │ ├── TestConfigYamlParser.java │ │ │ │ │ ├── TestEditorEnums.java │ │ │ │ │ ├── TestingRunPlaygroundDao.java │ │ │ │ │ ├── YamlTemplateDao.java │ │ │ │ │ ├── auth │ │ │ │ │ │ └── Parser.java │ │ │ │ │ ├── executor │ │ │ │ │ │ └── ConfigParser.java │ │ │ │ │ ├── filter │ │ │ │ │ │ └── ConfigParser.java │ │ │ │ │ ├── info │ │ │ │ │ │ └── InfoParser.java │ │ │ │ │ ├── settings │ │ │ │ │ │ └── SettingsParser.java │ │ │ │ │ └── strategy │ │ │ │ │ │ └── StrategyParser.java │ │ │ │ ├── testing │ │ │ │ │ ├── AccessMatrixTaskInfosDao.java │ │ │ │ │ ├── AccessMatrixUrlToRolesDao.java │ │ │ │ │ ├── BidirectionalSyncSettingsDao.java │ │ │ │ │ ├── ComplianceInfosDao.java │ │ │ │ │ ├── DefaultTestSuitesDao.java │ │ │ │ │ ├── DeleteTestRunsDao.java │ │ │ │ │ ├── EndpointLogicalGroupDao.java │ │ │ │ │ ├── LoginFlowStepsDao.java │ │ │ │ │ ├── RemediationsDao.java │ │ │ │ │ ├── TestRolesDao.java │ │ │ │ │ ├── TestingRunConfigDao.java │ │ │ │ │ ├── TestingRunDao.java │ │ │ │ │ ├── TestingRunResultDao.java │ │ │ │ │ ├── TestingRunResultSummariesDao.java │ │ │ │ │ ├── TestingSchedulesDao.java │ │ │ │ │ ├── VulnerableTestingRunResultDao.java │ │ │ │ │ ├── WorkflowTestResultsDao.java │ │ │ │ │ ├── WorkflowTestsDao.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── TestCollectionPropertiesDao.java │ │ │ │ │ │ ├── TestScriptsDao.java │ │ │ │ │ │ └── TestSuiteDao.java │ │ │ │ │ └── sources │ │ │ │ │ │ ├── TestReportsDao.java │ │ │ │ │ │ └── TestSourceConfigsDao.java │ │ │ │ ├── testing_run_findings │ │ │ │ │ ├── SourceCodeVulnerabilitiesDao.java │ │ │ │ │ └── TestingRunIssuesDao.java │ │ │ │ ├── threat_detection │ │ │ │ │ ├── ApiHitCountInfoDao.java │ │ │ │ │ └── IpLevelApiHitCountDao.java │ │ │ │ ├── traffic_metrics │ │ │ │ │ ├── RuntimeMetricsDao.java │ │ │ │ │ ├── TrafficAlertsDao.java │ │ │ │ │ ├── TrafficMetricsAlertsDao.java │ │ │ │ │ └── TrafficMetricsDao.java │ │ │ │ ├── upload │ │ │ │ │ ├── FileUploadLogsDao.java │ │ │ │ │ └── FileUploadsDao.java │ │ │ │ └── usage │ │ │ │ │ ├── UsageMetricInfoDao.java │ │ │ │ │ ├── UsageMetricsDao.java │ │ │ │ │ └── UsageSyncDao.java │ │ │ │ ├── dto │ │ │ │ ├── APIConfig.java │ │ │ │ ├── APISpec.java │ │ │ │ ├── Account.java │ │ │ │ ├── AccountSettings.java │ │ │ │ ├── Activity.java │ │ │ │ ├── AktoDataType.java │ │ │ │ ├── ApiCollection.java │ │ │ │ ├── ApiCollectionTestStatus.java │ │ │ │ ├── ApiCollectionUsers.java │ │ │ │ ├── ApiInfo.java │ │ │ │ ├── ApiInfoCatalog.java │ │ │ │ ├── ApiStats.java │ │ │ │ ├── ApiToken.java │ │ │ │ ├── Attempt.java │ │ │ │ ├── AwsResource.java │ │ │ │ ├── AwsResources.java │ │ │ │ ├── BackwardCompatibility.java │ │ │ │ ├── BurpPluginInfo.java │ │ │ │ ├── CodeAnalysisApi.java │ │ │ │ ├── CodeAnalysisApiInfo.java │ │ │ │ ├── CodeAnalysisApiLocation.java │ │ │ │ ├── CodeAnalysisCollection.java │ │ │ │ ├── CodeAnalysisRepo.java │ │ │ │ ├── CollectionConditions │ │ │ │ │ ├── ConditionUtils.java │ │ │ │ │ ├── ConditionsType.java │ │ │ │ │ ├── MethodCondition.java │ │ │ │ │ └── TestConfigsAdvancedSettings.java │ │ │ │ ├── Config.java │ │ │ │ ├── CustomAuthType.java │ │ │ │ ├── CustomAuthTypeMapper.java │ │ │ │ ├── CustomDataType.java │ │ │ │ ├── CustomDataTypeMapper.java │ │ │ │ ├── CustomFilter.java │ │ │ │ ├── CustomRole.java │ │ │ │ ├── DependencyNode.java │ │ │ │ ├── Dibs.java │ │ │ │ ├── FilterSampleData.java │ │ │ │ ├── HistoricalData.java │ │ │ │ ├── HttpRequestParams.java │ │ │ │ ├── HttpResponseParams.java │ │ │ │ ├── IgnoreData.java │ │ │ │ ├── IngestDataBatch.java │ │ │ │ ├── IssueTrendType.java │ │ │ │ ├── KafkaHealthMetric.java │ │ │ │ ├── Log.java │ │ │ │ ├── Markov.java │ │ │ │ ├── OTPMessage.java │ │ │ │ ├── OriginalHttpRequest.java │ │ │ │ ├── OriginalHttpResponse.java │ │ │ │ ├── PendingInviteCode.java │ │ │ │ ├── PercentageMatchRequest.java │ │ │ │ ├── PolicyCatalog.java │ │ │ │ ├── RBAC.java │ │ │ │ ├── RawApi.java │ │ │ │ ├── RawApiMetadata.java │ │ │ │ ├── RecordedLoginFlowInput.java │ │ │ │ ├── Relationship.java │ │ │ │ ├── SampleRequestReplayResponse.java │ │ │ │ ├── Scan.java │ │ │ │ ├── SensitiveParamInfo.java │ │ │ │ ├── SensitiveSampleData.java │ │ │ │ ├── Setup.java │ │ │ │ ├── SignupInfo.java │ │ │ │ ├── SignupUserInfo.java │ │ │ │ ├── TagConfig.java │ │ │ │ ├── Team.java │ │ │ │ ├── TelemetrySettings.java │ │ │ │ ├── TestEnvSettings.java │ │ │ │ ├── TestRun.java │ │ │ │ ├── TestingInstanceHeartBeat.java │ │ │ │ ├── User.java │ │ │ │ ├── UserAccountEntry.java │ │ │ │ ├── agents │ │ │ │ │ ├── Agent.java │ │ │ │ │ ├── AgentLog.java │ │ │ │ │ ├── AgentRun.java │ │ │ │ │ ├── AgentSubProcessSingleAttempt.java │ │ │ │ │ ├── HealthCheck.java │ │ │ │ │ ├── Model.java │ │ │ │ │ ├── ModelType.java │ │ │ │ │ └── State.java │ │ │ │ ├── api_protection_parse_layer │ │ │ │ │ ├── AggregationRules.java │ │ │ │ │ ├── Condition.java │ │ │ │ │ └── Rule.java │ │ │ │ ├── api_workflow │ │ │ │ │ ├── Graph.java │ │ │ │ │ └── Node.java │ │ │ │ ├── audit_logs │ │ │ │ │ └── ApiAuditLogs.java │ │ │ │ ├── auth │ │ │ │ │ ├── APIAuth.java │ │ │ │ │ ├── APIAuthAPIKey.java │ │ │ │ │ ├── APIAuthBasic.java │ │ │ │ │ └── APIAuthOAuth.java │ │ │ │ ├── azure_boards_integration │ │ │ │ │ └── AzureBoardsIntegration.java │ │ │ │ ├── billing │ │ │ │ │ ├── FeatureAccess.java │ │ │ │ │ ├── OrgMetaData.java │ │ │ │ │ ├── Organization.java │ │ │ │ │ ├── OrganizationFlags.java │ │ │ │ │ ├── OrganizationUsage.java │ │ │ │ │ ├── SyncLimit.java │ │ │ │ │ └── Tokens.java │ │ │ │ ├── bulk_updates │ │ │ │ │ ├── BulkUpdates.java │ │ │ │ │ └── UpdatePayload.java │ │ │ │ ├── data_types │ │ │ │ │ ├── BelongsToPredicate.java │ │ │ │ │ ├── Conditions.java │ │ │ │ │ ├── ContainsPredicate.java │ │ │ │ │ ├── EndsWithPredicate.java │ │ │ │ │ ├── EqualsToPredicate.java │ │ │ │ │ ├── IsNumberPredicate.java │ │ │ │ │ ├── NotBelongsToPredicate.java │ │ │ │ │ ├── Predicate.java │ │ │ │ │ ├── RegexPredicate.java │ │ │ │ │ └── StartsWithPredicate.java │ │ │ │ ├── demo │ │ │ │ │ └── VulnerableRequestForTemplate.java │ │ │ │ ├── dependency_flow │ │ │ │ │ ├── Connection.java │ │ │ │ │ ├── DependencyFlow.java │ │ │ │ │ ├── Edge.java │ │ │ │ │ ├── KVPair.java │ │ │ │ │ ├── ModifyHostDetail.java │ │ │ │ │ ├── Node.java │ │ │ │ │ ├── ReplaceDetail.java │ │ │ │ │ ├── ReverseConnection.java │ │ │ │ │ ├── ReverseEdge.java │ │ │ │ │ ├── ReverseNode.java │ │ │ │ │ └── TreeHelper.java │ │ │ │ ├── events │ │ │ │ │ ├── EventsExample.java │ │ │ │ │ └── EventsMetrics.java │ │ │ │ ├── feed │ │ │ │ │ ├── Feed.java │ │ │ │ │ ├── FeedSource.java │ │ │ │ │ └── FeedsDao.java │ │ │ │ ├── files │ │ │ │ │ └── File.java │ │ │ │ ├── filter │ │ │ │ │ └── MergedUrls.java │ │ │ │ ├── gpt │ │ │ │ │ ├── AktoGptConfig.java │ │ │ │ │ └── AktoGptConfigState.java │ │ │ │ ├── graph │ │ │ │ │ ├── K8sDaemonsetGraphParams.java │ │ │ │ │ ├── SvcToSvcGraphEdge.java │ │ │ │ │ ├── SvcToSvcGraphNode.java │ │ │ │ │ └── SvcToSvcGraphParams.java │ │ │ │ ├── jira_integration │ │ │ │ │ ├── BiDirectionalSyncSettings.java │ │ │ │ │ ├── JiraIntegration.java │ │ │ │ │ ├── JiraMetaData.java │ │ │ │ │ ├── JiraStatus.java │ │ │ │ │ ├── JiraStatusApiResponse.java │ │ │ │ │ └── ProjectMapping.java │ │ │ │ ├── jobs │ │ │ │ │ ├── AutoTicketParams.java │ │ │ │ │ ├── Job.java │ │ │ │ │ ├── JobExecutorType.java │ │ │ │ │ ├── JobParams.java │ │ │ │ │ ├── JobStatus.java │ │ │ │ │ ├── JobType.java │ │ │ │ │ ├── ScheduleType.java │ │ │ │ │ └── TicketSyncJobParams.java │ │ │ │ ├── loaders │ │ │ │ │ ├── Loader.java │ │ │ │ │ ├── NormalLoader.java │ │ │ │ │ └── PostmanUploadLoader.java │ │ │ │ ├── metrics │ │ │ │ │ └── MetricData.java │ │ │ │ ├── monitoring │ │ │ │ │ ├── FilterConfig.java │ │ │ │ │ └── ModuleInfo.java │ │ │ │ ├── notifications │ │ │ │ │ ├── CustomWebhook.java │ │ │ │ │ ├── CustomWebhookResult.java │ │ │ │ │ └── SlackWebhook.java │ │ │ │ ├── pii │ │ │ │ │ ├── PIISource.java │ │ │ │ │ └── PIIType.java │ │ │ │ ├── rbac │ │ │ │ │ ├── AdminRoleStrategy.java │ │ │ │ │ ├── DeveloperRoleStrategy.java │ │ │ │ │ ├── GuestRoleStrategy.java │ │ │ │ │ ├── MemberRoleStrategy.java │ │ │ │ │ ├── RbacEnums.java │ │ │ │ │ ├── RoleStrategy.java │ │ │ │ │ └── UsersCollectionsList.java │ │ │ │ ├── runtime_filters │ │ │ │ │ ├── FieldExistsFilter.java │ │ │ │ │ ├── ResponseCodeRuntimeFilter.java │ │ │ │ │ └── RuntimeFilter.java │ │ │ │ ├── settings │ │ │ │ │ └── DefaultPayload.java │ │ │ │ ├── sso │ │ │ │ │ └── SAMLConfig.java │ │ │ │ ├── test_editor │ │ │ │ │ ├── Auth.java │ │ │ │ │ ├── Category.java │ │ │ │ │ ├── Config.java │ │ │ │ │ ├── ConfigParserResult.java │ │ │ │ │ ├── ConfigParserValidationResult.java │ │ │ │ │ ├── DataOperandFilterRequest.java │ │ │ │ │ ├── DataOperandsFilterResponse.java │ │ │ │ │ ├── ExecuteAlgoObj.java │ │ │ │ │ ├── ExecuteOrder.java │ │ │ │ │ ├── ExecutionOrderResp.java │ │ │ │ │ ├── ExecutionResult.java │ │ │ │ │ ├── ExecutorConfigParserResult.java │ │ │ │ │ ├── ExecutorNode.java │ │ │ │ │ ├── ExecutorSingleOperationResp.java │ │ │ │ │ ├── ExecutorSingleRequest.java │ │ │ │ │ ├── FilterActionRequest.java │ │ │ │ │ ├── FilterNode.java │ │ │ │ │ ├── Info.java │ │ │ │ │ ├── ModifyExecutionOrderResp.java │ │ │ │ │ ├── SeverityParserResult.java │ │ │ │ │ ├── Strategy.java │ │ │ │ │ ├── TemplateSettings.java │ │ │ │ │ ├── TestConfig.java │ │ │ │ │ ├── TestLibrary.java │ │ │ │ │ ├── TestingRunPlayground.java │ │ │ │ │ ├── Util.java │ │ │ │ │ └── YamlTemplate.java │ │ │ │ ├── test_run_findings │ │ │ │ │ ├── SourceCodeVulnerabilities.java │ │ │ │ │ ├── TestingIssuesId.java │ │ │ │ │ └── TestingRunIssues.java │ │ │ │ ├── testing │ │ │ │ │ ├── AccessMatrixTaskInfo.java │ │ │ │ │ ├── AccessMatrixUrlToRole.java │ │ │ │ │ ├── AllTestingEndpoints.java │ │ │ │ │ ├── AuthMechanism.java │ │ │ │ │ ├── AuthParam.java │ │ │ │ │ ├── AuthParamData.java │ │ │ │ │ ├── AutoTicketingDetails.java │ │ │ │ │ ├── BidirectionalSyncSettings.java │ │ │ │ │ ├── CollectionWiseTestingEndpoints.java │ │ │ │ │ ├── ComplianceInfo.java │ │ │ │ │ ├── ComplianceMapping.java │ │ │ │ │ ├── CustomTestingEndpoints.java │ │ │ │ │ ├── DefaultTestSuites.java │ │ │ │ │ ├── DeleteTestRuns.java │ │ │ │ │ ├── EndpointLogicalGroup.java │ │ │ │ │ ├── GenericTestResult.java │ │ │ │ │ ├── GraphExecutorRequest.java │ │ │ │ │ ├── GraphExecutorResult.java │ │ │ │ │ ├── HardcodedAuthParam.java │ │ │ │ │ ├── HostRegexTestingEndpoints.java │ │ │ │ │ ├── LogicalGroupTestingEndpoint.java │ │ │ │ │ ├── LoginFlowParams.java │ │ │ │ │ ├── LoginFlowResponse.java │ │ │ │ │ ├── LoginFlowStepsData.java │ │ │ │ │ ├── LoginRequestAuthParam.java │ │ │ │ │ ├── LoginVerificationCodeData.java │ │ │ │ │ ├── LoginWorkflowGraphEdge.java │ │ │ │ │ ├── MultiExecTestResult.java │ │ │ │ │ ├── OtpTestData.java │ │ │ │ │ ├── RegexTestingEndpoints.java │ │ │ │ │ ├── Remediation.java │ │ │ │ │ ├── RequestData.java │ │ │ │ │ ├── RiskScoreTestingEndpoints.java │ │ │ │ │ ├── SensitiveDataEndpoints.java │ │ │ │ │ ├── TLSAuthParam.java │ │ │ │ │ ├── TestResult.java │ │ │ │ │ ├── TestRoles.java │ │ │ │ │ ├── TestSuite.java │ │ │ │ │ ├── TestingEndpoints.java │ │ │ │ │ ├── TestingRun.java │ │ │ │ │ ├── TestingRunConfig.java │ │ │ │ │ ├── TestingRunResult.java │ │ │ │ │ ├── TestingRunResultSummary.java │ │ │ │ │ ├── TestingSchedule.java │ │ │ │ │ ├── UrlModifierPayload.java │ │ │ │ │ ├── Utils.java │ │ │ │ │ ├── WorkflowNodeDetails.java │ │ │ │ │ ├── WorkflowTest.java │ │ │ │ │ ├── WorkflowTestResult.java │ │ │ │ │ ├── WorkflowTestingEndpoints.java │ │ │ │ │ ├── WorkflowUpdatedSampleData.java │ │ │ │ │ ├── YamlNodeDetails.java │ │ │ │ │ ├── YamlTestResult.java │ │ │ │ │ ├── config │ │ │ │ │ │ ├── EditableTestingRunConfig.java │ │ │ │ │ │ ├── TestCollectionConfig.java │ │ │ │ │ │ ├── TestCollectionProperty.java │ │ │ │ │ │ ├── TestScript.java │ │ │ │ │ │ └── TestSuites.java │ │ │ │ │ ├── custom_groups │ │ │ │ │ │ ├── AllAPIsGroup.java │ │ │ │ │ │ └── UnauthenticatedEndpoint.java │ │ │ │ │ ├── info │ │ │ │ │ │ ├── BFLATestInfo.java │ │ │ │ │ │ ├── CurrentTestsStatus.java │ │ │ │ │ │ ├── NucleiTestInfo.java │ │ │ │ │ │ ├── SingleTestPayload.java │ │ │ │ │ │ └── TestInfo.java │ │ │ │ │ ├── rate_limit │ │ │ │ │ │ ├── ApiRateLimit.java │ │ │ │ │ │ ├── GlobalApiRateLimit.java │ │ │ │ │ │ └── RateLimitHandler.java │ │ │ │ │ └── sources │ │ │ │ │ │ ├── AuthWithCond.java │ │ │ │ │ │ ├── TestReports.java │ │ │ │ │ │ └── TestSourceConfig.java │ │ │ │ ├── third_party_access │ │ │ │ │ ├── Credential.java │ │ │ │ │ ├── GoogleCredential.java │ │ │ │ │ ├── PostmanCredential.java │ │ │ │ │ └── ThirdPartyAccess.java │ │ │ │ ├── threat_detection │ │ │ │ │ ├── ApiHitCountInfo.java │ │ │ │ │ └── IpLevelApiHitCount.java │ │ │ │ ├── traffic │ │ │ │ │ ├── CollectionTags.java │ │ │ │ │ ├── Key.java │ │ │ │ │ ├── SampleData.java │ │ │ │ │ ├── SuspectSampleData.java │ │ │ │ │ └── TrafficInfo.java │ │ │ │ ├── traffic_metrics │ │ │ │ │ ├── RuntimeMetrics.java │ │ │ │ │ ├── TrafficAlerts.java │ │ │ │ │ ├── TrafficMetrics.java │ │ │ │ │ └── TrafficMetricsAlert.java │ │ │ │ ├── type │ │ │ │ │ ├── APICatalog.java │ │ │ │ │ ├── AccountDataTypesInfo.java │ │ │ │ │ ├── CollectionReplaceDetails.java │ │ │ │ │ ├── EndpointInfo.java │ │ │ │ │ ├── KeyTypes.java │ │ │ │ │ ├── RequestTemplate.java │ │ │ │ │ ├── SingleTypeInfo.java │ │ │ │ │ ├── TrafficRecorder.java │ │ │ │ │ ├── URLMethods.java │ │ │ │ │ ├── URLStatic.java │ │ │ │ │ └── URLTemplate.java │ │ │ │ ├── upload │ │ │ │ │ ├── FileUpload.java │ │ │ │ │ ├── FileUploadError.java │ │ │ │ │ ├── FileUploadLog.java │ │ │ │ │ ├── PostmanUploadLog.java │ │ │ │ │ ├── PostmanWorkspaceUpload.java │ │ │ │ │ ├── SwaggerFileUpload.java │ │ │ │ │ └── SwaggerUploadLog.java │ │ │ │ └── usage │ │ │ │ │ ├── MetricTypes.java │ │ │ │ │ ├── UsageMetric.java │ │ │ │ │ ├── UsageMetricInfo.java │ │ │ │ │ ├── UsageSync.java │ │ │ │ │ └── metadata │ │ │ │ │ └── ActiveAccounts.java │ │ │ │ ├── types │ │ │ │ ├── BasicDBListL.java │ │ │ │ ├── CappedList.java │ │ │ │ └── CappedSet.java │ │ │ │ └── util │ │ │ │ ├── AccountTask.java │ │ │ │ ├── ColorConstants.java │ │ │ │ ├── ConnectionInfo.java │ │ │ │ ├── Constants.java │ │ │ │ ├── CookieTransformer.java │ │ │ │ ├── DateUtils.java │ │ │ │ ├── DbMode.java │ │ │ │ ├── EmailAccountName.java │ │ │ │ ├── EnumCodec.java │ │ │ │ ├── GroupByTimeRange.java │ │ │ │ ├── HttpRequestResponseUtils.java │ │ │ │ ├── IntercomEventsUtil.java │ │ │ │ ├── IssueTrendType.java │ │ │ │ ├── JSONUtils.java │ │ │ │ ├── JsonStringPayloadModifier.java │ │ │ │ ├── LastCronRunInfo.java │ │ │ │ ├── Pair.java │ │ │ │ ├── RecordedLoginFlowUtil.java │ │ │ │ ├── TokenPayloadModifier.java │ │ │ │ ├── Trie.java │ │ │ │ ├── UsageUtils.java │ │ │ │ ├── Util.java │ │ │ │ ├── VersionUtil.java │ │ │ │ ├── enums │ │ │ │ ├── GlobalEnums.java │ │ │ │ ├── LoginFlowEnums.java │ │ │ │ └── MongoDBEnums.java │ │ │ │ ├── filter │ │ │ │ ├── DictionaryFilter.java │ │ │ │ ├── DictionaryFilterCreator.java │ │ │ │ └── WordListProvider.java │ │ │ │ ├── grpc │ │ │ │ ├── ParameterTransformer.java │ │ │ │ └── ProtoBufUtils.java │ │ │ │ ├── http_util │ │ │ │ ├── CoreHTTPClient.java │ │ │ │ └── DelegatingSocketFactory.java │ │ │ │ ├── modifier │ │ │ │ ├── AddJWKModifier.java │ │ │ │ ├── AddJkuJWTModifier.java │ │ │ │ ├── AddKidParamModifier.java │ │ │ │ ├── ConvertToArrayPayloadModifier.java │ │ │ │ ├── InvalidSignatureJWTModifier.java │ │ │ │ ├── JWTPayloadReplacer.java │ │ │ │ ├── JwtKvModifier.java │ │ │ │ ├── JwtModifier.java │ │ │ │ ├── NestedObjectModifier.java │ │ │ │ ├── NoneAlgoJWTModifier.java │ │ │ │ ├── PayloadModifier.java │ │ │ │ └── SetValueModifier.java │ │ │ │ └── tasks │ │ │ │ └── OrganizationTask.java │ │ └── resources │ │ │ └── DictionaryBinary │ │ └── test │ │ └── java │ │ └── com │ │ └── akto │ │ ├── dao │ │ ├── DaoConnect.java │ │ ├── DemoData.java │ │ ├── MoveSampleDataToSTI.java │ │ ├── TestAccountSettingsDao.java │ │ ├── TestApiCollectionsDao.java │ │ ├── TestDependencyFlowNodesDao.java │ │ ├── TestDependencyNodeDao.java │ │ ├── TestMCollections.java │ │ ├── TestSampleDataDao.java │ │ ├── TestSingleTypeInfoDao.java │ │ ├── TestUsersDao.java │ │ ├── VCDemoData.java │ │ └── loaders │ │ │ └── TestLoadersDao.java │ │ ├── dto │ │ ├── TestApiInfo.java │ │ ├── TestDependencyNode.java │ │ ├── TestOriginalHttpRequest.java │ │ ├── TestOriginalHttpResponse.java │ │ ├── api_workflow │ │ │ └── TestGraph.java │ │ ├── data_types │ │ │ ├── TestCustomDataType.java │ │ │ └── TestPredicates.java │ │ ├── dependency_flow │ │ │ └── TestNode.java │ │ ├── runtime_filters │ │ │ ├── TestFieldExistsFilter.java │ │ │ └── TestResponseCodeRuntimeFilter.java │ │ ├── testing │ │ │ ├── AuthMechanismTests.java │ │ │ └── TestLogicalGroupTestingEndpoint.java │ │ └── type │ │ │ ├── TestApiCatalog.java │ │ │ ├── TestKeyTypes.java │ │ │ ├── TestRequestTemplate.java │ │ │ ├── TestSingleTypeInfo.java │ │ │ ├── TestSubType.java │ │ │ └── TestUrlMethods.java │ │ ├── types │ │ └── TestCappedSet.java │ │ ├── util │ │ └── grpc │ │ │ └── TestParameterTransformer.java │ │ └── utils │ │ ├── MongoBasedTest.java │ │ ├── TestDbMode.java │ │ ├── filter │ │ └── TestDictionaryFilter.java │ │ ├── grpc │ │ └── TestProtobufUtils.java │ │ ├── http_util │ │ └── TestCoreHTTPClient.java │ │ └── modifier │ │ ├── TestAddJkuJwtModifier.java │ │ ├── TestInvalidSignatureJWTModifier.java │ │ └── TestNoneAlgoJWTModifier.java ├── integrations │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── akto │ │ ├── ApiRequest.java │ │ ├── TimeoutObject.java │ │ └── postman │ │ └── Main.java ├── pom.xml ├── protobuf │ ├── .gitignore │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── akto │ │ ├── grpc │ │ └── auth │ │ │ └── AuthToken.java │ │ └── proto │ │ └── http_response_param │ │ └── v1 │ │ ├── HttpResponseParam.java │ │ ├── HttpResponseParamOrBuilder.java │ │ ├── HttpResponseParamProto.java │ │ ├── StringList.java │ │ └── StringListOrBuilder.java └── utils │ ├── .gitignore │ ├── README.md │ ├── pom.xml │ └── src │ ├── main │ └── java │ │ └── com │ │ └── akto │ │ ├── IPLookupClient.java │ │ ├── InstanceDetails.java │ │ ├── ProtoMessageUtils.java │ │ ├── RawApiMetadataFactory.java │ │ ├── RuntimeMode.java │ │ ├── api_clients │ │ └── JiraApiClient.java │ │ ├── audit_logs_util │ │ └── AuditLogsUtil.java │ │ ├── billing │ │ └── UsageMetricUtils.java │ │ ├── bulk_update_util │ │ └── ApiInfoBulkUpdate.java │ │ ├── calendar │ │ └── DateUtils.java │ │ ├── data_actor │ │ ├── ClientActor.java │ │ ├── DataActor.java │ │ ├── DataActorFactory.java │ │ ├── DbActor.java │ │ └── DbLayer.java │ │ ├── database_abstractor_authenticator │ │ └── JwtAuthenticator.java │ │ ├── github │ │ ├── GithubFile.java │ │ └── GithubUtils.java │ │ ├── gpt │ │ └── handlers │ │ │ └── gpt_prompts │ │ │ ├── AnalyzeRequestResponseHeaders.java │ │ │ ├── PromptHandler.java │ │ │ └── TestExecutorModifier.java │ │ ├── graphql │ │ └── GraphQLUtils.java │ │ ├── har │ │ └── HAR.java │ │ ├── jobs │ │ ├── JobExecutor.java │ │ ├── JobExecutorFactory.java │ │ ├── JobScheduler.java │ │ ├── exception │ │ │ └── RetryableJobException.java │ │ ├── executors │ │ │ ├── JiraTicketJobExecutor.java │ │ │ └── TicketSyncJobExecutor.java │ │ └── utils │ │ │ └── JobConstants.java │ │ ├── jsonrpc │ │ └── JsonRpcUtils.java │ │ ├── kafka │ │ ├── Kafka.java │ │ ├── KafkaConfig.java │ │ ├── KafkaConsumerConfig.java │ │ ├── KafkaProducerConfig.java │ │ └── Serializer.java │ │ ├── log │ │ ├── CacheLoggerMaker.java │ │ └── LoggerMaker.java │ │ ├── mcp │ │ ├── McpJsonRpcModel.java │ │ └── McpRequestResponseUtils.java │ │ ├── metrics │ │ ├── AllMetrics.java │ │ └── ModuleInfoWorker.java │ │ ├── mixpanel │ │ └── AktoMixpanel.java │ │ ├── notifications │ │ ├── TrafficUpdates.java │ │ ├── TrafficUpdatesTeams.java │ │ ├── data │ │ │ └── TestingAlertData.java │ │ ├── email │ │ │ └── SendgridEmail.java │ │ ├── slack │ │ │ ├── APITestStatusAlert.java │ │ │ ├── ActionButtonModel.java │ │ │ ├── CustomTextAlert.java │ │ │ ├── DailyUpdate.java │ │ │ ├── FieldsModel.java │ │ │ ├── HorizontalFieldModel.java │ │ │ ├── NewIssuesModel.java │ │ │ ├── NewUserJoiningAlert.java │ │ │ ├── SlackAlertType.java │ │ │ ├── SlackAlerts.java │ │ │ ├── SlackSender.java │ │ │ └── TestSummaryGenerator.java │ │ ├── teams │ │ │ ├── CardDataTable.java │ │ │ ├── CardTableRow.java │ │ │ ├── CardTextBlock.java │ │ │ ├── TeamsAlert.java │ │ │ └── TeamsSender.java │ │ └── webhook │ │ │ └── WebhookSender.java │ │ ├── onprem │ │ └── Constants.java │ │ ├── open_api │ │ ├── Main.java │ │ ├── PathBuilder.java │ │ ├── SchemaBuilder.java │ │ └── parser │ │ │ ├── ContentParser.java │ │ │ ├── Parser.java │ │ │ ├── ParserResult.java │ │ │ ├── ServerParser.java │ │ │ └── parameter_parser │ │ │ ├── CommonParser.java │ │ │ ├── CookieParser.java │ │ │ ├── HeaderParser.java │ │ │ ├── PathParamParser.java │ │ │ └── QueryParamParser.java │ │ ├── password_reset │ │ └── PasswordResetUtils.java │ │ ├── runtime │ │ ├── RuntimeUtil.java │ │ ├── policies │ │ │ ├── ApiAccessTypePolicy.java │ │ │ └── UserAgentTypePolicy.java │ │ └── utils │ │ │ └── Utils.java │ │ ├── stigg │ │ └── StiggReporterClient.java │ │ ├── store │ │ └── StandardHeaders.java │ │ ├── task │ │ ├── Cluster.java │ │ ├── DataFetcherUtils.java │ │ └── PeriodicTask.java │ │ ├── telemetry │ │ └── TelemetryJob.java │ │ ├── test_editor │ │ ├── TemplateSettingsUtil.java │ │ ├── Utils.java │ │ ├── execution │ │ │ ├── ExecutionListBuilder.java │ │ │ ├── Operations.java │ │ │ ├── ParseAndExecute.java │ │ │ └── VariableResolver.java │ │ └── filter │ │ │ ├── Filter.java │ │ │ ├── FilterAction.java │ │ │ └── data_operands_impl │ │ │ ├── ApiCollectionFilter.java │ │ │ ├── ConformSchemaFilter.java │ │ │ ├── ContainsAllFilter.java │ │ │ ├── ContainsEitherFilter.java │ │ │ ├── ContainsEitherIpFilter.java │ │ │ ├── ContainsJwt.java │ │ │ ├── CookieExpireFilter.java │ │ │ ├── DataOperandsImpl.java │ │ │ ├── DatatypeFilter.java │ │ │ ├── EqFilter.java │ │ │ ├── EqFilterObj.java │ │ │ ├── GreaterThanEqFilter.java │ │ │ ├── GreaterThanFilter.java │ │ │ ├── LesserThanEqFilter.java │ │ │ ├── LesserThanFilter.java │ │ │ ├── NeqFilter.java │ │ │ ├── NeqFilterObj.java │ │ │ ├── NotContainsEitherFilter.java │ │ │ ├── NotContainsFilter.java │ │ │ ├── NotContainsIpFilter.java │ │ │ ├── RegexFilter.java │ │ │ ├── SsrfUrlHitFilter.java │ │ │ └── ValidationResult.java │ │ ├── testing │ │ ├── ApiExecutor.java │ │ ├── ApiExecutorUtil.java │ │ ├── HTTPClientHandler.java │ │ ├── HostDNSLookup.java │ │ ├── HostValidator.java │ │ ├── OriginalReqResPayloadInformation.java │ │ ├── ServiceConnectivity.java │ │ ├── TemplateMapper.java │ │ └── Utils.java │ │ ├── testing_utils │ │ └── TestingUtils.java │ │ ├── traffic │ │ └── KafkaRunner.java │ │ ├── usage │ │ ├── OrgUtils.java │ │ ├── UsageMetricCalculator.java │ │ └── UsageMetricHandler.java │ │ ├── util │ │ ├── DashboardMode.java │ │ ├── HTTPHeadersExample.java │ │ ├── LRUCache.java │ │ └── http_request │ │ │ └── CustomHttpRequest.java │ │ └── utils │ │ ├── CurlUtils.java │ │ ├── FileUtils.java │ │ ├── GzipUtils.java │ │ └── JsonUtils.java │ └── test │ └── java │ └── com │ └── akto │ ├── MongoBasedTest.java │ ├── TestGraphQLUtils.java │ ├── calendar │ └── TestDateUtils.java │ ├── gpt │ └── handlers │ │ └── gpt_prompts │ │ └── TestExecutorModifierTest.java │ ├── jsonrpc │ └── JsonRpcUtilsTest.java │ ├── notifications │ ├── TestTrafficUpdates.java │ └── content │ │ └── SlackTest.java │ ├── open_api │ ├── TestAddPathItems.java │ ├── TestCustomSchemasFromSingleTypeInfo.java │ ├── TestPathBuilder.java │ └── TestSchemaBuilder.java │ ├── test_editor │ └── UtilsTest.java │ └── testing │ └── TestHostValidator.java ├── package-lock.json ├── pii-types ├── filetypes.json └── fintech.json ├── pom.xml ├── protobuf ├── buf.yaml └── threat_detection │ ├── message │ ├── http_response_param │ │ └── v1 │ │ │ └── http_response_param.proto │ ├── malicious_event │ │ ├── event_type │ │ │ └── v1 │ │ │ │ └── event_type.proto │ │ └── v1 │ │ │ └── message.proto │ └── sample_request │ │ └── v1 │ │ └── message.proto │ └── service │ ├── dashboard_service │ └── v1 │ │ └── service.proto │ └── malicious_alert_service │ └── v1 │ └── service.proto └── scripts ├── install-protoc-mac.sh └── proto-gen.sh /.devcontainer/docker-compose.devcontainer.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | akto: 5 | image: mcr.microsoft.com/devcontainers/java:8-bullseye 6 | volumes: 7 | - ..:/workspace:cached 8 | command: sleep infinity 9 | network_mode: service:akto-db 10 | user: vscode 11 | 12 | akto-db: 13 | image: mongo:latest 14 | restart: unless-stopped 15 | volumes: 16 | - akto-mongo-data:/data/db 17 | 18 | volumes: 19 | akto-mongo-data: -------------------------------------------------------------------------------- /.github/scripts/deploy-script.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | cd ~/akto/infra 4 | docker-compose -f docker-compose-dashboard.yml pull 5 | docker-compose -f docker-compose-dashboard.yml down 6 | docker-compose -f docker-compose-dashboard.yml up -d -------------------------------------------------------------------------------- /.github/workflows/discord-release-msg.yml: -------------------------------------------------------------------------------- 1 | 2 | name: Release messages to discord announcement channel 3 | 4 | on: 5 | release: 6 | types: 7 | - published 8 | 9 | jobs: 10 | run_main: 11 | runs-on: ubuntu-18.04 12 | name: Sends message 13 | steps: 14 | - name: Setup Bolt 15 | uses: koalalab-inc/bolt@v1 16 | - name: Sending message 17 | uses: nhevia/discord-styled-releases@main 18 | with: 19 | webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }} 20 | webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }} 21 | -------------------------------------------------------------------------------- /.github/workflows/e2e_tests.yml: -------------------------------------------------------------------------------- 1 | name: End to end tests 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - name: Setup Bolt 12 | uses: koalalab-inc/bolt@v1 13 | - name: Checkout e2e_tests tools 14 | uses: actions/checkout@v4 15 | with: 16 | repository: akto-api-security/e2e_testing 17 | token: ${{ secrets.MY_TOKEN }} 18 | path: e2e_testing 19 | - name: switch to testing 20 | run: cd e2e_testing && ls 21 | -------------------------------------------------------------------------------- /.github/workflows/testsigma.yml: -------------------------------------------------------------------------------- 1 | name: Testsigma 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | testPlanId: 7 | default: "361" 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Setup Bolt 15 | uses: koalalab-inc/bolt@v1 16 | - name: Trigger Testsigma Test 17 | run: | 18 | curl --insecure -X POST -H "Content-type: application/json" -H "Accept:application/json" -H "Authorization: Bearer ${{ vars.TESTSIGMA_API_KEY }}" \ 19 | ${{vars.TS_DASHBOARD_URL}}/api/v1/test_plan_results -d "{\"testPlanId\": \"${{ github.event.inputs.testPlanId }}\"}" 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | **/target 3 | *.iml 4 | **/output 5 | **/.DS_Store 6 | *.pem 7 | **/node_modules 8 | **/yarn-error.log 9 | **/yarn.lock 10 | **/.vscode/ 11 | **/.project 12 | **/.classpath 13 | **/.settings 14 | **/dist 15 | **/gen 16 | libawesome.dylib 17 | temp_* 18 | *.templates-config.json 19 | https: 20 | **/target_test-classes 21 | **/data-kafka-data 22 | **/data-zoo-data 23 | **/data-zoo-logs 24 | **/bin 25 | .factorypath 26 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | BUF_TEMPLATE ?= buf.gen.yaml 2 | 3 | proto-gen: 4 | sh ./scripts/proto-gen.sh $(BUF_TEMPLATE) 5 | 6 | build: proto-gen 7 | mvn install -DskipTests 8 | 9 | build-clean: proto-gen 10 | mvn clean install -DskipTests 11 | -------------------------------------------------------------------------------- /apps/api-analyser/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk 2 | WORKDIR /app 3 | 4 | COPY ./target/api-analyser-1.0-SNAPSHOT-jar-with-dependencies.jar /app/api-analyser-1.0-SNAPSHOT-jar-with-dependencies.jar 5 | COPY start.sh /app/start.sh 6 | 7 | RUN chmod +x /app/start.sh 8 | 9 | CMD ["/app/start.sh"] 10 | -------------------------------------------------------------------------------- /apps/api-runtime/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | target/ 3 | output/ 4 | gen/ 5 | yarn.lock 6 | .DS_Store 7 | *.iml 8 | *.pem 9 | *.env 10 | .settings 11 | .project 12 | .classpath -------------------------------------------------------------------------------- /apps/api-runtime/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk 2 | WORKDIR /app 3 | COPY ./target/api-runtime-1.0-SNAPSHOT-jar-with-dependencies.jar /app/api-runtime-1.0-SNAPSHOT-jar-with-dependencies.jar 4 | 5 | COPY start.sh /app/start.sh 6 | 7 | RUN chmod +x /app/start.sh 8 | 9 | CMD ["/app/start.sh"] -------------------------------------------------------------------------------- /apps/api-runtime/README.md: -------------------------------------------------------------------------------- 1 | # api-runtime -------------------------------------------------------------------------------- /apps/api-runtime/src/main/java/com/akto/dependency/store/BFStore.java: -------------------------------------------------------------------------------- 1 | package com.akto.dependency.store; 2 | 3 | import com.google.common.hash.BloomFilter; 4 | 5 | public class BFStore extends Store{ 6 | 7 | BloomFilter bf; 8 | 9 | public BFStore(BloomFilter bf) { 10 | this.bf = bf; 11 | } 12 | 13 | @Override 14 | public boolean contains(String val) { 15 | return bf.mightContain(val); 16 | } 17 | 18 | @Override 19 | public boolean add(String val) { 20 | return bf.put(val); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /apps/api-runtime/src/main/java/com/akto/dependency/store/HashSetStore.java: -------------------------------------------------------------------------------- 1 | package com.akto.dependency.store; 2 | 3 | import java.util.HashSet; 4 | import java.util.Set; 5 | 6 | public class HashSetStore extends Store { 7 | 8 | int maxCount; 9 | 10 | public HashSetStore(int maxCount) { 11 | this.maxCount = maxCount; 12 | } 13 | 14 | private final Set set = new HashSet<>(); 15 | @Override 16 | public boolean contains(String val) { 17 | return set.contains(val.hashCode()); 18 | } 19 | 20 | @Override 21 | public boolean add(String val) { 22 | if (set.size() >= maxCount) return false; 23 | return set.add(val.hashCode()); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /apps/api-runtime/src/main/java/com/akto/dependency/store/Store.java: -------------------------------------------------------------------------------- 1 | package com.akto.dependency.store; 2 | 3 | public abstract class Store { 4 | 5 | public abstract boolean contains(String val); 6 | 7 | public abstract boolean add(String val); 8 | } 9 | -------------------------------------------------------------------------------- /apps/api-runtime/src/main/java/com/akto/runtime/ConcurrentHashSet.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/api-runtime/src/main/java/com/akto/runtime/ConcurrentHashSet.java -------------------------------------------------------------------------------- /apps/api-runtime/src/main/resources/version.txt: -------------------------------------------------------------------------------- 1 | ${akto-image-tag} 2 | ${akto-build-time} 3 | -------------------------------------------------------------------------------- /apps/billing/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jetty:9.4-jre8 2 | USER root 3 | RUN apt-get update -y 4 | RUN apt-get install -y --no-install-recommends libpcap-dev 5 | ADD ./target/billing.war /var/lib/jetty/webapps/root.war 6 | RUN echo "--module=http-forwarded" > /var/lib/jetty/start.d/http-forwarded.ini 7 | RUN echo "jetty.httpConfig.sendServerVersion=false" > /var/lib/jetty/start.d/server.ini 8 | RUN echo "org.slf4j.simpleLogger.log.org.eclipse.jetty.annotations.AnnotationParser=ERROR" >> /var/lib/jetty/start.d/server.ini 9 | EXPOSE 8080 -------------------------------------------------------------------------------- /apps/billing/src/main/java/com/akto/util/DateUtils.java: -------------------------------------------------------------------------------- 1 | package com.akto.util; 2 | 3 | import java.time.Instant; 4 | import java.time.LocalDateTime; 5 | import java.time.ZoneId; 6 | 7 | public class DateUtils { 8 | 9 | public static int getHour(int epoch){ 10 | LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(epoch), ZoneId.systemDefault()); 11 | 12 | return dateTime.getHour(); 13 | } 14 | 15 | public static int getDateYYYYMMDD(int epoch){ 16 | LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochSecond(epoch), ZoneId.systemDefault()); 17 | 18 | return dateTime.getYear() * 10000 + dateTime.getMonthValue() * 100 + dateTime.getDayOfMonth(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /apps/dashboard/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-env", "@babel/preset-react"], 3 | "plugins": ["@babel/plugin-proposal-object-rest-spread","@babel/plugin-transform-runtime"] 4 | } -------------------------------------------------------------------------------- /apps/dashboard/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | target 3 | yarn-error.log 4 | web/dist 5 | .settings 6 | .project 7 | .classpath 8 | .idea/ 9 | .vscode/launch.json 10 | -------------------------------------------------------------------------------- /apps/dashboard/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jetty:9.4-jre8 2 | USER root 3 | RUN apt-get update -y 4 | RUN apt-get install -y --no-install-recommends libpcap-dev procps 5 | ADD ./target/dashboard.war /var/lib/jetty/webapps/root.war 6 | RUN echo "--module=http-forwarded" > /var/lib/jetty/start.d/http-forwarded.ini 7 | RUN echo "jetty.httpConfig.sendServerVersion=false" > /var/lib/jetty/start.d/server.ini 8 | RUN echo "org.slf4j.simpleLogger.log.org.eclipse.jetty.annotations.AnnotationParser=ERROR" >> /var/lib/jetty/start.d/server.ini 9 | 10 | COPY set_xmx.sh /var/lib/jetty/set_xmx.sh 11 | RUN chmod +x /var/lib/jetty/set_xmx.sh 12 | 13 | COPY entrypoint.sh /entrypoint.sh 14 | RUN chmod +x /entrypoint.sh 15 | 16 | ENTRYPOINT ["/entrypoint.sh"] 17 | EXPOSE 8080 -------------------------------------------------------------------------------- /apps/dashboard/README.md: -------------------------------------------------------------------------------- 1 | To setup node modules 2 | `npm install` 3 | 4 | To build Vue 5 | `npm run build` 6 | 7 | Build dao by running this command from dao project 8 | `~/Downloads/apache-maven-3.6.3/bin/mvn install` 9 | 10 | Run using 11 | ` ~/Downloads/apache-maven-3.6.3/bin/mvn jetty:run` 12 | 13 | Open 14 | `http://localhost:8080/` 15 | 16 | How to setup git config locally 17 | `https://gist.github.com/Jonalogy/54091c98946cfe4f8cdab2bea79430f9` 18 | 19 | 20 | -------------------------------------------------------------------------------- /apps/dashboard/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Run the memory calculation script to set JAVA_OPTIONS 4 | source /var/lib/jetty/set_xmx.sh 5 | 6 | # Start Jetty normally 7 | exec /docker-entrypoint.sh "$@" 8 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/DockerFile: -------------------------------------------------------------------------------- 1 | FROM jetty:9.4-jre8 2 | ADD ./target/Struts2XMLHelloWorld.war /var/lib/jetty/webapps/root.war 3 | EXPOSE 8080 -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/action/FilterAction.java: -------------------------------------------------------------------------------- 1 | package com.akto.action; 2 | 3 | import com.akto.dao.RuntimeFilterDao; 4 | import com.akto.dto.runtime_filters.RuntimeFilter; 5 | import com.mongodb.BasicDBObject; 6 | 7 | import java.util.*; 8 | 9 | public class FilterAction extends UserAction{ 10 | 11 | private List runtimeFilters; 12 | @Override 13 | public String execute(){ 14 | runtimeFilters = RuntimeFilterDao.instance.findAll(new BasicDBObject()); 15 | return SUCCESS.toUpperCase(); 16 | } 17 | 18 | public List getRuntimeFilters() { 19 | return runtimeFilters; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/action/gpt/data_extractors/DataExtractor.java: -------------------------------------------------------------------------------- 1 | package com.akto.action.gpt.data_extractors; 2 | 3 | import com.mongodb.BasicDBObject; 4 | 5 | import java.util.List; 6 | 7 | public interface DataExtractor { 8 | 9 | public List extractData(BasicDBObject queryDetails); 10 | } 11 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/action/gpt/data_extractors/ListHeaderNames.java: -------------------------------------------------------------------------------- 1 | package com.akto.action.gpt.data_extractors; 2 | 3 | import com.akto.action.testing.TestCollectionConfigurationAction; 4 | import com.mongodb.BasicDBObject; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | public class ListHeaderNames implements DataExtractor{ 10 | 11 | public ListHeaderNames() {} 12 | 13 | @Override 14 | public List extractData(BasicDBObject meta) { 15 | int apiCollectionId = meta.getInt("apiCollectionId", -1); 16 | return new ArrayList<>(new TestCollectionConfigurationAction().findNonStandardHeaderKeys(apiCollectionId)); 17 | } 18 | } -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/action/gpt/data_extractors/filters/Filter.java: -------------------------------------------------------------------------------- 1 | package com.akto.action.gpt.data_extractors.filters; 2 | 3 | import java.util.List; 4 | 5 | public interface Filter { 6 | 7 | public List filterData(List data); 8 | } 9 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/action/gpt/handlers/QueryHandler.java: -------------------------------------------------------------------------------- 1 | package com.akto.action.gpt.handlers; 2 | 3 | import com.mongodb.BasicDBObject; 4 | 5 | 6 | public interface QueryHandler { 7 | 8 | public BasicDBObject handleQuery(BasicDBObject meta) throws Exception; 9 | } 10 | 11 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/action/gpt/result_fetchers/ResultFetcherStrategy.java: -------------------------------------------------------------------------------- 1 | package com.akto.action.gpt.result_fetchers; 2 | 3 | 4 | public interface ResultFetcherStrategy { 5 | 6 | T fetchResult(T data); 7 | } 8 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/action/gpt/validators/ValidateQuery.java: -------------------------------------------------------------------------------- 1 | package com.akto.action.gpt.validators; 2 | 3 | import com.mongodb.BasicDBObject; 4 | 5 | public interface ValidateQuery { 6 | boolean validate(BasicDBObject meta); 7 | 8 | String getErrorMessage(); 9 | } 10 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/action/threat_detection/ThreatActorPerCountry.java: -------------------------------------------------------------------------------- 1 | package com.akto.action.threat_detection; 2 | 3 | public class ThreatActorPerCountry { 4 | private String country; 5 | private int count; 6 | 7 | public ThreatActorPerCountry(String country, int count) { 8 | this.country = country; 9 | this.count = count; 10 | } 11 | 12 | public String getCountry() { 13 | return country; 14 | } 15 | 16 | public void setCountry(String country) { 17 | this.country = country; 18 | } 19 | 20 | public int getCount() { 21 | return count; 22 | } 23 | 24 | public void setCount(int count) { 25 | this.count = count; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/listener/RequestEventListener.java: -------------------------------------------------------------------------------- 1 | package com.akto.listener; 2 | 3 | import com.akto.dao.context.Context; 4 | 5 | import javax.servlet.ServletRequestEvent; 6 | import javax.servlet.ServletRequestListener; 7 | 8 | public class RequestEventListener implements ServletRequestListener { 9 | 10 | @Override 11 | public void requestInitialized(ServletRequestEvent sre) { 12 | Context.resetContextThreadLocals(); 13 | } 14 | 15 | @Override 16 | public void requestDestroyed(ServletRequestEvent sre) { 17 | Context.resetContextThreadLocals(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/utils/AktoCustomException.java: -------------------------------------------------------------------------------- 1 | package com.akto.utils; 2 | 3 | public class AktoCustomException extends Exception{ 4 | public AktoCustomException(String message) { 5 | super(message); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/utils/CustomHttpsWrapper.java: -------------------------------------------------------------------------------- 1 | package com.akto.utils; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletRequestWrapper; 5 | 6 | public class CustomHttpsWrapper extends HttpServletRequestWrapper { 7 | public CustomHttpsWrapper(HttpServletRequest request) { 8 | super(request); 9 | } 10 | 11 | @Override 12 | public StringBuffer getRequestURL() { 13 | StringBuffer url = super.getRequestURL(); 14 | if (url != null && url.toString().startsWith("http://")) { 15 | return new StringBuffer(url.toString().replaceFirst("http://", "https://")); 16 | } 17 | return url; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/utils/cloud/CloudType.java: -------------------------------------------------------------------------------- 1 | package com.akto.utils.cloud; 2 | 3 | public enum CloudType { 4 | AWS, GCP, Azure; 5 | } -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/utils/cloud/serverless/ServerlessFunction.java: -------------------------------------------------------------------------------- 1 | package com.akto.utils.cloud.serverless; 2 | 3 | public interface ServerlessFunction { 4 | 5 | public void invokeFunction(String functionName) throws Exception; 6 | 7 | public void updateFunctionConfiguration(String functionName, UpdateFunctionRequest updateFunctionRequest) 8 | throws Exception; 9 | 10 | } 11 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/utils/cloud/serverless/UpdateFunctionRequest.java: -------------------------------------------------------------------------------- 1 | package com.akto.utils.cloud.serverless; 2 | 3 | import java.util.Map; 4 | 5 | public class UpdateFunctionRequest { 6 | private final Map environmentVariables; 7 | 8 | public UpdateFunctionRequest(Map envVarsMap) { 9 | this.environmentVariables = envVarsMap; 10 | } 11 | 12 | public Map getEnvironmentVariables() { 13 | return this.environmentVariables; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/java/com/akto/utils/cloud/stack/dto/StackState.java: -------------------------------------------------------------------------------- 1 | package com.akto.utils.cloud.stack.dto; 2 | 3 | public class StackState { 4 | private String status; 5 | private long creationTime; 6 | 7 | public StackState(String status, long creationTime) { 8 | this.status = status; 9 | this.creationTime = creationTime; 10 | } 11 | 12 | public String getStatus() { 13 | return status; 14 | } 15 | 16 | public void setStatus(String status) { 17 | this.status = status; 18 | } 19 | 20 | public long getCreationTime() { 21 | return creationTime; 22 | } 23 | 24 | public void setCreationTime(long creationTime) { 25 | this.creationTime = creationTime; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/dashboard/src/main/resources/google_client_secrets_01.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /apps/dashboard/src/main/resources/tests-library-master.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/src/main/resources/tests-library-master.zip -------------------------------------------------------------------------------- /apps/dashboard/src/main/resources/version.txt: -------------------------------------------------------------------------------- 1 | ${akto-image-tag} 2 | ${akto-build-time} 3 | ${akto-release-version} -------------------------------------------------------------------------------- /apps/dashboard/web/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/pages/error.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@ taglib uri="/struts-tags" prefix="s"%> 4 | 5 | 6 | 7 | 8 | 9 | Error Page 10 | 11 | 12 |

OOPS! Something went wrong

13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/dashboard/web/pages/verify_email.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | Verify email 4 | 5 | 6 |

Verify email

7 | 8 | -------------------------------------------------------------------------------- /apps/dashboard/web/pages/welcome.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@ taglib uri="/struts-tags" prefix="s"%> 4 | 5 | 6 | 7 | 8 | Welcome Page 9 | 10 | 11 |

Welcome

12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env", 4 | ["@babel/preset-react", {"runtime": "automatic"}], 5 | "@babel/preset-typescript" 6 | ], 7 | "plugins": [ 8 | "@babel/plugin-proposal-object-rest-spread", 9 | "@babel/plugin-transform-runtime" 10 | ] 11 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/pages/error.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@ taglib uri="/struts-tags" prefix="s"%> 4 | 5 | 6 | 7 | 8 | 9 | Error Page 10 | 11 | 12 |

OOPS! Something went wrong

13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/pages/welcome.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=UTF-8" 2 | pageEncoding="UTF-8"%> 3 | <%@ taglib uri="/struts-tags" prefix="s"%> 4 | 5 | 6 | 7 | 8 | Welcome Page 9 | 10 | 11 |

Welcome

12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/public/Nginx.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/public/burp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/public/circle_check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/public/circle_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/public/four_sq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/public/kong.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Akto", 3 | "name": "Akto", 4 | "icons": [ 5 | { 6 | "src": "/public/favicon2.svg", 7 | "sizes": "192x192", 8 | "purpose": "any" 9 | }, 10 | { 11 | "src": "/public/favicon4.svg", 12 | "sizes": "144x144", 13 | "purpose": "any" 14 | }, 15 | { 16 | "src": "/public/favicon3.svg", 17 | "sizes": "512x512", 18 | "purpose": "any" 19 | } 20 | ], 21 | "start_url": "/login", 22 | "background_color": "#FFFFFF", 23 | "display": "standalone", 24 | "scope": "/", 25 | "theme_color": "#6200EA", 26 | "offline_enabled": true, 27 | "gcm_sender_id": "896372355210" 28 | } 29 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/public/mongo_error_meme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/polaris_web/web/public/mongo_error_meme.png -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/public/notif_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/aktoGpt/api.js: -------------------------------------------------------------------------------- 1 | import request from "@/util/request" 2 | 3 | const api = { 4 | ask_ai(data) { 5 | return request({ 6 | url: '/api/ask_ai', 7 | method: 'post', 8 | data: data, 9 | }) 10 | } 11 | } 12 | 13 | export default api -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/aktoGpt/style.css: -------------------------------------------------------------------------------- 1 | .message-container { 2 | flex: 4; 3 | background: #F6F6F7; 4 | height: 60vh; 5 | display: flex; 6 | flex-direction: column; 7 | } 8 | .left-nav-gpt { 9 | padding: 8px; 10 | background-color:#F6F6F7; 11 | border-right: 1px solid #C9CCCF; 12 | } 13 | 14 | .input-gpt{ 15 | flex: 1; 16 | width: 85%; 17 | margin: auto; 18 | } 19 | 20 | .input-gpt .Polaris-TextField__Backdrop { 21 | border-radius: 8px !important; 22 | } 23 | 24 | .input-gpt .Polaris-TextField{ 25 | height: 6vh; 26 | font-size: 14px !important; 27 | } 28 | 29 | .response-message .Polaris-HorizontalStack { 30 | align-items: flex-start !important; 31 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/layouts/ContextualLayoutStyle.css: -------------------------------------------------------------------------------- 1 | .control-frame-padding .Polaris-Frame__Main { 2 | padding: 0 !important; 3 | } 4 | 5 | .Polaris-Frame-ContextualSaveBar__Contents{ 6 | max-width: 100% !important; 7 | margin: 0 !important; 8 | margin-right: 2rem !important; 9 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/layouts/PageWithCard.jsx: -------------------------------------------------------------------------------- 1 | import { Button, LegacyCard, Page } from '@shopify/polaris' 2 | import React from 'react' 3 | import { useNavigate } from 'react-router-dom' 4 | 5 | function PageWithCard(props) { 6 | const navigate = useNavigate() 7 | 8 | return ( 9 | navigate(props.backUrl) }} 11 | title={props.title} 12 | primaryAction={props.docsAction} 13 | secondaryActions={props?.secondaryAction} 14 | divider 15 | > 16 | 17 |

{props.cardContent}

18 |
19 | {props.component} 20 |
21 | ) 22 | } 23 | 24 | export default PageWithCard -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/layouts/header/Headers.css: -------------------------------------------------------------------------------- 1 | .collapse_btn { 2 | position: absolute; 3 | top: 18px; 4 | z-index: 1; 5 | left: 20px; 6 | cursor: pointer; 7 | } 8 | 9 | .Polaris-ActionList-SearchField { 10 | display: none !important; 11 | } 12 | 13 | .onprem_icon .Polaris-Icon__Svg { 14 | fill: #6D3BEF !important; 15 | } 16 | 17 | .local_icon .Polaris-Icon__Svg { 18 | fill: #2C6ECB !important; 19 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/layouts/leftnav/LeftNav.css: -------------------------------------------------------------------------------- 1 | .Polaris-Navigation__ItemInnerWrapper{ 2 | border-top: none !important; 3 | } 4 | .Polaris-Navigation__PrimaryNavigation{ 5 | justify-content: space-between; 6 | } 7 | 8 | .active .Polaris-Navigation__Item--selected::before{ 9 | width: 0 !important; 10 | } 11 | 12 | .active .Polaris-Navigation__SecondaryNavigation .Polaris-Navigation__Item--selected::before{ 13 | width: 0.1875rem !important; 14 | } 15 | 16 | /* Fix navigation height and scrolling */ 17 | .Polaris-Navigation { 18 | height: calc(100% - 70px); 19 | overflow-y: hidden !important; 20 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/layouts/style.css: -------------------------------------------------------------------------------- 1 | .flyLayout{ 2 | position: absolute; 3 | top: 0; 4 | right: -50vw; 5 | transition: right 0.3s ease-in-out; 6 | z-index: 400; 7 | height: 100vh; 8 | } 9 | 10 | .innerFlyLayout{ 11 | height: 100vh; 12 | position: fixed; 13 | overflow-y: scroll; 14 | scrollbar-width: none; 15 | } 16 | 17 | .show{ 18 | right:0; 19 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/progress/SpinnerCentered.jsx: -------------------------------------------------------------------------------- 1 | import { Spinner } from "@shopify/polaris" 2 | 3 | const SpinnerCentered = () => { 4 | 5 | return ( 6 |
7 | 8 |
9 | ) 10 | } 11 | 12 | export default SpinnerCentered -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/shared/ErrorComponent.jsx: -------------------------------------------------------------------------------- 1 | import React, { useCallback, useState } from 'react' 2 | import HomePage from "../../pages/home/HomePage" 3 | import { Frame, Toast } from '@shopify/polaris' 4 | 5 | function ErrorComponent() { 6 | 7 | const [active, setActive] = useState(true) 8 | 9 | const toggleActive = useCallback(() => setActive((active) => !active), []); 10 | 11 | return ( 12 | 13 | 14 | {active ? : null} 15 | 16 | ) 17 | } 18 | 19 | export default ErrorComponent -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/shared/HeadingWithTooltip.jsx: -------------------------------------------------------------------------------- 1 | import { Text, Tooltip } from '@shopify/polaris' 2 | import React from 'react' 3 | 4 | function HeadingWithTooltip({title, content}) { 5 | return ( 6 | 7 | {title} 8 | 9 | ) 10 | } 11 | 12 | export default HeadingWithTooltip -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/shared/MarkdownViewer.jsx: -------------------------------------------------------------------------------- 1 | import Markdown from 'react-markdown' 2 | import {Box} from '@shopify/polaris' 3 | 4 | 5 | const MarkdownViewer = ({markdown}) => { 6 | 7 | return ( 8 | 9 | {markdown} 10 | 11 | ) 12 | } 13 | 14 | 15 | export default MarkdownViewer -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/tables/TableStore.js: -------------------------------------------------------------------------------- 1 | import {create} from "zustand" 2 | import {devtools} from "zustand/middleware" 3 | 4 | let tableStore = (set)=>({ 5 | selectedItems: [], 6 | setSelectedItems: (selectedItems) => set({ selectedItems: selectedItems }), 7 | 8 | openedLevels: [], 9 | setOpenedLevels: (openedLevels) => set({ openedLevels: openedLevels }), 10 | 11 | }) 12 | 13 | tableStore = devtools(tableStore) 14 | const TableStore = create(tableStore) 15 | export default TableStore -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/tables/cells/cell.css: -------------------------------------------------------------------------------- 1 | .order1Title:hover{ 2 | color: #2C6ECB; 3 | } 4 | 5 | .big-icon .Polaris-Icon__Svg{ 6 | max-width: 20px !important; 7 | max-height: 20px !important; 8 | width: 20px !important; 9 | margin-top: -1px !important; 10 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/AlertsBanner.jsx: -------------------------------------------------------------------------------- 1 | import { Banner, Box, Text, VerticalStack } from '@shopify/polaris' 2 | import React from 'react' 3 | 4 | function AlertsBanner({severity, content, type, onDismiss, index}) { 5 | return ( 6 | onDismiss(index)}> 7 | 8 | 9 | {type} 10 | {content} 11 | 12 | 13 | 14 | ) 15 | } 16 | 17 | export default AlertsBanner -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/agent_team/agentRowCard.css: -------------------------------------------------------------------------------- 1 | .agentStatusColor:not(:hover){ 2 | background-color: inherit !important; 3 | 4 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/agent_team/components/AgentImage.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export const AgentImage = ({ src, alt }: { src: string, alt: string }) => { 4 | return ( 5 |
6 | {alt} 7 |
8 | ) 9 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/agent_team/components/agentResponses/AgentOutput.tsx: -------------------------------------------------------------------------------- 1 | import React from "react" 2 | import { useAgentsStore } from "../../agents.store"; 3 | import ApiGroupOutput from "./ApiGroupOutput"; 4 | 5 | function AgentOutput() { 6 | const { currentAgent } = useAgentsStore(); 7 | 8 | return (() => { 9 | switch (currentAgent?.id) { 10 | case 'GROUP_APIS': 11 | return 12 | case 'FIND_VULNERABILITIES_FROM_SOURCE_CODE': 13 | case 'FIND_SENSITIVE_DATA_TYPES': 14 | case 'FIND_FALSE_POSITIVE': 15 | default: 16 | return <> 17 | } 18 | })() 19 | } 20 | 21 | export default AgentOutput -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/dashboard/new_components/TestSummaryCardsList.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import TestSummaryCard from './TestSummaryCard'; 3 | 4 | function TestSummaryCardsList({ summaryItems }) { 5 | return ( 6 |
7 | {summaryItems.map((item, index) => ( 8 |
{/* Prevent shrinking */} 9 | 10 |
11 | ))} 12 |
13 | ); 14 | } 15 | 16 | export default TestSummaryCardsList; 17 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/home/module.js: -------------------------------------------------------------------------------- 1 | import homeRequests from "./api"; 2 | 3 | const homeFunctions = { 4 | getAllCollections: async function(){ 5 | let allCollections = [] 6 | await homeRequests.getCollections().then((resp)=>{ 7 | allCollections = resp.apiCollections 8 | }) 9 | return allCollections 10 | } 11 | } 12 | 13 | export default homeFunctions -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/issues/IssuesPage/style.css: -------------------------------------------------------------------------------- 1 | /* unread */ 2 | .custom-tag-true .Polaris-Tag { 3 | background-color: #FFF4F4; 4 | } 5 | 6 | .custom-tag-true p { 7 | color: #D72C0D; 8 | } 9 | 10 | /* read */ 11 | .custom-tag-false .Polaris-Tag { 12 | background-color: #F1F8F5; 13 | } 14 | 15 | .custom-tag-false p { 16 | color: #008060; 17 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/observe/PageObserve.jsx: -------------------------------------------------------------------------------- 1 | import { Outlet } from "react-router-dom"; 2 | 3 | const PageObserve = () => { 4 | return ( 5 | 6 | ) 7 | } 8 | 9 | export default PageObserve -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/observe/api_collections/Documented.jsx: -------------------------------------------------------------------------------- 1 | function Documented() { 2 | return ( 3 |
4 | Documented 5 |
6 | ) 7 | } 8 | 9 | export default Documented -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/observe/api_collections/run_test_suites.css: -------------------------------------------------------------------------------- 1 | .testSuiteCard .Polaris-Choice.Polaris-Checkbox__ChoiceLabel { 2 | max-width: 100% !important; 3 | } 4 | 5 | .testSuiteCard .Polaris-Choice__Label { 6 | overflow: hidden !important; 7 | } 8 | 9 | .testSuiteDisclosureButton svg { 10 | fill: #5C5F62 !important; 11 | } 12 | 13 | .testSuiteCard .Polaris-VerticalStack{ 14 | box-shadow: 0px 1px 2px 0px #00000026, 0px 0px 5px 0px #0000000D; 15 | border-radius: 0.5rem; 16 | overflow: hidden; 17 | } 18 | 19 | .removeAllButton .Polaris-Button--plain.Polaris-Button--disabled svg { 20 | fill: var(--p-color-icon-disabled) !important; 21 | } 22 | 23 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/observe/data_types/DataTypes.css: -------------------------------------------------------------------------------- 1 | .footer-save{ 2 | display: flex; 3 | justify-content: end; 4 | } 5 | 6 | .tag-button .Polaris-Button{ 7 | padding-bottom: 5px !important; 8 | padding-top: 5px !important; 9 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/quick_start/components/BitBucketSource.jsx: -------------------------------------------------------------------------------- 1 | import SourceCodeRepos from "./shared/SourceCodeRepos"; 2 | 3 | function BitBucketSource() { 4 | return ( 5 | 10 | 11 | ) 12 | } 13 | 14 | 15 | export default BitBucketSource -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/quick_start/components/GithubSource.jsx: -------------------------------------------------------------------------------- 1 | import SourceCodeRepos from "./shared/SourceCodeRepos"; 2 | 3 | function GithubSource() { 4 | return ( 5 | 10 | 11 | ) 12 | } 13 | 14 | 15 | export default GithubSource -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/quick_start/components/shared/BannerComponent.jsx: -------------------------------------------------------------------------------- 1 | import { Banner, Button } from '@shopify/polaris' 2 | import React from 'react' 3 | 4 | function BannerComponent({title,docsUrl,content}) { 5 | 6 | const openLink = () => { 7 | window.open(docsUrl) 8 | } 9 | return ( 10 |
11 | 12 | {content} 13 |
14 | 15 |
16 |
17 | ) 18 | } 19 | 20 | export default BannerComponent -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/quick_start/components/shared/FutureConnection.jsx: -------------------------------------------------------------------------------- 1 | import { Banner, Text} from '@shopify/polaris' 2 | import React from 'react' 3 | 4 | function FutureConnection() { 5 | return ( 6 |
7 | 8 | 9 | Sorry for the inconvenience, Akto is working on this connector. 10 | Stay tuned! 11 |
12 | If you have an immediate usecase for this, please email us at help@akto.io 13 |
14 |
15 |
16 | ) 17 | } 18 | 19 | export default FutureConnection -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/quick_start/components/shared/InformationBannerComponent.jsx: -------------------------------------------------------------------------------- 1 | import { Banner, Button } from '@shopify/polaris' 2 | import React from 'react' 3 | 4 | function InformationBannerComponent({docsUrl,content}) { 5 | 6 | const openLink = () => { 7 | window.open(docsUrl) 8 | } 9 | return ( 10 |
11 | 12 | {content} 13 | {docsUrl !== '' ? : ""} 14 | 15 |
16 | ) 17 | } 18 | 19 | export default InformationBannerComponent -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/quick_start/quickStartStore.js: -------------------------------------------------------------------------------- 1 | import {create} from "zustand" 2 | import {devtools} from "zustand/middleware" 3 | 4 | let quickStartStore = (set)=>({ 5 | currentConnector: null, 6 | setCurrentConnector:(currentConnector)=>{ 7 | set({currentConnector: currentConnector}) 8 | }, 9 | 10 | active: null, 11 | setActive:(active)=>{ 12 | set({active: active}) 13 | }, 14 | 15 | yamlContent: null, 16 | setYamlContent:(yamlContent)=>{ 17 | set({yamlContent: yamlContent}) 18 | }, 19 | }) 20 | 21 | quickStartStore = devtools(quickStartStore) 22 | const QuickStartStore = create(quickStartStore) 23 | 24 | export default QuickStartStore -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/billing/billing.css: -------------------------------------------------------------------------------- 1 | .stigg-subscription-usage-layout { 2 | border: 0px !important; 3 | padding: 12px 0px !important; 4 | } 5 | 6 | .stigg-payment-details-section-layout { 7 | border: 0px !important; 8 | padding: 12px 0px !important; 9 | } 10 | 11 | .stigg-customer-portal-subscriptions-overview { 12 | border: 0px !important; 13 | padding: 12px 24px !important; 14 | } 15 | 16 | .stigg-watermark { 17 | display: none; 18 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/health_logs/HealthLogs.jsx: -------------------------------------------------------------------------------- 1 | import { Page } from "@shopify/polaris" 2 | import Logs from "./Logs" 3 | 4 | 5 | const HealthLogs = () => { 6 | 7 | return ( 8 | 12 | 13 | 14 | ) 15 | } 16 | 17 | export default HealthLogs -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/integrations/ApiTokens.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import TokensLayout from './TokensLayout' 3 | import func from '@/util/func'; 4 | 5 | function ApiTokens() { 6 | let cardContent = "Seamlessly enhance your web application security with Akto API integration, empowering you to efficiently detect vulnerabilities, analyze and intercept web traffic, and fortify your digital defenses. " 7 | return ( 8 | 9 | ) 10 | } 11 | 12 | export default ApiTokens -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/integrations/BurpSuite.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import TokensLayout from './TokensLayout' 3 | import func from '@/util/func'; 4 | 5 | function BurpSuite() { 6 | let cardContent = "Seamlessly enhance your web application security with Burp Suite integration, empowering you to efficiently detect vulnerabilities, analyze and intercept web traffic, and fortify your digital defenses. " 7 | return ( 8 | 9 | ) 10 | } 11 | 12 | export default BurpSuite -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/integrations/CICD.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import TokensLayout from './TokensLayout' 3 | import func from '@/util/func'; 4 | 5 | function CICD() { 6 | let cardContent = "Seamlessly enhance your web application security with CI/CD integration, empowering you to efficiently detect vulnerabilities, analyze and intercept web traffic, and fortify your digital defenses. " 7 | return ( 8 | 9 | ) 10 | } 11 | 12 | export default CICD -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/integrations/components/LineComponent.jsx: -------------------------------------------------------------------------------- 1 | import { Box, HorizontalStack, Text } from '@shopify/polaris' 2 | import React from 'react' 3 | 4 | function LineComponent({title,value}){ 5 | return( 6 | 7 | 8 | 9 | {title}: 10 | 11 | 12 | {value} 13 | 14 | ) 15 | } 16 | 17 | export default LineComponent -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/integrations/gmailWebhooks/GmailWebhook.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import WebhooksCore from '../webhookLayout/WebhooksCore' 3 | 4 | function GmailWebhook() { 5 | return ( 6 | 7 | ) 8 | } 9 | 10 | export default GmailWebhook -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/integrations/gmailWebhooks/GmailWebhookCore.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import WebhookCore from '../webhookLayout/WebhookCore' 3 | 4 | function GmailWebhookCore() { 5 | return ( 6 | 7 | ) 8 | } 9 | 10 | export default GmailWebhookCore -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/integrations/teamsWebhooks/TeamsWebhooks.jsx: -------------------------------------------------------------------------------- 1 | import WebhooksCore from "../webhookLayout/WebhooksCore" 2 | 3 | function TeamsWebhooks() { 4 | return ( 5 | 6 | ) 7 | } 8 | 9 | export default TeamsWebhooks -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/integrations/webhooks/Webhooks.jsx: -------------------------------------------------------------------------------- 1 | 2 | import WebhooksCore from "../webhookLayout/WebhooksCore" 3 | 4 | function Webhooks() { 5 | return ( 6 | 7 | ) 8 | } 9 | export default Webhooks -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/integrations/webhooks/webhooksStore.js: -------------------------------------------------------------------------------- 1 | import {create} from "zustand" 2 | import {devtools} from "zustand/middleware" 3 | 4 | let webhooksStore = (set)=>({ 5 | customWebhooks: [], 6 | setCustomWebhooks: (customWebhooks) => set({ customWebhooks: customWebhooks }), 7 | }) 8 | 9 | webhooksStore = devtools(webhooksStore) 10 | const WebhooksStore = create(webhooksStore) 11 | export default WebhooksStore 12 | 13 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/rbac/utils.js: -------------------------------------------------------------------------------- 1 | import { ActionList, Avatar, Banner, Box, Button, HorizontalStack, Icon, LegacyCard, Link, Page, Popover, ResourceItem, ResourceList, Text, Modal, TextField } from "@shopify/polaris" 2 | 3 | const usersCollectionRenderItem = (item) => { 4 | const { id, collectionName } = item; 5 | 6 | return ( 7 | 8 | {collectionName} 9 | 10 | ); 11 | } 12 | 13 | export { usersCollectionRenderItem } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/settings.css: -------------------------------------------------------------------------------- 1 | .Polaris-HorizontalStack { 2 | align-items: center !important; 3 | } 4 | .Polaris-ResourceItem__Actions { 5 | display: flex !important; 6 | } 7 | .Polaris-LegacyCard__Section:first-child > .Polaris-LegacyCard__Header { 8 | padding: 0 !important; 9 | } 10 | 11 | .Polaris-LegacyCard__Header > .Polaris-LegacyStack--alignmentBaseline { 12 | align-items: center; 13 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/settings/tags/api.js: -------------------------------------------------------------------------------- 1 | import request from "@/util/request" 2 | 3 | const tagsApi = { 4 | fetchTagConfigs() { 5 | return request({ 6 | url: '/api/fetchTagConfigs', 7 | method: 'post', 8 | data: { } 9 | }) 10 | }, 11 | saveTagConfig(name, keyOperator, keyConditionFromUsers, createNew,active) { 12 | return request({ 13 | url: '/api/saveTagConfig', 14 | method: 'post', 15 | data: { 16 | name,keyOperator,keyConditionFromUsers, createNew, active 17 | } 18 | 19 | }) 20 | }, 21 | } 22 | 23 | export default tagsApi -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/testing/PageTesting.jsx: -------------------------------------------------------------------------------- 1 | import { Outlet } from "react-router-dom"; 2 | 3 | const PageTesting = () => { 4 | 5 | return ( 6 | 7 | ) 8 | } 9 | 10 | export default PageTesting -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/testing/SingleTestRunPage/style.css: -------------------------------------------------------------------------------- 1 | .filterClass .Polaris-Filters__FiltersWrapper { 2 | border-bottom:0 3 | } 4 | 5 | .div-link{ 6 | cursor: pointer; 7 | } 8 | .div-link:hover{ 9 | border-bottom: 1px solid #B98900; 10 | } 11 | 12 | .banner-wrapper .Polaris-Banner--withinContentContainer{ 13 | border-radius: 0px !important; 14 | border: unset !important; 15 | } 16 | 17 | .banner-wrapper .Polaris-Banner--statusCritical { 18 | background-color: #FFF4F4 !important; 19 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/testing/TestRoleSettings/TestRoleConstants.jsx: -------------------------------------------------------------------------------- 1 | export const HARDCODED = "HARDCODED" 2 | export const LOGIN_REQUEST = "LOGIN_REQUEST" 3 | export const TLS_AUTH = "TLS_AUTH" -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/testing/configurations/ConfigureTestCollectionPropertyDialog.jsx: -------------------------------------------------------------------------------- 1 | function CustomAuthTestCollectionPropertyDialog({name, type, previousValues}) { 2 | 3 | 4 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/testing/testSuite/flyLayoutSuite.css: -------------------------------------------------------------------------------- 1 | .category-list:hover, .category-lists-item:hover{ 2 | background-color: var(--p-color-bg-hover) !important; 3 | } 4 | 5 | .category-lists-item:hover h3 { 6 | color: var(--p-color-text) !important; 7 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/BD.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/BF.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/CH.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/ID.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/IE.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/JP.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/LC.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/MC.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/MT.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/PL.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/PW.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/SO.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/UA.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/VN.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/threat_detection/components/flags/YE.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/main/TokenValidator.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { useEffect } from 'react' 3 | import { useNavigate } from 'react-router-dom' 4 | import SessionStore from './SessionStore' 5 | 6 | function TokenValidator() { 7 | 8 | let navigate = useNavigate() 9 | const accessToken = SessionStore(state => state.accessToken) 10 | useEffect(() => { 11 | console.log(accessToken) 12 | if (accessToken === null || accessToken === '') { 13 | navigate('/login') 14 | } else { 15 | navigate('/dashboard/observe/inventory') 16 | } 17 | },[accessToken]) 18 | return ( 19 | <> 20 | ) 21 | } 22 | 23 | export default TokenValidator -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/main/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/signup/pages/PageBusinessEmail.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Auth0Redirects from '../components/Auth0Redirects' 3 | 4 | function PageBusinessEmail() { 5 | return ( 6 | 10 | ) 11 | } 12 | 13 | export default PageBusinessEmail -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/signup/pages/PageCheckInbox.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Auth0Redirects from '../components/Auth0Redirects' 3 | 4 | function PageCheckInbox() { 5 | return ( 6 | 10 | ) 11 | } 12 | 13 | export default PageCheckInbox -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/apps/signup/styles.css: -------------------------------------------------------------------------------- 1 | .akto-logo .Polaris-Avatar__Image{ 2 | height: unset !important; 3 | } 4 | 5 | .akto-logo .Polaris-Avatar__size2xl--experimental { 6 | width: 117px !important; 7 | height: 38px !important; 8 | } 9 | 10 | .login-page .Polaris-Frame__Main{ 11 | background: var(--white) !important; 12 | } -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/src/util/history.js: -------------------------------------------------------------------------------- 1 | export const history = { 2 | navigate: null, 3 | location: null 4 | }; -------------------------------------------------------------------------------- /apps/dashboard/web/polaris_web/web/sw.js: -------------------------------------------------------------------------------- 1 | console.log('service worker msgs') 2 | 3 | self.addEventListener('fetch', function(event) { 4 | // console.log(event.request.url); 5 | }); 6 | 7 | self.addEventListener('push', function(event) { 8 | if (event.data) { 9 | console.log('Push event!! ', event.data.text()) 10 | self.registration.showNotification('Akto', JSON.parse(event.data.text())) 11 | } else { 12 | console.log('Push event but no data') 13 | } 14 | }) 15 | 16 | self.addEventListener('activate', async () => { 17 | // This will be called only once when the service worker is activated. 18 | console.log('service worker activate') 19 | }) -------------------------------------------------------------------------------- /apps/dashboard/web/public/Nginx.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/burp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/circle_check.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/circle_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/cloudflareWaf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/public/cloudflareWaf.png -------------------------------------------------------------------------------- /apps/dashboard/web/public/four_sq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/g2-badge-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/public/g2-badge-1.png -------------------------------------------------------------------------------- /apps/dashboard/web/public/g2-badge-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/public/g2-badge-2.png -------------------------------------------------------------------------------- /apps/dashboard/web/public/info_filled_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/issues-event-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/kong.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Akto", 3 | "name": "Akto", 4 | "icons": [ 5 | { 6 | "src": "/public/favicon2.svg", 7 | "sizes": "192x192", 8 | "purpose": "any" 9 | }, 10 | { 11 | "src": "/public/favicon4.svg", 12 | "sizes": "144x144", 13 | "purpose": "any" 14 | }, 15 | { 16 | "src": "/public/favicon3.svg", 17 | "sizes": "512x512", 18 | "purpose": "any" 19 | } 20 | ], 21 | "start_url": "/login", 22 | "background_color": "#FFFFFF", 23 | "display": "standalone", 24 | "scope": "/", 25 | "theme_color": "#6200EA", 26 | "offline_enabled": true, 27 | "gcm_sender_id": "896372355210" 28 | } 29 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/mongo_error_meme.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/public/mongo_error_meme.png -------------------------------------------------------------------------------- /apps/dashboard/web/public/notif_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/productss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/public/productss.png -------------------------------------------------------------------------------- /apps/dashboard/web/public/steps_icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/upgrade.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /apps/dashboard/web/public/vulnerability_footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/public/vulnerability_footer.png -------------------------------------------------------------------------------- /apps/dashboard/web/public/vulnerability_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/public/vulnerability_header.png -------------------------------------------------------------------------------- /apps/dashboard/web/public/xml_api.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/chrome_plugin/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import vuetify from '@/plugins/vuetify' 4 | import router from './router' 5 | import store from './store/module' 6 | 7 | new Vue({ 8 | el: '#app', 9 | vuetify, 10 | router, 11 | store, 12 | render: h => h(App) 13 | }) 14 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/chrome_plugin/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | const PageIntroduction = () => import( '@/apps/chrome_plugin/views/Introduction') 4 | import store from '@/apps/main/store/module' 5 | Vue.use(Router) 6 | 7 | const router = new Router({ 8 | mode: 'history', 9 | base: '/src/pages/index.html', 10 | routes: [ 11 | { 12 | path: '/index.html', 13 | redirect: '/' 14 | }, 15 | { 16 | path: '/', 17 | component: PageIntroduction 18 | } 19 | ] 20 | }) 21 | 22 | export default router -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/chrome_plugin/store/module.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import endpoints from './endpoints' 4 | 5 | Vue.use(Vuex) 6 | 7 | const store = new Vuex.Store({ 8 | namespaced: true, 9 | modules: { 10 | endpoints 11 | } 12 | }) 13 | 14 | export default store -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/api.js: -------------------------------------------------------------------------------- 1 | import request from '@/util/request' 2 | 3 | export default { 4 | fetchActiveLoaders: function () { 5 | return request({ 6 | url: '/api/fetchActiveLoaders', 7 | method: 'post', 8 | data: {} 9 | }) 10 | }, 11 | 12 | closeLoader: function (hexId) { 13 | return request({ 14 | url: '/api/closeLoader', 15 | method: 'post', 16 | data: {hexId} 17 | }) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/nav/api.js: -------------------------------------------------------------------------------- 1 | import request from '@/util/request' 2 | 3 | 4 | export default { 5 | createNewTeam: function (name) { 6 | return request({ 7 | url: 'api/createNewTeam', 8 | method: 'post', 9 | data: { 10 | name 11 | } 12 | }) 13 | } 14 | } -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/shared/components/AddTrafficPrompt.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 15 | 16 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/shared/components/Spinner.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | 16 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/shared/components/help/HelpTooltip.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/shared/components/integrations/IntegrationCenter.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/src/apps/dashboard/shared/components/integrations/IntegrationCenter.vue -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/shared/icons/BookBookmark.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/shared/icons/NGINX.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/shared/icons/PlusIcon.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/util.js: -------------------------------------------------------------------------------- 1 | export default { 2 | goToAccount: function (accountId, obj) { 3 | 4 | } 5 | } -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/views/observe/inventory/Observe.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/views/observe/misc/api.js: -------------------------------------------------------------------------------- 1 | import request from '@/util/request' 2 | 3 | export default { 4 | fetchParamsStatus() { 5 | return request({ 6 | url: '/api/fetchParamsStatus', 7 | method: 'post', 8 | data: {} 9 | }) 10 | }, 11 | } 12 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/views/quickstart/components/AwsTrafficMirroring.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 16 | 17 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/views/settings/components/tag_configs/TagSettings.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/src/apps/dashboard/views/settings/components/tag_configs/TagSettings.vue -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/views/settings/components/traffic_metrics/api.js: -------------------------------------------------------------------------------- 1 | import request from '@/util/request' 2 | 3 | export default { 4 | fetchTrafficMetrics(groupBy, startTimestamp, endTimestamp,names, host) { 5 | return request({ 6 | url: '/api/fetchTrafficMetrics', 7 | method: 'post', 8 | data: {groupBy, startTimestamp, endTimestamp, names, host} 9 | }).then((resp) => { 10 | return resp 11 | }) 12 | }, 13 | fetchTrafficMetricsDesciptions() { 14 | return request({ 15 | url: '/api/fetchTrafficMetricsDesciptions', 16 | method: 'post', 17 | data: {} 18 | }).then((resp) => { 19 | return resp 20 | }) 21 | }, 22 | } -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/views/testing/components/CreateTestingRun.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/dashboard/views/today/components/APIDetails.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/login/store/index.js: -------------------------------------------------------------------------------- 1 | import auth from './modules/auth/module' 2 | 3 | export {auth} -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/login/store/modules/auth/api.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/src/apps/login/store/modules/auth/api.js -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/main/ExpiredApp.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 18 | 19 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/apps/main/router/singlePageIndex.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Router from 'vue-router' 3 | Vue.use(Router) 4 | 5 | const router = new Router({ 6 | mode: 'history', 7 | base: process.env.BASE_URL, 8 | routes: [ 9 | { 10 | path: '*' 11 | } 12 | ] 13 | }) 14 | 15 | export default router -------------------------------------------------------------------------------- /apps/dashboard/web/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/dashboard/web/src/assets/logo.png -------------------------------------------------------------------------------- /apps/dashboard/web/src/assets/logo_facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apps/dashboard/web/src/util/constants.js: -------------------------------------------------------------------------------- 1 | export default { 2 | 3 | DISCOVERED: 'Discovered' 4 | 5 | } -------------------------------------------------------------------------------- /apps/dashboard/web/sw.js: -------------------------------------------------------------------------------- 1 | console.log('service worker msgs') 2 | 3 | self.addEventListener('fetch', function(event) { 4 | // console.log(event.request.url); 5 | }); 6 | 7 | self.addEventListener('push', function(event) { 8 | if (event.data) { 9 | console.log('Push event!! ', event.data.text()) 10 | self.registration.showNotification('Akto', JSON.parse(event.data.text())) 11 | } else { 12 | console.log('Push event but no data') 13 | } 14 | }) 15 | 16 | self.addEventListener('activate', async () => { 17 | // This will be called only once when the service worker is activated. 18 | console.log('service worker activate') 19 | }) -------------------------------------------------------------------------------- /apps/data-ingestion-service/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jetty:9.4-jre8 2 | USER root 3 | RUN apt-get update -y 4 | RUN apt-get install -y --no-install-recommends libpcap-dev 5 | ADD ./target/data-ingestion-service.war /var/lib/jetty/webapps/root.war 6 | RUN echo "--module=http-forwarded" > /var/lib/jetty/start.d/http-forwarded.ini 7 | RUN echo "jetty.httpConfig.sendServerVersion=false" > /var/lib/jetty/start.d/server.ini 8 | RUN echo "org.slf4j.simpleLogger.log.org.eclipse.jetty.annotations.AnnotationParser=ERROR" >> /var/lib/jetty/start.d/server.ini 9 | EXPOSE 9091 -------------------------------------------------------------------------------- /apps/data-ingestion-service/src/main/java/com/akto/listener/InitializerListener.java: -------------------------------------------------------------------------------- 1 | package com.akto.listener; 2 | 3 | import javax.servlet.ServletContextListener; 4 | 5 | import com.akto.utils.KafkaUtils; 6 | 7 | 8 | public class InitializerListener implements ServletContextListener { 9 | 10 | @Override 11 | public void contextInitialized(javax.servlet.ServletContextEvent sce) { 12 | KafkaUtils kafkaUtils = new KafkaUtils(); 13 | kafkaUtils.initKafkaProducer(); 14 | } 15 | 16 | @Override 17 | public void contextDestroyed(javax.servlet.ServletContextEvent sce) { 18 | // override 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /apps/data-ingestion-service/src/main/java/com/akto/listener/RequestEventListener.java: -------------------------------------------------------------------------------- 1 | package com.akto.listener; 2 | 3 | import com.akto.dao.context.Context; 4 | 5 | import javax.servlet.ServletRequestEvent; 6 | import javax.servlet.ServletRequestListener; 7 | 8 | public class RequestEventListener implements ServletRequestListener { 9 | 10 | @Override 11 | public void requestInitialized(ServletRequestEvent sre) { 12 | Context.resetContextThreadLocals(); 13 | } 14 | 15 | @Override 16 | public void requestDestroyed(ServletRequestEvent sre) { 17 | Context.resetContextThreadLocals(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /apps/data-ingestion-service/src/main/resources/version.txt: -------------------------------------------------------------------------------- 1 | ${akto-image-tag} 2 | ${akto-build-time} 3 | ${akto-release-version} -------------------------------------------------------------------------------- /apps/database-abstractor/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jetty:9.4-jre8 2 | USER root 3 | RUN apt-get update -y 4 | RUN apt-get install -y --no-install-recommends libpcap-dev 5 | ADD ./target/database-abstractor.war /var/lib/jetty/webapps/root.war 6 | RUN echo "--module=http-forwarded" > /var/lib/jetty/start.d/http-forwarded.ini 7 | RUN echo "jetty.httpConfig.sendServerVersion=false" > /var/lib/jetty/start.d/server.ini 8 | RUN echo "org.slf4j.simpleLogger.log.org.eclipse.jetty.annotations.AnnotationParser=ERROR" >> /var/lib/jetty/start.d/server.ini 9 | EXPOSE 9000 -------------------------------------------------------------------------------- /apps/database-abstractor/src/main/java/com/akto/listener/RequestEventListener.java: -------------------------------------------------------------------------------- 1 | package com.akto.listener; 2 | 3 | import com.akto.dao.context.Context; 4 | 5 | import javax.servlet.ServletRequestEvent; 6 | import javax.servlet.ServletRequestListener; 7 | 8 | public class RequestEventListener implements ServletRequestListener { 9 | 10 | @Override 11 | public void requestInitialized(ServletRequestEvent sre) { 12 | Context.resetContextThreadLocals(); 13 | } 14 | 15 | @Override 16 | public void requestDestroyed(ServletRequestEvent sre) { 17 | Context.resetContextThreadLocals(); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /apps/internal/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM jetty:9.4-jre8 2 | USER root 3 | RUN apt-get update -y 4 | RUN apt-get install -y --no-install-recommends libpcap-dev 5 | ADD ./target/internal.war /var/lib/jetty/webapps/root.war 6 | RUN echo "--module=http-forwarded" > /var/lib/jetty/start.d/http-forwarded.ini 7 | RUN echo "jetty.httpConfig.sendServerVersion=false" > /var/lib/jetty/start.d/server.ini 8 | RUN echo "org.slf4j.simpleLogger.log.org.eclipse.jetty.annotations.AnnotationParser=ERROR" >> /var/lib/jetty/start.d/server.ini 9 | EXPOSE 8080 -------------------------------------------------------------------------------- /apps/mini-runtime/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | target/ 3 | output/ 4 | gen/ 5 | yarn.lock 6 | .DS_Store 7 | *.iml 8 | *.pem 9 | *.env 10 | .settings 11 | .project 12 | .classpath -------------------------------------------------------------------------------- /apps/mini-runtime/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk 2 | WORKDIR /app 3 | COPY ./target/mini-runtime-1.0-SNAPSHOT-jar-with-dependencies.jar /app/mini-runtime-1.0-SNAPSHOT-jar-with-dependencies.jar 4 | CMD "java" "-XX:+ExitOnOutOfMemoryError" "-jar" "/app/mini-runtime-1.0-SNAPSHOT-jar-with-dependencies.jar" -------------------------------------------------------------------------------- /apps/mini-runtime/README.md: -------------------------------------------------------------------------------- 1 | # api-runtime -------------------------------------------------------------------------------- /apps/mini-runtime/src/main/java/com/akto/hybrid_dependency/store/BFStore.java: -------------------------------------------------------------------------------- 1 | package com.akto.hybrid_dependency.store; 2 | 3 | import com.google.common.hash.BloomFilter; 4 | 5 | public class BFStore extends Store{ 6 | 7 | BloomFilter bf; 8 | 9 | public BFStore(BloomFilter bf) { 10 | this.bf = bf; 11 | } 12 | 13 | @Override 14 | public boolean contains(String val) { 15 | return bf.mightContain(val); 16 | } 17 | 18 | @Override 19 | public boolean add(String val) { 20 | return bf.put(val); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /apps/mini-runtime/src/main/java/com/akto/hybrid_dependency/store/HashSetStore.java: -------------------------------------------------------------------------------- 1 | package com.akto.hybrid_dependency.store; 2 | 3 | import java.util.HashSet; 4 | import java.util.Set; 5 | 6 | public class HashSetStore extends Store { 7 | 8 | int maxCount; 9 | 10 | public HashSetStore(int maxCount) { 11 | this.maxCount = maxCount; 12 | } 13 | 14 | private final Set set = new HashSet<>(); 15 | @Override 16 | public boolean contains(String val) { 17 | return set.contains(val.hashCode()); 18 | } 19 | 20 | @Override 21 | public boolean add(String val) { 22 | if (set.size() >= maxCount) return false; 23 | return set.add(val.hashCode()); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /apps/mini-runtime/src/main/java/com/akto/hybrid_dependency/store/Store.java: -------------------------------------------------------------------------------- 1 | package com.akto.hybrid_dependency.store; 2 | 3 | public abstract class Store { 4 | 5 | public abstract boolean contains(String val); 6 | 7 | public abstract boolean add(String val); 8 | } 9 | -------------------------------------------------------------------------------- /apps/mini-runtime/src/main/java/com/akto/hybrid_runtime/ConcurrentHashSet.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/mini-runtime/src/main/java/com/akto/hybrid_runtime/ConcurrentHashSet.java -------------------------------------------------------------------------------- /apps/mini-runtime/src/main/resources/version.txt: -------------------------------------------------------------------------------- 1 | ${akto-image-tag} 2 | ${akto-build-time} 3 | -------------------------------------------------------------------------------- /apps/source-code-analyser/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk 2 | WORKDIR /app 3 | COPY ./target/source-code-analyser-1.0-SNAPSHOT-jar-with-dependencies.jar /app/source-code-analyser-1.0-SNAPSHOT-jar-with-dependencies.jar 4 | CMD "java" "-XX:+ExitOnOutOfMemoryError" "-jar" "/app/source-code-analyser-1.0-SNAPSHOT-jar-with-dependencies.jar" -------------------------------------------------------------------------------- /apps/testing-cli/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM amazoncorretto:8 2 | WORKDIR /app 3 | COPY ./target/testing-cli-1.0-SNAPSHOT-jar-with-dependencies.jar /app/testing-cli-1.0-SNAPSHOT-jar-with-dependencies.jar 4 | CMD "java" "-XX:+ExitOnOutOfMemoryError" "-jar" "/app/testing-cli-1.0-SNAPSHOT-jar-with-dependencies.jar" -------------------------------------------------------------------------------- /apps/testing-cli/src/main/resources/version.txt: -------------------------------------------------------------------------------- 1 | ${akto-image-tag} 2 | ${akto-build-time} 3 | ${akto-release-version} -------------------------------------------------------------------------------- /apps/testing/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM amazoncorretto:8 2 | 3 | WORKDIR /app 4 | 5 | RUN yum update -y && yum install -y procps 6 | 7 | COPY ./target/testing-1.0-SNAPSHOT-jar-with-dependencies.jar /app/testing-1.0-SNAPSHOT-jar-with-dependencies.jar 8 | COPY start.sh /app/start.sh 9 | 10 | RUN chmod +x /app/start.sh 11 | 12 | CMD ["/app/start.sh"] 13 | -------------------------------------------------------------------------------- /apps/testing/src/main/java/com/akto/testing/NucleiExecutor.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/apps/testing/src/main/java/com/akto/testing/NucleiExecutor.java -------------------------------------------------------------------------------- /apps/testing/src/main/java/com/akto/testing/workflow_node_executor/GraphExecutor.java: -------------------------------------------------------------------------------- 1 | package com.akto.testing.workflow_node_executor; 2 | 3 | import com.akto.dto.testing.GraphExecutorRequest; 4 | import com.akto.dto.testing.GraphExecutorResult; 5 | import com.akto.dto.testing.TestingRunResult; 6 | import com.akto.test_editor.execution.Memory; 7 | 8 | 9 | import java.util.List; 10 | 11 | public abstract class GraphExecutor { 12 | public abstract GraphExecutorResult executeGraph(GraphExecutorRequest graphExecutorRequest, boolean debug, List testLogs, Memory memory); 13 | } 14 | -------------------------------------------------------------------------------- /apps/testing/src/main/java/com/akto/testing/workflow_node_executor/GraphExecutorFactory.java: -------------------------------------------------------------------------------- 1 | package com.akto.testing.workflow_node_executor; 2 | 3 | import com.akto.dto.testing.GraphExecutorRequest; 4 | 5 | public class GraphExecutorFactory { 6 | 7 | 8 | public static GraphExecutor fetchExecutor(GraphExecutorRequest graphExecutorRequest, boolean allowAllCombinations) { 9 | 10 | if (graphExecutorRequest.getExecutionType().equalsIgnoreCase("conditional")) { 11 | return new ConditionalGraphExecutor(allowAllCombinations); 12 | } 13 | 14 | return new LinearGraphExecutor(); 15 | 16 | } 17 | 18 | 19 | } 20 | -------------------------------------------------------------------------------- /apps/threat-detection-backend/.gitignore: -------------------------------------------------------------------------------- 1 | *.mmdb -------------------------------------------------------------------------------- /apps/threat-detection-backend/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk 2 | WORKDIR /app 3 | COPY ./target/threat-detection-backend-1.0-SNAPSHOT-jar-with-dependencies.jar /app/threat-detection-backend-1.0-SNAPSHOT-jar-with-dependencies.jar 4 | CMD "java" "-XX:+ExitOnOutOfMemoryError" "-jar" "/app/threat-detection-backend-1.0-SNAPSHOT-jar-with-dependencies.jar" -------------------------------------------------------------------------------- /apps/threat-detection-backend/src/main/java/com/akto/threat/backend/constants/KafkaTopic.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.backend.constants; 2 | 3 | public class KafkaTopic { 4 | public static class ThreatDetection { 5 | public static final String INTERNAL_DB_MESSAGES = "akto.threat_detection.internal_db_messages"; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /apps/threat-detection-backend/src/main/java/com/akto/threat/backend/constants/MongoDBCollection.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.backend.constants; 2 | 3 | public class MongoDBCollection { 4 | public static class ThreatDetection { 5 | public static final String MALICIOUS_EVENTS = "malicious_events"; 6 | public static final String THREAT_CONFIGURATION = "threat_configuration"; 7 | public static final String AGGREGATE_SAMPLE_MALICIOUS_REQUESTS = 8 | "aggregate_sample_malicious_requests"; 9 | public static final String SPLUNK_INTEGRATION_CONFIG = 10 | "splunk_integration_config"; 11 | public static final String ACTOR_INFO = 12 | "actor_info"; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /apps/threat-detection-backend/src/main/java/com/akto/threat/backend/interceptors/Constants.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.backend.interceptors; 2 | 3 | import static io.grpc.Metadata.ASCII_STRING_MARSHALLER; 4 | 5 | import io.grpc.Context; 6 | import io.grpc.Metadata; 7 | 8 | public class Constants { 9 | public static final Metadata.Key AUTHORIZATION_METADATA_KEY = 10 | Metadata.Key.of("Authorization", ASCII_STRING_MARSHALLER); 11 | public static final Context.Key ACCOUNT_ID_CONTEXT_KEY = Context.key("accountId"); 12 | 13 | private Constants() { 14 | throw new AssertionError(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /apps/threat-detection-backend/src/main/java/com/akto/threat/backend/router/ARouter.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.backend.router; 2 | 3 | import io.vertx.core.Vertx; 4 | import io.vertx.ext.web.Router; 5 | 6 | public interface ARouter { 7 | 8 | Router setup(Vertx vertx); 9 | } 10 | -------------------------------------------------------------------------------- /apps/threat-detection-backend/src/main/java/com/akto/threat/backend/utils/KafkaUtils.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.backend.utils; 2 | 3 | import com.google.gson.Gson; 4 | import com.mongodb.BasicDBObject; 5 | 6 | public class KafkaUtils { 7 | 8 | private static final Gson gson = new Gson(); 9 | 10 | public static String generateMsg(Object writes, String eventType, String accountId) { 11 | BasicDBObject obj = new BasicDBObject(); 12 | obj.put("eventType", eventType); 13 | String payloadStr = gson.toJson(writes); 14 | obj.put("payload", payloadStr); 15 | obj.put("accountId", accountId); 16 | 17 | return obj.toString(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apps/threat-detection/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | target/ 3 | output/ 4 | gen/ 5 | yarn.lock 6 | .DS_Store 7 | *.iml 8 | *.pem 9 | *.env 10 | .settings 11 | .project 12 | .classpath -------------------------------------------------------------------------------- /apps/threat-detection/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk 2 | WORKDIR /app 3 | COPY ./target/threat-detection-1.0-SNAPSHOT-jar-with-dependencies.jar /app/threat-detection-1.0-SNAPSHOT-jar-with-dependencies.jar 4 | CMD "java" "-XX:+ExitOnOutOfMemoryError" "-jar" "/app/threat-detection-1.0-SNAPSHOT-jar-with-dependencies.jar" 5 | -------------------------------------------------------------------------------- /apps/threat-detection/README.md: -------------------------------------------------------------------------------- 1 | # api-threat-detection -------------------------------------------------------------------------------- /apps/threat-detection/src/main/java/com/akto/threat/detection/actor/ActorGenerator.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.detection.actor; 2 | 3 | import com.akto.dto.HttpResponseParams; 4 | 5 | import java.util.Optional; 6 | 7 | public interface ActorGenerator { 8 | 9 | Optional generate(HttpResponseParams responseParams); 10 | } 11 | -------------------------------------------------------------------------------- /apps/threat-detection/src/main/java/com/akto/threat/detection/constants/KafkaTopic.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.detection.constants; 2 | 3 | public class KafkaTopic { 4 | public static class ThreatDetection { 5 | public static final String MALICIOUS_EVENTS = "akto.threat_detection.malicious_events"; 6 | public static final String ALERTS = "akto.threat_detection.alerts"; 7 | } 8 | } -------------------------------------------------------------------------------- /apps/threat-detection/src/main/java/com/akto/threat/detection/constants/RedisKeyInfo.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.detection.constants; 2 | 3 | public class RedisKeyInfo { 4 | 5 | public static final String API_COUNTER_KEY_PREFIX = "apiCount"; 6 | public static final String API_COUNTER_SORTED_SET = "apiCountSet"; 7 | public static final String API_COUNTER_RELAY_LAST_UPDATE_TS = "apiCountRelayLastUpdateTs"; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /apps/threat-detection/src/main/java/com/akto/threat/detection/smart_event_detector/window_based/Bin.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.detection.smart_event_detector.window_based; 2 | 3 | public class Bin { 4 | int binId; 5 | long count; 6 | 7 | public Bin(int binId, long count) { 8 | this.binId = binId; 9 | this.count = count; 10 | } 11 | 12 | public int getBinId() { 13 | return binId; 14 | } 15 | 16 | public long getCount() { 17 | return count; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /apps/threat-detection/src/main/java/com/akto/threat/detection/tasks/Task.java: -------------------------------------------------------------------------------- 1 | package com.akto.threat.detection.tasks; 2 | 3 | public interface Task { 4 | 5 | void run(); 6 | } 7 | -------------------------------------------------------------------------------- /apps/threat-detection/src/main/resources/db/migration/V1__enable_uuid.sql: -------------------------------------------------------------------------------- 1 | -- enabling uuid extension 2 | create extension if not exists "uuid-ossp"; -------------------------------------------------------------------------------- /apps/threat-detection/src/main/resources/db/migration/V3__add_alert_to_backend_column.sql: -------------------------------------------------------------------------------- 1 | alter table threat_detection.malicious_event add column _alerted_to_backend boolean default false; 2 | 3 | -- set all existing rows to false 4 | update threat_detection.malicious_event set _alerted_to_backend = false; 5 | -------------------------------------------------------------------------------- /apps/threat-detection/src/main/resources/version.txt: -------------------------------------------------------------------------------- 1 | ${akto-image-tag} 2 | ${akto-build-time} 3 | ${akto-release-version} 4 | -------------------------------------------------------------------------------- /appspec.yml: -------------------------------------------------------------------------------- 1 | version: 0.0 2 | os: linux 3 | hooks: 4 | AfterInstall: 5 | - location: .github/scripts/deploy-script.sh 6 | timeout: 300 7 | runas: root -------------------------------------------------------------------------------- /buf.gen.remote.yaml: -------------------------------------------------------------------------------- 1 | version: v2 2 | 3 | managed: 4 | enabled: true 5 | 6 | override: 7 | - file_option: java_multiple_files 8 | value: true 9 | 10 | - file_option: java_package_prefix 11 | value: com.akto.proto.generated 12 | 13 | plugins: 14 | - remote: buf.build/protocolbuffers/java:v28.3 15 | out: libs/protobuf/src/main/java 16 | -------------------------------------------------------------------------------- /buf.gen.yaml: -------------------------------------------------------------------------------- 1 | version: v2 2 | 3 | managed: 4 | enabled: true 5 | 6 | override: 7 | - file_option: java_multiple_files 8 | value: true 9 | 10 | - file_option: java_package_prefix 11 | value: com.akto.proto.generated 12 | 13 | plugins: 14 | - protoc_builtin: java 15 | out: libs/protobuf/src/main/java 16 | -------------------------------------------------------------------------------- /docker.env: -------------------------------------------------------------------------------- 1 | AKTO_MONGO_CONN=mongodb://mongo:27017/admini 2 | AKTO_CONFIG_NAME=staging 3 | AKTO_ACCOUNT_NAME=Helios 4 | AKTO_TRAFFIC_BATCH_SIZE=100 5 | AKTO_TRAFFIC_BATCH_TIME_SECS=10 6 | DASHBOARD_MODE=local_deploy 7 | USE_HOSTNAME=true 8 | PUPPETEER_REPLAY_SERVICE_URL=http://akto-puppeteer-replay:3000 9 | SSRF_SERVICE_NAME="https://test-services.akto.io/" -------------------------------------------------------------------------------- /libs/dao/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | package-lock.json 3 | target/ 4 | web/dist/ 5 | yarn.lock 6 | .DS_Store 7 | *.iml 8 | *.pem 9 | 10 | *.env 11 | .settings 12 | .project 13 | .classpath 14 | .idea/ 15 | -------------------------------------------------------------------------------- /libs/dao/README.md: -------------------------------------------------------------------------------- 1 | Build using 2 | ` ~/Downloads/apache-maven-3.6.3/bin/mvn install` 3 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/APIAuthDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.auth.APIAuth; 4 | 5 | public class APIAuthDao extends AccountsContextDao { 6 | 7 | public static final APIAuthDao instance = new APIAuthDao(); 8 | 9 | private APIAuthDao() {} 10 | 11 | @Override 12 | public String getCollName() { 13 | return "api_auth"; 14 | } 15 | 16 | @Override 17 | public Class getClassT() { 18 | return APIAuth.class; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/APIConfigsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.APIConfig; 4 | 5 | public class APIConfigsDao extends CommonContextDao{ 6 | public static final APIConfigsDao instance = new APIConfigsDao(); 7 | 8 | @Override 9 | public String getCollName() { 10 | return "api_configs"; 11 | } 12 | 13 | @Override 14 | public Class getClassT() { 15 | return APIConfig.class; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/APISpecDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.APISpec; 4 | 5 | public class APISpecDao extends AccountsContextDao { 6 | 7 | public static final APISpecDao instance = new APISpecDao(); 8 | 9 | private APISpecDao() {} 10 | 11 | @Override 12 | public String getCollName() { 13 | return "apispec"; 14 | } 15 | 16 | @Override 17 | public Class getClassT() { 18 | return APISpec.class; 19 | } 20 | 21 | public APISpec findById(int id) { 22 | return this.findOne("apiCollectionId", id); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/AccountsContextDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dao.context.Context; 4 | 5 | abstract public class AccountsContextDao extends MCollection { 6 | @Override 7 | public String getDBName() { 8 | return Context.accountId.get()+""; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/AktoDataTypeDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.AktoDataType; 4 | 5 | public class AktoDataTypeDao extends AccountsContextDao { 6 | 7 | public static final AktoDataTypeDao instance = new AktoDataTypeDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "akto_data_type"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return AktoDataType.class; 17 | } 18 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/AktoGptConfigDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.gpt.AktoGptConfig; 4 | 5 | public class AktoGptConfigDao extends AccountsContextDao{ 6 | 7 | public static final AktoGptConfigDao instance = new AktoGptConfigDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "akto_gpt_config"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return AktoGptConfig.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/ApiTokensDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.ApiToken; 4 | import com.mongodb.client.model.Filters; 5 | 6 | public class ApiTokensDao extends CommonContextDao{ 7 | 8 | public static final ApiTokensDao instance = new ApiTokensDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "api_tokens"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return ApiToken.class; 18 | } 19 | 20 | public ApiToken findByKey(String key) { 21 | return instance.findOne(Filters.eq(ApiToken.KEY, key)); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/AttemptsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.Attempt; 4 | 5 | import org.bson.BsonValue; 6 | 7 | import java.util.List; 8 | import java.util.ArrayList; 9 | import java.util.Collection; 10 | 11 | public class AttemptsDao extends AccountsContextDao { 12 | 13 | public static final AttemptsDao instance = new AttemptsDao(); 14 | 15 | private AttemptsDao() {} 16 | 17 | @Override 18 | public String getCollName() { 19 | return "attempts"; 20 | } 21 | 22 | @Override 23 | public Class getClassT() { 24 | return Attempt.class; 25 | } 26 | 27 | public void insertAttempts(List attempts) { 28 | insertMany(attempts); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/AuthMechanismsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import org.bson.conversions.Bson; 7 | 8 | import com.akto.dto.testing.AuthMechanism; 9 | import com.mongodb.BasicDBObject; 10 | import com.mongodb.client.MongoCursor; 11 | import com.mongodb.client.model.Aggregates; 12 | 13 | public class AuthMechanismsDao extends AccountsContextDao { 14 | 15 | public static AuthMechanismsDao instance = new AuthMechanismsDao(); 16 | 17 | @Override 18 | public String getCollName() { 19 | return "auth_mechanisms"; 20 | } 21 | 22 | @Override 23 | public Class getClassT() { 24 | return AuthMechanism.class; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/AzureBoardsIntegrationDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.azure_boards_integration.AzureBoardsIntegration; 4 | 5 | public class AzureBoardsIntegrationDao extends AccountsContextDao { 6 | 7 | public static final AzureBoardsIntegrationDao instance = new AzureBoardsIntegrationDao(); 8 | 9 | 10 | @Override 11 | public String getCollName() { 12 | return "azure_boards_integration"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return AzureBoardsIntegration.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/BackwardCompatibilityDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.BackwardCompatibility; 4 | 5 | public class BackwardCompatibilityDao extends AccountsContextDao{ 6 | 7 | public static final BackwardCompatibilityDao instance = new BackwardCompatibilityDao(); 8 | @Override 9 | public String getCollName() { 10 | return "backward_compatibility"; 11 | } 12 | 13 | @Override 14 | public Class getClassT() { 15 | return BackwardCompatibility.class; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/BillingContextDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | public abstract class BillingContextDao extends MCollection { 4 | @Override 5 | public String getDBName() { 6 | return "billing"; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/CodeAnalysisRepoDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.CodeAnalysisRepo; 4 | 5 | public class CodeAnalysisRepoDao extends AccountsContextDao{ 6 | 7 | public static final CodeAnalysisRepoDao instance = new CodeAnalysisRepoDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "code_analysis_repos"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return CodeAnalysisRepo.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/CommonContextDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | public abstract class CommonContextDao extends MCollection { 4 | @Override 5 | public String getDBName() { 6 | return "common"; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/ConfigsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.Config; 4 | 5 | public class ConfigsDao extends CommonContextDao { 6 | 7 | public static final ConfigsDao instance = new ConfigsDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "configs"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return Config.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/CustomAuthTypeDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.CustomAuthType; 4 | 5 | public class CustomAuthTypeDao extends AccountsContextDao{ 6 | 7 | public static final CustomAuthTypeDao instance = new CustomAuthTypeDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "custom_auth_type"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return CustomAuthType.class; 17 | } 18 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/CustomDataTypeDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.CustomDataType; 4 | 5 | public class CustomDataTypeDao extends AccountsContextDao{ 6 | 7 | public static final CustomDataTypeDao instance = new CustomDataTypeDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "custom_data_type"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return CustomDataType.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/DibsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.Dibs; 5 | 6 | public class DibsDao extends AccountsContextDao { 7 | 8 | public static final DibsDao instance = new DibsDao(); 9 | 10 | private DibsDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "dibs"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return Dibs.class; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/EndpointInfoDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.akto.dto.type.EndpointInfo; 6 | import com.mongodb.BasicDBObject; 7 | 8 | public class EndpointInfoDao extends AccountsContextDao { 9 | 10 | public static final EndpointInfoDao instance = new EndpointInfoDao(); 11 | 12 | private EndpointInfoDao() {} 13 | 14 | @Override 15 | public String getCollName() { 16 | return "endpoints_info"; 17 | } 18 | 19 | @Override 20 | public Class getClassT() { 21 | return EndpointInfo.class; 22 | } 23 | 24 | public List fetchAllEndpoints() { 25 | return this.findAll(new BasicDBObject()); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/HistoricalDataDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.HistoricalData; 4 | 5 | public class HistoricalDataDao extends AccountsContextDao { 6 | 7 | public static final HistoricalDataDao instance = new HistoricalDataDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "historical_data"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return HistoricalData.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/JiraIntegrationDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.jira_integration.JiraIntegration; 4 | 5 | public class JiraIntegrationDao extends AccountsContextDao { 6 | 7 | public static final JiraIntegrationDao instance = new JiraIntegrationDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "jira_integration"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return JiraIntegration.class; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/KafkaHealthMetricsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.KafkaHealthMetric; 4 | 5 | public class KafkaHealthMetricsDao extends CommonContextDao { 6 | 7 | public static final KafkaHealthMetricsDao instance = new KafkaHealthMetricsDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "kafka_health_metrics"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return KafkaHealthMetric.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/MarkovDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.Markov; 4 | import com.akto.dto.type.SingleTypeInfo; 5 | import com.mongodb.BasicDBObject; 6 | 7 | import java.util.List; 8 | 9 | public class MarkovDao extends AccountsContextDao { 10 | 11 | public static final MarkovDao instance = new MarkovDao(); 12 | 13 | private MarkovDao() {} 14 | 15 | @Override 16 | public String getCollName() { 17 | return "markov"; 18 | } 19 | 20 | @Override 21 | public Class getClassT() { 22 | return Markov.class; 23 | } 24 | 25 | public List fetchAll() { 26 | return this.findAll(new BasicDBObject()); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/ModifyHostDetailsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.dependency_flow.ModifyHostDetail; 4 | 5 | public class ModifyHostDetailsDao extends AccountsContextDao{ 6 | 7 | public static ModifyHostDetailsDao instance = new ModifyHostDetailsDao(); 8 | 9 | @Override 10 | public Class getClassT() { 11 | return ModifyHostDetail.class; 12 | } 13 | 14 | @Override 15 | public String getCollName() { 16 | return "modify_host_details"; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/OtpMessagesDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.OTPMessage; 4 | 5 | public class OtpMessagesDao extends AccountsContextDao{ 6 | 7 | public static final OtpMessagesDao instance = new OtpMessagesDao(); 8 | @Override 9 | public String getCollName() { 10 | return "otp_messages"; 11 | } 12 | 13 | @Override 14 | public Class getClassT() { 15 | return OTPMessage.class; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/OtpTestDataDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.testing.OtpTestData; 4 | 5 | public class OtpTestDataDao extends CommonContextDao { 6 | 7 | public static OtpTestDataDao instance = new OtpTestDataDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "otp_test_data"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return OtpTestData.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/PendingInviteCodesDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.PendingInviteCode; 4 | 5 | public class PendingInviteCodesDao extends CommonContextDao{ 6 | 7 | public static PendingInviteCodesDao instance = new PendingInviteCodesDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "invite_codes"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return PendingInviteCode.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/PupeteerLogsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | public class PupeteerLogsDao extends LogsDao { 4 | 5 | public static final PupeteerLogsDao instance = new PupeteerLogsDao(); 6 | 7 | @Override 8 | public String getCollName() { 9 | return "logs_puppeteer"; 10 | } 11 | 12 | } 13 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/RecordedLoginInputDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.RecordedLoginFlowInput; 4 | 5 | public class RecordedLoginInputDao extends AccountsContextDao { 6 | 7 | public static final RecordedLoginInputDao instance = new RecordedLoginInputDao(); 8 | @Override 9 | public String getCollName() { 10 | return "recorded_login_flow_input"; 11 | } 12 | 13 | @Override 14 | public Class getClassT() { 15 | return RecordedLoginFlowInput.class; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/RelationshipDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.Markov; 4 | import com.akto.dto.Relationship; 5 | import com.mongodb.BasicDBObject; 6 | 7 | import java.util.List; 8 | 9 | public class RelationshipDao extends AccountsContextDao { 10 | 11 | public static final RelationshipDao instance = new RelationshipDao(); 12 | 13 | private RelationshipDao() {} 14 | 15 | @Override 16 | public String getCollName() { 17 | return "relationship"; 18 | } 19 | 20 | @Override 21 | public Class getClassT() { 22 | return Relationship.class; 23 | } 24 | 25 | public List fetchAll() { 26 | return this.findAll(new BasicDBObject()); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/ReplaceDetailsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.dependency_flow.ReplaceDetail; 4 | 5 | public class ReplaceDetailsDao extends AccountsContextDao { 6 | 7 | public static final ReplaceDetailsDao instance = new ReplaceDetailsDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "replace_details"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return ReplaceDetail.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/ScansDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.Scan; 4 | 5 | public class ScansDao extends AccountsContextDao { 6 | 7 | @Override 8 | public String getCollName() { 9 | return "scans"; 10 | } 11 | 12 | @Override 13 | public Class getClassT() { 14 | return Scan.class; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/SetupDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.Setup; 4 | 5 | public class SetupDao extends CommonContextDao { 6 | 7 | public static final SetupDao instance = new SetupDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "setup"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return Setup.class; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/TagConfigsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.TagConfig; 4 | 5 | public class TagConfigsDao extends AccountsContextDao { 6 | public static final TagConfigsDao instance = new TagConfigsDao(); 7 | 8 | @Override 9 | public String getCollName() { 10 | return "tag_config"; 11 | } 12 | 13 | @Override 14 | public Class getClassT() { 15 | return TagConfig.class; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/TeamsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.Team; 4 | 5 | public class TeamsDao extends AccountsContextDao { 6 | 7 | public static final TeamsDao instance = new TeamsDao(); 8 | 9 | private TeamsDao() {} 10 | 11 | @Override 12 | public String getCollName() { 13 | return "teams"; 14 | } 15 | 16 | @Override 17 | public Class getClassT() { 18 | return Team.class; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/TestEnvSettingsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.TestEnvSettings; 4 | 5 | public class TestEnvSettingsDao extends AccountsContextDao { 6 | 7 | public static final TestEnvSettingsDao instance = new TestEnvSettingsDao(); 8 | 9 | private TestEnvSettingsDao() {} 10 | 11 | @Override 12 | public String getCollName() { 13 | return "test_env_settings"; 14 | } 15 | 16 | @Override 17 | public Class getClassT() { 18 | return TestEnvSettings.class; 19 | } 20 | 21 | public TestEnvSettings get(int id) { 22 | return findOne("_id", id); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/TestRunDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.TestRun; 4 | 5 | public class TestRunDao extends AccountsContextDao { 6 | 7 | public static final TestRunDao instance = new TestRunDao(); 8 | 9 | private TestRunDao() {} 10 | 11 | @Override 12 | public String getCollName() { 13 | return "test_run"; 14 | } 15 | 16 | @Override 17 | public Class getClassT() { 18 | return TestRun.class; 19 | } 20 | 21 | public int createRun(TestRun testRun) { 22 | return insertOne(testRun).getInsertedId().asInt32().getValue(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/ThirdPartyAccessDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.third_party_access.ThirdPartyAccess; 4 | 5 | public class ThirdPartyAccessDao extends AccountsContextDao { 6 | 7 | public static ThirdPartyAccessDao instance = new ThirdPartyAccessDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "third_party"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return ThirdPartyAccess.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/URLTemplateDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.dto.type.URLTemplate; 4 | 5 | public class URLTemplateDao extends AccountsContextDao { 6 | 7 | @Override 8 | public String getCollName() { 9 | return "url_templates"; 10 | } 11 | 12 | @Override 13 | public Class getClassT() { 14 | return URLTemplate.class; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/agents/AgentRunDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.agents; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.agents.AgentRun; 5 | 6 | public class AgentRunDao extends AccountsContextDao { 7 | 8 | public static final AgentRunDao instance = new AgentRunDao(); 9 | 10 | // TODO: create indices 11 | 12 | @Override 13 | public String getCollName() { 14 | return "agent_runs"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return AgentRun.class; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/billing/OrganizationFlagsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.billing; 2 | 3 | import com.akto.dao.BillingContextDao; 4 | import com.akto.dto.billing.OrganizationFlags; 5 | 6 | public class OrganizationFlagsDao extends BillingContextDao { 7 | public static final OrganizationFlagsDao instance = new OrganizationFlagsDao(); 8 | 9 | @Override 10 | public String getCollName() { 11 | return "organization_flags"; 12 | } 13 | 14 | @Override 15 | public Class getClassT() { 16 | return OrganizationFlags.class; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/billing/TokensDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.billing; 2 | 3 | import com.akto.dao.BillingContextDao; 4 | import com.akto.dto.billing.Tokens; 5 | 6 | public class TokensDao extends BillingContextDao{ 7 | 8 | public static final TokensDao instance = new TokensDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "tokens"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return Tokens.class; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/file/FilesDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.file; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.files.File; 5 | 6 | public class FilesDao extends AccountsContextDao { 7 | 8 | private FilesDao() { 9 | } 10 | 11 | public static final FilesDao instance = new FilesDao(); 12 | @Override 13 | public String getCollName() { 14 | return "files"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return File.class; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/graph/SvcToSvcGraphEdgesDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.graph; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.graph.SvcToSvcGraphEdge; 5 | 6 | public class SvcToSvcGraphEdgesDao extends AccountsContextDao { 7 | 8 | public static final SvcToSvcGraphEdgesDao instance = new SvcToSvcGraphEdgesDao(); 9 | 10 | private SvcToSvcGraphEdgesDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "svc_to_svc_graph_edges"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return SvcToSvcGraphEdge.class; 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/graph/SvcToSvcGraphNodesDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.graph; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.graph.SvcToSvcGraphNode; 5 | 6 | public class SvcToSvcGraphNodesDao extends AccountsContextDao { 7 | 8 | public static final SvcToSvcGraphNodesDao instance = new SvcToSvcGraphNodesDao(); 9 | 10 | private SvcToSvcGraphNodesDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "svc_to_svc_graph_nodes"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return SvcToSvcGraphNode.class; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/monitoring/ModuleInfoDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.monitoring; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.monitoring.ModuleInfo; 5 | 6 | public class ModuleInfoDao extends AccountsContextDao { 7 | @Override 8 | public String getCollName() { 9 | return "module_info"; 10 | } 11 | 12 | public static final ModuleInfoDao instance = new ModuleInfoDao(); 13 | private ModuleInfoDao(){} 14 | 15 | @Override 16 | public Class getClassT() { 17 | return ModuleInfo.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/notifications/CustomWebhooksDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.notifications; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.notifications.CustomWebhook; 5 | 6 | public class CustomWebhooksDao extends AccountsContextDao{ 7 | 8 | public static final CustomWebhooksDao instance = new CustomWebhooksDao(); 9 | 10 | private CustomWebhooksDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "custom_webhooks"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return CustomWebhook.class; 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/notifications/CustomWebhooksResultDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.notifications; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.notifications.CustomWebhookResult; 5 | 6 | public class CustomWebhooksResultDao extends AccountsContextDao{ 7 | 8 | public static final CustomWebhooksResultDao instance = new CustomWebhooksResultDao(); 9 | 10 | private CustomWebhooksResultDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "custom_webhooks_result"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return CustomWebhookResult.class; 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/notifications/EventsMetricsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.notifications; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.events.EventsMetrics; 5 | 6 | public class EventsMetricsDao extends AccountsContextDao { 7 | public static final EventsMetricsDao instance = new EventsMetricsDao(); 8 | 9 | private EventsMetricsDao() {} 10 | 11 | @Override 12 | public String getCollName() { 13 | return "event_metrics"; 14 | } 15 | 16 | @Override 17 | public Class getClassT() { 18 | return EventsMetrics.class; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/notifications/SlackWebhooksDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.notifications; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.notifications.SlackWebhook; 5 | 6 | public class SlackWebhooksDao extends AccountsContextDao { 7 | 8 | public static final SlackWebhooksDao instance = new SlackWebhooksDao(); 9 | 10 | private SlackWebhooksDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "slack_webhooks"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return SlackWebhook.class; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/pii/PIISourceDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.pii; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.pii.PIISource; 5 | 6 | public class PIISourceDao extends AccountsContextDao { 7 | 8 | public static final PIISourceDao instance = new PIISourceDao(); 9 | 10 | private PIISourceDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "pii_sources"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return PIISource.class; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/runtime_filters/AdvancedTrafficFiltersDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.runtime_filters; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.test_editor.YamlTemplate; 5 | 6 | public class AdvancedTrafficFiltersDao extends AccountsContextDao { 7 | 8 | public static final AdvancedTrafficFiltersDao instance = new AdvancedTrafficFiltersDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "advanced_traffic_filters"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return YamlTemplate.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/settings/DefaultPayloadsDao.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/libs/dao/src/main/java/com/akto/dao/settings/DefaultPayloadsDao.java -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/test_editor/auth/Parser.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.test_editor.auth; 2 | 3 | import java.util.Map; 4 | 5 | import com.akto.dto.test_editor.Auth; 6 | import com.fasterxml.jackson.databind.ObjectMapper; 7 | 8 | public class Parser { 9 | 10 | public Auth parse(Object authObj) { 11 | Map infoMap = (Map) authObj; 12 | ObjectMapper objectMapper = new ObjectMapper(); 13 | Auth info = objectMapper.convertValue(infoMap, Auth.class); 14 | return info; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/test_editor/info/InfoParser.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.test_editor.info; 2 | 3 | import java.util.Map; 4 | 5 | import com.akto.dto.test_editor.Info; 6 | import com.fasterxml.jackson.databind.ObjectMapper; 7 | 8 | public class InfoParser { 9 | 10 | public Info parse(Object infoObj) { 11 | Map infoMap = (Map) infoObj; 12 | ObjectMapper objectMapper = new ObjectMapper(); 13 | Info info = objectMapper.convertValue(infoMap, Info.class); 14 | return info; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/test_editor/settings/SettingsParser.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.test_editor.settings; 2 | 3 | import com.akto.dto.test_editor.TemplateSettings; 4 | import com.fasterxml.jackson.databind.ObjectMapper; 5 | 6 | import java.util.Map; 7 | 8 | public class SettingsParser { 9 | 10 | public TemplateSettings parse(Object settingsObj) { 11 | Map settingsMap = (Map) settingsObj; 12 | ObjectMapper objectMapper = new ObjectMapper(); 13 | TemplateSettings settings = objectMapper.convertValue(settingsMap, TemplateSettings.class); 14 | return settings; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/AccessMatrixTaskInfosDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.testing.AccessMatrixTaskInfo; 5 | 6 | public class AccessMatrixTaskInfosDao extends AccountsContextDao { 7 | 8 | public final static AccessMatrixTaskInfosDao instance = new AccessMatrixTaskInfosDao(); 9 | 10 | private AccessMatrixTaskInfosDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "access_control_task_info"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return AccessMatrixTaskInfo.class; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/AccessMatrixUrlToRolesDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.testing.AccessMatrixUrlToRole; 5 | 6 | public class AccessMatrixUrlToRolesDao extends AccountsContextDao { 7 | 8 | public static final AccessMatrixUrlToRolesDao instance = new AccessMatrixUrlToRolesDao(); 9 | 10 | private AccessMatrixUrlToRolesDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "access_matrix_url_to_roles"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return AccessMatrixUrlToRole.class; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/ComplianceInfosDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.CommonContextDao; 4 | import com.akto.dto.testing.ComplianceInfo; 5 | 6 | public class ComplianceInfosDao extends CommonContextDao { 7 | 8 | public static final ComplianceInfosDao instance = new ComplianceInfosDao(); 9 | 10 | private ComplianceInfosDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "compliance_infos"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return ComplianceInfo.class; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/DeleteTestRunsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.testing.DeleteTestRuns; 5 | 6 | public class DeleteTestRunsDao extends AccountsContextDao { 7 | 8 | public static final DeleteTestRunsDao instance = new DeleteTestRunsDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "delete_test_runs_info"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return DeleteTestRuns.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/LoginFlowStepsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.testing.LoginFlowStepsData; 5 | 6 | public class LoginFlowStepsDao extends AccountsContextDao { 7 | 8 | public static final LoginFlowStepsDao instance = new LoginFlowStepsDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "login_flow_steps"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return LoginFlowStepsData.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/RemediationsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.CommonContextDao; 4 | import com.akto.dto.testing.Remediation; 5 | 6 | public class RemediationsDao extends CommonContextDao { 7 | 8 | public static final RemediationsDao instance = new RemediationsDao(); 9 | 10 | private RemediationsDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "remediations"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return Remediation.class; 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/TestingRunConfigDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.testing.TestingRunConfig; 5 | import com.akto.util.enums.MongoDBEnums; 6 | 7 | public class TestingRunConfigDao extends AccountsContextDao { 8 | @Override 9 | public String getCollName() { 10 | return MongoDBEnums.Collection.TESTING_RUN_CONFIG.getCollectionName(); 11 | } 12 | 13 | public static final TestingRunConfigDao instance = new TestingRunConfigDao(); 14 | 15 | private TestingRunConfigDao() {} 16 | 17 | @Override 18 | public Class getClassT() { 19 | return TestingRunConfig.class; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/TestingSchedulesDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.testing.TestingSchedule; 5 | 6 | public class TestingSchedulesDao extends AccountsContextDao { 7 | 8 | public static final TestingSchedulesDao instance = new TestingSchedulesDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "testing_schedules"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return TestingSchedule.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/WorkflowTestResultsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.testing.WorkflowTestResult; 5 | 6 | public class WorkflowTestResultsDao extends AccountsContextDao { 7 | 8 | public static final WorkflowTestResultsDao instance = new WorkflowTestResultsDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "workflow_test_results"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return WorkflowTestResult.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/WorkflowTestsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.testing.WorkflowTest; 5 | 6 | public class WorkflowTestsDao extends AccountsContextDao { 7 | 8 | public static final WorkflowTestsDao instance = new WorkflowTestsDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "workflow_tests"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return WorkflowTest.class; 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/testing/sources/TestReportsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.testing.sources; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.testing.sources.TestReports; 5 | 6 | public class TestReportsDao extends AccountsContextDao { 7 | 8 | public final static TestReportsDao instance = new TestReportsDao(); 9 | 10 | private TestReportsDao() {} 11 | 12 | @Override 13 | public String getCollName() { 14 | return "test_reports"; 15 | } 16 | 17 | @Override 18 | public Class getClassT() { 19 | return TestReports.class; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/threat_detection/IpLevelApiHitCountDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.threat_detection; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.threat_detection.IpLevelApiHitCount; 5 | 6 | public class IpLevelApiHitCountDao extends AccountsContextDao { 7 | 8 | public static final IpLevelApiHitCountDao instance = new IpLevelApiHitCountDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "ip_level_api_hit_count"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return IpLevelApiHitCount.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/traffic_metrics/TrafficMetricsAlertsDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.traffic_metrics; 2 | 3 | import com.akto.dao.AccountsContextDao; 4 | import com.akto.dto.traffic_metrics.TrafficMetricsAlert; 5 | 6 | public class TrafficMetricsAlertsDao extends AccountsContextDao { 7 | 8 | public static final TrafficMetricsAlertsDao instance = new TrafficMetricsAlertsDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "traffic_metrics_alerts"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return TrafficMetricsAlert.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dao/usage/UsageMetricInfoDao.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao.usage; 2 | 3 | import com.akto.dao.BillingContextDao; 4 | import com.akto.dto.usage.UsageMetricInfo; 5 | 6 | public class UsageMetricInfoDao extends BillingContextDao{ 7 | 8 | public static final UsageMetricInfoDao instance = new UsageMetricInfoDao(); 9 | 10 | @Override 11 | public String getCollName() { 12 | return "usage_metric_info"; 13 | } 14 | 15 | @Override 16 | public Class getClassT() { 17 | return UsageMetricInfo.class; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/CustomFilter.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto; 2 | 3 | import org.bson.codecs.pojo.annotations.BsonDiscriminator; 4 | 5 | @BsonDiscriminator 6 | public abstract class CustomFilter { 7 | public CustomFilter() { 8 | } 9 | 10 | public abstract boolean process(HttpResponseParams httpResponseParams); 11 | } 12 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/IssueTrendType.java: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/RawApiMetadata.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto; 2 | 3 | public class RawApiMetadata { 4 | private String countryCode; 5 | 6 | public RawApiMetadata() { 7 | } 8 | 9 | public RawApiMetadata(String countryCode) { 10 | this.countryCode = countryCode; 11 | } 12 | 13 | public String getCountryCode() { 14 | return this.countryCode; 15 | } 16 | 17 | public void setCountryCode(String countryCode) { 18 | this.countryCode = countryCode; 19 | } 20 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/Setup.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto; 2 | 3 | public class Setup { 4 | 5 | private String dashboardMode; 6 | 7 | public Setup() { 8 | } 9 | 10 | public Setup(String dashboardMode) { 11 | this.dashboardMode = dashboardMode; 12 | } 13 | 14 | public String getDashboardMode() { 15 | return dashboardMode; 16 | } 17 | 18 | public void setDashboardMode(String dashboardMode) { 19 | this.dashboardMode = dashboardMode; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/agents/AgentLog.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.agents; 2 | 3 | public class AgentLog { 4 | String log; 5 | int eventTimestamp; 6 | 7 | public AgentLog(String log, int eventTimestamp) { 8 | this.log = log; 9 | this.eventTimestamp = eventTimestamp; 10 | } 11 | 12 | public AgentLog() { 13 | } 14 | 15 | public String getLog() { 16 | return log; 17 | } 18 | 19 | public void setLog(String log) { 20 | this.log = log; 21 | } 22 | 23 | public int getEventTimestamp() { 24 | return eventTimestamp; 25 | } 26 | 27 | public void setEventTimestamp(int eventTimestamp) { 28 | this.eventTimestamp = eventTimestamp; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/agents/ModelType.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.agents; 2 | 3 | public enum ModelType { 4 | 5 | OPENAI, 6 | ANTHROPIC, 7 | AZURE_OPENAI 8 | 9 | } 10 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/api_protection_parse_layer/AggregationRules.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.api_protection_parse_layer; 2 | 3 | import java.util.List; 4 | 5 | public class AggregationRules { 6 | 7 | private List rule; 8 | 9 | public AggregationRules() { 10 | } 11 | 12 | public AggregationRules(List rule) { 13 | this.rule = rule; 14 | } 15 | 16 | public List getRule() { 17 | return rule; 18 | } 19 | 20 | public void setRule(List rule) { 21 | this.rule = rule; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/api_protection_parse_layer/Rule.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.api_protection_parse_layer; 2 | 3 | public class Rule { 4 | 5 | String name; 6 | Condition condition; 7 | 8 | public Rule() { 9 | } 10 | 11 | public Rule(String name, Condition condition) { 12 | this.name = name; 13 | this.condition = condition; 14 | } 15 | 16 | public String getName() { 17 | return name; 18 | } 19 | public void setName(String name) { 20 | this.name = name; 21 | } 22 | public Condition getCondition() { 23 | return condition; 24 | } 25 | public void setCondition(Condition condition) { 26 | this.condition = condition; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/auth/APIAuth.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.auth; 2 | 3 | import org.bson.codecs.pojo.annotations.BsonDiscriminator; 4 | 5 | @BsonDiscriminator 6 | public abstract class APIAuth { 7 | public enum Type { 8 | BASIC, OAUTH2, APIKEY 9 | } 10 | 11 | int id; 12 | Type type; 13 | 14 | public int getId() { 15 | return this.id; 16 | } 17 | 18 | public void setId(int id) { 19 | this.id = id; 20 | } 21 | 22 | abstract public void setType(Type type); 23 | 24 | public Type getType() { 25 | return this.type; 26 | } 27 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/billing/OrgMetaData.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.billing; 2 | 3 | public enum OrgMetaData { 4 | GRACE_PERIOD_END_EPOCH, 5 | EXPIRED 6 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/billing/OrganizationFlags.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.billing; 2 | 3 | import java.util.Set; 4 | 5 | public class OrganizationFlags { 6 | 7 | public static final String AGGREGATE_INCOMPLETE = "aggregateIncomplete"; 8 | Set aggregateIncomplete; 9 | 10 | public OrganizationFlags() { 11 | } 12 | 13 | public OrganizationFlags(Set aggregateIncomplete) { 14 | this.aggregateIncomplete = aggregateIncomplete; 15 | } 16 | 17 | public Set getAggregateIncomplete() { 18 | return aggregateIncomplete; 19 | } 20 | 21 | public void setAggregateIncomplete(Set aggregateIncomplete) { 22 | this.aggregateIncomplete = aggregateIncomplete; 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/data_types/IsNumberPredicate.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.data_types; 2 | 3 | public class IsNumberPredicate extends Predicate{ 4 | 5 | public IsNumberPredicate() { 6 | super(Type.IS_NUMBER); 7 | } 8 | 9 | @Override 10 | public boolean validate(Object obj) { 11 | return (obj instanceof Integer) || (obj instanceof Double); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/feed/Feed.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.feed; 2 | 3 | import com.akto.dao.MCollection; 4 | import com.mongodb.client.MongoCollection; 5 | import com.mongodb.client.model.Filters; 6 | import org.bson.conversions.Bson; 7 | import org.bson.types.ObjectId; 8 | 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | public abstract class Feed { 13 | 14 | int syncMarkerEpoch; 15 | 16 | int lastSentEpoch; 17 | 18 | String feedName; 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/feed/FeedSource.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.feed; 2 | 3 | public class FeedSource { 4 | } 5 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/gpt/AktoGptConfigState.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.gpt; 2 | 3 | public enum AktoGptConfigState { 4 | ENABLED, DISABLED; 5 | } 6 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/graph/K8sDaemonsetGraphParams.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.graph; 2 | 3 | import lombok.*; 4 | 5 | @Getter 6 | @Setter 7 | @NoArgsConstructor 8 | @AllArgsConstructor 9 | @ToString 10 | @EqualsAndHashCode(callSuper = true) 11 | public class K8sDaemonsetGraphParams extends SvcToSvcGraphParams { 12 | 13 | public static final String DIRECTION_OUTGOING = "2"; 14 | public static final String DIRECTION_INCOMING = "1"; 15 | 16 | String hostInApiRequest; 17 | String processId; 18 | String socketId; 19 | String daemonsetId; 20 | String direction; 21 | 22 | @Override 23 | public Type getType() { 24 | return Type.K8S; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/graph/SvcToSvcGraphParams.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.graph; 2 | 3 | public abstract class SvcToSvcGraphParams { 4 | 5 | public enum Type { 6 | K8S 7 | } 8 | 9 | public abstract Type getType(); 10 | } 11 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/jira_integration/BiDirectionalSyncSettings.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.jira_integration; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | import lombok.AllArgsConstructor; 6 | import lombok.Getter; 7 | import lombok.NoArgsConstructor; 8 | import lombok.Setter; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class BiDirectionalSyncSettings { 15 | private boolean enabled; 16 | private Map> aktoStatusMappings; 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/jira_integration/JiraMetaData.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.jira_integration; 2 | 3 | import com.akto.dto.test_run_findings.TestingIssuesId; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | import org.bson.types.ObjectId; 9 | 10 | @Getter 11 | @AllArgsConstructor 12 | @Setter 13 | @NoArgsConstructor 14 | public class JiraMetaData { 15 | 16 | private String issueTitle; 17 | private String hostStr; 18 | private String endPointStr; 19 | private String issueUrl; 20 | private String issueDescription; 21 | private TestingIssuesId testingIssueId; 22 | private ObjectId testSummaryId; 23 | } 24 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/jira_integration/JiraStatusApiResponse.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.jira_integration; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | import java.util.List; 5 | import java.util.Objects; 6 | import lombok.Getter; 7 | import lombok.NoArgsConstructor; 8 | import lombok.Setter; 9 | 10 | @Getter 11 | @Setter 12 | @NoArgsConstructor 13 | @JsonIgnoreProperties(ignoreUnknown = true) 14 | public class JiraStatusApiResponse { 15 | 16 | List statuses; 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/jira_integration/ProjectMapping.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.jira_integration; 2 | 3 | import java.util.Set; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Getter; 6 | import lombok.NoArgsConstructor; 7 | import lombok.Setter; 8 | 9 | @Getter 10 | @Setter 11 | @AllArgsConstructor 12 | @NoArgsConstructor 13 | public class ProjectMapping { 14 | private Set statuses; 15 | private BiDirectionalSyncSettings biDirectionalSyncSettings; 16 | } 17 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/jobs/JobExecutorType.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.jobs; 2 | 3 | public enum JobExecutorType { 4 | DASHBOARD, 5 | RUNTIME, 6 | TESTING, 7 | CYBORG 8 | } 9 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/jobs/JobParams.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.jobs; 2 | 3 | import lombok.ToString; 4 | import org.bson.codecs.pojo.annotations.BsonDiscriminator; 5 | import org.bson.codecs.pojo.annotations.BsonIgnore; 6 | 7 | @BsonDiscriminator 8 | @ToString 9 | public abstract class JobParams { 10 | public abstract JobType getJobType(); 11 | 12 | @BsonIgnore 13 | public abstract Class getParamsClass(); 14 | } 15 | 16 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/jobs/JobStatus.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.jobs; 2 | 3 | public enum JobStatus { 4 | SCHEDULED, RUNNING, COMPLETED, FAILED, STOPPED 5 | } 6 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/jobs/JobType.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.jobs; 2 | 3 | public enum JobType { 4 | JIRA_AUTO_CREATE_TICKETS, 5 | TICKET_SYNC 6 | } 7 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/jobs/ScheduleType.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.jobs; 2 | 3 | public enum ScheduleType { 4 | RECURRING, RUN_ONCE 5 | } 6 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/loaders/PostmanUploadLoader.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.loaders; 2 | 3 | public class PostmanUploadLoader extends NormalLoader { 4 | 5 | public PostmanUploadLoader() { 6 | super(Type.POSTMAN_UPLOAD); 7 | } 8 | 9 | public PostmanUploadLoader(int userId, int currentCount, int totalCount, boolean show) { 10 | super(Type.POSTMAN_UPLOAD, userId, currentCount, totalCount, show); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/rbac/RoleStrategy.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.rbac; 2 | 3 | import java.util.Map; 4 | import com.akto.dto.RBAC.Role; 5 | import com.akto.dto.rbac.RbacEnums.Feature; 6 | import com.akto.dto.rbac.RbacEnums.ReadWriteAccess; 7 | 8 | public interface RoleStrategy { 9 | Role[] getRoleHierarchy(); 10 | Map getFeatureAccessMap(); 11 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/test_editor/Config.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.test_editor; 2 | 3 | import java.util.Map; 4 | 5 | public class Config { 6 | 7 | private Map val; 8 | 9 | public Config(Map val) { 10 | this.val = val; 11 | } 12 | 13 | public Config() { } 14 | 15 | public Map getVal() { 16 | return val; 17 | } 18 | 19 | public void setVal(Map val) { 20 | this.val = val; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/test_editor/ExecuteOrder.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.test_editor; 2 | 3 | import java.util.List; 4 | 5 | public class ExecuteOrder { 6 | 7 | List executionOrder; 8 | 9 | } 10 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/testing/AuthParam.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.testing; 2 | 3 | import com.akto.dto.OriginalHttpRequest; 4 | 5 | public abstract class AuthParam { 6 | 7 | abstract boolean addAuthTokens(OriginalHttpRequest request); 8 | public abstract boolean removeAuthTokens(OriginalHttpRequest request); 9 | 10 | public abstract boolean authTokenPresent(OriginalHttpRequest request); 11 | 12 | public abstract String getValue(); 13 | 14 | public abstract String getKey(); 15 | 16 | public abstract Boolean getShowHeader(); 17 | 18 | public abstract Location getWhere(); 19 | 20 | public abstract void setValue(String value); 21 | 22 | public enum Location { 23 | HEADER, 24 | BODY, 25 | TLS 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/testing/AutoTicketingDetails.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.testing; 2 | 3 | import com.fasterxml.jackson.annotation.JsonProperty; 4 | import java.util.List; 5 | import java.util.Set; 6 | import lombok.Getter; 7 | import lombok.Setter; 8 | 9 | @Getter 10 | @Setter 11 | public class AutoTicketingDetails { 12 | 13 | @JsonProperty("shouldCreateTickets") 14 | private boolean shouldCreateTickets; 15 | private List severities; 16 | private String projectId; 17 | private String issueType; 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/testing/info/NucleiTestInfo.java: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/testing/info/TestInfo.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.testing.info; 2 | 3 | public abstract class TestInfo { 4 | 5 | public TestInfo() {} 6 | } 7 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/testing/rate_limit/ApiRateLimit.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.testing.rate_limit; 2 | 3 | import okhttp3.Request; 4 | 5 | public interface ApiRateLimit { 6 | public int getMaxRequests(Request request); 7 | } 8 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/testing/rate_limit/GlobalApiRateLimit.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.testing.rate_limit; 2 | 3 | import okhttp3.Request; 4 | 5 | public class GlobalApiRateLimit implements ApiRateLimit { 6 | 7 | int maxRequests; 8 | public GlobalApiRateLimit(int maxRequests) { 9 | this.maxRequests = maxRequests; 10 | } 11 | 12 | public GlobalApiRateLimit() { 13 | this.maxRequests = 0; 14 | } 15 | 16 | @Override 17 | public int getMaxRequests(Request request) { 18 | return maxRequests; 19 | } 20 | 21 | public int getMaxRequests() { 22 | return maxRequests; 23 | } 24 | 25 | public void setMaxRequests(int maxRequests) { 26 | this.maxRequests = maxRequests; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/threat_detection/ApiHitCountInfo.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.threat_detection; 2 | 3 | import lombok.*; 4 | 5 | @Getter 6 | @Setter 7 | @NoArgsConstructor 8 | @AllArgsConstructor 9 | 10 | public class ApiHitCountInfo { 11 | private int apiCollectionId; 12 | private String url; 13 | private String method; 14 | private long count; 15 | private long ts; 16 | } 17 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/threat_detection/IpLevelApiHitCount.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.threat_detection; 2 | 3 | import java.util.Map; 4 | 5 | import lombok.*; 6 | 7 | @Getter 8 | @Setter 9 | @NoArgsConstructor 10 | @AllArgsConstructor 11 | 12 | public class IpLevelApiHitCount { 13 | private int apiCollectionId; 14 | private String url; 15 | private String method; 16 | private long count; 17 | private long ts; 18 | Map ipCount; 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/type/URLMethods.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.type; 2 | 3 | public class URLMethods { 4 | 5 | public enum Method { 6 | GET, POST, PUT, DELETE, HEAD, OPTIONS, TRACE, PATCH, OTHER, TRACK, CONNECT; 7 | 8 | private static final Method[] valuesArray = values(); 9 | 10 | public static Method[] getValuesArray () { 11 | return valuesArray; 12 | } 13 | public static Method fromString(String text) { 14 | if (text == null) return OTHER; 15 | for (Method b : Method.values()) { 16 | if (b.name().equalsIgnoreCase(text)) { 17 | return b; 18 | } 19 | } 20 | return OTHER; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/upload/SwaggerFileUpload.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.upload; 2 | 3 | import java.util.List; 4 | 5 | import lombok.Getter; 6 | import lombok.Setter; 7 | 8 | @Getter 9 | @Setter 10 | public class SwaggerFileUpload extends FileUpload{ 11 | 12 | private String swaggerFileId; 13 | private String collectionName; 14 | private int collectionId; 15 | private int uploadTs; 16 | 17 | private List errors; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/upload/SwaggerUploadLog.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.upload; 2 | 3 | public class SwaggerUploadLog extends FileUploadLog{ 4 | 5 | private String method; 6 | 7 | public String getMethod() { 8 | return method; 9 | } 10 | 11 | public void setMethod(String method) { 12 | this.method = method; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/usage/MetricTypes.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.usage; 2 | 3 | /* 4 | * Add ACCOUNTS_COUNT 5 | * 6 | */ 7 | 8 | public enum MetricTypes { 9 | ACTIVE_ENDPOINTS ("feature-ap-is"), 10 | CUSTOM_TESTS ("feature-custom-templates"), 11 | TEST_RUNS ("feature-test-runs"), 12 | ACTIVE_ACCOUNTS ("feature-sso"); 13 | 14 | public final String label; 15 | 16 | private MetricTypes(String label) { 17 | this.label = label; 18 | } 19 | 20 | public String getLabel() { 21 | return label; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/dto/usage/metadata/ActiveAccounts.java: -------------------------------------------------------------------------------- 1 | package com.akto.dto.usage.metadata; 2 | 3 | import java.util.Set; 4 | 5 | public class ActiveAccounts { 6 | 7 | private Set activeAccounts; 8 | 9 | public ActiveAccounts(Set activeAccounts) { 10 | this.activeAccounts = activeAccounts; 11 | } 12 | 13 | public Set getActiveAccounts() { 14 | return activeAccounts; 15 | } 16 | 17 | public void setActiveAccounts(Set activeAccounts) { 18 | this.activeAccounts = activeAccounts; 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/types/BasicDBListL.java: -------------------------------------------------------------------------------- 1 | package com.akto.types; 2 | 3 | import com.mongodb.BasicDBList; 4 | 5 | public class BasicDBListL extends BasicDBList { 6 | 7 | public BasicDBListL() { 8 | super(); 9 | } 10 | 11 | public BasicDBListL(Object... args){ 12 | super(); 13 | for(Object arg: args) { 14 | this.add(arg); 15 | } 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/ColorConstants.java: -------------------------------------------------------------------------------- 1 | package com.akto.util; 2 | 3 | public class ColorConstants { 4 | private ColorConstants() {} 5 | 6 | public static final String RESET = "\033[0m"; 7 | 8 | public static final String RED = "\033[0;31m"; 9 | public static final String GREEN = "\033[0;32m"; 10 | public static final String YELLOW = "\033[0;33m"; 11 | public static final String BLUE = "\033[0;34m"; 12 | public static final String PURPLE = "\u001B[35m"; 13 | public static final String CYAN = "\u001B[36m"; 14 | 15 | } -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/DateUtils.java: -------------------------------------------------------------------------------- 1 | package com.akto.util; 2 | 3 | public class DateUtils { 4 | 5 | public enum TrackingPeriod { 6 | DAILY, WEEKLY, MONTHLY, QUARTERLY, HALF_YEARLY, YEARLY; 7 | 8 | public static DateUtils.TrackingPeriod getTrackingPeriod(int trackingPeriod) { 9 | return values()[trackingPeriod]; 10 | } 11 | 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/IssueTrendType.java: -------------------------------------------------------------------------------- 1 | package com.akto.util; 2 | 3 | public class IssueTrendType { 4 | 5 | private int count ; 6 | private String subCategory ; 7 | 8 | public IssueTrendType(){ 9 | } 10 | 11 | public IssueTrendType(int count, String subCategory){ 12 | this.count = count; 13 | this.subCategory = subCategory; 14 | } 15 | 16 | 17 | public int getCount() { 18 | return count; 19 | } 20 | public void setCount(int count) { 21 | this.count = count; 22 | } 23 | 24 | public String getSubCategory() { 25 | return subCategory; 26 | } 27 | public void setSubcategory(String subCategory) { 28 | this.subCategory = subCategory; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/VersionUtil.java: -------------------------------------------------------------------------------- 1 | package com.akto.util; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.InputStream; 5 | import java.io.InputStreamReader; 6 | 7 | public class VersionUtil { 8 | 9 | private VersionUtil() {} 10 | 11 | public static String getVersion(InputStream in) throws Exception { 12 | BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in)); 13 | String imageTag = bufferedReader.readLine(); 14 | String buildTime = bufferedReader.readLine(); 15 | String aktoVersion = bufferedReader.readLine(); 16 | return imageTag + " - " + buildTime + " - " + aktoVersion; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/enums/LoginFlowEnums.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.enums; 2 | 3 | public class LoginFlowEnums { 4 | 5 | public enum AuthMechanismTypes { 6 | HARDCODED, 7 | LOGIN_REQUEST, 8 | TLS_AUTH 9 | } 10 | 11 | public enum LoginStepTypesEnums { 12 | LOGIN_FORM, 13 | MOBILE_CODE_VERIFICATION, 14 | EMAIL_CODE_VERIFICATION, 15 | OTP_VERIFICATION, 16 | RECORDED_FLOW 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/modifier/AddJWKModifier.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.modifier; 2 | 3 | public class AddJWKModifier extends JwtModifier{ 4 | 5 | @Override 6 | public String jwtModify(String key, String value) throws Exception { 7 | 8 | return addJwkHeader(value); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/modifier/AddJkuJWTModifier.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.modifier; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | public class AddJkuJWTModifier extends JwtModifier{ 7 | 8 | public static final String JKU_VALUE = "https://raw.githubusercontent.com/akto-api-security/pii-types/master/public_key.pem"; 9 | public static final String JKU_HEADER = "jku"; 10 | 11 | @Override 12 | public String jwtModify(String key, String value) throws Exception { 13 | Map extraHeaders = new HashMap<>(); 14 | extraHeaders.put(JKU_HEADER, JKU_VALUE); 15 | return manipulateJWT(value, extraHeaders, new HashMap<>(),getPrivateKey()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/modifier/AddKidParamModifier.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.modifier; 2 | 3 | public class AddKidParamModifier extends JwtModifier{ 4 | 5 | @Override 6 | public String jwtModify(String key, String value) throws Exception { 7 | 8 | return addKidParamHeader(value); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/modifier/ConvertToArrayPayloadModifier.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.modifier; 2 | 3 | import java.util.Collections; 4 | 5 | public class ConvertToArrayPayloadModifier extends PayloadModifier{ 6 | 7 | @Override 8 | public Object modify(String key, Object value) { 9 | return Collections.singletonList(value); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/modifier/InvalidSignatureJWTModifier.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.modifier; 2 | 3 | public class InvalidSignatureJWTModifier extends JwtModifier { 4 | @Override 5 | public String jwtModify(String key, String value) { 6 | String[] jwtArr = value.split("\\."); 7 | if (jwtArr.length != 3) return null; 8 | 9 | String signature = jwtArr[2]; 10 | String firstChar = signature.split("")[0]; 11 | String finalSignatureFirstChar = firstChar.equals("a") ? "b" : "a" ; 12 | 13 | return jwtArr[0] + "." + jwtArr[1] + "." + finalSignatureFirstChar+signature.substring(1) ; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/modifier/JWTPayloadReplacer.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.modifier; 2 | 3 | public class JWTPayloadReplacer extends JwtModifier { 4 | 5 | String newJwtToken = null; 6 | 7 | public JWTPayloadReplacer(String newJwtToken) { 8 | super(); 9 | this.newJwtToken = newJwtToken; 10 | } 11 | 12 | 13 | @Override 14 | public String jwtModify(String key, String value) throws Exception { 15 | 16 | String[] jwtArr = value.split("\\."); 17 | if (jwtArr.length != 3) return null; 18 | 19 | String[] newJwtArr = this.newJwtToken.split("\\."); 20 | if (newJwtArr.length != 3) return null; 21 | 22 | return jwtArr[0] + "." + newJwtArr[1] + "." + jwtArr[2]; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/modifier/NestedObjectModifier.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.modifier; 2 | 3 | import com.mongodb.BasicDBObject; 4 | 5 | public class NestedObjectModifier extends PayloadModifier { 6 | 7 | @Override 8 | public Object modify(String key, Object value) { 9 | BasicDBObject res = new BasicDBObject(); 10 | res.put(key, value); 11 | return res; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/modifier/PayloadModifier.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.modifier; 2 | 3 | public abstract class PayloadModifier { 4 | 5 | // modify will return null if condition doesn't satisfy or it fails to modify it 6 | public abstract Object modify(String key, Object value); 7 | 8 | } 9 | -------------------------------------------------------------------------------- /libs/dao/src/main/java/com/akto/util/modifier/SetValueModifier.java: -------------------------------------------------------------------------------- 1 | package com.akto.util.modifier; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | public class SetValueModifier extends PayloadModifier { 7 | 8 | Map store = new HashMap<>(); 9 | 10 | public SetValueModifier(Map store) { 11 | super(); 12 | this.store = store; 13 | } 14 | 15 | @Override 16 | public Object modify(String key, Object value) { 17 | if (!store.containsKey(key)) return value; 18 | return store.get(key); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /libs/dao/src/main/resources/DictionaryBinary: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/akto-api-security/akto/e621d4cfe70a2ea51ded05229142aab4be01be7a/libs/dao/src/main/resources/DictionaryBinary -------------------------------------------------------------------------------- /libs/dao/src/test/java/com/akto/dao/DaoConnect.java: -------------------------------------------------------------------------------- 1 | package com.akto.dao; 2 | 3 | import com.akto.DaoInit; 4 | import com.akto.dao.context.Context; 5 | import com.mongodb.ConnectionString; 6 | import org.junit.BeforeClass; 7 | 8 | public class DaoConnect { 9 | 10 | public final static String mongodbURI = "mongodb://localhost:27017"; 11 | 12 | @BeforeClass 13 | public static void setup() { 14 | ConnectionString connectionString = new ConnectionString(mongodbURI); 15 | DaoInit.init(connectionString); 16 | Context.accountId.set(222222); 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/dao/src/test/java/com/akto/types/TestCappedSet.java: -------------------------------------------------------------------------------- 1 | package com.akto.types; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | public class TestCappedSet { 8 | 9 | @Test 10 | public void testAdd() { 11 | CappedSet values = new CappedSet<>(); 12 | for (int i = 0; i< CappedSet.LIMIT +10; i++) { 13 | values.add(i+""); 14 | } 15 | 16 | assertEquals(CappedSet.LIMIT, values.elements.size()); 17 | 18 | for (int i = 0; i< CappedSet.LIMIT; i++) { 19 | assertTrue(values.elements.contains(i+"")); 20 | } 21 | 22 | for (int i = CappedSet.LIMIT; i< CappedSet.LIMIT +10; i++) { 23 | assertFalse(values.elements.contains(i+"")); 24 | } 25 | 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /libs/protobuf/.gitignore: -------------------------------------------------------------------------------- 1 | src/main/java/com/akto/proto/generated 2 | -------------------------------------------------------------------------------- /libs/utils/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | yarn.lock 3 | .DS_Store 4 | *.iml 5 | *.pem 6 | *.env 7 | .settings 8 | .project 9 | .classpath -------------------------------------------------------------------------------- /libs/utils/README.md: -------------------------------------------------------------------------------- 1 | # utils 2 | 3 | compile using 4 | `mvn install` 5 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/RuntimeMode.java: -------------------------------------------------------------------------------- 1 | package com.akto; 2 | 3 | public enum RuntimeMode { 4 | 5 | NORMAL, HYBRID; 6 | 7 | public static RuntimeMode getRuntimeMode(){ 8 | String runtimeMode = System.getenv("RUNTIME_MODE"); 9 | if("hybrid".equalsIgnoreCase(runtimeMode)){ 10 | return HYBRID; 11 | } 12 | return NORMAL; 13 | } 14 | 15 | public static boolean isHybridDeployment(){ 16 | RuntimeMode runtimeMode = RuntimeMode.getRuntimeMode(); 17 | return runtimeMode.equals(HYBRID); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/data_actor/DataActorFactory.java: -------------------------------------------------------------------------------- 1 | package com.akto.data_actor; 2 | 3 | import com.akto.RuntimeMode; 4 | 5 | public class DataActorFactory { 6 | 7 | public static DataActor fetchInstance() { 8 | 9 | boolean hybridSaas = RuntimeMode.isHybridDeployment(); 10 | if (hybridSaas) { 11 | return new ClientActor(); 12 | } else { 13 | return new DbActor(); 14 | } 15 | 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/jobs/exception/RetryableJobException.java: -------------------------------------------------------------------------------- 1 | package com.akto.jobs.exception; 2 | 3 | public class RetryableJobException extends Exception { 4 | private static final long serialVersionUID = 1L; 5 | 6 | public RetryableJobException(String message) { 7 | super(message); 8 | } 9 | 10 | public RetryableJobException(String message, Throwable cause) { 11 | super(message, cause); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/jobs/utils/JobConstants.java: -------------------------------------------------------------------------------- 1 | package com.akto.jobs.utils; 2 | 3 | import lombok.AccessLevel; 4 | import lombok.NoArgsConstructor; 5 | 6 | @NoArgsConstructor(access = AccessLevel.PRIVATE) 7 | public final class JobConstants { 8 | 9 | public static final String TICKET_LABEL_AKTO_SYNC = "AKTO_SYNC"; 10 | } 11 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/notifications/slack/ActionButtonModel.java: -------------------------------------------------------------------------------- 1 | package com.akto.notifications.slack; 2 | 3 | public class ActionButtonModel { 4 | private final String text; 5 | private final String url; 6 | 7 | public ActionButtonModel(String text, String url) { 8 | this.text = text; 9 | this.url = url; 10 | } 11 | 12 | public String getText() { 13 | return text; 14 | } 15 | 16 | public String getUrl() { 17 | return url; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/notifications/slack/FieldsModel.java: -------------------------------------------------------------------------------- 1 | package com.akto.notifications.slack; 2 | 3 | public class FieldsModel { 4 | private final String title; 5 | private final String value; 6 | 7 | public FieldsModel(String title, String value) { 8 | this.title = title; 9 | this.value = value; 10 | } 11 | 12 | /* \u200C: http://www.unicode-symbol.com/u/200C.html */ 13 | public String toCustomString(boolean isLastTwo) { 14 | return title + "\n*" + value + "*" + (isLastTwo ? "" : "\n\u200c"); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/notifications/slack/SlackAlertType.java: -------------------------------------------------------------------------------- 1 | package com.akto.notifications.slack; 2 | 3 | public enum SlackAlertType { 4 | ACCOUNT_LIMIT_WARNING_ALERT, 5 | API_TEST_STATUS_ALERT, 6 | NEW_SERVICE_STATUS_ALERT, 7 | NEW_USER_JOINING_ALERT, 8 | CUSTOM_TEXT_ALERT 9 | } 10 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/task/DataFetcherUtils.java: -------------------------------------------------------------------------------- 1 | package com.akto.task; 2 | 3 | import com.akto.calendar.DateUtils; 4 | import com.akto.dao.context.Context; 5 | import com.akto.dto.*; 6 | import com.mongodb.client.model.Filters; 7 | 8 | import java.time.ZoneId; 9 | import java.time.ZonedDateTime; 10 | import java.util.ArrayList; 11 | 12 | public class DataFetcherUtils { 13 | 14 | 15 | } 16 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/test_editor/filter/data_operands_impl/ConformSchemaFilter.java: -------------------------------------------------------------------------------- 1 | package com.akto.test_editor.filter.data_operands_impl; 2 | 3 | import com.akto.dao.test_editor.TestEditorEnums; 4 | import com.akto.dto.test_editor.DataOperandFilterRequest; 5 | 6 | 7 | public class ConformSchemaFilter extends DataOperandsImpl { 8 | 9 | @Override 10 | public ValidationResult isValid(DataOperandFilterRequest dataOperandFilterRequest) { 11 | 12 | Boolean result = false; 13 | 14 | return new ValidationResult(result, result ? "Validation succeeded" : TestEditorEnums.DataOperands.EQ.name().toLowerCase() + " validation failed due to schema mismatch"); 15 | } 16 | } -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/test_editor/filter/data_operands_impl/ContainsEitherIpFilter.java: -------------------------------------------------------------------------------- 1 | package com.akto.test_editor.filter.data_operands_impl; 2 | 3 | import org.springframework.security.web.util.matcher.IpAddressMatcher; 4 | 5 | public class ContainsEitherIpFilter extends ContainsEitherFilter { 6 | 7 | @Override 8 | public Boolean evaluateOnStringQuerySet(String data, String query) { 9 | 10 | IpAddressMatcher ipAddressMatcher = new IpAddressMatcher(query); 11 | return ipAddressMatcher.matches(data); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/test_editor/filter/data_operands_impl/DataOperandsImpl.java: -------------------------------------------------------------------------------- 1 | package com.akto.test_editor.filter.data_operands_impl; 2 | 3 | import com.akto.dto.test_editor.DataOperandFilterRequest; 4 | 5 | public abstract class DataOperandsImpl { 6 | public abstract ValidationResult isValid(DataOperandFilterRequest dataOperandFilterRequest); 7 | 8 | } 9 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/test_editor/filter/data_operands_impl/NotContainsIpFilter.java: -------------------------------------------------------------------------------- 1 | package com.akto.test_editor.filter.data_operands_impl; 2 | 3 | import org.springframework.security.web.util.matcher.IpAddressMatcher; 4 | 5 | public class NotContainsIpFilter extends NotContainsFilter { 6 | 7 | @Override 8 | public Boolean evaluateOnStringQuerySet(String data, String query) { 9 | 10 | IpAddressMatcher ipAddressMatcher = new IpAddressMatcher(query); 11 | return !ipAddressMatcher.matches(data); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /libs/utils/src/main/java/com/akto/test_editor/filter/data_operands_impl/ValidationResult.java: -------------------------------------------------------------------------------- 1 | package com.akto.test_editor.filter.data_operands_impl; 2 | 3 | public class ValidationResult { 4 | public static final String GET_QUERYSET_CATCH_ERROR = "Error while parsing data"; 5 | Boolean isValid; 6 | String validationReason; 7 | public ValidationResult(Boolean isValid, String validationReason) { 8 | this.isValid = isValid; 9 | this.validationReason = validationReason; 10 | } 11 | 12 | public Boolean getIsValid() { 13 | return isValid; 14 | } 15 | 16 | public String getValidationReason() { 17 | return validationReason; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /libs/utils/src/test/java/com/akto/notifications/content/SlackTest.java: -------------------------------------------------------------------------------- 1 | package com.akto.notifications.content; 2 | 3 | import java.util.ArrayList; 4 | import java.util.HashMap; 5 | 6 | import com.akto.notifications.slack.DailyUpdate; 7 | 8 | import org.junit.Test; 9 | 10 | public class SlackTest { 11 | 12 | @Test 13 | public void testDailyUpdate() { 14 | 15 | DailyUpdate dailyUpdate = new DailyUpdate(10, 100, 5, 20, 7, 8, 10, 100, new HashMap<>(), "http://localhost:8080"); 16 | System.out.println(dailyUpdate.toJSON()); 17 | 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /pii-types/filetypes.json: -------------------------------------------------------------------------------- 1 | { 2 | "types": [ 3 | {"name": "IMAGE", "regexPattern" : "([^\\s]+(\\.(?i)(jpe?g|png|svg))$)", "sensitive":false, "onKey": false, "active" : false, "tagsLists": ["PII"], "dataTypePriority": "MEDIUM"}, 4 | {"name": "DATA FILE", "regexPattern" : "([^\\s]+(\\.(?i)(pdf|js|css|woff|txt))$)", "sensitive":false, "onKey": false, "active" : false, "tagsLists": ["RESOURCE"], "dataTypePriority": "MEDIUM"} 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /protobuf/buf.yaml: -------------------------------------------------------------------------------- 1 | version: v2 2 | breaking: 3 | use: 4 | - FILE 5 | lint: 6 | use: 7 | - STANDARD 8 | -------------------------------------------------------------------------------- /protobuf/threat_detection/message/malicious_event/event_type/v1/event_type.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package threat_detection.message.malicious_event.event_type.v1; 4 | 5 | option java_outer_classname = "MaliciousEventProto"; 6 | option java_package = "threat_detection.message.malicious_event.event_type.v1"; 7 | 8 | enum EventType { 9 | EVENT_TYPE_UNSPECIFIED = 0; 10 | EVENT_TYPE_SINGLE = 1; 11 | EVENT_TYPE_AGGREGATED = 2; 12 | } 13 | -------------------------------------------------------------------------------- /scripts/install-protoc-mac.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Check if buf is already installed 3 | if ! command -v buf >/dev/null 2>&1; then 4 | brew install buf 5 | fi 6 | 7 | # Check if protoc is already installed 8 | if command -v protoc &> /dev/null; then 9 | echo "protoc is already installed" 10 | exit 0 11 | fi 12 | 13 | PROTOBUF_VERSION=29.2 14 | wget https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOBUF_VERSION/protoc-$PROTOBUF_VERSION-osx-universal_binary.zip -O protoc.zip 15 | unzip protoc.zip -d $HOME/protoc 16 | rm -rf protoc.zip 17 | 18 | # Add protoc to PATH 19 | echo "export PATH=\"$HOME/protoc/bin:\$PATH\"" >> ~/.zshrc 20 | echo "export PATH=\"$HOME/protoc/bin:\$PATH\"" >> ~/.bashrc 21 | -------------------------------------------------------------------------------- /scripts/proto-gen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Check if buf is installed or not 4 | # Please install buf if not already installed by following the instructions at https://docs.buf.build/installation 5 | if ! command -v buf >/dev/null 2>&1; then 6 | echo "Please install buf if not already installed by following the instructions at https://docs.buf.build/installation" 7 | exit 1 8 | fi 9 | 10 | BUF_TEMPLATE=$1 11 | 12 | echo "Generating protobuf using buf template: $BUF_TEMPLATE" 13 | 14 | # pass --debug flag to buf generate if DEBUG is true 15 | buf lint protobuf 16 | 17 | rm -rf libs/protobuf/src/main/java/com/akto/proto/generated/ 18 | 19 | buf generate protobuf --template "$BUF_TEMPLATE" 20 | --------------------------------------------------------------------------------