gitextract_66_nu3aa/ ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report_en.md │ │ ├── bug_report_zh.md │ │ ├── feature_request_en.md │ │ └── feature_request_zh.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── aw/ │ │ └── actions-lock.json │ ├── stale.yml │ └── workflows/ │ ├── build.yml │ ├── cla.yml │ ├── code-style-check.yml │ ├── codeql.yml │ ├── commit_lint.yml │ ├── docker-publish.yml │ ├── docker-validation.yml │ ├── issue-triage.lock.yml │ ├── issue-triage.md │ ├── javascript-test.yml │ ├── license.yml │ ├── portal-login-e2e.yml │ ├── portal-ui-e2e.yml │ └── release-packages.yml ├── .gitignore ├── .licenserc.yaml ├── .mergify.yml ├── .mvn/ │ └── wrapper/ │ ├── MavenWrapperDownloader.java │ └── maven-wrapper.properties ├── AGENTS.md ├── CHANGES.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── GOVERNANCE.md ├── LICENSE ├── README.md ├── SECURITY.md ├── apollo-adminservice/ │ ├── pom.xml │ └── src/ │ ├── assembly/ │ │ └── assembly-descriptor.xml │ ├── main/ │ │ ├── docker/ │ │ │ └── Dockerfile │ │ ├── java/ │ │ │ └── com/ │ │ │ └── ctrip/ │ │ │ └── framework/ │ │ │ └── apollo/ │ │ │ └── adminservice/ │ │ │ ├── AdminServiceApplication.java │ │ │ ├── AdminServiceAssemblyConfiguration.java │ │ │ ├── AdminServiceAutoConfiguration.java │ │ │ ├── AdminServiceHealthIndicator.java │ │ │ ├── ServletInitializer.java │ │ │ ├── aop/ │ │ │ │ ├── NamespaceAcquireLockAspect.java │ │ │ │ ├── NamespaceUnlockAspect.java │ │ │ │ └── PreAcquireNamespaceLock.java │ │ │ ├── controller/ │ │ │ │ ├── AccessKeyController.java │ │ │ │ ├── AppController.java │ │ │ │ ├── AppNamespaceController.java │ │ │ │ ├── ClusterController.java │ │ │ │ ├── CommitController.java │ │ │ │ ├── IndexController.java │ │ │ │ ├── InstanceConfigController.java │ │ │ │ ├── ItemController.java │ │ │ │ ├── ItemSetController.java │ │ │ │ ├── NamespaceBranchController.java │ │ │ │ ├── NamespaceController.java │ │ │ │ ├── NamespaceLockController.java │ │ │ │ ├── ReleaseController.java │ │ │ │ ├── ReleaseHistoryController.java │ │ │ │ └── ServerConfigController.java │ │ │ └── filter/ │ │ │ └── AdminServiceAuthenticationFilter.java │ │ ├── resources/ │ │ │ ├── adminservice.properties │ │ │ ├── apollo-adminservice.conf │ │ │ ├── application-consul-discovery.properties │ │ │ ├── application-custom-defined-discovery.properties │ │ │ ├── application-database-discovery.properties │ │ │ ├── application-github.properties │ │ │ ├── application-kubernetes.properties │ │ │ ├── application-nacos-discovery.properties │ │ │ ├── application-zookeeper-discovery.properties │ │ │ ├── application.properties │ │ │ ├── application.yml │ │ │ └── logback.xml │ │ └── scripts/ │ │ ├── shutdown.sh │ │ └── startup.sh │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ ├── AdminServiceTestConfiguration.java │ │ ├── LocalAdminServiceApplication.java │ │ └── adminservice/ │ │ ├── GracefulShutdownConfigurationTest.java │ │ ├── aop/ │ │ │ ├── NamespaceLockTest.java │ │ │ └── NamespaceUnlockAspectTest.java │ │ ├── controller/ │ │ │ ├── AbstractControllerTest.java │ │ │ ├── AppControllerTest.java │ │ │ ├── AppNamespaceControllerTest.java │ │ │ ├── ClusterControllerTest.java │ │ │ ├── ControllerExceptionTest.java │ │ │ ├── ControllerIntegrationExceptionTest.java │ │ │ ├── InstanceConfigControllerTest.java │ │ │ ├── ItemControllerTest.java │ │ │ ├── ItemSetControllerTest.java │ │ │ ├── NamespaceControllerTest.java │ │ │ ├── ReleaseControllerTest.java │ │ │ ├── ServerConfigControllerTest.java │ │ │ └── TestWebSecurityConfig.java │ │ └── filter/ │ │ ├── AdminServiceAuthenticationFilterTest.java │ │ └── AdminServiceAuthenticationIntegrationTest.java │ └── resources/ │ ├── application.properties │ ├── application.yml │ ├── controller/ │ │ ├── cleanup.sql │ │ ├── test-itemset.sql │ │ ├── test-release.sql │ │ └── test-server-config.sql │ ├── data.sql │ ├── filter/ │ │ ├── test-access-control-disabled.sql │ │ ├── test-access-control-enabled-no-token.sql │ │ └── test-access-control-enabled.sql │ ├── import.sql │ └── logback-test.xml ├── apollo-assembly/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── ctrip/ │ │ │ └── framework/ │ │ │ └── apollo/ │ │ │ └── assembly/ │ │ │ └── ApolloApplication.java │ │ └── resources/ │ │ ├── application-database-discovery.properties │ │ ├── application-github.properties │ │ ├── application.properties │ │ ├── application.yml │ │ └── logback.xml │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ └── assembly/ │ │ └── LocalApolloApplication.java │ └── resources/ │ ├── application.properties │ ├── application.yml │ └── logback-test.xml ├── apollo-audit/ │ ├── README.md │ ├── apollo-audit-annotation/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ └── audit/ │ │ └── annotation/ │ │ ├── ApolloAuditLog.java │ │ ├── ApolloAuditLogDataInfluence.java │ │ ├── ApolloAuditLogDataInfluenceTable.java │ │ ├── ApolloAuditLogDataInfluenceTableField.java │ │ └── OpType.java │ ├── apollo-audit-api/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ └── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ └── audit/ │ │ ├── api/ │ │ │ ├── ApolloAuditLogApi.java │ │ │ ├── ApolloAuditLogQueryApi.java │ │ │ └── ApolloAuditLogRecordApi.java │ │ ├── dto/ │ │ │ ├── ApolloAuditLogDTO.java │ │ │ ├── ApolloAuditLogDataInfluenceDTO.java │ │ │ └── ApolloAuditLogDetailsDTO.java │ │ └── event/ │ │ └── ApolloAuditLogDataInfluenceEvent.java │ ├── apollo-audit-impl/ │ │ ├── pom.xml │ │ └── src/ │ │ ├── main/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── ctrip/ │ │ │ └── framework/ │ │ │ └── apollo/ │ │ │ └── audit/ │ │ │ ├── ApolloAuditProperties.java │ │ │ ├── ApolloAuditRegistrar.java │ │ │ ├── aop/ │ │ │ │ └── ApolloAuditSpanAspect.java │ │ │ ├── component/ │ │ │ │ ├── ApolloAuditHttpInterceptor.java │ │ │ │ ├── ApolloAuditLogApiJpaImpl.java │ │ │ │ └── ApolloAuditLogApiNoOpImpl.java │ │ │ ├── constants/ │ │ │ │ └── ApolloAuditConstants.java │ │ │ ├── context/ │ │ │ │ ├── ApolloAuditScope.java │ │ │ │ ├── ApolloAuditScopeManager.java │ │ │ │ ├── ApolloAuditSpan.java │ │ │ │ ├── ApolloAuditSpanContext.java │ │ │ │ ├── ApolloAuditTraceContext.java │ │ │ │ └── ApolloAuditTracer.java │ │ │ ├── controller/ │ │ │ │ └── ApolloAuditController.java │ │ │ ├── entity/ │ │ │ │ ├── ApolloAuditLog.java │ │ │ │ ├── ApolloAuditLogDataInfluence.java │ │ │ │ └── BaseEntity.java │ │ │ ├── listener/ │ │ │ │ └── ApolloAuditLogDataInfluenceEventListener.java │ │ │ ├── repository/ │ │ │ │ ├── ApolloAuditLogDataInfluenceRepository.java │ │ │ │ └── ApolloAuditLogRepository.java │ │ │ ├── service/ │ │ │ │ ├── ApolloAuditLogDataInfluenceService.java │ │ │ │ └── ApolloAuditLogService.java │ │ │ ├── spi/ │ │ │ │ ├── ApolloAuditLogQueryApiPreAuthorizer.java │ │ │ │ ├── ApolloAuditOperatorSupplier.java │ │ │ │ └── defaultimpl/ │ │ │ │ ├── ApolloAuditLogQueryApiDefaultPreAuthorizer.java │ │ │ │ └── ApolloAuditOperatorDefaultSupplier.java │ │ │ └── util/ │ │ │ └── ApolloAuditUtil.java │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ └── audit/ │ │ ├── MockBeanFactory.java │ │ ├── MockDataInfluenceEntity.java │ │ ├── aop/ │ │ │ └── ApolloAuditSpanAspectTest.java │ │ ├── component/ │ │ │ ├── ApolloAuditHttpInterceptorTest.java │ │ │ ├── ApolloAuditLogApiJpaImplTest.java │ │ │ └── ApolloAuditScopeManagerTest.java │ │ ├── context/ │ │ │ ├── ApolloAuditTraceContextTest.java │ │ │ └── ApolloAuditTracerTest.java │ │ ├── controller/ │ │ │ └── ApolloAuditControllerTest.java │ │ └── spi/ │ │ └── ApolloAuditOperatorSupplierTest.java │ ├── apollo-audit-spring-boot-starter/ │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── ctrip/ │ │ │ └── framework/ │ │ │ └── apollo/ │ │ │ └── audit/ │ │ │ └── configuration/ │ │ │ ├── ApolloAuditAutoConfiguration.java │ │ │ └── ApolloAuditNoOpAutoConfiguration.java │ │ └── resources/ │ │ └── META-INF/ │ │ ├── spring/ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ └── spring.factories │ └── pom.xml ├── apollo-biz/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ └── biz/ │ │ ├── ApolloBizAssemblyConfiguration.java │ │ ├── ApolloBizConfig.java │ │ ├── auth/ │ │ │ └── WebSecurityConfig.java │ │ ├── config/ │ │ │ └── BizConfig.java │ │ ├── entity/ │ │ │ ├── AccessKey.java │ │ │ ├── Audit.java │ │ │ ├── Cluster.java │ │ │ ├── Commit.java │ │ │ ├── GrayReleaseRule.java │ │ │ ├── Instance.java │ │ │ ├── InstanceConfig.java │ │ │ ├── Item.java │ │ │ ├── JpaMapFieldJsonConverter.java │ │ │ ├── Namespace.java │ │ │ ├── NamespaceLock.java │ │ │ ├── Privilege.java │ │ │ ├── Release.java │ │ │ ├── ReleaseHistory.java │ │ │ ├── ReleaseMessage.java │ │ │ ├── ServerConfig.java │ │ │ └── ServiceRegistry.java │ │ ├── eureka/ │ │ │ └── ApolloEurekaClientConfig.java │ │ ├── grayReleaseRule/ │ │ │ ├── GrayReleaseRuleCache.java │ │ │ └── GrayReleaseRulesHolder.java │ │ ├── message/ │ │ │ ├── DatabaseMessageSender.java │ │ │ ├── MessageSender.java │ │ │ ├── ReleaseMessageListener.java │ │ │ ├── ReleaseMessageScanner.java │ │ │ └── Topics.java │ │ ├── registry/ │ │ │ ├── DatabaseDiscoveryClient.java │ │ │ ├── DatabaseDiscoveryClientAlwaysAddSelfInstanceDecoratorImpl.java │ │ │ ├── DatabaseDiscoveryClientImpl.java │ │ │ ├── DatabaseDiscoveryClientMemoryCacheDecoratorImpl.java │ │ │ ├── DatabaseServiceRegistry.java │ │ │ ├── DatabaseServiceRegistryImpl.java │ │ │ ├── ServiceInstance.java │ │ │ ├── configuration/ │ │ │ │ ├── ApolloServiceDiscoveryAutoConfiguration.java │ │ │ │ ├── ApolloServiceRegistryAutoConfiguration.java │ │ │ │ └── support/ │ │ │ │ ├── ApolloServiceDiscoveryProperties.java │ │ │ │ ├── ApolloServiceRegistryClearApplicationRunner.java │ │ │ │ ├── ApolloServiceRegistryDeregisterApplicationListener.java │ │ │ │ ├── ApolloServiceRegistryHeartbeatApplicationRunner.java │ │ │ │ └── ApolloServiceRegistryProperties.java │ │ │ └── package-info.java │ │ ├── repository/ │ │ │ ├── AccessKeyRepository.java │ │ │ ├── AppNamespaceRepository.java │ │ │ ├── AppRepository.java │ │ │ ├── AuditRepository.java │ │ │ ├── ClusterRepository.java │ │ │ ├── CommitRepository.java │ │ │ ├── GrayReleaseRuleRepository.java │ │ │ ├── InstanceConfigRepository.java │ │ │ ├── InstanceRepository.java │ │ │ ├── ItemRepository.java │ │ │ ├── NamespaceLockRepository.java │ │ │ ├── NamespaceRepository.java │ │ │ ├── PrivilegeRepository.java │ │ │ ├── ReleaseHistoryRepository.java │ │ │ ├── ReleaseMessageRepository.java │ │ │ ├── ReleaseRepository.java │ │ │ ├── ServerConfigRepository.java │ │ │ └── ServiceRegistryRepository.java │ │ ├── service/ │ │ │ ├── AccessKeyService.java │ │ │ ├── AdminService.java │ │ │ ├── AppNamespaceService.java │ │ │ ├── AppService.java │ │ │ ├── AuditService.java │ │ │ ├── BizDBPropertySource.java │ │ │ ├── ClusterService.java │ │ │ ├── CommitService.java │ │ │ ├── InstanceService.java │ │ │ ├── ItemService.java │ │ │ ├── ItemSetService.java │ │ │ ├── NamespaceBranchService.java │ │ │ ├── NamespaceLockService.java │ │ │ ├── NamespaceService.java │ │ │ ├── ReleaseHistoryService.java │ │ │ ├── ReleaseMessageService.java │ │ │ ├── ReleaseService.java │ │ │ ├── ServerConfigService.java │ │ │ └── ServiceRegistryService.java │ │ └── utils/ │ │ ├── ConfigChangeContentBuilder.java │ │ ├── EntityManagerUtil.java │ │ ├── ReleaseKeyGenerator.java │ │ └── ReleaseMessageKeyGenerator.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ └── biz/ │ │ ├── AbstractIntegrationTest.java │ │ ├── AbstractUnitTest.java │ │ ├── BizTestConfiguration.java │ │ ├── MockBeanFactory.java │ │ ├── config/ │ │ │ └── BizConfigTest.java │ │ ├── entity/ │ │ │ └── JpaMapFieldJsonConverterTest.java │ │ ├── grayReleaseRule/ │ │ │ └── GrayReleaseRulesHolderTest.java │ │ ├── message/ │ │ │ ├── DatabaseMessageSenderTest.java │ │ │ └── ReleaseMessageScannerTest.java │ │ ├── registry/ │ │ │ ├── DatabaseDiscoveryClientAlwaysAddSelfInstanceDecoratorImplTest.java │ │ │ ├── DatabaseDiscoveryClientImplTest.java │ │ │ ├── DatabaseDiscoveryClientMemoryCacheDecoratorImplTest.java │ │ │ ├── DatabaseDiscoveryIntegrationTest.java │ │ │ ├── DatabaseDiscoveryWithoutDecoratorIntegrationTest.java │ │ │ ├── ServiceInstanceFactory.java │ │ │ └── configuration/ │ │ │ ├── ApolloServiceRegistryAutoConfigurationNotEnabledTest.java │ │ │ └── support/ │ │ │ └── ApolloServiceRegistryClearApplicationRunnerIntegrationTest.java │ │ ├── repository/ │ │ │ ├── AccessKeyRepositoryTest.java │ │ │ ├── AppNamespaceRepositoryTest.java │ │ │ ├── AppRepositoryTest.java │ │ │ ├── InstanceConfigRepositoryTest.java │ │ │ └── ReleaseHistoryRepositoryTest.java │ │ ├── service/ │ │ │ ├── AccessKeyServiceTest.java │ │ │ ├── AdminServiceTest.java │ │ │ ├── AdminServiceTransactionTest.java │ │ │ ├── BizDBPropertySourceTest.java │ │ │ ├── ClusterServiceTest.java │ │ │ ├── InstanceServiceTest.java │ │ │ ├── ItemServiceTest.java │ │ │ ├── ItemSetServiceTest.java │ │ │ ├── NamespaceBranchServiceTest.java │ │ │ ├── NamespacePublishInfoTest.java │ │ │ ├── NamespaceServiceIntegrationTest.java │ │ │ ├── NamespaceServiceTest.java │ │ │ ├── ReleaseCreationTest.java │ │ │ ├── ReleaseHistoryServiceTest.java │ │ │ ├── ReleaseServiceTest.java │ │ │ └── ServerConfigServiceTest.java │ │ └── utils/ │ │ ├── ConfigChangeContentBuilderTest.java │ │ └── ReleaseKeyGeneratorTest.java │ └── resources/ │ ├── application.properties │ ├── data.sql │ ├── import.sql │ ├── json/ │ │ └── converter/ │ │ ├── element.1.json │ │ └── element.2.json │ ├── logback-test.xml │ └── sql/ │ ├── accesskey-test.sql │ ├── clean.sql │ ├── item-test.sql │ ├── itemset-test.sql │ ├── namespace-branch-test.sql │ ├── namespace-test.sql │ ├── release-creation-test.sql │ └── release-history-test.sql ├── apollo-build-sql-converter/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ └── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ └── build/ │ │ └── sql/ │ │ └── converter/ │ │ ├── ApolloH2ConverterUtil.java │ │ ├── ApolloMysqlDefaultConverterUtil.java │ │ ├── ApolloSqlConverter.java │ │ ├── ApolloSqlConverterUtil.java │ │ ├── SqlStatement.java │ │ ├── SqlTemplate.java │ │ ├── SqlTemplateContext.java │ │ └── SqlTemplateGist.java │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ └── build/ │ │ └── sql/ │ │ └── converter/ │ │ ├── ApolloSqlConverterAutoGeneratedTest.java │ │ ├── ApolloSqlConverterH2Test.java │ │ └── TestH2Function.java │ └── resources/ │ └── META-INF/ │ └── sql/ │ └── h2-test/ │ └── delta/ │ ├── v000-v010/ │ │ ├── apolloconfigdb-v000-v010-after.sql │ │ ├── apolloconfigdb-v000-v010-base.sql │ │ ├── apolloconfigdb-v000-v010-before.sql │ │ ├── apolloconfigdb-v000-v010.sql │ │ ├── apolloportaldb-v000-v010-base.sql │ │ └── apolloportaldb-v000-v010.sql │ ├── v040-v050/ │ │ ├── apolloconfigdb-v040-v050.sql │ │ └── apolloportaldb-v040-v050.sql │ ├── v060-v062/ │ │ ├── apolloconfigdb-v060-v062.sql │ │ └── apolloportaldb-v060-v062.sql │ ├── v080-v090/ │ │ └── apolloportaldb-v080-v090.sql │ ├── v151-v160/ │ │ └── apolloconfigdb-v151-v160.sql │ ├── v170-v180/ │ │ ├── apolloconfigdb-v170-v180.sql │ │ └── apolloportaldb-v170-v180.sql │ ├── v180-v190/ │ │ ├── apolloconfigdb-v180-v190.sql │ │ └── apolloportaldb-v180-v190.sql │ ├── v190-v200/ │ │ ├── apolloconfigdb-v190-v200-after.sql │ │ ├── apolloconfigdb-v190-v200.sql │ │ ├── apolloportaldb-v190-v200-after.sql │ │ └── apolloportaldb-v190-v200.sql │ ├── v200-v210/ │ │ └── apolloconfigdb-v200-v210.sql │ └── v210-v220/ │ ├── apolloconfigdb-v210-v220.sql │ └── apolloportaldb-v210-v220.sql ├── apollo-buildtools/ │ ├── .gitignore │ ├── pom.xml │ ├── src/ │ │ └── main/ │ │ ├── resources/ │ │ │ ├── LICENSE-2.0.txt │ │ │ └── google_checks.xml │ │ └── scripts/ │ │ └── deploy_jenkins.sh │ └── style/ │ ├── eclipse-java-google-style.xml │ ├── intellij-java-google-style.xml │ └── license/ │ └── apollo-license ├── apollo-common/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── ctrip/ │ │ │ └── framework/ │ │ │ └── apollo/ │ │ │ └── common/ │ │ │ ├── ApolloCommonConfig.java │ │ │ ├── aop/ │ │ │ │ └── RepositoryAspect.java │ │ │ ├── condition/ │ │ │ │ ├── ConditionalOnMissingProfile.java │ │ │ │ ├── ConditionalOnProfile.java │ │ │ │ └── OnProfileCondition.java │ │ │ ├── config/ │ │ │ │ ├── RefreshableConfig.java │ │ │ │ └── RefreshablePropertySource.java │ │ │ ├── constants/ │ │ │ │ ├── AccessKeyMode.java │ │ │ │ ├── ApolloServer.java │ │ │ │ ├── GsonType.java │ │ │ │ ├── NamespaceBranchStatus.java │ │ │ │ ├── ReleaseOperation.java │ │ │ │ └── ReleaseOperationContext.java │ │ │ ├── controller/ │ │ │ │ ├── ApolloInfoController.java │ │ │ │ ├── CharacterEncodingFilterConfiguration.java │ │ │ │ ├── GlobalDefaultExceptionHandler.java │ │ │ │ ├── HttpMessageConverterConfiguration.java │ │ │ │ └── WebMvcConfig.java │ │ │ ├── datasource/ │ │ │ │ ├── ApolloDataSourceScriptDatabaseInitializer.java │ │ │ │ ├── ApolloDataSourceScriptDatabaseInitializerFactory.java │ │ │ │ └── ApolloSqlInitializationProperties.java │ │ │ ├── dto/ │ │ │ │ ├── AccessKeyDTO.java │ │ │ │ ├── AppDTO.java │ │ │ │ ├── AppNamespaceDTO.java │ │ │ │ ├── BaseDTO.java │ │ │ │ ├── ClusterDTO.java │ │ │ │ ├── CommitDTO.java │ │ │ │ ├── GrayReleaseRuleDTO.java │ │ │ │ ├── GrayReleaseRuleItemDTO.java │ │ │ │ ├── InstanceConfigDTO.java │ │ │ │ ├── InstanceDTO.java │ │ │ │ ├── ItemChangeSets.java │ │ │ │ ├── ItemDTO.java │ │ │ │ ├── ItemInfoDTO.java │ │ │ │ ├── NamespaceDTO.java │ │ │ │ ├── NamespaceLockDTO.java │ │ │ │ ├── PageDTO.java │ │ │ │ ├── ReleaseDTO.java │ │ │ │ └── ReleaseHistoryDTO.java │ │ │ ├── entity/ │ │ │ │ ├── App.java │ │ │ │ ├── AppNamespace.java │ │ │ │ ├── BaseEntity.java │ │ │ │ └── EntityPair.java │ │ │ ├── exception/ │ │ │ │ ├── AbstractApolloHttpException.java │ │ │ │ ├── BadRequestException.java │ │ │ │ ├── BeanUtilsException.java │ │ │ │ ├── NotFoundException.java │ │ │ │ └── ServiceException.java │ │ │ ├── http/ │ │ │ │ ├── MultiResponseEntity.java │ │ │ │ ├── RichResponseEntity.java │ │ │ │ └── SearchResponseEntity.java │ │ │ ├── jpa/ │ │ │ │ ├── H2Function.java │ │ │ │ └── SqlFunctionsMetadataBuilderContributor.java │ │ │ └── utils/ │ │ │ ├── BeanUtils.java │ │ │ ├── ExceptionUtils.java │ │ │ ├── GrayReleaseRuleItemTransformer.java │ │ │ ├── InputValidator.java │ │ │ ├── RequestPrecondition.java │ │ │ ├── UniqueKeyGenerator.java │ │ │ └── WebUtils.java │ │ └── resources/ │ │ ├── application-h2.properties │ │ ├── application-mysql.properties │ │ ├── application-postgre.properties │ │ ├── application.yaml │ │ └── banner.txt │ └── test/ │ └── java/ │ └── com/ │ └── ctrip/ │ └── framework/ │ └── apollo/ │ └── common/ │ ├── conditional/ │ │ └── ConditionalOnProfileTest.java │ ├── dto/ │ │ └── ItemInfoDTOTest.java │ ├── exception/ │ │ ├── BadRequestExceptionTest.java │ │ └── NotFoundExceptionTest.java │ ├── http/ │ │ └── SearchResponseEntityTest.java │ └── utils/ │ ├── BeanUtilsTest.java │ ├── InputValidatorTest.java │ └── WebUtilsTest.java ├── apollo-configservice/ │ ├── pom.xml │ └── src/ │ ├── assembly/ │ │ └── assembly-descriptor.xml │ ├── main/ │ │ ├── docker/ │ │ │ └── Dockerfile │ │ ├── java/ │ │ │ └── com/ │ │ │ └── ctrip/ │ │ │ └── framework/ │ │ │ └── apollo/ │ │ │ ├── configservice/ │ │ │ │ ├── ConfigServerEurekaServerConfigure.java │ │ │ │ ├── ConfigServiceApplication.java │ │ │ │ ├── ConfigServiceAssemblyConfiguration.java │ │ │ │ ├── ConfigServiceAutoConfiguration.java │ │ │ │ ├── ConfigServiceHealthIndicator.java │ │ │ │ ├── ServletInitializer.java │ │ │ │ ├── controller/ │ │ │ │ │ ├── ConfigController.java │ │ │ │ │ ├── ConfigFileController.java │ │ │ │ │ ├── NotificationController.java │ │ │ │ │ └── NotificationControllerV2.java │ │ │ │ ├── filter/ │ │ │ │ │ └── ClientAuthenticationFilter.java │ │ │ │ ├── service/ │ │ │ │ │ ├── AccessKeyServiceWithCache.java │ │ │ │ │ ├── AppNamespaceServiceWithCache.java │ │ │ │ │ ├── ReleaseMessageServiceWithCache.java │ │ │ │ │ └── config/ │ │ │ │ │ ├── AbstractConfigService.java │ │ │ │ │ ├── ConfigService.java │ │ │ │ │ ├── ConfigServiceWithCache.java │ │ │ │ │ ├── DefaultConfigService.java │ │ │ │ │ ├── DefaultIncrementalSyncService.java │ │ │ │ │ └── IncrementalSyncService.java │ │ │ │ ├── util/ │ │ │ │ │ ├── AccessKeyUtil.java │ │ │ │ │ ├── InstanceConfigAuditUtil.java │ │ │ │ │ ├── NamespaceUtil.java │ │ │ │ │ └── WatchKeysUtil.java │ │ │ │ └── wrapper/ │ │ │ │ ├── CaseInsensitiveMapWrapper.java │ │ │ │ ├── CaseInsensitiveMultimapWrapper.java │ │ │ │ └── DeferredResultWrapper.java │ │ │ └── metaservice/ │ │ │ ├── ApolloMetaServiceConfig.java │ │ │ ├── controller/ │ │ │ │ ├── HomePageController.java │ │ │ │ └── ServiceController.java │ │ │ └── service/ │ │ │ ├── DatabaseDiscoveryService.java │ │ │ ├── DefaultDiscoveryService.java │ │ │ ├── DiscoveryService.java │ │ │ ├── KubernetesDiscoveryService.java │ │ │ ├── NacosDiscoveryService.java │ │ │ └── SpringCloudInnerDiscoveryService.java │ │ ├── resources/ │ │ │ ├── apollo-configservice.conf │ │ │ ├── application-consul-discovery.properties │ │ │ ├── application-custom-defined-discovery.properties │ │ │ ├── application-database-discovery.properties │ │ │ ├── application-github.properties │ │ │ ├── application-kubernetes.properties │ │ │ ├── application-nacos-discovery.properties │ │ │ ├── application-zookeeper-discovery.properties │ │ │ ├── application.properties │ │ │ ├── application.yml │ │ │ ├── configservice.properties │ │ │ ├── jpa/ │ │ │ │ └── configdb.init.h2.sql │ │ │ └── logback.xml │ │ └── scripts/ │ │ ├── shutdown.sh │ │ └── startup.sh │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ ├── ConfigServiceTestConfiguration.java │ │ ├── LocalConfigServiceApplication.java │ │ ├── configservice/ │ │ │ ├── GracefulShutdownConfigurationTest.java │ │ │ ├── controller/ │ │ │ │ ├── ConfigControllerTest.java │ │ │ │ ├── ConfigFileControllerTest.java │ │ │ │ ├── NotificationControllerTest.java │ │ │ │ ├── NotificationControllerV2Test.java │ │ │ │ └── TestWebSecurityConfig.java │ │ │ ├── filter/ │ │ │ │ └── ClientAuthenticationFilterTest.java │ │ │ ├── integration/ │ │ │ │ ├── AbstractBaseIntegrationTest.java │ │ │ │ ├── ConfigControllerIntegrationTest.java │ │ │ │ ├── ConfigFileControllerIntegrationTest.java │ │ │ │ ├── NotificationControllerIntegrationTest.java │ │ │ │ └── NotificationControllerV2IntegrationTest.java │ │ │ ├── service/ │ │ │ │ ├── AccessKeyServiceWithCacheTest.java │ │ │ │ ├── AppNamespaceServiceWithCacheTest.java │ │ │ │ ├── ReleaseMessageServiceWithCacheTest.java │ │ │ │ └── config/ │ │ │ │ ├── ConfigServiceWithCacheAndCacheKeyIgnoreCaseTest.java │ │ │ │ ├── ConfigServiceWithCacheTest.java │ │ │ │ ├── DefaultConfigServiceTest.java │ │ │ │ └── DefaultIncrementalSyncServiceTest.java │ │ │ ├── util/ │ │ │ │ ├── AccessKeyUtilTest.java │ │ │ │ ├── InstanceConfigAuditUtilTest.java │ │ │ │ ├── NamespaceUtilTest.java │ │ │ │ └── WatchKeysUtilTest.java │ │ │ └── wrapper/ │ │ │ ├── CaseInsensitiveMapWrapperTest.java │ │ │ └── CaseInsensitiveMultimapWrapperTest.java │ │ └── metaservice/ │ │ ├── controller/ │ │ │ ├── HomePageControllerTest.java │ │ │ └── ServiceControllerTest.java │ │ └── service/ │ │ ├── ConsulDiscoveryServiceTest.java │ │ ├── DefaultDiscoveryServiceTest.java │ │ ├── KubernetesDiscoveryServiceTest.java │ │ ├── NacosDiscoveryServiceTest.java │ │ └── ZookeeperDiscoveryServiceTest.java │ └── resources/ │ ├── application.properties │ ├── application.yml │ ├── data.sql │ ├── import.sql │ ├── integration-test/ │ │ ├── cleanup.sql │ │ ├── test-gray-release.sql │ │ ├── test-release-message.sql │ │ ├── test-release-public-dc-override.sql │ │ ├── test-release-public-default-override.sql │ │ └── test-release.sql │ └── logback-test.xml ├── apollo-portal/ │ ├── pom.xml │ └── src/ │ ├── assembly/ │ │ └── assembly-descriptor.xml │ ├── main/ │ │ ├── docker/ │ │ │ └── Dockerfile │ │ ├── java/ │ │ │ └── com/ │ │ │ └── ctrip/ │ │ │ └── framework/ │ │ │ └── apollo/ │ │ │ ├── openapi/ │ │ │ │ ├── PortalOpenApiConfig.java │ │ │ │ ├── auth/ │ │ │ │ │ └── ConsumerPermissionValidator.java │ │ │ │ ├── entity/ │ │ │ │ │ ├── Consumer.java │ │ │ │ │ ├── ConsumerAudit.java │ │ │ │ │ ├── ConsumerRole.java │ │ │ │ │ └── ConsumerToken.java │ │ │ │ ├── filter/ │ │ │ │ │ └── ConsumerAuthenticationFilter.java │ │ │ │ ├── repository/ │ │ │ │ │ ├── ConsumerAuditRepository.java │ │ │ │ │ ├── ConsumerRepository.java │ │ │ │ │ ├── ConsumerRoleRepository.java │ │ │ │ │ └── ConsumerTokenRepository.java │ │ │ │ ├── server/ │ │ │ │ │ └── service/ │ │ │ │ │ ├── AppOpenApiService.java │ │ │ │ │ ├── ClusterOpenApiService.java │ │ │ │ │ ├── EnvOpenApiService.java │ │ │ │ │ ├── OrganizationOpenApiService.java │ │ │ │ │ ├── ServerAppOpenApiService.java │ │ │ │ │ ├── ServerClusterOpenApiService.java │ │ │ │ │ ├── ServerEnvOpenApiService.java │ │ │ │ │ ├── ServerInstanceOpenApiService.java │ │ │ │ │ ├── ServerItemOpenApiService.java │ │ │ │ │ ├── ServerNamespaceOpenApiService.java │ │ │ │ │ ├── ServerOrganizationOpenApiService.java │ │ │ │ │ └── ServerReleaseOpenApiService.java │ │ │ │ ├── service/ │ │ │ │ │ ├── ConsumerRolePermissionService.java │ │ │ │ │ └── ConsumerService.java │ │ │ │ ├── util/ │ │ │ │ │ ├── ConsumerAuditUtil.java │ │ │ │ │ ├── ConsumerAuthUtil.java │ │ │ │ │ ├── OpenApiBeanUtils.java │ │ │ │ │ └── OpenApiModelConverters.java │ │ │ │ └── v1/ │ │ │ │ └── controller/ │ │ │ │ ├── AppController.java │ │ │ │ ├── ClusterController.java │ │ │ │ ├── EnvController.java │ │ │ │ ├── InstanceController.java │ │ │ │ ├── ItemController.java │ │ │ │ ├── NamespaceBranchController.java │ │ │ │ ├── NamespaceController.java │ │ │ │ ├── OrganizationController.java │ │ │ │ └── ReleaseController.java │ │ │ └── portal/ │ │ │ ├── PortalApplication.java │ │ │ ├── PortalAssemblyConfiguration.java │ │ │ ├── ServletInitializer.java │ │ │ ├── api/ │ │ │ │ ├── API.java │ │ │ │ └── AdminServiceAPI.java │ │ │ ├── audit/ │ │ │ │ ├── ApolloAuditLogQueryApiPortalPreAuthorizer.java │ │ │ │ └── ApolloAuditOperatorPortalSupplier.java │ │ │ ├── component/ │ │ │ │ ├── AbstractPermissionValidator.java │ │ │ │ ├── AdminServiceAddressLocator.java │ │ │ │ ├── ConfigReleaseWebhookNotifier.java │ │ │ │ ├── ItemsComparator.java │ │ │ │ ├── PermissionValidator.java │ │ │ │ ├── PortalSettings.java │ │ │ │ ├── RestTemplateFactory.java │ │ │ │ ├── RetryableRestTemplate.java │ │ │ │ ├── UnifiedPermissionValidator.java │ │ │ │ ├── UserIdentityContextHolder.java │ │ │ │ ├── UserPermissionValidator.java │ │ │ │ ├── config/ │ │ │ │ │ ├── PortalConfig.java │ │ │ │ │ └── SpringSessionConfig.java │ │ │ │ ├── emailbuilder/ │ │ │ │ │ ├── ConfigPublishEmailBuilder.java │ │ │ │ │ ├── GrayPublishEmailBuilder.java │ │ │ │ │ ├── MergeEmailBuilder.java │ │ │ │ │ ├── NormalPublishEmailBuilder.java │ │ │ │ │ └── RollbackEmailBuilder.java │ │ │ │ └── txtresolver/ │ │ │ │ ├── ConfigTextResolver.java │ │ │ │ ├── FileTextResolver.java │ │ │ │ └── PropertyResolver.java │ │ │ ├── constant/ │ │ │ │ ├── PermissionType.java │ │ │ │ ├── RoleType.java │ │ │ │ ├── TracerEventType.java │ │ │ │ └── UserIdentityConstants.java │ │ │ ├── controller/ │ │ │ │ ├── AccessKeyController.java │ │ │ │ ├── AppController.java │ │ │ │ ├── ClusterController.java │ │ │ │ ├── CommitController.java │ │ │ │ ├── ConfigsExportController.java │ │ │ │ ├── ConfigsImportController.java │ │ │ │ ├── ConsumerController.java │ │ │ │ ├── EnvController.java │ │ │ │ ├── FavoriteController.java │ │ │ │ ├── GlobalSearchController.java │ │ │ │ ├── InstanceController.java │ │ │ │ ├── ItemController.java │ │ │ │ ├── NamespaceBranchController.java │ │ │ │ ├── NamespaceController.java │ │ │ │ ├── NamespaceLockController.java │ │ │ │ ├── OrganizationController.java │ │ │ │ ├── PageSettingController.java │ │ │ │ ├── PermissionController.java │ │ │ │ ├── PrefixPathController.java │ │ │ │ ├── ReleaseController.java │ │ │ │ ├── ReleaseHistoryController.java │ │ │ │ ├── SearchController.java │ │ │ │ ├── ServerConfigController.java │ │ │ │ ├── SignInController.java │ │ │ │ ├── SsoHeartbeatController.java │ │ │ │ ├── SystemInfoController.java │ │ │ │ └── UserInfoController.java │ │ │ ├── enricher/ │ │ │ │ ├── AdditionalUserInfoEnricher.java │ │ │ │ ├── adapter/ │ │ │ │ │ ├── AppDtoUserInfoEnrichedAdapter.java │ │ │ │ │ ├── BaseDtoUserInfoEnrichedAdapter.java │ │ │ │ │ └── UserInfoEnrichedAdapter.java │ │ │ │ └── impl/ │ │ │ │ └── UserDisplayNameEnricher.java │ │ │ ├── entity/ │ │ │ │ ├── bo/ │ │ │ │ │ ├── ConfigBO.java │ │ │ │ │ ├── Email.java │ │ │ │ │ ├── ItemBO.java │ │ │ │ │ ├── KVEntity.java │ │ │ │ │ ├── NamespaceBO.java │ │ │ │ │ ├── ReleaseBO.java │ │ │ │ │ ├── ReleaseHistoryBO.java │ │ │ │ │ └── UserInfo.java │ │ │ │ ├── model/ │ │ │ │ │ ├── AppModel.java │ │ │ │ │ ├── NamespaceCreationModel.java │ │ │ │ │ ├── NamespaceGrayDelReleaseModel.java │ │ │ │ │ ├── NamespaceReleaseModel.java │ │ │ │ │ ├── NamespaceSyncModel.java │ │ │ │ │ ├── NamespaceTextModel.java │ │ │ │ │ └── Verifiable.java │ │ │ │ ├── po/ │ │ │ │ │ ├── Authority.java │ │ │ │ │ ├── Favorite.java │ │ │ │ │ ├── Permission.java │ │ │ │ │ ├── Role.java │ │ │ │ │ ├── RolePermission.java │ │ │ │ │ ├── ServerConfig.java │ │ │ │ │ ├── UserPO.java │ │ │ │ │ └── UserRole.java │ │ │ │ └── vo/ │ │ │ │ ├── AppRolesAssignedUsers.java │ │ │ │ ├── Change.java │ │ │ │ ├── ClusterNamespaceRolesAssignedUsers.java │ │ │ │ ├── EnvClusterInfo.java │ │ │ │ ├── EnvironmentInfo.java │ │ │ │ ├── ItemDiffs.java │ │ │ │ ├── ItemInfo.java │ │ │ │ ├── LockInfo.java │ │ │ │ ├── NamespaceEnvRolesAssignedUsers.java │ │ │ │ ├── NamespaceIdentifier.java │ │ │ │ ├── NamespaceRolesAssignedUsers.java │ │ │ │ ├── NamespaceUsage.java │ │ │ │ ├── Number.java │ │ │ │ ├── Organization.java │ │ │ │ ├── PageSetting.java │ │ │ │ ├── PermissionCondition.java │ │ │ │ ├── ReleaseCompareResult.java │ │ │ │ ├── SystemInfo.java │ │ │ │ └── consumer/ │ │ │ │ ├── ConsumerCreateRequestVO.java │ │ │ │ └── ConsumerInfo.java │ │ │ ├── enums/ │ │ │ │ └── ChangeType.java │ │ │ ├── environment/ │ │ │ │ ├── DatabasePortalMetaServerProvider.java │ │ │ │ ├── DefaultPortalMetaServerProvider.java │ │ │ │ ├── Env.java │ │ │ │ ├── PortalMetaDomainService.java │ │ │ │ └── PortalMetaServerProvider.java │ │ │ ├── filter/ │ │ │ │ ├── PortalUserSessionFilter.java │ │ │ │ └── UserTypeResolverFilter.java │ │ │ ├── listener/ │ │ │ │ ├── AppCreationEvent.java │ │ │ │ ├── AppDeletionEvent.java │ │ │ │ ├── AppInfoChangedEvent.java │ │ │ │ ├── AppInfoChangedListener.java │ │ │ │ ├── AppNamespaceCreationEvent.java │ │ │ │ ├── AppNamespaceDeletionEvent.java │ │ │ │ ├── ConfigPublishEvent.java │ │ │ │ ├── ConfigPublishListener.java │ │ │ │ ├── CreationListener.java │ │ │ │ └── DeletionListener.java │ │ │ ├── repository/ │ │ │ │ ├── AppNamespaceRepository.java │ │ │ │ ├── AppRepository.java │ │ │ │ ├── AuthorityRepository.java │ │ │ │ ├── FavoriteRepository.java │ │ │ │ ├── PermissionRepository.java │ │ │ │ ├── RolePermissionRepository.java │ │ │ │ ├── RoleRepository.java │ │ │ │ ├── ServerConfigRepository.java │ │ │ │ ├── UserRepository.java │ │ │ │ └── UserRoleRepository.java │ │ │ ├── service/ │ │ │ │ ├── AccessKeyService.java │ │ │ │ ├── AdditionalUserInfoEnrichService.java │ │ │ │ ├── AdditionalUserInfoEnrichServiceImpl.java │ │ │ │ ├── AppNamespaceService.java │ │ │ │ ├── AppService.java │ │ │ │ ├── ClusterService.java │ │ │ │ ├── CommitService.java │ │ │ │ ├── ConfigsExportService.java │ │ │ │ ├── ConfigsImportService.java │ │ │ │ ├── FavoriteService.java │ │ │ │ ├── GlobalSearchService.java │ │ │ │ ├── InstanceService.java │ │ │ │ ├── ItemService.java │ │ │ │ ├── NamespaceBranchService.java │ │ │ │ ├── NamespaceLockService.java │ │ │ │ ├── NamespaceService.java │ │ │ │ ├── PortalDBPropertySource.java │ │ │ │ ├── ReleaseHistoryService.java │ │ │ │ ├── ReleaseService.java │ │ │ │ ├── RoleInitializationService.java │ │ │ │ ├── RolePermissionService.java │ │ │ │ ├── ServerConfigService.java │ │ │ │ └── SystemRoleManagerService.java │ │ │ ├── spi/ │ │ │ │ ├── EmailService.java │ │ │ │ ├── LogoutHandler.java │ │ │ │ ├── MQService.java │ │ │ │ ├── SsoHeartbeatHandler.java │ │ │ │ ├── UserInfoHolder.java │ │ │ │ ├── UserService.java │ │ │ │ ├── configuration/ │ │ │ │ │ ├── AuthConfiguration.java │ │ │ │ │ ├── AuthFilterConfiguration.java │ │ │ │ │ ├── EmailConfiguration.java │ │ │ │ │ ├── LdapExtendProperties.java │ │ │ │ │ ├── LdapGroupProperties.java │ │ │ │ │ ├── LdapMappingProperties.java │ │ │ │ │ ├── LdapProperties.java │ │ │ │ │ ├── MQConfiguration.java │ │ │ │ │ ├── OidcExtendProperties.java │ │ │ │ │ └── RoleConfiguration.java │ │ │ │ ├── defaultimpl/ │ │ │ │ │ ├── DefaultEmailService.java │ │ │ │ │ ├── DefaultLogoutHandler.java │ │ │ │ │ ├── DefaultMQService.java │ │ │ │ │ ├── DefaultRoleInitializationService.java │ │ │ │ │ ├── DefaultRolePermissionService.java │ │ │ │ │ ├── DefaultSsoHeartbeatHandler.java │ │ │ │ │ ├── DefaultUserInfoHolder.java │ │ │ │ │ └── DefaultUserService.java │ │ │ │ ├── ldap/ │ │ │ │ │ ├── ApolloLdapAuthenticationProvider.java │ │ │ │ │ ├── FilterLdapByGroupUserSearch.java │ │ │ │ │ └── LdapUserService.java │ │ │ │ ├── oidc/ │ │ │ │ │ ├── ExcludeClientCredentialsClientRegistrationRepository.java │ │ │ │ │ ├── OidcAuthenticationSuccessEventListener.java │ │ │ │ │ ├── OidcLocalUserService.java │ │ │ │ │ ├── OidcLocalUserServiceImpl.java │ │ │ │ │ ├── OidcLogoutHandler.java │ │ │ │ │ ├── OidcUserInfoHolder.java │ │ │ │ │ ├── OidcUserInfoUtil.java │ │ │ │ │ └── PlaceholderPasswordEncoder.java │ │ │ │ ├── package-info.java │ │ │ │ └── springsecurity/ │ │ │ │ ├── ApolloPasswordEncoderFactory.java │ │ │ │ ├── PasswordEncoderAdapter.java │ │ │ │ ├── SpringSecurityUserInfoHolder.java │ │ │ │ └── SpringSecurityUserService.java │ │ │ └── util/ │ │ │ ├── ConfigFileUtils.java │ │ │ ├── ConfigToFileUtils.java │ │ │ ├── KeyValueUtils.java │ │ │ ├── NamespaceBOUtils.java │ │ │ ├── RelativeDateFormat.java │ │ │ ├── RoleUtils.java │ │ │ └── checker/ │ │ │ ├── AuthUserPasswordChecker.java │ │ │ ├── CheckResult.java │ │ │ └── UserPasswordChecker.java │ │ ├── resources/ │ │ │ ├── apollo-env.properties │ │ │ ├── apollo-portal.conf │ │ │ ├── application-github.properties │ │ │ ├── application-ldap-activedirectory-sample.yml │ │ │ ├── application-ldap-apacheds-sample.yml │ │ │ ├── application-ldap-openldap-sample.yml │ │ │ ├── application-oidc-sample.yml │ │ │ ├── application.properties │ │ │ ├── application.yml │ │ │ ├── jpa/ │ │ │ │ └── portaldb.init.h2.sql │ │ │ ├── logback.xml │ │ │ ├── portal.properties │ │ │ └── static/ │ │ │ ├── app/ │ │ │ │ ├── access_key.html │ │ │ │ ├── manage_cluster.html │ │ │ │ └── setting.html │ │ │ ├── app.html │ │ │ ├── audit_log_menu.html │ │ │ ├── audit_log_trace_detail.html │ │ │ ├── cluster/ │ │ │ │ └── ns_role.html │ │ │ ├── cluster.html │ │ │ ├── config/ │ │ │ │ ├── diff.html │ │ │ │ ├── history.html │ │ │ │ └── sync.html │ │ │ ├── config.html │ │ │ ├── config_export.html │ │ │ ├── default_sso_heartbeat.html │ │ │ ├── delete_app_cluster_namespace.html │ │ │ ├── global_search_value.html │ │ │ ├── i18n/ │ │ │ │ ├── en.json │ │ │ │ └── zh-CN.json │ │ │ ├── index.html │ │ │ ├── login.html │ │ │ ├── namespace/ │ │ │ │ └── role.html │ │ │ ├── namespace.html │ │ │ ├── open/ │ │ │ │ ├── add-consumer.html │ │ │ │ ├── grant-permission-modal.html │ │ │ │ └── manage.html │ │ │ ├── scripts/ │ │ │ │ ├── AppUtils.js │ │ │ │ ├── PageCommon.js │ │ │ │ ├── app.js │ │ │ │ ├── controller/ │ │ │ │ │ ├── AccessKeyController.js │ │ │ │ │ ├── AppController.js │ │ │ │ │ ├── AuditLogMenuController.js │ │ │ │ │ ├── AuditLogTraceDetailController.js │ │ │ │ │ ├── BackTopController.js │ │ │ │ │ ├── ClusterController.js │ │ │ │ │ ├── ConfigExportController.js │ │ │ │ │ ├── DeleteAppClusterNamespaceController.js │ │ │ │ │ ├── GlobalSearchValueController.js │ │ │ │ │ ├── IndexController.js │ │ │ │ │ ├── LoginController.js │ │ │ │ │ ├── ManageClusterController.js │ │ │ │ │ ├── NamespaceController.js │ │ │ │ │ ├── ServerConfigController.js │ │ │ │ │ ├── SettingController.js │ │ │ │ │ ├── SystemInfoController.js │ │ │ │ │ ├── UserController.js │ │ │ │ │ ├── config/ │ │ │ │ │ │ ├── ConfigBaseInfoController.js │ │ │ │ │ │ ├── ConfigNamespaceController.js │ │ │ │ │ │ ├── DiffConfigController.js │ │ │ │ │ │ ├── ReleaseHistoryController.js │ │ │ │ │ │ └── SyncConfigController.js │ │ │ │ │ ├── open/ │ │ │ │ │ │ └── OpenManageController.js │ │ │ │ │ └── role/ │ │ │ │ │ ├── ClusterNamespaceRoleController.js │ │ │ │ │ ├── NamespaceRoleController.js │ │ │ │ │ └── SystemRoleController.js │ │ │ │ ├── directive/ │ │ │ │ │ ├── delete-namespace-modal-directive.js │ │ │ │ │ ├── diff-directive.js │ │ │ │ │ ├── directive.js │ │ │ │ │ ├── gray-release-rules-modal-directive.js │ │ │ │ │ ├── import-namespace-modal-directive.js │ │ │ │ │ ├── item-modal-directive.js │ │ │ │ │ ├── merge-and-publish-modal-directive.js │ │ │ │ │ ├── namespace-panel-directive.js │ │ │ │ │ ├── open-manage-grant-permission-modal-directive.js │ │ │ │ │ ├── publish-deny-modal-directive.js │ │ │ │ │ ├── release-modal-directive.js │ │ │ │ │ ├── rollback-modal-directive.js │ │ │ │ │ └── show-text-modal-directive.js │ │ │ │ ├── services/ │ │ │ │ │ ├── AccessKeyService.js │ │ │ │ │ ├── AppService.js │ │ │ │ │ ├── AuditLogService.js │ │ │ │ │ ├── ClusterService.js │ │ │ │ │ ├── CommitService.js │ │ │ │ │ ├── CommonService.js │ │ │ │ │ ├── ConfigService.js │ │ │ │ │ ├── ConsumerService.js │ │ │ │ │ ├── EnvService.js │ │ │ │ │ ├── EventManager.js │ │ │ │ │ ├── ExportService.js │ │ │ │ │ ├── FavoriteService.js │ │ │ │ │ ├── GlobalSearchValueService.js │ │ │ │ │ ├── InstanceService.js │ │ │ │ │ ├── NamespaceBranchService.js │ │ │ │ │ ├── NamespaceLockService.js │ │ │ │ │ ├── NamespaceService.js │ │ │ │ │ ├── OrganizationService.js │ │ │ │ │ ├── PermissionService.js │ │ │ │ │ ├── ReleaseHistoryService.js │ │ │ │ │ ├── ReleaseService.js │ │ │ │ │ ├── ServerConfigService.js │ │ │ │ │ ├── SystemInfoService.js │ │ │ │ │ ├── SystemRoleService.js │ │ │ │ │ └── UserService.js │ │ │ │ └── valdr.js │ │ │ ├── server_config_manage.html │ │ │ ├── styles/ │ │ │ │ ├── audit-log.css │ │ │ │ └── common-style.css │ │ │ ├── system-role-manage.html │ │ │ ├── system_info.html │ │ │ ├── user-manage.html │ │ │ ├── vendor/ │ │ │ │ ├── iconfont/ │ │ │ │ │ └── iconfont.css │ │ │ │ ├── jquery-plugin/ │ │ │ │ │ ├── jquery.textareafullscreen.js │ │ │ │ │ └── textareafullscreen.css │ │ │ │ └── ui-ace/ │ │ │ │ ├── ace.js │ │ │ │ ├── ext-searchbox.js │ │ │ │ ├── mode-json.js │ │ │ │ ├── mode-properties.js │ │ │ │ ├── mode-xml.js │ │ │ │ ├── mode-yaml.js │ │ │ │ ├── theme-eclipse.js │ │ │ │ ├── worker-json.js │ │ │ │ └── worker-xml.js │ │ │ └── views/ │ │ │ ├── common/ │ │ │ │ ├── footer.html │ │ │ │ └── nav.html │ │ │ └── component/ │ │ │ ├── back-top.html │ │ │ ├── confirm-dialog.html │ │ │ ├── delete-namespace-modal.html │ │ │ ├── diff.html │ │ │ ├── entrance.html │ │ │ ├── env-selector.html │ │ │ ├── gray-release-rules-modal.html │ │ │ ├── import-namespace-modal.html │ │ │ ├── item-modal.html │ │ │ ├── merge-and-publish-modal.html │ │ │ ├── multiple-user-selector.html │ │ │ ├── namespace-panel-branch-tab.html │ │ │ ├── namespace-panel-header.html │ │ │ ├── namespace-panel-master-tab.html │ │ │ ├── namespace-panel.html │ │ │ ├── publish-deny-modal.html │ │ │ ├── release-modal.html │ │ │ ├── rollback-modal.html │ │ │ ├── show-text-modal.html │ │ │ └── user-selector.html │ │ └── scripts/ │ │ ├── shutdown.sh │ │ └── startup.sh │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── ctrip/ │ │ └── framework/ │ │ └── apollo/ │ │ ├── ControllableAuthorizationConfiguration.java │ │ ├── LocalPortalApplication.java │ │ ├── SkipAuthorizationConfiguration.java │ │ ├── openapi/ │ │ │ ├── auth/ │ │ │ │ └── ConsumerPermissionValidatorTest.java │ │ │ ├── filter/ │ │ │ │ └── ConsumerAuthenticationFilterTest.java │ │ │ ├── service/ │ │ │ │ ├── ConsumerRolePermissionServiceTest.java │ │ │ │ ├── ConsumerServiceIntegrationTest.java │ │ │ │ └── ConsumerServiceTest.java │ │ │ ├── util/ │ │ │ │ ├── ConsumerAuditUtilTest.java │ │ │ │ └── ConsumerAuthUtilTest.java │ │ │ └── v1/ │ │ │ └── controller/ │ │ │ ├── AbstractControllerTest.java │ │ │ ├── AppControllerIntegrationTest.java │ │ │ ├── AppControllerParamBindLowLevelTest.java │ │ │ ├── AppControllerTest.java │ │ │ ├── ClusterControllerParamBindLowLevelTest.java │ │ │ ├── ClusterControllerTest.java │ │ │ ├── EnvControllerTest.java │ │ │ ├── NamespaceControllerTest.java │ │ │ ├── NamespaceControllerWithAuthorizationTest.java │ │ │ └── OrganizationControllerTest.java │ │ └── portal/ │ │ ├── AbstractIntegrationTest.java │ │ ├── AbstractUnitTest.java │ │ ├── RetryableRestTemplateTest.java │ │ ├── ServiceExceptionTest.java │ │ ├── component/ │ │ │ ├── AbstractPermissionValidatorTest.java │ │ │ ├── UnifiedPermissionValidatorTest.java │ │ │ ├── UserIdentityContextHolderTest.java │ │ │ ├── UserPermissionValidatorTest.java │ │ │ ├── UserPermissionValidatorTestSupplement.java │ │ │ ├── config/ │ │ │ │ └── PortalConfigTest.java │ │ │ └── txtresolver/ │ │ │ ├── FileTextResolverTest.java │ │ │ └── PropertyResolverTest.java │ │ ├── config/ │ │ │ └── ConfigTest.java │ │ ├── controller/ │ │ │ ├── ClusterControllerTest.java │ │ │ ├── CommitControllerTest.java │ │ │ ├── ConfigsExportControllerTest.java │ │ │ ├── ConfigsImportControllerTest.java │ │ │ ├── ConsumerControllerTest.java │ │ │ ├── EnvControllerTest.java │ │ │ ├── GlobalSearchControllerTest.java │ │ │ ├── InstanceControllerTest.java │ │ │ ├── ItemControllerAuthIntegrationTest.java │ │ │ ├── ItemControllerTest.java │ │ │ ├── NamespaceLockControllerTest.java │ │ │ ├── OrganizationControllerTest.java │ │ │ ├── PageSettingControllerTest.java │ │ │ ├── PermissionControllerTest.java │ │ │ ├── PrefixPathControllerTest.java │ │ │ ├── ReleaseHistoryControllerTest.java │ │ │ ├── SearchControllerTest.java │ │ │ ├── ServerConfigControllerTest.java │ │ │ ├── SignInControllerTest.java │ │ │ ├── SsoHeartbeatControllerTest.java │ │ │ ├── SystemInfoControllerTest.java │ │ │ └── UserInfoControllerTest.java │ │ ├── environment/ │ │ │ ├── BaseIntegrationTest.java │ │ │ ├── DatabasePortalMetaServerProviderTest.java │ │ │ ├── DefaultPortalMetaServerProviderTest.java │ │ │ ├── EnvTest.java │ │ │ └── PortalMetaDomainServiceTest.java │ │ ├── filter/ │ │ │ ├── PortalOpenApiAuthenticationScenariosTest.java │ │ │ └── UserTypeResolverFilter.java │ │ ├── service/ │ │ │ ├── AppNamespaceServiceTest.java │ │ │ ├── AppServiceTest.java │ │ │ ├── ConfigServiceTest.java │ │ │ ├── ConfigsExportServiceTest.java │ │ │ ├── FavoriteServiceTest.java │ │ │ ├── GlobalSearchServiceTest.java │ │ │ └── NamespaceServiceTest.java │ │ ├── spi/ │ │ │ └── defaultImpl/ │ │ │ ├── RoleInitializationServiceTest.java │ │ │ └── RolePermissionServiceTest.java │ │ └── util/ │ │ ├── AuthUserPasswordCheckerTest.java │ │ ├── ConfigFileUtilsTest.java │ │ ├── KeyValueUtilsTest.java │ │ └── RoleUtilsTest.java │ └── resources/ │ ├── application.properties │ ├── application.yml │ ├── import.sql │ ├── logback-test.xml │ ├── sql/ │ │ ├── appnamespaceservice/ │ │ │ └── init-appnamespace.sql │ │ ├── cleanup.sql │ │ ├── favorites/ │ │ │ └── favorites.sql │ │ ├── openapi/ │ │ │ ├── ConsumerServiceIntegrationTest.commonData.sql │ │ │ ├── ConsumerServiceIntegrationTest.testFindAppIdsAuthorizedByConsumerId.sql │ │ │ └── NamespaceControllerTest.testCreateAppNamespace.sql │ │ └── permission/ │ │ ├── RolePermissionServiceTest.deleteRolePermissionsByAppIdWithClusterRoles.sql │ │ ├── consumer_role_permission_service/ │ │ │ ├── test_get_user_permission_set_different_users.sql │ │ │ ├── test_get_user_permission_set_no_roles.sql │ │ │ ├── test_get_user_permission_set_roles_without_permissions.sql │ │ │ └── test_get_user_permission_set_with_permissions.sql │ │ ├── insert-test-consumerroles.sql │ │ ├── insert-test-getUserPermissionSet.sql │ │ ├── insert-test-permissions.sql │ │ ├── insert-test-rolepermissions.sql │ │ ├── insert-test-roles.sql │ │ └── insert-test-userroles.sql │ ├── static/ │ │ └── scripts/ │ │ └── test_hasDuplicateKeys.js │ └── yaml/ │ ├── case1.yaml │ ├── case2.yaml │ └── case3.yaml ├── changes/ │ ├── changes-1.9.0.md │ ├── changes-1.9.1.md │ ├── changes-1.9.2.md │ ├── changes-2.0.0.md │ ├── changes-2.0.1.md │ ├── changes-2.1.0.md │ ├── changes-2.2.0.md │ ├── changes-2.3.0.md │ ├── changes-2.4.0.md │ └── changes-2.5.0.md ├── docs/ │ ├── .nojekyll │ ├── CNAME │ ├── _coverpage.md │ ├── charts/ │ │ ├── apollo-portal-0.1.0.tgz │ │ ├── apollo-portal-0.1.1.tgz │ │ ├── apollo-portal-0.1.2.tgz │ │ ├── apollo-portal-0.2.0.tgz │ │ ├── apollo-portal-0.2.1.tgz │ │ ├── apollo-portal-0.2.2.tgz │ │ ├── apollo-portal-0.3.0.tgz │ │ ├── apollo-portal-0.3.1.tgz │ │ ├── apollo-service-0.1.0.tgz │ │ ├── apollo-service-0.1.1.tgz │ │ ├── apollo-service-0.1.2.tgz │ │ ├── apollo-service-0.2.0.tgz │ │ ├── apollo-service-0.2.1.tgz │ │ ├── apollo-service-0.2.2.tgz │ │ ├── apollo-service-0.3.0.tgz │ │ ├── apollo-service-0.3.1.tgz │ │ └── index.yaml │ ├── css/ │ │ ├── buble.css │ │ ├── dark.css │ │ ├── fonts.css │ │ ├── pure.css │ │ └── vue.css │ ├── en/ │ │ ├── README.md │ │ ├── _navbar.md │ │ ├── _sidebar.md │ │ ├── client/ │ │ │ ├── c-sdks-user-guide.md │ │ │ ├── cpp-sdks-user-guide.md │ │ │ ├── dotnet-sdk-user-guide.md │ │ │ ├── golang-sdks-user-guide.md │ │ │ ├── java-sdk-user-guide.md │ │ │ ├── k8s-configmap-user-guide.md │ │ │ ├── nodejs-sdks-user-guide.md │ │ │ ├── other-language-client-user-guide.md │ │ │ ├── php-sdks-user-guide.md │ │ │ ├── python-sdks-user-guide.md │ │ │ └── rust-sdks-user-guide.md │ │ ├── community/ │ │ │ ├── team.md │ │ │ └── thank-you.md │ │ ├── contribution/ │ │ │ ├── apollo-development-guide.md │ │ │ └── apollo-release-guide.md │ │ ├── deployment/ │ │ │ ├── deployment-architecture.md │ │ │ ├── distributed-deployment-guide.md │ │ │ ├── quick-start-docker.md │ │ │ ├── quick-start.md │ │ │ ├── third-party-tool-btpanel.md │ │ │ └── third-party-tool-rainbond.md │ │ ├── design/ │ │ │ ├── apollo-core-concept-namespace.md │ │ │ ├── apollo-design.md │ │ │ └── apollo-introduction.md │ │ ├── extension/ │ │ │ ├── portal-how-to-enable-email-service.md │ │ │ ├── portal-how-to-enable-session-store.md │ │ │ ├── portal-how-to-enable-webhook-notification.md │ │ │ └── portal-how-to-implement-user-login-function.md │ │ ├── faq/ │ │ │ ├── common-issues-in-deployment-and-development-phase.md │ │ │ └── faq.md │ │ ├── misc/ │ │ │ └── apollo-benchmark.md │ │ ├── portal/ │ │ │ ├── apollo-open-api-platform.md │ │ │ ├── apollo-user-guide.md │ │ │ └── apollo-user-practices.md │ │ └── quick-start.md │ ├── index.html │ ├── scripts/ │ │ └── multiple-language-redirect.js │ └── zh/ │ ├── README.md │ ├── _navbar.md │ ├── _sidebar.md │ ├── client/ │ │ ├── c-sdks-user-guide.md │ │ ├── cpp-sdks-user-guide.md │ │ ├── dotnet-sdk-user-guide.md │ │ ├── golang-sdks-user-guide.md │ │ ├── java-sdk-user-guide.md │ │ ├── k8s-configmap-user-guide.md │ │ ├── nodejs-sdks-user-guide.md │ │ ├── other-language-client-user-guide.md │ │ ├── php-sdks-user-guide.md │ │ ├── python-sdks-user-guide.md │ │ └── rust-sdks-user-guide.md │ ├── community/ │ │ ├── team.md │ │ └── thank-you.md │ ├── contribution/ │ │ ├── apollo-development-guide.md │ │ └── apollo-release-guide.md │ ├── deployment/ │ │ ├── deployment-architecture.md │ │ ├── distributed-deployment-guide.md │ │ ├── quick-start-docker.md │ │ ├── quick-start.md │ │ ├── third-party-tool-btpanel.md │ │ └── third-party-tool-rainbond.md │ ├── design/ │ │ ├── apollo-core-concept-namespace.md │ │ ├── apollo-design.md │ │ └── apollo-introduction.md │ ├── extension/ │ │ ├── portal-how-to-enable-email-service.md │ │ ├── portal-how-to-enable-session-store.md │ │ ├── portal-how-to-enable-webhook-notification.md │ │ └── portal-how-to-implement-user-login-function.md │ ├── faq/ │ │ ├── common-issues-in-deployment-and-development-phase.md │ │ └── faq.md │ ├── misc/ │ │ └── apollo-benchmark.md │ └── portal/ │ ├── apollo-open-api-platform.md │ ├── apollo-user-guide.md │ └── apollo-user-practices.md ├── e2e/ │ ├── README.md │ └── portal-e2e/ │ ├── .gitignore │ ├── config/ │ │ ├── application-ldap-e2e.yml │ │ └── application-oidc-e2e.yml │ ├── package.json │ ├── playwright.config.js │ ├── scripts/ │ │ ├── auth/ │ │ │ ├── setup-ldap.sh │ │ │ ├── setup-oidc.sh │ │ │ └── teardown-auth.sh │ │ └── wait-for-ready.sh │ └── tests/ │ ├── helpers/ │ │ ├── auth-helpers.js │ │ └── portal-helpers.js │ ├── portal-auth-matrix.spec.js │ ├── portal-configservice.spec.js │ ├── portal-core.spec.js │ ├── portal-priority.spec.js │ └── portal-regression.spec.js ├── mvnw ├── mvnw.cmd ├── pom.xml └── scripts/ ├── build.bat ├── build.sh ├── openapi/ │ └── bash/ │ ├── openapi-usage-example.sh │ └── openapi.sh └── sql/ ├── profiles/ │ ├── h2-default/ │ │ ├── apolloconfigdb.sql │ │ ├── apolloportaldb.sql │ │ └── delta/ │ │ ├── v220-v230/ │ │ │ ├── apolloconfigdb-v220-v230.sql │ │ │ └── apolloportaldb-v220-v230.sql │ │ └── v230-v240/ │ │ ├── apolloconfigdb-v230-v240.sql │ │ └── apolloportaldb-v230-v240.sql │ ├── mysql-database-not-specified/ │ │ ├── apolloconfigdb.sql │ │ ├── apolloportaldb.sql │ │ └── delta/ │ │ ├── v220-v230/ │ │ │ ├── apolloconfigdb-v220-v230.sql │ │ │ └── apolloportaldb-v220-v230.sql │ │ └── v230-v240/ │ │ ├── apolloconfigdb-v230-v240.sql │ │ └── apolloportaldb-v230-v240.sql │ └── mysql-default/ │ ├── apolloconfigdb.sql │ ├── apolloportaldb.sql │ └── delta/ │ ├── v040-v050/ │ │ ├── apolloconfigdb-v040-v050.sql │ │ └── apolloportaldb-v040-v050.sql │ ├── v060-v062/ │ │ ├── apolloconfigdb-v060-v062.sql │ │ └── apolloportaldb-v060-v062.sql │ ├── v080-v090/ │ │ └── apolloportaldb-v080-v090.sql │ ├── v151-v160/ │ │ └── apolloconfigdb-v151-v160.sql │ ├── v170-v180/ │ │ ├── apolloconfigdb-v170-v180.sql │ │ └── apolloportaldb-v170-v180.sql │ ├── v180-v190/ │ │ ├── apolloconfigdb-v180-v190.sql │ │ └── apolloportaldb-v180-v190.sql │ ├── v190-v200/ │ │ ├── apolloconfigdb-v190-v200-after.sql │ │ ├── apolloconfigdb-v190-v200.sql │ │ ├── apolloportaldb-v190-v200-after.sql │ │ └── apolloportaldb-v190-v200.sql │ ├── v200-v210/ │ │ └── apolloconfigdb-v200-v210.sql │ ├── v210-v220/ │ │ ├── apolloconfigdb-v210-v220.sql │ │ └── apolloportaldb-v210-v220.sql │ ├── v220-v230/ │ │ ├── apolloconfigdb-v220-v230.sql │ │ └── apolloportaldb-v220-v230.sql │ └── v230-v240/ │ ├── apolloconfigdb-v230-v240.sql │ └── apolloportaldb-v230-v240.sql └── src/ ├── apolloconfigdb.sql ├── apolloportaldb.sql ├── delta/ │ ├── v220-v230/ │ │ ├── apolloconfigdb-v220-v230.sql │ │ └── apolloportaldb-v220-v230.sql │ └── v230-v240/ │ ├── apolloconfigdb-v230-v240.sql │ └── apolloportaldb-v230-v240.sql └── gist/ ├── autoGeneratedDeclaration.sql ├── h2Function.sql ├── setupDatabase.sql └── useDatabase.sql