├── .github └── workflows │ └── container.yml ├── .gitignore ├── .license.tpl ├── .licenserc.yaml ├── .mvn └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── Dockerfile ├── LICENSE ├── NOTICE ├── README.md ├── README_cn.md ├── VERSION ├── docs ├── en │ ├── API Reference.md │ └── asserts │ │ └── AO.space Platform&BaseService Arch.png └── zh │ ├── API参考.md │ └── asserts │ └── 傲空间平台&Platform Base架构.png ├── eulixplatform-common ├── pom.xml └── src │ ├── main │ └── java │ │ └── xyz │ │ └── eulix │ │ └── platform │ │ └── common │ │ └── support │ │ ├── ClassUtils.java │ │ ├── CommonUtils.java │ │ ├── ResourceUtils.java │ │ ├── RestConfiguration.java │ │ ├── log │ │ ├── Logged.java │ │ └── LoggingInterceptor.java │ │ ├── model │ │ ├── BaseEntity.java │ │ ├── BatchDeleteResult.java │ │ ├── PageInfo.java │ │ ├── PageListResult.java │ │ ├── SortDirEnum.java │ │ └── StatusResult.java │ │ ├── serialization │ │ ├── MyObjectMapperCustomizer.java │ │ └── OperationUtils.java │ │ ├── service │ │ ├── ServiceError.java │ │ └── ServiceOperationException.java │ │ └── validator │ │ ├── ValueOfEnum.java │ │ └── ValueOfEnumValidator.java │ └── test │ └── java │ └── xyz │ └── eulix │ └── platform │ └── common │ └── support │ ├── CommonUtilsTest.java │ └── OperationUtilsTest.java ├── eulixplatform-registry ├── .dockerignore ├── pom.xml └── src │ ├── main │ ├── java │ │ └── xyz │ │ │ └── eulix │ │ │ └── platform │ │ │ └── services │ │ │ ├── auth │ │ │ ├── dto │ │ │ │ ├── GenPkeyRsp.java │ │ │ │ ├── PollPkeyReq.java │ │ │ │ ├── PollPkeyRsp.java │ │ │ │ └── TransBoxInfoReq.java │ │ │ ├── entity │ │ │ │ └── PkeyAuthEntity.java │ │ │ ├── repository │ │ │ │ └── PkeyAuthEntityRepository.java │ │ │ ├── rest │ │ │ │ └── AuthResource.java │ │ │ └── service │ │ │ │ └── AuthService.java │ │ │ ├── basic │ │ │ ├── AppConfiguration.java │ │ │ ├── dto │ │ │ │ ├── PlatformApiResults.java │ │ │ │ ├── PlatformApiTypeEnum.java │ │ │ │ └── PlatformApis.java │ │ │ ├── rest │ │ │ │ └── BasicResource.java │ │ │ └── service │ │ │ │ └── BaseService.java │ │ │ ├── cache │ │ │ ├── GTRClient.java │ │ │ ├── GTRouteAppTokens.java │ │ │ ├── GTRouteBasic.java │ │ │ ├── GTRouteClients.java │ │ │ ├── NSRClient.java │ │ │ ├── NSRRedirectStateEnum.java │ │ │ ├── NSRoute.java │ │ │ └── NetworkBasic.java │ │ │ ├── config │ │ │ └── ApplicationProperties.java │ │ │ ├── lock │ │ │ ├── DistributedLock.java │ │ │ ├── DistributedLockFactory.java │ │ │ ├── DistributedReadWriteLock.java │ │ │ ├── DistributedReadWriteLockFactory.java │ │ │ ├── LockType.java │ │ │ ├── MySQLReentrantLock.java │ │ │ ├── MySQLReentrantReadWriteLock.java │ │ │ ├── RedisReentrantLock.java │ │ │ ├── RedisReentrantReadWriteLock.java │ │ │ ├── dto │ │ │ │ └── ReentrantReadWriteLock.java │ │ │ ├── entity │ │ │ │ ├── ReentrantLockEntity.java │ │ │ │ └── ReentrantReadWriteLockEntity.java │ │ │ ├── repository │ │ │ │ ├── ReentrantLockRepository.java │ │ │ │ └── ReentrantReadWriteLockRepository.java │ │ │ └── service │ │ │ │ ├── ReentrantLockService.java │ │ │ │ └── ReentrantReadWriteLockService.java │ │ │ ├── migration │ │ │ ├── dto │ │ │ │ ├── BoxMigrationInfo.java │ │ │ │ ├── BoxMigrationResult.java │ │ │ │ ├── ClientMigrationInfo.java │ │ │ │ ├── MigrationRouteInfo.java │ │ │ │ ├── MigrationRouteResult.java │ │ │ │ ├── NetworkInfo.java │ │ │ │ ├── UserDomainRouteInfo.java │ │ │ │ └── UserMigrationInfo.java │ │ │ ├── rest │ │ │ │ └── MigrationResource.java │ │ │ └── service │ │ │ │ └── MigrationService.java │ │ │ ├── network │ │ │ ├── dto │ │ │ │ ├── BaseResultRes.java │ │ │ │ ├── NetworkAuthReq.java │ │ │ │ ├── NetworkServerExtraInfo.java │ │ │ │ ├── NetworkServerRes.java │ │ │ │ ├── NetworkServerStateEnum.java │ │ │ │ └── StunServerRes.java │ │ │ ├── entity │ │ │ │ ├── NetworkRouteEntity.java │ │ │ │ └── NetworkServerEntity.java │ │ │ ├── repository │ │ │ │ ├── NetworkRouteEntityRepository.java │ │ │ │ └── NetworkServerEntityRepository.java │ │ │ ├── rest │ │ │ │ └── NetworkResource.java │ │ │ └── service │ │ │ │ └── NetworkService.java │ │ │ ├── provider │ │ │ ├── ProviderFactory.java │ │ │ ├── impl │ │ │ │ └── DefaultRegistryProvider.java │ │ │ └── inf │ │ │ │ └── RegistryProvider.java │ │ │ ├── registry │ │ │ ├── dto │ │ │ │ ├── package-info.java │ │ │ │ └── registry │ │ │ │ │ ├── BaseResultRes.java │ │ │ │ │ ├── BoxRegistryDetailInfo.java │ │ │ │ │ ├── BoxRegistryInfo.java │ │ │ │ │ ├── BoxRegistryResult.java │ │ │ │ │ ├── ClientRegistryDetailInfo.java │ │ │ │ │ ├── ClientRegistryInfo.java │ │ │ │ │ ├── ClientRegistryResult.java │ │ │ │ │ ├── NetworkClient.java │ │ │ │ │ ├── RegistryTypeEnum.java │ │ │ │ │ ├── SubdomainGenInfo.java │ │ │ │ │ ├── SubdomainGenResult.java │ │ │ │ │ ├── SubdomainStateEnum.java │ │ │ │ │ ├── SubdomainUpdateInfo.java │ │ │ │ │ ├── SubdomainUpdateResult.java │ │ │ │ │ ├── UserRegistryDetailInfo.java │ │ │ │ │ ├── UserRegistryInfo.java │ │ │ │ │ └── UserRegistryResult.java │ │ │ ├── entity │ │ │ │ ├── RegistryBoxEntity.java │ │ │ │ ├── RegistryClientEntity.java │ │ │ │ ├── RegistryUserEntity.java │ │ │ │ └── SubdomainEntity.java │ │ │ ├── repository │ │ │ │ ├── RegistryBoxEntityRepository.java │ │ │ │ ├── RegistryClientEntityRepository.java │ │ │ │ ├── RegistryUserEntityRepository.java │ │ │ │ └── SubdomainEntityRepository.java │ │ │ ├── rest │ │ │ │ └── RegistryResource.java │ │ │ └── service │ │ │ │ ├── RegistryService.java │ │ │ │ └── SubdomainService.java │ │ │ └── token │ │ │ ├── dto │ │ │ ├── AuthTypeEnum.java │ │ │ ├── CheckTokenInfo.java │ │ │ ├── CheckTokenResult.java │ │ │ ├── ServiceEnum.java │ │ │ ├── TokenInfo.java │ │ │ ├── TokenResult.java │ │ │ ├── TokenResults.java │ │ │ └── TokenVerifySignInfo.java │ │ │ ├── entity │ │ │ └── BoxTokenEntity.java │ │ │ ├── repository │ │ │ └── BoxTokenEntityRepository.java │ │ │ ├── rest │ │ │ └── TokenResource.java │ │ │ └── service │ │ │ └── TokenService.java │ └── resources │ │ └── profiles │ │ └── community │ │ ├── api │ │ └── servicesapi.json │ │ ├── application.yml │ │ ├── db │ │ └── migration │ │ │ ├── V1.0.0__Initial_Setup.sql │ │ │ ├── V1.1.0__Add_LockTable.sql │ │ │ └── V2.0.0__BoxRegistry_Update.sql │ │ └── template │ │ ├── boxTemplate.xlsx │ │ └── boxTemplateV2.xlsx │ └── test │ └── java │ └── xyz │ └── eulix │ └── platform │ └── services │ ├── StatusResourceTest.java │ ├── auth │ ├── AuthServiceTest.java │ └── PollPkeyInvalidRsp.java │ ├── lock │ ├── DistributedLockTest.java │ ├── MySQLReentrantLockTest.java │ ├── MySQLReentrantReadWriteLockTest.java │ └── RedisReentrantReadWriteLockTest.java │ └── registry │ └── rest │ ├── RegistryResourceTest.java │ └── TokenResourceTest.java ├── licenses ├── license-antlr-antlr.txt ├── license-cglib-cglib.txt ├── license-com.alibaba-easyexcel.txt ├── license-com.cronutils-cron-utils.txt ├── license-com.fasterxml-classmate.txt ├── license-com.fasterxml.jackson.core-jackson-annotations.txt ├── license-com.fasterxml.jackson.core-jackson-core.txt ├── license-com.fasterxml.jackson.core-jackson-databind.txt ├── license-com.fasterxml.jackson.dataformat-jackson-dataformat-yaml.txt ├── license-com.fasterxml.jackson.datatype-jackson-datatype-jdk8.txt ├── license-com.fasterxml.jackson.datatype-jackson-datatype-jsr310.txt ├── license-com.fasterxml.jackson.jaxrs-jackson-jaxrs-base.txt ├── license-com.fasterxml.jackson.jaxrs-jackson-jaxrs-json-provider.txt ├── license-com.fasterxml.jackson.module-jackson-module-jaxb-annotations.txt ├── license-com.fasterxml.jackson.module-jackson-module-parameter-names.txt ├── license-com.github.ben-manes.caffeine-caffeine.txt ├── license-com.github.java-json-tools-btf.txt ├── license-com.github.java-json-tools-jackson-coreutils.txt ├── license-com.github.java-json-tools-json-patch.txt ├── license-com.github.java-json-tools-msg-simple.txt ├── license-com.github.virtuald-curvesapi.txt ├── license-com.google.code.findbugs-jsr305.txt ├── license-com.google.errorprone-error-prone-annotations.txt ├── license-com.google.guava-failureaccess.txt ├── license-com.google.guava-guava.txt ├── license-com.google.guava-listenablefuture.txt ├── license-com.google.j2objc-j2objc-annotations.txt ├── license-com.h2database-h2.txt ├── license-com.ibm.async-asyncutil.txt ├── license-com.squareup.okhttp3-okhttp.txt ├── license-com.squareup.okio-okio.txt ├── license-com.sun.activation-jakarta.activation.txt ├── license-com.sun.istack-istack-commons-runtime.txt ├── license-com.sun.mail-jakarta.mail.txt ├── license-com.zaxxer-SparseBitSet.txt ├── license-commons-codec-commons-codec.txt ├── license-commons-io-commons-io.txt ├── license-io.agroal-agroal-api.txt ├── license-io.agroal-agroal-narayana.txt ├── license-io.agroal-agroal-pool.txt ├── license-io.netty-netty-buffer.txt ├── license-io.netty-netty-codec-dns.txt ├── license-io.netty-netty-codec-haproxy.txt ├── license-io.netty-netty-codec-http.txt ├── license-io.netty-netty-codec-http2.txt ├── license-io.netty-netty-codec-socks.txt ├── license-io.netty-netty-codec.txt ├── license-io.netty-netty-common.txt ├── license-io.netty-netty-handler-proxy.txt ├── license-io.netty-netty-handler.txt ├── license-io.netty-netty-resolver-dns.txt ├── license-io.netty-netty-resolver.txt ├── license-io.netty-netty-transport.txt ├── license-io.quarkus-quarkus-agroal.txt ├── license-io.quarkus-quarkus-apache-httpclient.txt ├── license-io.quarkus-quarkus-arc.txt ├── license-io.quarkus-quarkus-bootstrap-runner.txt ├── license-io.quarkus-quarkus-caffeine.txt ├── license-io.quarkus-quarkus-config-yaml.txt ├── license-io.quarkus-quarkus-core.txt ├── license-io.quarkus-quarkus-credentials.txt ├── license-io.quarkus-quarkus-datasource-common.txt ├── license-io.quarkus-quarkus-datasource.txt ├── license-io.quarkus-quarkus-development-mode-spi.txt ├── license-io.quarkus-quarkus-flyway.txt ├── license-io.quarkus-quarkus-hibernate-orm-panache-common.txt ├── license-io.quarkus-quarkus-hibernate-orm-panache.txt ├── license-io.quarkus-quarkus-hibernate-orm.txt ├── license-io.quarkus-quarkus-hibernate-validator.txt ├── license-io.quarkus-quarkus-ide-launcher.txt ├── license-io.quarkus-quarkus-jackson.txt ├── license-io.quarkus-quarkus-jaxb.txt ├── license-io.quarkus-quarkus-jaxp.txt ├── license-io.quarkus-quarkus-jdbc-h2.txt ├── license-io.quarkus-quarkus-jdbc-mysql.txt ├── license-io.quarkus-quarkus-mutiny.txt ├── license-io.quarkus-quarkus-narayana-jta.txt ├── license-io.quarkus-quarkus-netty.txt ├── license-io.quarkus-quarkus-panache-common.txt ├── license-io.quarkus-quarkus-panache-hibernate-common.txt ├── license-io.quarkus-quarkus-redis-client.txt ├── license-io.quarkus-quarkus-rest-client-config.txt ├── license-io.quarkus-quarkus-rest-client-jackson.txt ├── license-io.quarkus-quarkus-rest-client.txt ├── license-io.quarkus-quarkus-resteasy-common.txt ├── license-io.quarkus-quarkus-resteasy-jackson.txt ├── license-io.quarkus-quarkus-resteasy-jaxb.txt ├── license-io.quarkus-quarkus-resteasy-server-common.txt ├── license-io.quarkus-quarkus-resteasy.txt ├── license-io.quarkus-quarkus-scheduler.txt ├── license-io.quarkus-quarkus-security-runtime-spi.txt ├── license-io.quarkus-quarkus-smallrye-context-propagation.txt ├── license-io.quarkus-quarkus-smallrye-openapi.txt ├── license-io.quarkus-quarkus-swagger-ui.txt ├── license-io.quarkus-quarkus-vertx-http-dev-console-runtime-spi.txt ├── license-io.quarkus-quarkus-vertx-http.txt ├── license-io.quarkus-quarkus-vertx.txt ├── license-io.quarkus.arc-arc.txt ├── license-io.quarkus.security-quarkus-security.txt ├── license-io.smallrye-smallrye-context-propagation-api.txt ├── license-io.smallrye-smallrye-context-propagation-jta.txt ├── license-io.smallrye-smallrye-context-propagation-storage.txt ├── license-io.smallrye-smallrye-context-propagation.txt ├── license-io.smallrye-smallrye-fault-tolerance-vertx.txt ├── license-io.smallrye-smallrye-open-api-core.txt ├── license-io.smallrye.common-smallrye-common-annotation.txt ├── license-io.smallrye.common-smallrye-common-classloader.txt ├── license-io.smallrye.common-smallrye-common-constraint.txt ├── license-io.smallrye.common-smallrye-common-expression.txt ├── license-io.smallrye.common-smallrye-common-function.txt ├── license-io.smallrye.common-smallrye-common-io.txt ├── license-io.smallrye.config-smallrye-config-common.txt ├── license-io.smallrye.config-smallrye-config-core.txt ├── license-io.smallrye.config-smallrye-config-source-yaml.txt ├── license-io.smallrye.config-smallrye-config-validator.txt ├── license-io.smallrye.config-smallrye-config.txt ├── license-io.smallrye.reactive-mutiny-smallrye-context-propagation.txt ├── license-io.smallrye.reactive-mutiny.txt ├── license-io.smallrye.reactive-smallrye-mutiny-vertx-auth-common.txt ├── license-io.smallrye.reactive-smallrye-mutiny-vertx-bridge-common.txt ├── license-io.smallrye.reactive-smallrye-mutiny-vertx-core.txt ├── license-io.smallrye.reactive-smallrye-mutiny-vertx-redis-client.txt ├── license-io.smallrye.reactive-smallrye-mutiny-vertx-runtime.txt ├── license-io.smallrye.reactive-smallrye-mutiny-vertx-web-common.txt ├── license-io.smallrye.reactive-smallrye-mutiny-vertx-web.txt ├── license-io.smallrye.reactive-smallrye-reactive-converter-api.txt ├── license-io.smallrye.reactive-smallrye-reactive-converter-mutiny.txt ├── license-io.smallrye.reactive-vertx-mutiny-generator.txt ├── license-io.vertx-vertx-auth-common.txt ├── license-io.vertx-vertx-bridge-common.txt ├── license-io.vertx-vertx-codegen.txt ├── license-io.vertx-vertx-core.txt ├── license-io.vertx-vertx-redis-client.txt ├── license-io.vertx-vertx-web-common.txt ├── license-io.vertx-vertx-web.txt ├── license-jakarta.activation-jakarta.activation-api.txt ├── license-jakarta.annotation-jakarta.annotation-api.txt ├── license-jakarta.el-jakarta.el-api.txt ├── license-jakarta.enterprise-jakarta.enterprise.cdi-api.txt ├── license-jakarta.inject-jakarta.inject-api.txt ├── license-jakarta.interceptor-jakarta.interceptor-api.txt ├── license-jakarta.persistence-jakarta.persistence-api.txt ├── license-jakarta.transaction-jakarta.transaction-api.txt ├── license-jakarta.validation-jakarta.validation-api.txt ├── license-mysql-mysql-connector-java.txt ├── license-net.bytebuddy-byte-buddy.txt ├── license-org.apache.commons-commons-collections4.txt ├── license-org.apache.commons-commons-compress.txt ├── license-org.apache.commons-commons-csv.txt ├── license-org.apache.commons-commons-math3.txt ├── license-org.apache.httpcomponents-httpasyncclient.txt ├── license-org.apache.httpcomponents-httpclient.txt ├── license-org.apache.httpcomponents-httpcore-nio.txt ├── license-org.apache.httpcomponents-httpcore.txt ├── license-org.apache.james-apache-mime4j-core.txt ├── license-org.apache.james-apache-mime4j-dom.txt ├── license-org.apache.james-apache-mime4j-storage.txt ├── license-org.apache.poi-poi-ooxml-schemas.txt ├── license-org.apache.poi-poi-ooxml.txt ├── license-org.apache.poi-poi.txt ├── license-org.apache.xmlbeans-xmlbeans.txt ├── license-org.checkerframework-checker-qual.txt ├── license-org.eclipse.microprofile.config-microprofile-config-api.txt ├── license-org.eclipse.microprofile.context-propagation-microprofile-context-propagation-api.txt ├── license-org.eclipse.microprofile.openapi-microprofile-openapi-api.txt ├── license-org.eclipse.microprofile.rest.client-microprofile-rest-client-api.txt ├── license-org.ehcache-ehcache.txt ├── license-org.flywaydb-flyway-core.txt ├── license-org.glassfish-jakarta.el.txt ├── license-org.glassfish.jaxb-jaxb-runtime.txt ├── license-org.glassfish.jaxb-txw2.txt ├── license-org.graalvm.sdk-graal-sdk.txt ├── license-org.hibernate-hibernate-core.txt ├── license-org.hibernate-hibernate-graalvm.txt ├── license-org.hibernate-quarkus-local-cache.txt ├── license-org.hibernate.common-hibernate-commons-annotations.txt ├── license-org.hibernate.validator-hibernate-validator.txt ├── license-org.jboss-jandex.txt ├── license-org.jboss-jboss-transaction-spi.txt ├── license-org.jboss.logging-commons-logging-jboss-logging.txt ├── license-org.jboss.logging-jboss-logging-annotations.txt ├── license-org.jboss.logging-jboss-logging.txt ├── license-org.jboss.logmanager-jboss-logmanager-embedded.txt ├── license-org.jboss.narayana.jta-narayana-jta.txt ├── license-org.jboss.narayana.jts-narayana-jts-integration.txt ├── license-org.jboss.resteasy-resteasy-cdi.txt ├── license-org.jboss.resteasy-resteasy-client-api.txt ├── license-org.jboss.resteasy-resteasy-client-microprofile-base.txt ├── license-org.jboss.resteasy-resteasy-client-microprofile.txt ├── license-org.jboss.resteasy-resteasy-client.txt ├── license-org.jboss.resteasy-resteasy-core-spi.txt ├── license-org.jboss.resteasy-resteasy-core.txt ├── license-org.jboss.resteasy-resteasy-jackson2-provider.txt ├── license-org.jboss.resteasy-resteasy-jaxb-provider.txt ├── license-org.jboss.resteasy-resteasy-multipart-provider.txt ├── license-org.jboss.slf4j-slf4j-jboss-logmanager.txt ├── license-org.jboss.spec.javax.resource-jboss-connector-api-1.7-spec.txt ├── license-org.jboss.spec.javax.ws.rs-jboss-jaxrs-api-2.1-spec.txt ├── license-org.jboss.spec.javax.xml.bind-jboss-jaxb-api-2.3-spec.txt ├── license-org.jboss.threads-jboss-threads.txt ├── license-org.locationtech.jts-jts-core.txt ├── license-org.ow2.asm-asm.txt ├── license-org.reactivestreams-reactive-streams.txt ├── license-org.slf4j-slf4j-api.txt ├── license-org.wildfly.common-wildfly-common.txt ├── license-org.yaml-snakeyaml.txt └── license-xyz.eulix.platform.services-eulixplatform-common.txt ├── mvnw ├── mvnw.cmd └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | eulixplatform-registry/target/* 2 | eulixplatform-common/target/* 3 | -------------------------------------------------------------------------------- /.licenserc.yaml: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | header: 16 | license: 17 | spdx-id: Apache-2.0 18 | copyright-owner: ISCAS 19 | software-name: platform-services 20 | content: | 21 | Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 22 | 23 | Licensed under the Apache License, Version 2.0 (the "License"); 24 | you may not use this file except in compliance with the License. 25 | You may obtain a copy of the License at 26 | 27 | http://www.apache.org/licenses/LICENSE-2.0 28 | 29 | Unless required by applicable law or agreed to in writing, software 30 | distributed under the License is distributed on an "AS IS" BASIS, 31 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 32 | See the License for the specific language governing permissions and 33 | limitations under the License. 34 | 35 | paths: 36 | - '**' 37 | 38 | paths-ignore: 39 | - 'licenses' 40 | - '**/*.md' 41 | - '**/*.json' 42 | - 'LICENSE' 43 | - 'NOTICE' 44 | - 'VERSION' 45 | - '.license.tpl' 46 | - 'mvnw' 47 | - '**/*.marker' 48 | - '**/*.lst' 49 | 50 | language: 51 | Dockerfile: 52 | filenames: 53 | - Dockerfile.jvm 54 | - Dockerfile.legacy-jar 55 | - Dockerfile.native 56 | - Dockerfile.native-distroless 57 | comment_style_id: Hashtag 58 | 59 | dependency: 60 | files: 61 | - pom.xml -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip 16 | wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar 17 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | FROM maven:3.8.6-openjdk-11 as builder 16 | 17 | COPY . . 18 | RUN mvn -pl eulixplatform-common,eulixplatform-registry clean package -Pcommunity 19 | 20 | FROM redhat/ubi8-minimal 21 | 22 | ARG JAVA_PACKAGE=java-11-openjdk-headless 23 | ARG RUN_JAVA_VERSION=1.3.8 24 | ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' 25 | # Install java and the run-java script 26 | # Also set up permissions for user `1001` 27 | RUN microdnf install curl ca-certificates ${JAVA_PACKAGE} \ 28 | && microdnf clean all \ 29 | && mkdir /deployments \ 30 | && chown 1001 /deployments \ 31 | && chmod "g+rwX" /deployments \ 32 | && chown 1001:root /deployments \ 33 | && curl https://repo1.maven.org/maven2/io/fabric8/run-java-sh/${RUN_JAVA_VERSION}/run-java-sh-${RUN_JAVA_VERSION}-sh.sh -o /deployments/run-java.sh \ 34 | && chown 1001 /deployments/run-java.sh \ 35 | && chmod 540 /deployments/run-java.sh \ 36 | && echo "securerandom.source=file:/dev/urandom" >> /etc/alternatives/jre/conf/security/java.security \ 37 | && microdnf install fontconfig 38 | 39 | # Configure the JAVA_OPTIONS, you can add -XshowSettings:vm to also display the heap size. 40 | ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Duser.timezone=GMT+08" 41 | # We make four distinct layers so if there are application changes the library layers can be re-used 42 | COPY --from=builder --chown=1001 eulixplatform-registry/target/quarkus-app/lib/ /deployments/lib/ 43 | COPY --from=builder --chown=1001 eulixplatform-registry/target/quarkus-app/*.jar /deployments/ 44 | COPY --from=builder --chown=1001 eulixplatform-registry/target/quarkus-app/app/ /deployments/app/ 45 | COPY --from=builder --chown=1001 eulixplatform-registry/target/quarkus-app/quarkus/ /deployments/quarkus/ 46 | 47 | EXPOSE 8080 48 | USER 1001 49 | 50 | ENTRYPOINT [ "/deployments/run-java.sh" ] 51 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | --Platform-Registry-- 2 | Copyright (c) 2022 Institute of Software, Chinese Academy of Sciences (ISCAS) 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | --Third Party Software Notices-- 17 | Platform-Registry use software provided by third parties, including open source software. The following copyright statements and licenses apply to various components that are distributed with Platform-Registry. The Platform-Registry that includes this file does not necessarily use all of the third party software components referred to below. 18 | 19 | Licensee must fully agree and comply with these license terms or must not use these components. The third party license terms apply only to the respective software to which the license pertains, and the third party license terms do not apply to the Platform-Registry. 20 | -------------------------------------------------------------------------------- /VERSION: -------------------------------------------------------------------------------- 1 | 2.0.0 2 | -------------------------------------------------------------------------------- /docs/en/asserts/AO.space Platform&BaseService Arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/docs/en/asserts/AO.space Platform&BaseService Arch.png -------------------------------------------------------------------------------- /docs/zh/asserts/傲空间平台&Platform Base架构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/docs/zh/asserts/傲空间平台&Platform Base架构.png -------------------------------------------------------------------------------- /eulixplatform-common/src/main/java/xyz/eulix/platform/common/support/log/Logged.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support.log; 18 | 19 | import javax.interceptor.InterceptorBinding; 20 | import java.lang.annotation.Documented; 21 | import java.lang.annotation.Retention; 22 | import java.lang.annotation.Target; 23 | 24 | import static java.lang.annotation.ElementType.METHOD; 25 | import static java.lang.annotation.ElementType.TYPE; 26 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 27 | 28 | /** 29 | * Used to mark a class or method to be intercept with logging function. 30 | * 31 | * @see LoggingInterceptor 32 | * @since 1.0.0 33 | * @author Haibo Luo 34 | */ 35 | @Target({ TYPE, METHOD }) 36 | @Retention(RUNTIME) 37 | @Documented 38 | @InterceptorBinding 39 | public @interface Logged { 40 | } 41 | -------------------------------------------------------------------------------- /eulixplatform-common/src/main/java/xyz/eulix/platform/common/support/model/BaseEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support.model; 18 | 19 | import com.alibaba.excel.annotation.ExcelProperty; 20 | import lombok.Getter; 21 | import lombok.Setter; 22 | import lombok.ToString; 23 | import org.hibernate.annotations.CreationTimestamp; 24 | import org.hibernate.annotations.UpdateTimestamp; 25 | 26 | import javax.persistence.*; 27 | import java.io.Serializable; 28 | import java.time.OffsetDateTime; 29 | 30 | /** 31 | * Used to define a base entity from which you can derive your own entity. 32 | * It provides many basic properties as a domain entity. 33 | *

34 | * These properties are: 35 | * 36 | *

  • id: used to define the primary key of database.
  • 37 | *
  • created_at: used to define the create time of entity. 38 | * it will be added at first creation.
  • 39 | *
  • updated_at: used to define the update time of entity, 40 | * it will be updated for every update.
  • 41 | *
  • version: used to define current version of entity, 42 | * it will used to avoid conflict in an optimistic way.
  • 43 | * 44 | *

    45 | * By default, these properties can be maintained properly in an ORM framework. 46 | */ 47 | @Getter 48 | @Setter 49 | @ToString 50 | @MappedSuperclass 51 | public abstract class BaseEntity implements Serializable { 52 | @Id 53 | @Column(name = "id") 54 | @GeneratedValue(strategy = GenerationType.IDENTITY) 55 | @ExcelProperty(index = 0) 56 | private Long id; 57 | 58 | @Column(name = "created_at") 59 | @CreationTimestamp 60 | private OffsetDateTime createdAt; 61 | 62 | @Column(name = "updated_at") 63 | @UpdateTimestamp 64 | private OffsetDateTime updatedAt; 65 | 66 | @Column(name = "version") 67 | @Version 68 | private Integer version; 69 | } 70 | -------------------------------------------------------------------------------- /eulixplatform-common/src/main/java/xyz/eulix/platform/common/support/model/BatchDeleteResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support.model; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | @Data(staticConstructor = "of") 23 | public class BatchDeleteResult { 24 | @Schema(description = "删除的条目数量") 25 | private Long deletedCount; 26 | } 27 | -------------------------------------------------------------------------------- /eulixplatform-common/src/main/java/xyz/eulix/platform/common/support/model/PageInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support.model; 18 | 19 | import lombok.Data; 20 | 21 | /** 22 | * Used to define a group of properties to wrap the page info within a REST query request. 23 | */ 24 | @Data(staticConstructor = "of") 25 | public class PageInfo { 26 | private final long total; 27 | private final int page; 28 | private final int pageSize; 29 | } 30 | -------------------------------------------------------------------------------- /eulixplatform-common/src/main/java/xyz/eulix/platform/common/support/model/PageListResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support.model; 18 | 19 | import lombok.Data; 20 | 21 | import java.util.List; 22 | 23 | /** 24 | * Used to define a group of properties to wrap the paged list result within a REST response. 25 | * @param the element type of list 26 | */ 27 | @Data(staticConstructor = "of") 28 | public class PageListResult { 29 | private final List list; 30 | private final PageInfo pageInfo; 31 | } 32 | -------------------------------------------------------------------------------- /eulixplatform-common/src/main/java/xyz/eulix/platform/common/support/model/SortDirEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support.model; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Getter; 21 | import lombok.Setter; 22 | 23 | import java.util.Arrays; 24 | 25 | @AllArgsConstructor 26 | public enum SortDirEnum { 27 | ASC("asc", "正序"), 28 | DESC("desc", "倒序"), 29 | ; 30 | 31 | @Setter @Getter 32 | private String name; 33 | 34 | @Setter @Getter 35 | private String desc; 36 | 37 | public static SortDirEnum fromValue(String value) { 38 | return Arrays.stream(values()).filter(appType -> { 39 | if (appType.getName().equals(value)) { 40 | return true; 41 | } 42 | return false; 43 | }).findFirst().orElseThrow(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /eulixplatform-common/src/main/java/xyz/eulix/platform/common/support/model/StatusResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support.model; 18 | 19 | import lombok.Data; 20 | 21 | /** 22 | * Used to define a REST response for querying the server {@code status}. 23 | */ 24 | @Data(staticConstructor = "of") 25 | public class StatusResult { 26 | private final String status; 27 | private final String version; 28 | } 29 | -------------------------------------------------------------------------------- /eulixplatform-common/src/main/java/xyz/eulix/platform/common/support/serialization/MyObjectMapperCustomizer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support.serialization; 18 | 19 | import com.fasterxml.jackson.annotation.JsonInclude; 20 | import com.fasterxml.jackson.databind.ObjectMapper; 21 | import io.quarkus.jackson.ObjectMapperCustomizer; 22 | 23 | import javax.inject.Singleton; 24 | 25 | @Singleton 26 | public class MyObjectMapperCustomizer implements ObjectMapperCustomizer { 27 | 28 | @Override 29 | public void customize(ObjectMapper objectMapper) { 30 | // To suppress serializing properties with null values 31 | objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /eulixplatform-common/src/main/java/xyz/eulix/platform/common/support/validator/ValueOfEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support.validator; 18 | 19 | import javax.validation.Constraint; 20 | import javax.validation.Payload; 21 | import java.lang.annotation.Documented; 22 | import java.lang.annotation.Retention; 23 | import java.lang.annotation.Target; 24 | 25 | import static java.lang.annotation.ElementType.*; 26 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 27 | 28 | /** 29 | * The annotated element must be any of specified enum class values. 30 | *

    31 | * You need to provide a {@link ValueOfEnum#valueMethod()} to help get the values of 32 | * enum class which is also specified by {@link ValueOfEnum#enumClass()}. 33 | * By default, it will use {@link Enum#name()} as the value method. For the default 34 | * validation implementation, please refer to {@link ValueOfEnumValidator}. 35 | *

    36 | * Supported types are: 37 | *

    40 | *

    41 | * {@code null} elements are considered valid. 42 | * 43 | * @author Haibo Luo 44 | * @since 1.0 45 | */ 46 | @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE}) 47 | @Retention(RUNTIME) 48 | @Documented 49 | @Constraint(validatedBy = ValueOfEnumValidator.class) 50 | public @interface ValueOfEnum { 51 | /** 52 | * Used to specify enum class which must be derived from {@code java.lang.Enum}. 53 | */ 54 | Class> enumClass(); 55 | String message() default "must be any of enum {enumClass} values"; 56 | Class[] groups() default {}; 57 | Class[] payload() default {}; 58 | 59 | /** 60 | * Used to specify the value fetching method. By default, it 61 | * uses {@link Enum#name()}. 62 | */ 63 | String valueMethod() default "name"; 64 | } -------------------------------------------------------------------------------- /eulixplatform-common/src/test/java/xyz/eulix/platform/common/support/CommonUtilsTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.common.support; 18 | 19 | import org.junit.jupiter.api.Test; 20 | 21 | import static org.junit.jupiter.api.Assertions.assertEquals; 22 | 23 | class CommonUtilsTest { 24 | 25 | @Test 26 | void createUnifiedRandomCharacters() { 27 | final String characters = CommonUtils.createUnifiedRandomCharacters(12); 28 | assertEquals(12, characters.length()); 29 | } 30 | } -------------------------------------------------------------------------------- /eulixplatform-registry/.dockerignore: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | * 16 | !target/*-runner 17 | !target/*-runner.jar 18 | !target/lib/* 19 | !target/quarkus-app/* -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/auth/dto/GenPkeyRsp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.auth.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import java.time.OffsetDateTime; 23 | 24 | @Data(staticConstructor = "of") 25 | public class GenPkeyRsp { 26 | // 二维码pkey值 27 | @Schema(description = "二维码pkey值") 28 | private final String pkey; 29 | 30 | // 过期时间 31 | @Schema(description = "pkey有效时间") 32 | private final OffsetDateTime expiresAt; 33 | } 34 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/auth/dto/PollPkeyReq.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.auth.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import javax.validation.constraints.NotBlank; 23 | import javax.validation.constraints.Pattern; 24 | 25 | @Data(staticConstructor = "of") 26 | public class PollPkeyReq { 27 | // 二维码pkey值 28 | @NotBlank 29 | @Pattern(regexp = "[a-zA-Z0-9-]{36}") 30 | @Schema(pattern = "[a-zA-Z0-9-]{36}", description = "二维码pkey值") 31 | private String pkey; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/auth/dto/PollPkeyRsp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.auth.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | @Data(staticConstructor = "of") 23 | public class PollPkeyRsp { 24 | // 二维码pkey值 25 | @Schema(description = "二维码pkey值") 26 | private final String pkey; 27 | 28 | // 登录box端的key 29 | @Schema(description = "盒子侧bkey值") 30 | private final String bkey; 31 | 32 | // 用户域名 33 | @Schema(description = "用户域名") 34 | private final String userDomain; 35 | 36 | // 盒子公钥 37 | @Schema(description = "盒子公钥") 38 | private final String boxPubKey; 39 | } 40 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/auth/dto/TransBoxInfoReq.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.auth.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import javax.validation.constraints.NotBlank; 23 | import javax.validation.constraints.Size; 24 | 25 | @Data 26 | public class TransBoxInfoReq { 27 | // 登录box端的key 28 | @NotBlank 29 | @Size(max = 128) 30 | @Schema(maxLength = 128 ,description = "盒子侧bkey值") 31 | private String bkey; 32 | 33 | @NotBlank 34 | @Size(max = 128) 35 | @Schema(maxLength = 128 ,description = "用户域名") 36 | private String userDomain; 37 | 38 | // 盒子公钥 39 | @NotBlank 40 | @Size(max = 1024) 41 | @Schema(maxLength = 1024 ,description = "盒子公钥") 42 | private String boxPubKey; 43 | } 44 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/auth/entity/PkeyAuthEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.auth.entity; 18 | 19 | import lombok.Getter; 20 | import lombok.Setter; 21 | import lombok.ToString; 22 | import xyz.eulix.platform.common.support.model.BaseEntity; 23 | 24 | import javax.persistence.Column; 25 | import javax.persistence.Entity; 26 | import javax.persistence.Table; 27 | import javax.validation.constraints.NotBlank; 28 | import javax.validation.constraints.NotNull; 29 | import java.time.OffsetDateTime; 30 | 31 | @Getter @Setter @ToString(callSuper = true) 32 | @Entity @Table(name = "pkey_auth") 33 | public class PkeyAuthEntity extends BaseEntity { 34 | // 二维码pkey值 35 | @NotBlank 36 | @Column(name = "pkey") 37 | private String pkey; 38 | 39 | // pkey超时时间 40 | @NotNull 41 | @Column(name = "expires_at") 42 | private OffsetDateTime expiresAt; 43 | 44 | // 登录box端的key 45 | @Column(name = "bkey") 46 | private String bkey; 47 | 48 | // 盒子域名 49 | @Column(name = "user_domain") 50 | private String userDomain; 51 | 52 | // 盒子公钥 53 | @Column(name = "box_pub_key") 54 | private String boxPubKey; 55 | } 56 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/auth/repository/PkeyAuthEntityRepository.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.auth.repository; 18 | 19 | import io.quarkus.hibernate.orm.panache.PanacheRepository; 20 | import xyz.eulix.platform.services.auth.entity.PkeyAuthEntity; 21 | 22 | import javax.enterprise.context.ApplicationScoped; 23 | 24 | @ApplicationScoped 25 | public class PkeyAuthEntityRepository implements PanacheRepository { 26 | 27 | public PkeyAuthEntity findByPkey(String pkey) { 28 | return this.find("pkey", pkey).firstResult(); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/basic/dto/PlatformApiResults.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.basic.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import java.util.List; 23 | 24 | /** 25 | * 空间平台APIs 26 | */ 27 | @Data(staticConstructor = "of") 28 | public class PlatformApiResults { 29 | @Schema(description = "空间平台API列表") 30 | private final List platformApis; 31 | } 32 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/basic/dto/PlatformApiTypeEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.basic.dto; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Getter; 21 | 22 | import java.util.Arrays; 23 | 24 | @AllArgsConstructor 25 | public enum PlatformApiTypeEnum { 26 | BASIC_API("basic_api", "空间平台基础api"), 27 | EXTENSION_API("extension_api", "空间平台扩展api"), 28 | PRODUCT_SERVICE_API("product_service_api", "产品服务api"), 29 | ; 30 | 31 | @Getter 32 | private final String name; 33 | 34 | @Getter 35 | private final String desc; 36 | 37 | public static PlatformApiTypeEnum fromValue(String value) { 38 | return Arrays.stream(values()).filter(apiType -> apiType.getName().equals(value)).findFirst().orElseThrow(); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/basic/dto/PlatformApis.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.basic.dto; 18 | 19 | import com.fasterxml.jackson.annotation.JsonCreator; 20 | import com.fasterxml.jackson.annotation.JsonProperty; 21 | import lombok.Data; 22 | import lombok.NoArgsConstructor; 23 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 24 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 25 | 26 | import java.util.List; 27 | import java.util.Map; 28 | 29 | @Data 30 | @NoArgsConstructor 31 | public class PlatformApis { 32 | @JsonCreator 33 | public PlatformApis(@JsonProperty("version") String version, 34 | @JsonProperty("services") Map> services) { 35 | this.version = version; 36 | this.services = services; 37 | } 38 | 39 | private String version; 40 | private Map> services; 41 | 42 | @Data(staticConstructor = "of") 43 | public static class PlatformApi { 44 | @Schema(description = "http method") 45 | private final String method; 46 | 47 | @Schema(description = "uri,如/platform/v*/api/registry/box") 48 | private final String uri; 49 | 50 | @Schema(description = "简略uri,以四级目录开头,如/registry/box") 51 | private final String briefUri; 52 | 53 | @Schema(description = "兼容的API版本列表,如1,2,3") 54 | private final List compatibleVersions; 55 | 56 | @Schema(description = "API分类(空间平台基础api、空间平台扩展api、产品服务api),取值:basic_api、extension_api、product_service_api") 57 | @ValueOfEnum(enumClass = PlatformApiTypeEnum.class, valueMethod = "getName") 58 | private final String type; 59 | 60 | @Schema(description = "API描述") 61 | private final String desc; 62 | } 63 | 64 | 65 | } 66 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/basic/service/BaseService.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.basic.service; 18 | 19 | import com.fasterxml.jackson.core.JsonProcessingException; 20 | import org.jboss.logging.Logger; 21 | import xyz.eulix.platform.common.support.serialization.OperationUtils; 22 | import xyz.eulix.platform.common.support.service.ServiceError; 23 | import xyz.eulix.platform.common.support.service.ServiceOperationException; 24 | import xyz.eulix.platform.services.basic.dto.PlatformApis; 25 | import xyz.eulix.platform.services.config.ApplicationProperties; 26 | 27 | import javax.enterprise.context.ApplicationScoped; 28 | import javax.enterprise.inject.Produces; 29 | import javax.inject.Inject; 30 | import java.io.*; 31 | 32 | @ApplicationScoped 33 | public class BaseService { 34 | private static final Logger LOG = Logger.getLogger("app.log"); 35 | 36 | @Inject 37 | ApplicationProperties properties; 38 | @Inject 39 | OperationUtils utils; 40 | 41 | @Produces 42 | @SuppressWarnings("unused") // Used by DIC framework 43 | public PlatformApis apis() { 44 | PlatformApis routers; 45 | try{ 46 | String json = utils.getStringFromFile(properties.getPlatformApisLocation()); 47 | routers = utils.jsonToObject(json, PlatformApis.class); 48 | } catch (JsonProcessingException e) { 49 | LOG.errorv("platform apis created failed, processing json: " , e); 50 | throw new ServiceOperationException(ServiceError.API_JSON_EXCEPTION); 51 | } catch (IOException e) { 52 | LOG.errorv("platform apis created failed: read file " , e); 53 | throw new ServiceOperationException(ServiceError.API_IO_EXCEPTION); 54 | } 55 | 56 | return routers; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/cache/GTRouteAppTokens.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.cache; 18 | 19 | import lombok.Getter; 20 | import lombok.Setter; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | 23 | import java.util.Set; 24 | 25 | /** 26 | * 以 `Redis sets` 的形式在 redis 存储 27 | * key - 表名:AppDomains, 字段: boxUUID 28 | * value - `sets` 中存储的元素为空间应用的域名,`app-token` 29 | */ 30 | @Setter 31 | @Getter 32 | public class GTRouteAppTokens { 33 | @Schema(description = "boxUUID") 34 | private String boxUUID; 35 | 36 | @Schema(description = "appTokens") 37 | private Set appTokens; 38 | 39 | public GTRouteAppTokens(Set appTokens) { 40 | this.appTokens = appTokens; 41 | } 42 | } -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/cache/GTRouteBasic.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.cache; 18 | 19 | import lombok.Getter; 20 | import lombok.Setter; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | 23 | /** 24 | * key - 表名: GTR, 字段:空间的用户 subdomain 25 | * value - json 格式,包括主要字段如下: 26 | * - gtSvrNode - 目标域名, 即 network server (GT)node,如 `eulixnetwork-server.bp-cicada-rc.svc.cluster.local:80` 27 | * - gtCliId - network-client 配对的id, 如 `fae1e91d8ccf464daa1b3d0d9e3509fa` 28 | * - redirectDomain - 重定向的用户域名, 如 `b5r9qd8h.myself.com` 29 | * - redirectDomainStatus - 重定向域名状态,1表示正常,2表示已过期 30 | * - boxUUID - 盒子设备的 boxUUID 31 | * - userId - 盒子上用户对外的 id 32 | */ 33 | @Setter 34 | @Getter 35 | public class GTRouteBasic { 36 | @Schema(description = "用户subdomain") 37 | private String subdomain; 38 | 39 | @Schema(description = "network server 地址 & network client id等基础数据") 40 | private NetworkBasic networkBasic; 41 | 42 | public GTRouteBasic(String subdomain, NetworkBasic networkBasic) { 43 | this.subdomain = subdomain; 44 | this.networkBasic = networkBasic; 45 | } 46 | } -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/cache/GTRouteClients.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.cache; 18 | 19 | import lombok.Getter; 20 | import lombok.Setter; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | 23 | import java.util.Set; 24 | 25 | /** 26 | * 以 `Redis sets` 的形式在 redis 存储 27 | * key - 表名:SpaceUUIDs, 字段: boxUUID+userId 28 | * value - `sets` 中存储的元素为 client-uuid 29 | */ 30 | @Setter 31 | @Getter 32 | public class GTRouteClients { 33 | @Schema(description = "boxUUID") 34 | private String boxUUID; 35 | 36 | @Schema(description = "userId") 37 | private String userId; 38 | 39 | @Schema(description = "clientUUIDs") 40 | private Set clientUUIDs; 41 | 42 | public GTRouteClients(String boxUUID, String userId, Set clientUUIDs) { 43 | this.boxUUID = boxUUID; 44 | this.userId = userId; 45 | this.clientUUIDs = clientUUIDs; 46 | } 47 | } -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/cache/NSRRedirectStateEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.cache; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Getter; 21 | import lombok.Setter; 22 | 23 | import java.util.Arrays; 24 | 25 | @AllArgsConstructor 26 | public enum NSRRedirectStateEnum { 27 | NORMAL(1, "重定向正常"), 28 | EXPIRED(2, "重定向已过期"), 29 | ; 30 | 31 | @Setter @Getter 32 | private Integer state; 33 | 34 | @Setter @Getter 35 | private String desc; 36 | 37 | public static NSRRedirectStateEnum fromValue(Integer value) { 38 | return Arrays.stream(values()).filter(state -> { 39 | if (state.getState().equals(value)) { 40 | return true; 41 | } 42 | return false; 43 | }).findFirst().orElseThrow(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/cache/NSRoute.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.cache; 18 | 19 | import lombok.Getter; 20 | import lombok.Setter; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | 23 | /** 24 | * Network Server Route 缓存键值对 25 | */ 26 | @Setter 27 | @Getter 28 | public class NSRoute { 29 | @Schema(description = "用户域名") 30 | private String userDomain; 31 | 32 | @Schema(description = "network server 地址 & network client id") 33 | private String networkInfo; 34 | 35 | public NSRoute(String userDomain, String networkInfo) { 36 | this.userDomain = userDomain; 37 | this.networkInfo = networkInfo; 38 | } 39 | } -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/config/ApplicationProperties.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.config; 18 | 19 | import io.quarkus.arc.config.ConfigProperties; 20 | import org.eclipse.microprofile.config.inject.ConfigProperty; 21 | 22 | import java.math.BigDecimal; 23 | import java.util.Optional; 24 | 25 | /** 26 | * Global application configuration properties. 27 | * 28 | *

    Impl ref: 29 | * https://quarkus.io/guides/config-reference 30 | */ 31 | @ConfigProperties(prefix = "app") 32 | public interface ApplicationProperties { 33 | 34 | @ConfigProperty 35 | String getVersion(); 36 | 37 | @ConfigProperty(name = "registry.subdomain") 38 | String getRegistrySubdomain(); 39 | 40 | @ConfigProperty(name = "display.mach") 41 | Optional getDisplayMach(); 42 | 43 | @ConfigProperty(name = "display.unit.name") 44 | String getDisplayUnitName(); 45 | 46 | @ConfigProperty(name = "display.unit.factor") 47 | BigDecimal getDisplayUnitFactor(); 48 | 49 | @ConfigProperty(name = "register.provider.name", defaultValue = "default") 50 | String getRegisterProviderName(); 51 | 52 | @ConfigProperty(name = "api-resources.location") 53 | String getPlatformApisLocation(); 54 | 55 | @ConfigProperty(name = "lock.expire-time", defaultValue = "30") 56 | Integer getLockExpireTime(); 57 | 58 | @ConfigProperty(name = "migration.route.subdomain.expire-time", defaultValue = "259200") 59 | Integer getSubdomainRedirectTime(); 60 | } 61 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/DistributedLock.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.lock; 18 | 19 | import java.util.concurrent.TimeUnit; 20 | 21 | public interface DistributedLock { 22 | /** 23 | * 在有效时间内阻塞加锁,可被中断 24 | */ 25 | boolean tryLock(long waitTime, TimeUnit unit) throws InterruptedException; 26 | 27 | /** 28 | * 尝试加锁 29 | */ 30 | boolean tryLock(); 31 | 32 | /** 33 | * 解锁操作 34 | */ 35 | void unlock(); 36 | } 37 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/DistributedLockFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.lock; 18 | 19 | import io.quarkus.redis.client.RedisClient; 20 | import xyz.eulix.platform.services.config.ApplicationProperties; 21 | import xyz.eulix.platform.services.lock.service.ReentrantLockService; 22 | 23 | import javax.enterprise.context.ApplicationScoped; 24 | import javax.inject.Inject; 25 | import java.util.UUID; 26 | 27 | @ApplicationScoped 28 | public class DistributedLockFactory { 29 | @Inject 30 | RedisClient redisClient; 31 | 32 | @Inject 33 | ReentrantLockService mysqlLockService; 34 | 35 | @Inject 36 | ApplicationProperties applicationProperties; 37 | 38 | public DistributedLock newLock(String keyName, LockType lockType) { 39 | String lockValue = UUID.randomUUID().toString(); 40 | Integer timeout = applicationProperties.getLockExpireTime(); // 单位s 41 | 42 | if (lockType.equals(LockType.RedisReentrantLock)) { 43 | return new RedisReentrantLock(redisClient, keyName, lockValue, timeout); 44 | } else if(lockType.equals(LockType.MySQLReentrantLock)) { 45 | return new MySQLReentrantLock(mysqlLockService, keyName, lockValue, timeout); 46 | } else { 47 | throw new IllegalArgumentException("Invalid lock type: " + lockType); 48 | } 49 | 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/DistributedReadWriteLock.java: -------------------------------------------------------------------------------- 1 | package xyz.eulix.platform.services.lock; 2 | 3 | 4 | /** 5 | * @author VvV 6 | * @date 2023/8/4 7 | */ 8 | public interface DistributedReadWriteLock { 9 | /** 10 | * Returns the lock used for reading. 11 | */ 12 | DistributedLock readLock(); 13 | 14 | /** 15 | * Returns the lock used for writing. 16 | */ 17 | DistributedLock writeLock(); 18 | } 19 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/DistributedReadWriteLockFactory.java: -------------------------------------------------------------------------------- 1 | package xyz.eulix.platform.services.lock; 2 | 3 | import io.quarkus.redis.client.RedisClient; 4 | import xyz.eulix.platform.services.config.ApplicationProperties; 5 | import xyz.eulix.platform.services.lock.service.ReentrantReadWriteLockService; 6 | 7 | import javax.enterprise.context.ApplicationScoped; 8 | import javax.inject.Inject; 9 | 10 | /** 11 | * @author VvV 12 | * @date 2023/8/4 13 | */ 14 | @ApplicationScoped 15 | public class DistributedReadWriteLockFactory { 16 | 17 | @Inject 18 | RedisClient redisClient; 19 | 20 | @Inject 21 | ReentrantReadWriteLockService mysqlLockService; 22 | 23 | @Inject 24 | ApplicationProperties applicationProperties; 25 | 26 | public DistributedReadWriteLock newLock(String keyName, LockType lockType) { 27 | Integer timeout = applicationProperties.getLockExpireTime(); // 单位s 28 | 29 | if(lockType.equals(LockType.MySQLReentrantReadWriteLock)) { 30 | return new MySQLReentrantReadWriteLock(mysqlLockService, keyName, timeout); 31 | } else if (lockType.equals(LockType.RedisReentrantReadWriteLock)) { 32 | return new RedisReentrantReadWriteLock(redisClient, keyName, timeout); 33 | } else { 34 | throw new IllegalArgumentException("Invalid lock type: " + lockType); 35 | } 36 | 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/LockType.java: -------------------------------------------------------------------------------- 1 | package xyz.eulix.platform.services.lock; 2 | 3 | /** 4 | * @author VvV 5 | * @date 2023/7/27 6 | */ 7 | public enum LockType { 8 | 9 | RedisReentrantLock, 10 | 11 | MySQLReentrantLock, 12 | 13 | MySQLReentrantReadWriteLock, 14 | 15 | RedisReentrantReadWriteLock 16 | } 17 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/MySQLReentrantLock.java: -------------------------------------------------------------------------------- 1 | package xyz.eulix.platform.services.lock; 2 | 3 | import org.jboss.logging.Logger; 4 | import xyz.eulix.platform.services.lock.service.ReentrantLockService; 5 | 6 | import java.util.concurrent.TimeUnit; 7 | 8 | public class MySQLReentrantLock implements DistributedLock { 9 | 10 | private static final Logger LOG = Logger.getLogger("app.log"); 11 | 12 | private ReentrantLockService lockService; 13 | 14 | // 锁的key(资源的唯一标识) 15 | private String keyName; 16 | 17 | // 拥有锁的实例uuid 18 | private String lockValue; 19 | 20 | // 锁超时时间 21 | private Integer timeout; 22 | 23 | public MySQLReentrantLock(ReentrantLockService lockService, String keyName, String lockValue, Integer timeout) { 24 | this.lockService = lockService; 25 | this.keyName = keyName; 26 | this.lockValue = lockValue; 27 | this.timeout = timeout * 1000; // 单位ms 28 | } 29 | 30 | @Override 31 | public boolean tryLock(long waitTime, TimeUnit unit) throws InterruptedException { 32 | long start = System.currentTimeMillis(); 33 | long end; 34 | long sleepTime = 1L; // 重试间隔时间,单位ms。指数增长,最大值为1024ms 35 | do { 36 | //尝试获取锁 37 | boolean success = tryLock(); 38 | if (success) { 39 | //成功获取锁,返回 40 | LOG.debugv("acquire lock success, keyName:{0}", keyName); 41 | return true; 42 | } 43 | // 等待后继续尝试获取 44 | if (sleepTime < 1000L) { 45 | sleepTime = sleepTime << 1; 46 | } 47 | LOG.debugv("acquire lock fail, retry after: {0}ms", sleepTime); 48 | Thread.sleep(sleepTime); 49 | end = System.currentTimeMillis(); 50 | } while (end-start < unit.toMillis(waitTime)); 51 | LOG.debugv("acquire lock timeout, elapsed: {0}ms", System.currentTimeMillis() - start); 52 | return false; 53 | } 54 | 55 | @Override 56 | public boolean tryLock() { 57 | lockService.deleteExpiredLock(keyName); 58 | return lockService.tryLock(keyName, lockValue, timeout); 59 | } 60 | 61 | @Override 62 | public void unlock() { 63 | lockService.releaseLock(keyName, lockValue, timeout); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/dto/ReentrantReadWriteLock.java: -------------------------------------------------------------------------------- 1 | package xyz.eulix.platform.services.lock.dto; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import lombok.ToString; 6 | 7 | import java.sql.Timestamp; 8 | import java.util.Map; 9 | 10 | /** 11 | * @author VvV 12 | * @date 2023/8/7 13 | */ 14 | @Getter 15 | @Setter 16 | @ToString 17 | public class ReentrantReadWriteLock { 18 | private String lockKey; 19 | 20 | private Timestamp expiresAt; 21 | 22 | private String mode; 23 | 24 | private Map lockHoldsMap; 25 | 26 | private Integer version; 27 | } 28 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/entity/ReentrantLockEntity.java: -------------------------------------------------------------------------------- 1 | package xyz.eulix.platform.services.lock.entity; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | 6 | import javax.persistence.*; 7 | import javax.validation.constraints.NotBlank; 8 | import javax.validation.constraints.NotNull; 9 | import java.sql.Timestamp; 10 | 11 | /** 12 | * @author VvV 13 | * @date 2023/7/31 14 | */ 15 | 16 | @Entity 17 | @Getter 18 | @Setter 19 | @Table(name = "distributed_reentrant_locks") 20 | public class ReentrantLockEntity { 21 | 22 | @Id 23 | @Column(name = "lock_key") 24 | private String lockKey; 25 | 26 | @Column(name = "lock_value") 27 | @NotBlank 28 | private String lockValue; 29 | 30 | @Column(name = "expires_at") 31 | @NotNull 32 | private Timestamp expiresAt; 33 | 34 | @Column(name = "reentrant_count") 35 | @NotNull 36 | private Integer reentrantCount; 37 | } 38 | 39 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/entity/ReentrantReadWriteLockEntity.java: -------------------------------------------------------------------------------- 1 | package xyz.eulix.platform.services.lock.entity; 2 | 3 | import lombok.Getter; 4 | import lombok.Setter; 5 | import lombok.ToString; 6 | 7 | import javax.persistence.*; 8 | import javax.validation.constraints.NotNull; 9 | import java.sql.Timestamp; 10 | 11 | /** 12 | * @author VvV 13 | * @date 2023/8/6 14 | */ 15 | @Entity 16 | @Getter 17 | @Setter 18 | @ToString 19 | @Table(name = "distributed_reentrant_read_write_locks") 20 | public class ReentrantReadWriteLockEntity { 21 | 22 | @Id 23 | @Column(name = "lock_key") 24 | private String lockKey; 25 | 26 | @Column(name = "expires_at") 27 | @NotNull(message = "Expiration timestamp is required") 28 | private Timestamp expiresAt; 29 | 30 | @Column(name = "mode") 31 | private String mode; 32 | 33 | /** 34 | * JSON string that stores the UUIDs and reentrant counts of all read locks 35 | */ 36 | @Column(name = "lock_holds_json") 37 | private String lockHoldsJSON; 38 | 39 | @Version 40 | @Column(name = "version", nullable = false) 41 | private Integer version; 42 | } 43 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/repository/ReentrantLockRepository.java: -------------------------------------------------------------------------------- 1 | package xyz.eulix.platform.services.lock.repository; 2 | 3 | import io.quarkus.hibernate.orm.panache.PanacheRepository; 4 | import xyz.eulix.platform.services.lock.entity.ReentrantLockEntity; 5 | 6 | import javax.enterprise.context.ApplicationScoped; 7 | 8 | /** 9 | * @author VvV 10 | * @date 2023/7/31 11 | */ 12 | @ApplicationScoped 13 | public class ReentrantLockRepository implements PanacheRepository { 14 | 15 | public ReentrantLockEntity findByLockKey(String lockKey) { 16 | return this.find("lock_key", lockKey).firstResult(); 17 | } 18 | 19 | public void save(ReentrantLockEntity lock) { 20 | this.persistAndFlush(lock); 21 | } 22 | 23 | public void update(ReentrantLockEntity lock) { 24 | this.update("lock_value = ?1, expires_at = ?2, reentrant_count = ?3 where lock_key = ?4", 25 | lock.getLockValue(), lock.getExpiresAt(), lock.getReentrantCount(), lock.getLockKey()); 26 | } 27 | 28 | public void deleteByLockKey(String lockKey) { 29 | this.delete("lock_key", lockKey); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/lock/repository/ReentrantReadWriteLockRepository.java: -------------------------------------------------------------------------------- 1 | package xyz.eulix.platform.services.lock.repository; 2 | 3 | import io.quarkus.hibernate.orm.panache.PanacheRepository; 4 | import xyz.eulix.platform.services.lock.entity.ReentrantReadWriteLockEntity; 5 | 6 | import javax.enterprise.context.Dependent; 7 | 8 | /** 9 | * @author VvV 10 | * @date 2023/8/7 11 | */ 12 | @Dependent 13 | public class ReentrantReadWriteLockRepository implements PanacheRepository { 14 | 15 | public ReentrantReadWriteLockEntity findByLockKey(String lockKey) { 16 | return this.find("lock_key", lockKey).firstResult(); 17 | } 18 | 19 | public void save(ReentrantReadWriteLockEntity lock) { 20 | this.persistAndFlush(lock); 21 | } 22 | 23 | public void deleteByLockKey(String lockKey) { 24 | this.delete("lock_key", lockKey); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/migration/dto/BoxMigrationInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.migration.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import javax.validation.Valid; 23 | import javax.validation.constraints.NotEmpty; 24 | import java.util.List; 25 | 26 | /** 27 | * 盒子割接信息 28 | */ 29 | @Data 30 | public class BoxMigrationInfo { 31 | @Schema(description = "network client id;传参为空时将由平台重新生成") 32 | private String networkClientId; 33 | 34 | @Valid 35 | @NotEmpty 36 | @Schema(description = "用户列表") 37 | private List userInfos; 38 | } 39 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/migration/dto/BoxMigrationResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.migration.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | import xyz.eulix.platform.services.registry.dto.registry.NetworkClient; 22 | 23 | import java.util.List; 24 | 25 | /** 26 | * 盒子割接结果 27 | */ 28 | @Data(staticConstructor = "of") 29 | public class BoxMigrationResult { 30 | @Schema(description = "盒子的 UUID") 31 | private final String boxUUID; 32 | 33 | @Schema(description = "为盒子分配的 network client 信息") 34 | private final NetworkClient networkClient; 35 | 36 | @Schema(description = "用户列表") 37 | private final List userInfos; 38 | } 39 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/migration/dto/ClientMigrationInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.migration.dto; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | import xyz.eulix.platform.services.registry.dto.registry.RegistryTypeEnum; 23 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 24 | 25 | import javax.validation.constraints.NotBlank; 26 | 27 | /** 28 | * 客户端割接信息 29 | */ 30 | @Data 31 | @AllArgsConstructor(staticName = "of") 32 | public class ClientMigrationInfo { 33 | @NotBlank 34 | @Schema(description = "客户端的 UUID") 35 | private String clientUUID; 36 | 37 | @NotBlank 38 | @Schema(description = "客户端类型(绑定、扫码授权),取值:client_bind、client_auth") 39 | @ValueOfEnum(enumClass = RegistryTypeEnum.class, valueMethod = "getName") 40 | private String clientType; 41 | } 42 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/migration/dto/MigrationRouteInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.migration.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import javax.validation.Valid; 23 | import javax.validation.constraints.NotEmpty; 24 | import java.util.List; 25 | 26 | /** 27 | * 用户域名映射信息 28 | */ 29 | @Data 30 | public class MigrationRouteInfo { 31 | @Valid 32 | @NotEmpty 33 | @Schema(description = "userDomain 映射关系") 34 | private List userDomainRouteInfos; 35 | } 36 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/migration/dto/MigrationRouteResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.migration.dto; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | 23 | import java.util.List; 24 | 25 | /** 26 | * 用户域名映射信息 27 | */ 28 | @Data 29 | @AllArgsConstructor(staticName = "of") 30 | public class MigrationRouteResult { 31 | @Schema(description = "盒子的 UUID") 32 | private String boxUUID; 33 | 34 | @Schema(description = "subdomain映射关系") 35 | private List userDomainRouteInfos; 36 | } 37 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/migration/dto/NetworkInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.migration.dto; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | 22 | @Data 23 | @AllArgsConstructor(staticName = "of") 24 | public class NetworkInfo { 25 | String serverAddr; 26 | String clientId; 27 | String userDomain; 28 | } 29 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/migration/dto/UserDomainRouteInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.migration.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import javax.validation.constraints.NotBlank; 23 | import javax.validation.constraints.Pattern; 24 | 25 | /** 26 | * 用户域名映射信息 27 | */ 28 | @Data 29 | public class UserDomainRouteInfo { 30 | @NotBlank 31 | @Schema(description = "当前userId") 32 | private String userId; 33 | 34 | @NotBlank 35 | @Schema(description = "重定向 userDomain") 36 | @Pattern(regexp = "^[a-z][a-z0-9]{5,19}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62}){1,5}\\.?") 37 | private String userDomainRedirect; 38 | } 39 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/migration/dto/UserMigrationInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.migration.dto; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | import xyz.eulix.platform.services.registry.dto.registry.RegistryTypeEnum; 23 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 24 | 25 | import javax.validation.Valid; 26 | import javax.validation.constraints.NotBlank; 27 | import java.util.List; 28 | 29 | /** 30 | * 用户割接信息 31 | */ 32 | @Data 33 | @AllArgsConstructor(staticName = "of") 34 | public class UserMigrationInfo { 35 | @NotBlank 36 | @Schema(description = "用户的 ID") 37 | private String userId; 38 | 39 | @NotBlank 40 | @Schema(description = "用户被指定的用户域名字段") 41 | private String userDomain; 42 | 43 | @NotBlank 44 | @Schema(description = "用户类型(管理员、普通成员),取值:user_admin、user_member") 45 | @ValueOfEnum(enumClass = RegistryTypeEnum.class, valueMethod = "getName") 46 | private String userType; 47 | 48 | @Valid 49 | @Schema(description = "Client 列表") 50 | private List clientInfos; 51 | } 52 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/dto/BaseResultRes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.dto; 18 | 19 | import lombok.Data; 20 | 21 | @Data(staticConstructor = "of") 22 | public class BaseResultRes { 23 | private final Boolean result; 24 | } 25 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/dto/NetworkAuthReq.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.dto; 18 | 19 | import javax.validation.constraints.NotBlank; 20 | import lombok.AllArgsConstructor; 21 | import lombok.Data; 22 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 23 | 24 | @Data 25 | @AllArgsConstructor(staticName = "of") 26 | public class NetworkAuthReq { 27 | @NotBlank 28 | @Schema(description = "network client id") 29 | private String networkClientId; 30 | 31 | @NotBlank 32 | @Schema(description = "network client 访问密钥") 33 | private String networkSecretKey; 34 | } -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/dto/NetworkServerExtraInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.dto; 18 | 19 | import com.fasterxml.jackson.annotation.JsonProperty; 20 | import lombok.Data; 21 | 22 | @Data(staticConstructor = "of") 23 | public class NetworkServerExtraInfo { 24 | @JsonProperty("stun_addr") 25 | private String stunAddress; 26 | } 27 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/dto/NetworkServerRes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | @Data(staticConstructor = "of") 23 | public class NetworkServerRes { 24 | @Schema(description = "透传服务器地址") 25 | private final String serverAddress; 26 | 27 | @Schema(description = "stun服务器地址") 28 | private final String stunAddress; 29 | } 30 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/dto/NetworkServerStateEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.dto; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Getter; 21 | import lombok.Setter; 22 | 23 | import java.util.Arrays; 24 | 25 | @AllArgsConstructor 26 | public enum NetworkServerStateEnum { 27 | OFFLINE(0, "未启用"), 28 | ONLINE(1, "已上线") 29 | ; 30 | 31 | @Setter @Getter 32 | private Integer state; 33 | 34 | @Setter @Getter 35 | private String desc; 36 | 37 | public static NetworkServerStateEnum fromValue(Integer value) { 38 | return Arrays.stream(values()).filter(state -> { 39 | if (state.getState().equals(value)) { 40 | return true; 41 | } 42 | return false; 43 | }).findFirst().orElseThrow(); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/dto/StunServerRes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | @Data(staticConstructor = "of") 23 | public class StunServerRes { 24 | @Schema(description = "STUN服务器地址") 25 | private final String stunAddress; 26 | } 27 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/entity/NetworkRouteEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.entity; 18 | 19 | import lombok.*; 20 | import xyz.eulix.platform.common.support.model.BaseEntity; 21 | 22 | import javax.persistence.Column; 23 | import javax.persistence.Entity; 24 | import javax.persistence.Table; 25 | import javax.validation.constraints.NotBlank; 26 | import javax.validation.constraints.NotNull; 27 | 28 | 29 | @Getter 30 | @Setter 31 | @ToString(callSuper = true) 32 | @Entity 33 | @Table(name = "network_client_server_route") 34 | @AllArgsConstructor(staticName = "of") 35 | @NoArgsConstructor 36 | public class NetworkRouteEntity extends BaseEntity { 37 | @NotBlank 38 | @Column(name = "network_client_id") 39 | private String clientId; 40 | 41 | @NotNull 42 | @Column(name = "network_server_id") 43 | private Long serverId; 44 | } 45 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/entity/NetworkServerEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.entity; 18 | 19 | import lombok.*; 20 | import xyz.eulix.platform.services.network.dto.NetworkServerStateEnum; 21 | import xyz.eulix.platform.common.support.model.BaseEntity; 22 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 23 | 24 | import javax.persistence.Column; 25 | import javax.persistence.Entity; 26 | import javax.persistence.Table; 27 | import javax.validation.constraints.NotBlank; 28 | import javax.validation.constraints.NotNull; 29 | 30 | 31 | @Getter 32 | @Setter 33 | @ToString(callSuper = true) 34 | @Entity 35 | @Table(name = "network_server_info") 36 | @AllArgsConstructor(staticName = "of") 37 | @NoArgsConstructor 38 | public class NetworkServerEntity extends BaseEntity { 39 | @NotBlank 40 | @Column(name = "server_protocol") 41 | private String protocol; 42 | 43 | @NotBlank 44 | @Column(name = "server_addr") 45 | private String addr; 46 | 47 | @NotNull 48 | @Column(name = "server_port") 49 | private Integer port; 50 | 51 | @NotBlank 52 | @Column(name = "identifier") 53 | private String identifier; 54 | 55 | @NotNull 56 | @Column(name = "state") 57 | @ValueOfEnum(enumClass = NetworkServerStateEnum.class, valueMethod = "getState") 58 | private Integer state; 59 | 60 | // 扩展信息,json结构 61 | @Column(name = "extra") 62 | private String extra; 63 | } 64 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/repository/NetworkRouteEntityRepository.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.repository; 18 | 19 | import io.quarkus.hibernate.orm.panache.PanacheRepository; 20 | import xyz.eulix.platform.services.network.entity.NetworkRouteEntity; 21 | 22 | import javax.enterprise.context.ApplicationScoped; 23 | import java.util.Optional; 24 | 25 | @ApplicationScoped 26 | public class NetworkRouteEntityRepository implements PanacheRepository { 27 | // 根据network_client_id查询资源 28 | private static final String FIND_BY_CLIENTID = "network_client_id=?1"; 29 | 30 | public Optional findByClientId(String networkClientId) { 31 | return this.find(FIND_BY_CLIENTID, networkClientId).firstResultOptional(); 32 | } 33 | 34 | public void deleteByClientID(String clientId) { 35 | this.delete(FIND_BY_CLIENTID, clientId); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/network/repository/NetworkServerEntityRepository.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.network.repository; 18 | 19 | import io.quarkus.hibernate.orm.panache.PanacheRepository; 20 | import xyz.eulix.platform.services.network.entity.NetworkServerEntity; 21 | 22 | import javax.enterprise.context.ApplicationScoped; 23 | 24 | @ApplicationScoped 25 | public class NetworkServerEntityRepository implements PanacheRepository { 26 | } 27 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/provider/ProviderFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.provider; 18 | 19 | import xyz.eulix.platform.services.config.ApplicationProperties; 20 | import xyz.eulix.platform.services.provider.inf.RegistryProvider; 21 | 22 | import javax.enterprise.context.ApplicationScoped; 23 | import javax.inject.Inject; 24 | import java.util.Map; 25 | import java.util.concurrent.ConcurrentHashMap; 26 | 27 | @ApplicationScoped 28 | public class ProviderFactory { 29 | private static final String PROVIDER_NAME = "default"; 30 | private static final Map map = new ConcurrentHashMap<>(); 31 | 32 | @Inject 33 | ApplicationProperties properties; 34 | 35 | public static void putRegisterProvider(String name, RegistryProvider registryProvider){ 36 | map.put(name, registryProvider); 37 | } 38 | 39 | public RegistryProvider getRegistryProvider() { 40 | String name = properties.getRegisterProviderName(); 41 | if (map.containsKey(name)) { 42 | return map.get(name); 43 | } else { 44 | return map.get(PROVIDER_NAME); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/provider/inf/RegistryProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.provider.inf; 18 | 19 | import xyz.eulix.platform.services.token.dto.TokenInfo; 20 | 21 | /** 22 | * 注册相关Provider,可自定义实现 23 | */ 24 | public interface RegistryProvider { 25 | /** 26 | * 盒子身份认证 27 | * 28 | * @param tokenInfo tokenInfo 29 | */ 30 | void isBoxIllegal(TokenInfo tokenInfo); 31 | 32 | /** 33 | * 计算network路由 34 | * 35 | * @param networkClientId networkClientId 36 | * @return networkServerId 37 | */ 38 | Long calculateNetworkRoute(String networkClientId); 39 | 40 | /** 41 | * 验证子域名是否合法 42 | * 43 | * @param subdomain 子域名 44 | * @return 是否合法 45 | */ 46 | Boolean isSubdomainIllegal(String subdomain); 47 | } 48 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/package-info.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto; -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/BaseResultRes.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | 21 | @Data(staticConstructor = "of") 22 | public class BaseResultRes { 23 | private final Boolean result; 24 | } 25 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/BoxRegistryDetailInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import java.time.OffsetDateTime; 23 | import java.util.List; 24 | 25 | @Data(staticConstructor = "of") 26 | public class BoxRegistryDetailInfo { 27 | @Schema(description = "为盒子分配的 network client 信息") 28 | private final String networkClientId; 29 | 30 | @Schema(description = "创建时间") 31 | private final OffsetDateTime createdAt; 32 | 33 | @Schema(description = "修改时间") 34 | private final OffsetDateTime updatedAt; 35 | 36 | @Schema(description = "盒子下用户信息") 37 | private final List userInfos; 38 | } 39 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/BoxRegistryInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import javax.validation.constraints.NotBlank; 23 | 24 | /** 25 | * Used to define a data transfer object as REST request for holding related parameters 26 | * of registry information. 27 | */ 28 | @Data 29 | public class BoxRegistryInfo { 30 | @NotBlank 31 | @Schema(description = "盒子的 UUID") 32 | private String boxUUID; 33 | } 34 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/BoxRegistryResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | import xyz.eulix.platform.services.registry.dto.registry.NetworkClient; 22 | 23 | /** 24 | * Used to define a data transfer object as REST response for holding related result 25 | * of activation result. 26 | */ 27 | @Data(staticConstructor = "of") 28 | public class BoxRegistryResult { 29 | @Schema(description = "盒子的 UUID") 30 | private final String boxUUID; 31 | 32 | @Schema(description = "为盒子分配的 network client 信息") 33 | private final NetworkClient networkClient; 34 | } 35 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/ClientRegistryDetailInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import java.time.OffsetDateTime; 23 | 24 | @Data(staticConstructor = "of") 25 | public class ClientRegistryDetailInfo { 26 | @Schema(description = "注册类型") 27 | private final String userType; 28 | 29 | @Schema(description = "客户端UUID") 30 | private final String clientUUID; 31 | 32 | @Schema(description = "创建时间") 33 | private final OffsetDateTime createdAt; 34 | } 35 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/ClientRegistryInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | import xyz.eulix.platform.services.registry.dto.registry.RegistryTypeEnum; 22 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 23 | 24 | import javax.validation.constraints.NotBlank; 25 | 26 | /** 27 | * Used to define a data transfer object as REST request for holding related parameters 28 | * of registry information. 29 | */ 30 | @Data 31 | public class ClientRegistryInfo { 32 | @NotBlank 33 | @Schema(description = "客户端的 UUID") 34 | private String clientUUID; 35 | 36 | @NotBlank 37 | @Schema(description = "客户端类型(绑定、扫码授权),取值:client_bind、client_auth") 38 | @ValueOfEnum(enumClass = RegistryTypeEnum.class, valueMethod = "getName") 39 | private String clientType; 40 | } 41 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/ClientRegistryResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | 23 | /** 24 | * Used to define a data transfer object as REST response for holding related result 25 | * of activation result. 26 | */ 27 | @Data 28 | @AllArgsConstructor(staticName = "of") 29 | public class ClientRegistryResult { 30 | 31 | @Schema(description = "盒子的 UUID") 32 | private String boxUUID; 33 | 34 | @Schema(description = "用户的 ID") 35 | private String userId; 36 | 37 | @Schema(description = "客户端的 UUID") 38 | private String clientUUID; 39 | 40 | @Schema(description = "客户端类型(绑定、扫码授权),取值:client_bind、client_auth") 41 | private String clientType; 42 | } 43 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/NetworkClient.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | @Data(staticConstructor = "of") 23 | public class NetworkClient { 24 | @Schema(description = "指定的客户端 ID") 25 | private final String clientId; 26 | 27 | @Schema(description = "指定的访问密钥") 28 | private final String secretKey; 29 | } 30 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/RegistryTypeEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Getter; 21 | 22 | import java.util.Arrays; 23 | 24 | @AllArgsConstructor 25 | public enum RegistryTypeEnum { 26 | BOX("box", "傲来盒子"), 27 | USER_ADMIN("user_admin", "用户管理员"), 28 | USER_MEMBER("user_member", "用户成员"), 29 | CLIENT_BIND("client_bind", "绑定类型客户端"), 30 | CLIENT_AUTH("client_auth", "授权类型客户端"), 31 | ; 32 | 33 | @Getter 34 | private final String name; 35 | 36 | @Getter 37 | private final String desc; 38 | 39 | public static RegistryTypeEnum fromValue(String value) { 40 | return Arrays.stream(values()).filter(appType -> appType.getName().equals(value)).findFirst().orElseThrow(); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/SubdomainGenInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | import lombok.NoArgsConstructor; 22 | import org.checkerframework.checker.units.qual.A; 23 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 24 | 25 | import javax.validation.constraints.Max; 26 | 27 | /** 28 | * Used to define a data transfer object as REST response for holding related result 29 | * of activation result. 30 | */ 31 | @Data 32 | @AllArgsConstructor(staticName = "of") 33 | @NoArgsConstructor 34 | public class SubdomainGenInfo { 35 | @Schema(description = "有效期,单位秒,最长7天") 36 | @Max(604800) 37 | private Integer effectiveTime; 38 | } 39 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/SubdomainGenResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | import lombok.NoArgsConstructor; 22 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 23 | 24 | import java.time.OffsetDateTime; 25 | 26 | /** 27 | * Used to define a data transfer object as REST response for holding related result 28 | * of activation result. 29 | */ 30 | @Data 31 | @AllArgsConstructor(staticName = "of") 32 | public class SubdomainGenResult { 33 | @Schema(description = "盒子的 UUID") 34 | private String boxUUID; 35 | 36 | @Schema(description = "全局唯一的 subdomain") 37 | private String subdomain; 38 | 39 | @Schema(description = "subdomain过期时间") 40 | private OffsetDateTime expiresAt; 41 | } 42 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/SubdomainStateEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Getter; 21 | import lombok.Setter; 22 | 23 | import java.util.Arrays; 24 | 25 | @AllArgsConstructor 26 | public enum SubdomainStateEnum { 27 | TEMPORARY(0, "临时"), 28 | USED(1, "正在使用"), 29 | HISTORY(2, "历史使用"), 30 | MIGRATED(3, "已迁移"), 31 | ; 32 | 33 | @Setter @Getter 34 | private Integer state; 35 | 36 | @Setter @Getter 37 | private String desc; 38 | 39 | public static SubdomainStateEnum fromValue(Integer value) { 40 | return Arrays.stream(values()).filter(state -> { 41 | if (state.getState().equals(value)) { 42 | return true; 43 | } 44 | return false; 45 | }).findFirst().orElseThrow(); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/SubdomainUpdateInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import javax.validation.constraints.NotBlank; 23 | import javax.validation.constraints.Pattern; 24 | import javax.validation.constraints.Size; 25 | 26 | /** 27 | * Used to define a data transfer object as REST response for holding related result 28 | * of activation result. 29 | */ 30 | @Data 31 | public class SubdomainUpdateInfo { 32 | @Schema(description = "子域名,正则表达式:^[a-z0-9-]{1,63}$") 33 | @Pattern(regexp = "^[a-z0-9-]{1,63}$") 34 | @NotBlank 35 | private String subdomain; 36 | } 37 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/SubdomainUpdateResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import java.util.List; 23 | 24 | /** 25 | * Used to define a data transfer object as REST response for holding related result 26 | * of activation result. 27 | */ 28 | @Data 29 | public class SubdomainUpdateResult { 30 | @Schema(description = "是否成功") 31 | private Boolean success; 32 | 33 | @Schema(description = "盒子的 UUID, success为true时返回") 34 | private String boxUUID; 35 | 36 | @Schema(description = "用户id, success为true时返回") 37 | private String userId; 38 | 39 | @Schema(description = "全局唯一的 subdomain, success为true时返回") 40 | private String subdomain; 41 | 42 | @Schema(description = "错误码, success为false时返回") 43 | private Integer code; 44 | 45 | @Schema(description = "错误消息, success为false时返回") 46 | private String error; 47 | 48 | @Schema(description = "推荐的subdomain, success为false时返回") 49 | private List recommends; 50 | } 51 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/UserRegistryDetailInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import java.time.OffsetDateTime; 23 | import java.util.List; 24 | 25 | @Data(staticConstructor = "of") 26 | public class UserRegistryDetailInfo { 27 | @Schema(description = "为用户分配的用户域名,该域名可以用于后续的业务访问") 28 | private final String userDomain; 29 | 30 | @Schema(description = "子域名") 31 | private final String subDomain; 32 | 33 | @Schema(description = "注册类型") 34 | private final String userType; 35 | 36 | @Schema(description = "用户id") 37 | private final String userId; 38 | 39 | @Schema(description = "创建时间") 40 | private final OffsetDateTime createdAt; 41 | 42 | @Schema(description = "client相关信息") 43 | private final List clientInfos; 44 | } 45 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/UserRegistryInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | import xyz.eulix.platform.services.registry.dto.registry.RegistryTypeEnum; 23 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 24 | 25 | import javax.validation.constraints.NotBlank; 26 | 27 | /** 28 | * Used to define a data transfer object as REST request for holding related parameters 29 | * of registry information. 30 | */ 31 | @Data 32 | @AllArgsConstructor(staticName = "of") 33 | public class UserRegistryInfo { 34 | @NotBlank 35 | @Schema(description = "用户的 ID") 36 | private String userId; 37 | 38 | @Schema(description = "用户被指定的子域名字段") 39 | private String subdomain; 40 | 41 | @NotBlank 42 | @Schema(description = "用户类型(管理员、普通成员),取值:user_admin、user_member") 43 | @ValueOfEnum(enumClass = RegistryTypeEnum.class, valueMethod = "getName") 44 | private String userType; 45 | 46 | @NotBlank 47 | @Schema(description = "客户端的 UUID") 48 | private String clientUUID; 49 | } 50 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/dto/registry/UserRegistryResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.dto.registry; 18 | 19 | import lombok.AllArgsConstructor; 20 | import lombok.Data; 21 | import lombok.NoArgsConstructor; 22 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 23 | 24 | /** 25 | * Used to define a data transfer object as REST response for holding related result 26 | * of activation result. 27 | */ 28 | @Data 29 | @AllArgsConstructor(staticName = "of") 30 | @NoArgsConstructor 31 | public class UserRegistryResult { 32 | @Schema(description = "盒子的 UUID") 33 | private String boxUUID; 34 | 35 | @Schema(description = "用户的 ID") 36 | private String userId; 37 | 38 | @Schema(description = "为用户分配的用户域名,该域名可以用于后续的业务访问") 39 | private String userDomain; 40 | 41 | @Schema(description = "用户类型(管理员、普通成员),取值:user_admin、user_member") 42 | private String userType; 43 | 44 | @Schema(description = "客户端的 UUID") 45 | private String clientUUID; 46 | } 47 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/entity/RegistryBoxEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.entity; 18 | 19 | import lombok.Getter; 20 | import lombok.Setter; 21 | import lombok.ToString; 22 | import xyz.eulix.platform.common.support.model.BaseEntity; 23 | 24 | import javax.persistence.Column; 25 | import javax.persistence.Entity; 26 | import javax.persistence.Table; 27 | import javax.validation.constraints.NotBlank; 28 | 29 | @Getter @Setter @ToString(callSuper = true) 30 | @Entity @Table(name = "box_registries") 31 | public class RegistryBoxEntity extends BaseEntity { 32 | 33 | @NotBlank 34 | @Column(name = "box_reg_key") 35 | private String boxRegKey; 36 | 37 | @NotBlank 38 | @Column(name = "box_uuid") 39 | private String boxUUID; 40 | 41 | @NotBlank 42 | @Column(name = "network_client_id") 43 | private String networkClientId; 44 | 45 | @Column(name = "network_secret_key") 46 | private String networkSecretKey; 47 | 48 | @Column(name = "network_secret_salt") 49 | private String networkSecretSalt; 50 | } 51 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/entity/RegistryClientEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.entity; 18 | 19 | import lombok.Getter; 20 | import lombok.Setter; 21 | import lombok.ToString; 22 | import xyz.eulix.platform.services.registry.dto.registry.RegistryTypeEnum; 23 | import xyz.eulix.platform.common.support.model.BaseEntity; 24 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 25 | 26 | import javax.persistence.Column; 27 | import javax.persistence.Entity; 28 | import javax.persistence.Table; 29 | import javax.validation.constraints.NotBlank; 30 | 31 | @Getter @Setter @ToString(callSuper = true) 32 | @Entity @Table(name = "client_registries") 33 | public class RegistryClientEntity extends BaseEntity { 34 | @NotBlank 35 | @Column(name = "client_reg_key") 36 | private String clientRegKey; 37 | 38 | @NotBlank 39 | @Column(name = "box_uuid") 40 | private String boxUUID; 41 | 42 | @NotBlank 43 | @Column(name = "user_id") 44 | private String userId; 45 | 46 | @NotBlank 47 | @Column(name = "client_uuid") 48 | private String clientUUID; 49 | 50 | @NotBlank 51 | @Column(name = "type") 52 | @ValueOfEnum(enumClass = RegistryTypeEnum.class, valueMethod = "getName") 53 | private String registryType; 54 | } 55 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/entity/RegistryUserEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.entity; 18 | 19 | import lombok.Getter; 20 | import lombok.Setter; 21 | import lombok.ToString; 22 | import xyz.eulix.platform.services.registry.dto.registry.RegistryTypeEnum; 23 | import xyz.eulix.platform.common.support.model.BaseEntity; 24 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 25 | 26 | import javax.persistence.Column; 27 | import javax.persistence.Entity; 28 | import javax.persistence.Table; 29 | import javax.validation.constraints.NotBlank; 30 | 31 | @Getter @Setter @ToString(callSuper = true) 32 | @Entity @Table(name = "user_registries") 33 | public class RegistryUserEntity extends BaseEntity { 34 | @NotBlank 35 | @Column(name = "user_reg_key") 36 | private String userRegKey; 37 | 38 | @NotBlank 39 | @Column(name = "box_uuid") 40 | private String boxUUID; 41 | 42 | @NotBlank 43 | @Column(name = "user_id") 44 | private String userId; 45 | 46 | @NotBlank 47 | @Column(name = "type") 48 | @ValueOfEnum(enumClass = RegistryTypeEnum.class, valueMethod = "getName") 49 | private String registryType; 50 | } 51 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/registry/entity/SubdomainEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.registry.entity; 18 | 19 | import lombok.Getter; 20 | import lombok.Setter; 21 | import lombok.ToString; 22 | import xyz.eulix.platform.services.registry.dto.registry.SubdomainStateEnum; 23 | import xyz.eulix.platform.common.support.model.BaseEntity; 24 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 25 | 26 | import javax.persistence.*; 27 | import javax.validation.constraints.NotBlank; 28 | import javax.validation.constraints.NotNull; 29 | import java.time.OffsetDateTime; 30 | 31 | @Getter @Setter @ToString(callSuper = true) 32 | @Entity @Table(name = "subdomain") 33 | // 用于正则匹配保留域名对应的已经注册域名. 由于需要使用 mysql 的 regexp/rlike 关键字来查询, 所以使用 NamedNativeQueries. 34 | @NamedNativeQueries({ 35 | @NamedNativeQuery(name = "SubdomainEntity.findByRegexp",query = "select * from subdomain where subdomain REGEXP :regexp", resultClass=SubdomainEntity.class) 36 | }) 37 | public class SubdomainEntity extends BaseEntity { 38 | 39 | @NotBlank 40 | @Column(name = "box_uuid") 41 | private String boxUUID; 42 | 43 | @Column(name = "user_id") 44 | private String userId; 45 | 46 | @NotBlank 47 | @Column(name = "subdomain") 48 | private String subdomain; 49 | 50 | @Column(name = "user_domain") 51 | private String userDomain; 52 | 53 | @NotNull 54 | @Column(name = "state") 55 | @ValueOfEnum(enumClass = SubdomainStateEnum.class, valueMethod = "getState") 56 | private Integer state; 57 | 58 | @Column(name = "expires_at") 59 | private OffsetDateTime expiresAt; 60 | } 61 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/dto/AuthTypeEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.dto; 18 | 19 | import java.util.Arrays; 20 | import lombok.AllArgsConstructor; 21 | import lombok.Getter; 22 | 23 | @AllArgsConstructor 24 | public enum AuthTypeEnum { 25 | BOX_UUID("box_uuid", "box_uuid 验证"), 26 | BOX_PUB_KEY("box_pub_key", "box 公钥验证"), 27 | 28 | ; 29 | 30 | @Getter 31 | private final String name; 32 | 33 | @Getter 34 | private final String desc; 35 | 36 | public static AuthTypeEnum fromValue(String value) { 37 | return Arrays.stream(values()).filter(appType -> appType.getName().equals(value)).findFirst().orElseThrow(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/dto/CheckTokenInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 22 | 23 | import javax.validation.constraints.NotBlank; 24 | import javax.validation.constraints.NotEmpty; 25 | import java.util.List; 26 | 27 | /** 28 | * Used to define a data transfer object as REST request for holding related parameters 29 | * of registry information. 30 | */ 31 | @Data 32 | public class CheckTokenInfo { 33 | @NotBlank 34 | @Schema(description = "盒子的 UUID") 35 | private String boxUUID; 36 | 37 | @NotBlank 38 | @ValueOfEnum(enumClass = ServiceEnum.class, valueMethod = "getServiceId") 39 | @Schema(description = "平台id:空间平台(serviceId=10001)、产品服务平台(serviceId=10002)") 40 | private String serviceId; 41 | 42 | @NotBlank 43 | @Schema(description = "盒子在当前平台的注册码") 44 | private String boxRegKey; 45 | } 46 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/dto/CheckTokenResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import java.time.OffsetDateTime; 23 | 24 | /** 25 | * Used to define a data transfer object as REST response for holding related result 26 | * of activation result. 27 | */ 28 | @Data(staticConstructor = "of") 29 | public class CheckTokenResult { 30 | @Schema(description = "盒子的 UUID") 31 | private final String boxUUID; 32 | 33 | @Schema(description = "平台id") 34 | private final String serviceId; 35 | 36 | @Schema(description = "平台名称") 37 | private final String serviceName; 38 | 39 | @Schema(description = "注册码 token 有效时间, OffsetDateTime 类型") 40 | private final OffsetDateTime expiresAt; 41 | } 42 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/dto/ServiceEnum.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.dto; 18 | 19 | import java.util.Arrays; 20 | 21 | import lombok.AllArgsConstructor; 22 | import lombok.Getter; 23 | 24 | @AllArgsConstructor 25 | public enum ServiceEnum { 26 | REGISTRY("10001", "官方空间平台"), 27 | OPSTAGE("10002", "官方产品服务平台"), 28 | ; 29 | 30 | @Getter 31 | final String serviceId; 32 | final String serviceName; 33 | 34 | public static ServiceEnum fromValue(String value) { 35 | return Arrays.stream(values()).filter(serviceType -> serviceType.getServiceId().equals(value)).findFirst().orElseThrow(); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/dto/TokenInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.dto; 18 | 19 | import javax.validation.constraints.NotEmpty; 20 | 21 | import lombok.Data; 22 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 23 | import xyz.eulix.platform.common.support.validator.ValueOfEnum; 24 | 25 | import javax.validation.constraints.NotBlank; 26 | import java.util.List; 27 | 28 | /** 29 | * Used to define a data transfer object as REST request for holding related parameters 30 | * of registry information. 31 | */ 32 | @Data 33 | public class TokenInfo { 34 | @NotBlank 35 | @Schema(description = "盒子的 UUID") 36 | private String boxUUID; 37 | 38 | @NotEmpty 39 | @Schema(description = "平台id:空间平台(serviceId=10001)、产品服务平台(serviceId=10002)") 40 | private List<@ValueOfEnum(enumClass = ServiceEnum.class, valueMethod = "getServiceId") String> serviceIds; 41 | 42 | @Schema(description = "签名,使用公钥验证盒子身份时必传") 43 | private String sign; 44 | } 45 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/dto/TokenResult.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.dto; 18 | 19 | import java.time.OffsetDateTime; 20 | import lombok.Data; 21 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 22 | 23 | /** 24 | * Used to define a data transfer object as REST response for holding related result 25 | * of activation result. 26 | */ 27 | @Data(staticConstructor = "of") 28 | public class TokenResult { 29 | @Schema(description = "平台id") 30 | private final String serviceId; 31 | 32 | @Schema(description = "盒子在当前平台的注册码") 33 | private final String boxRegKey; 34 | 35 | @Schema(description = "注册码 token 有效时间, OffsetDateTime 类型") 36 | private final OffsetDateTime expiresAt; 37 | } 38 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/dto/TokenResults.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.dto; 18 | 19 | import lombok.Data; 20 | import org.eclipse.microprofile.openapi.annotations.media.Schema; 21 | 22 | import java.util.List; 23 | 24 | /** 25 | * Used to define a data transfer object as REST response for holding related result 26 | * of activation result. 27 | */ 28 | @Data(staticConstructor = "of") 29 | public class TokenResults { 30 | @Schema(description = "盒子的 UUID") 31 | private final String boxUUID; 32 | 33 | @Schema(description = "盒子的注册码") 34 | private final List tokenResults; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/dto/TokenVerifySignInfo.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.dto; 18 | 19 | import java.util.List; 20 | import lombok.Data; 21 | 22 | @Data(staticConstructor = "of") 23 | public class TokenVerifySignInfo { 24 | private final String boxUUID; 25 | private final List serviceIds; 26 | } 27 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/entity/BoxTokenEntity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.entity; 18 | 19 | import java.time.OffsetDateTime; 20 | import javax.persistence.Column; 21 | import javax.persistence.Entity; 22 | import javax.persistence.Table; 23 | import javax.validation.constraints.NotBlank; 24 | import lombok.Getter; 25 | import lombok.Setter; 26 | import lombok.ToString; 27 | import org.hibernate.annotations.UpdateTimestamp; 28 | import xyz.eulix.platform.common.support.model.BaseEntity; 29 | 30 | @Getter 31 | @Setter 32 | @ToString(callSuper = true) 33 | @Entity 34 | @Table(name = "box_token") 35 | public class BoxTokenEntity extends BaseEntity { 36 | @NotBlank 37 | @Column(name = "box_uuid") 38 | private String boxUUID; 39 | 40 | @NotBlank 41 | @Column(name = "service_id") 42 | private String serviceId; 43 | 44 | @NotBlank 45 | @Column(name = "service_name") 46 | private String serviceName; 47 | 48 | @NotBlank 49 | @Column(name = "box_reg_key") 50 | private String boxRegKey; 51 | 52 | @Column(name = "expires_at") 53 | private OffsetDateTime expiresAt; 54 | } 55 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/java/xyz/eulix/platform/services/token/repository/BoxTokenEntityRepository.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.token.repository; 18 | 19 | import io.quarkus.hibernate.orm.panache.PanacheRepository; 20 | 21 | import java.util.Optional; 22 | import javax.enterprise.context.ApplicationScoped; 23 | 24 | import xyz.eulix.platform.services.token.dto.ServiceEnum; 25 | import xyz.eulix.platform.services.token.entity.BoxTokenEntity; 26 | 27 | @ApplicationScoped 28 | 29 | public class BoxTokenEntityRepository implements PanacheRepository { 30 | // 根据box_uuid查询资源 31 | private static final String FIND_BY_BOXUUID = "box_uuid=?1"; 32 | // 根据box_reg_key查询资源 33 | private static final String FIND_BY_BOX_REG_KEY = "box_reg_key=?1"; 34 | // 根据box_uuid、box_reg_key查询资源 35 | private static final String FIND_BY_BOXUUID_BOX_REG_KEY = "box_uuid=?1 AND box_reg_key=?2"; 36 | private static final String FIND_BY_BOXUUID_SERVICE = "box_uuid=?1 AND service_id=?2"; 37 | 38 | public Optional findByBoxUUID(String boxUUID) { 39 | return this.find(FIND_BY_BOXUUID, boxUUID).firstResultOptional(); 40 | } 41 | 42 | public Optional findByBoxRegKey(String boxRegKey) { 43 | return this.find(FIND_BY_BOX_REG_KEY, boxRegKey).firstResultOptional(); 44 | } 45 | 46 | public Optional findByBoxUUIDAndRegKey(String boxUUID, String boxRegKey) { 47 | return this.find(FIND_BY_BOXUUID_BOX_REG_KEY, boxUUID, boxRegKey).firstResultOptional(); 48 | } 49 | 50 | public void deleteBoxTokenByBoxUUIdAndServiceId(String boxUUID, ServiceEnum serviceEnum) { 51 | this.delete(FIND_BY_BOXUUID_SERVICE, boxUUID, serviceEnum.getServiceId()); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/resources/profiles/community/db/migration/V1.1.0__Add_LockTable.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE IF NOT EXISTS `distributed_reentrant_locks` ( 2 | `lock_key` VARCHAR(128) NOT NULL, 3 | `lock_value` VARCHAR(128) NOT NULL, 4 | `expires_at` timestamp(0) NOT NULL, 5 | `reentrant_count` INT NOT NULL DEFAULT 0, 6 | `created_at` DATETIME DEFAULT NULL, 7 | `updated_at` DATETIME DEFAULT NULL, 8 | `version` INT DEFAULT 0, 9 | PRIMARY KEY (`lock_key`) 10 | ) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4; 11 | 12 | CREATE TABLE IF NOT EXISTS `distributed_reentrant_read_write_locks` ( 13 | `lock_key` VARCHAR(128) NOT NULL, 14 | `expires_at` TIMESTAMP(0) NOT NULL, 15 | `mode` VARCHAR(20), 16 | `lock_holds_json` VARCHAR(2048), 17 | `created_at` DATETIME DEFAULT NULL, 18 | `updated_at` DATETIME DEFAULT NULL, 19 | `version` INT DEFAULT 0, 20 | PRIMARY KEY (`lock_key`) 21 | ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4; -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/resources/profiles/community/db/migration/V2.0.0__BoxRegistry_Update.sql: -------------------------------------------------------------------------------- 1 | -- Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 2 | -- 3 | -- Licensed under the Apache License, Version 2.0 (the "License"); 4 | -- you may not use this file except in compliance with the License. 5 | -- You may obtain a copy of the License at 6 | -- 7 | -- http://www.apache.org/licenses/LICENSE-2.0 8 | -- 9 | -- Unless required by applicable law or agreed to in writing, software 10 | -- distributed under the License is distributed on an "AS IS" BASIS, 11 | -- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | -- See the License for the specific language governing permissions and 13 | -- limitations under the License. 14 | 15 | ALTER TABLE box_registries ADD network_secret_salt VARCHAR(128) DEFAULT NULL COMMENT 'network client访问密钥盐值'; -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/resources/profiles/community/template/boxTemplate.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/eulixplatform-registry/src/main/resources/profiles/community/template/boxTemplate.xlsx -------------------------------------------------------------------------------- /eulixplatform-registry/src/main/resources/profiles/community/template/boxTemplateV2.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/eulixplatform-registry/src/main/resources/profiles/community/template/boxTemplateV2.xlsx -------------------------------------------------------------------------------- /eulixplatform-registry/src/test/java/xyz/eulix/platform/services/StatusResourceTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services; 18 | 19 | import io.quarkus.test.junit.QuarkusTest; 20 | import org.junit.jupiter.api.Test; 21 | import xyz.eulix.platform.services.config.ApplicationProperties; 22 | 23 | import javax.inject.Inject; 24 | 25 | import java.util.UUID; 26 | 27 | import static io.restassured.RestAssured.given; 28 | import static org.hamcrest.CoreMatchers.is; 29 | 30 | @QuarkusTest 31 | class StatusResourceTest { 32 | 33 | @Inject 34 | ApplicationProperties properties; 35 | 36 | @Test 37 | void testStatusEndpoint() { 38 | final var requestId = UUID.randomUUID().toString(); 39 | 40 | given() 41 | .header("Request-Id", requestId) 42 | .when() 43 | .get("/v2/platform/status") 44 | .then() 45 | .statusCode(200) 46 | .body("status", is("ok")) 47 | .body("version", is(properties.getVersion())); 48 | } 49 | } -------------------------------------------------------------------------------- /eulixplatform-registry/src/test/java/xyz/eulix/platform/services/auth/PollPkeyInvalidRsp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package xyz.eulix.platform.services.auth; 18 | 19 | import lombok.Data; 20 | 21 | @Data(staticConstructor = "of") 22 | public class PollPkeyInvalidRsp { 23 | private String requestId; 24 | private String code; 25 | private String message; 26 | } -------------------------------------------------------------------------------- /eulixplatform-registry/src/test/java/xyz/eulix/platform/services/lock/DistributedLockTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | /* 18 | package xyz.eulix.platform.services.lock; 19 | 20 | import io.quarkus.test.junit.QuarkusTest; 21 | import org.jboss.logging.Logger; 22 | import org.junit.jupiter.api.Assertions; 23 | import org.junit.jupiter.api.Test; 24 | 25 | import javax.inject.Inject; 26 | 27 | @QuarkusTest 28 | public class DistributedLockTest { 29 | private static final Logger LOG = Logger.getLogger("app.log"); 30 | 31 | @Inject 32 | DistributedLockFactory lockFactory; 33 | 34 | @Test 35 | void testLock() { 36 | String keyName = "ditributedLockKey1"; 37 | DistributedLock lock = lockFactory.newLock(keyName); 38 | // 加锁 39 | Boolean isLocked = lock.tryLock(); 40 | if (isLocked) { 41 | LOG.infov("acquire lock success, keyName:{0}", keyName); 42 | try { 43 | // 这里写需要处理业务的业务代码 44 | LOG.info("do something."); 45 | } finally { 46 | // 释放锁 47 | lock.unlock(); 48 | LOG.infov("release lock success, keyName:{0}", keyName); 49 | } 50 | } else { 51 | LOG.infov("acquire lock fail, keyName:{0}", keyName); 52 | } 53 | Assertions.assertTrue(isLocked); 54 | } 55 | } 56 | */ -------------------------------------------------------------------------------- /licenses/license-antlr-antlr.txt: -------------------------------------------------------------------------------- 1 | License: {Name: BSD License, URL: http://www.antlr.org/license.html, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.alibaba-easyexcel.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Apache 2, URL: http://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: repo, Comments: A business-friendly OSS license, } -------------------------------------------------------------------------------- /licenses/license-com.cronutils-cron-utils.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.html -------------------------------------------------------------------------------- /licenses/license-com.fasterxml-classmate.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Apache License, Version 2.0, URL: https://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.fasterxml.jackson.dataformat-jackson-dataformat-yaml.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-com.fasterxml.jackson.dataformat-jackson-dataformat-yaml.txt -------------------------------------------------------------------------------- /licenses/license-com.fasterxml.jackson.datatype-jackson-datatype-jdk8.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- /licenses/license-com.fasterxml.jackson.datatype-jackson-datatype-jsr310.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-com.fasterxml.jackson.datatype-jackson-datatype-jsr310.txt -------------------------------------------------------------------------------- /licenses/license-com.fasterxml.jackson.jaxrs-jackson-jaxrs-base.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-com.fasterxml.jackson.jaxrs-jackson-jaxrs-base.txt -------------------------------------------------------------------------------- /licenses/license-com.fasterxml.jackson.jaxrs-jackson-jaxrs-json-provider.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-com.fasterxml.jackson.jaxrs-jackson-jaxrs-json-provider.txt -------------------------------------------------------------------------------- /licenses/license-com.fasterxml.jackson.module-jackson-module-jaxb-annotations.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-com.fasterxml.jackson.module-jackson-module-jaxb-annotations.txt -------------------------------------------------------------------------------- /licenses/license-com.fasterxml.jackson.module-jackson-module-parameter-names.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- /licenses/license-com.github.java-json-tools-btf.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Lesser General Public License, version 3 or greater, URL: http://www.gnu.org/licenses/lgpl.html, Distribution: repo, Comments: , } 2 | License: {Name: Apache Software License, version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.github.java-json-tools-jackson-coreutils.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Lesser General Public License, version 3 or greater, URL: http://www.gnu.org/licenses/lgpl.html, Distribution: repo, Comments: , } 2 | License: {Name: Apache Software License, version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.github.java-json-tools-json-patch.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Lesser General Public License, version 3 or greater, URL: http://www.gnu.org/licenses/lgpl.html, Distribution: repo, Comments: , } 2 | License: {Name: Apache Software License, version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.github.java-json-tools-msg-simple.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Lesser General Public License, version 3 or greater, URL: http://www.gnu.org/licenses/lgpl.html, Distribution: repo, Comments: , } 2 | License: {Name: Apache Software License, version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.github.virtuald-curvesapi.txt: -------------------------------------------------------------------------------- 1 | License: {Name: BSD License, URL: http://opensource.org/licenses/BSD-3-Clause, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.google.code.findbugs-jsr305.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- /licenses/license-com.google.errorprone-error-prone-annotations.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Apache 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: , Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.google.guava-failureaccess.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- /licenses/license-com.google.guava-guava.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- /licenses/license-com.google.guava-listenablefuture.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-com.google.guava-listenablefuture.txt -------------------------------------------------------------------------------- /licenses/license-com.google.j2objc-j2objc-annotations.txt: -------------------------------------------------------------------------------- 1 | License: {Name: The Apache Software License, Version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.h2database-h2.txt: -------------------------------------------------------------------------------- 1 | http://www.h2database.com/html/license.html -------------------------------------------------------------------------------- /licenses/license-com.ibm.async-asyncutil.txt: -------------------------------------------------------------------------------- 1 | License: {Name: The Apache Software License, Version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: , Comments: , } -------------------------------------------------------------------------------- /licenses/license-com.squareup.okhttp3-okhttp.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-com.squareup.okhttp3-okhttp.txt -------------------------------------------------------------------------------- /licenses/license-com.squareup.okio-okio.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-com.squareup.okio-okio.txt -------------------------------------------------------------------------------- /licenses/license-com.sun.activation-jakarta.activation.txt: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | - Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | - Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | 15 | - Neither the name of the Eclipse Foundation, Inc. nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 20 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 23 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /licenses/license-com.sun.istack-istack-commons-runtime.txt: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2017 Oracle and/or its affiliates. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | - Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | - Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | 15 | - Neither the name of the Eclipse Foundation, Inc. nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 20 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 23 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /licenses/license-com.zaxxer-SparseBitSet.txt: -------------------------------------------------------------------------------- 1 | License: {Name: The Apache Software License, Version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-io.agroal-agroal-api.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.html -------------------------------------------------------------------------------- /licenses/license-io.agroal-agroal-narayana.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.html -------------------------------------------------------------------------------- /licenses/license-io.agroal-agroal-pool.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.html -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-buffer.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-codec-dns.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-codec-haproxy.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-codec-http.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-codec-http2.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-codec-socks.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-codec.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-common.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-handler-proxy.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-handler.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-resolver-dns.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-resolver.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.netty-netty-transport.txt: -------------------------------------------------------------------------------- 1 | https://www.apache.org/licenses/LICENSE-2.0 -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-agroal.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-agroal.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-apache-httpclient.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-apache-httpclient.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-arc.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-arc.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-bootstrap-runner.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-bootstrap-runner.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-caffeine.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-caffeine.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-config-yaml.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-config-yaml.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-core.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-core.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-credentials.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-credentials.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-datasource-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-datasource-common.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-datasource.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-datasource.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-development-mode-spi.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-development-mode-spi.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-flyway.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-flyway.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-hibernate-orm-panache-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-hibernate-orm-panache-common.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-hibernate-orm-panache.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-hibernate-orm-panache.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-hibernate-orm.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-hibernate-orm.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-hibernate-validator.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-hibernate-validator.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-ide-launcher.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-ide-launcher.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-jackson.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-jackson.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-jaxb.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-jaxb.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-jaxp.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-jaxp.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-jdbc-h2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-jdbc-h2.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-jdbc-mysql.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-jdbc-mysql.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-mutiny.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-mutiny.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-narayana-jta.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-narayana-jta.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-netty.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-netty.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-panache-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-panache-common.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-panache-hibernate-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-panache-hibernate-common.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-redis-client.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-redis-client.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-rest-client-config.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-rest-client-config.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-rest-client-jackson.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-rest-client-jackson.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-rest-client.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-rest-client.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-resteasy-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-resteasy-common.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-resteasy-jackson.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-resteasy-jackson.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-resteasy-jaxb.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-resteasy-jaxb.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-resteasy-server-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-resteasy-server-common.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-resteasy.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-resteasy.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-scheduler.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-scheduler.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-security-runtime-spi.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-security-runtime-spi.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-smallrye-context-propagation.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-smallrye-context-propagation.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-smallrye-openapi.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-smallrye-openapi.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-swagger-ui.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-swagger-ui.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-vertx-http-dev-console-runtime-spi.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-vertx-http-dev-console-runtime-spi.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-vertx-http.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-vertx-http.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus-quarkus-vertx.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus-quarkus-vertx.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus.arc-arc.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.quarkus.arc-arc.txt -------------------------------------------------------------------------------- /licenses/license-io.quarkus.security-quarkus-security.txt: -------------------------------------------------------------------------------- 1 | License: {Name: The Apache Software License, Version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-io.smallrye-smallrye-context-propagation-api.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye-smallrye-context-propagation-api.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye-smallrye-context-propagation-jta.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye-smallrye-context-propagation-jta.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye-smallrye-context-propagation-storage.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye-smallrye-context-propagation-storage.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye-smallrye-context-propagation.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye-smallrye-context-propagation.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye-smallrye-fault-tolerance-vertx.txt: -------------------------------------------------------------------------------- 1 | 2 | ~ Copyright 2021 Red Hat, Inc. 3 | ~ 4 | ~ Licensed under the Apache License, Version 2.0 (the "License"); 5 | ~ you may not use this file except in compliance with the License. 6 | ~ You may obtain a copy of the License at 7 | ~ 8 | ~ http://www.apache.org/licenses/LICENSE-2.0 9 | ~ 10 | ~ Unless required by applicable law or agreed to in writing, software 11 | ~ distributed under the License is distributed on an "AS IS" BASIS, 12 | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | ~ See the License for the specific language governing permissions and 14 | ~ limitations under the License. 15 | -------------------------------------------------------------------------------- /licenses/license-io.smallrye-smallrye-open-api-core.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye-smallrye-open-api-core.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.common-smallrye-common-annotation.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.common-smallrye-common-annotation.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.common-smallrye-common-classloader.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.common-smallrye-common-classloader.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.common-smallrye-common-constraint.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.common-smallrye-common-constraint.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.common-smallrye-common-expression.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.common-smallrye-common-expression.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.common-smallrye-common-function.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.common-smallrye-common-function.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.common-smallrye-common-io.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.common-smallrye-common-io.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.config-smallrye-config-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.config-smallrye-config-common.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.config-smallrye-config-core.txt: -------------------------------------------------------------------------------- 1 | 2 | ~ Copyright 2017 Red Hat, Inc. 3 | ~ 4 | ~ Licensed under the Apache License, Version 2.0 (the "License"); 5 | ~ you may not use this file except in compliance with the License. 6 | ~ You may obtain a copy of the License at 7 | ~ 8 | ~ http://www.apache.org/licenses/LICENSE-2.0 9 | ~ 10 | ~ Unless required by applicable law or agreed to in writing, software 11 | ~ distributed under the License is distributed on an "AS IS" BASIS, 12 | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | ~ See the License for the specific language governing permissions and 14 | ~ limitations under the License. 15 | -------------------------------------------------------------------------------- /licenses/license-io.smallrye.config-smallrye-config-source-yaml.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.config-smallrye-config-source-yaml.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.config-smallrye-config-validator.txt: -------------------------------------------------------------------------------- 1 | 2 | ~ Copyright 2021 Red Hat, Inc. 3 | ~ 4 | ~ Licensed under the Apache License, Version 2.0 (the "License"); 5 | ~ you may not use this file except in compliance with the License. 6 | ~ You may obtain a copy of the License at 7 | ~ 8 | ~ http://www.apache.org/licenses/LICENSE-2.0 9 | ~ 10 | ~ Unless required by applicable law or agreed to in writing, software 11 | ~ distributed under the License is distributed on an "AS IS" BASIS, 12 | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | ~ See the License for the specific language governing permissions and 14 | ~ limitations under the License. 15 | -------------------------------------------------------------------------------- /licenses/license-io.smallrye.config-smallrye-config.txt: -------------------------------------------------------------------------------- 1 | 2 | ~ Copyright 2020 Red Hat, Inc. 3 | ~ 4 | ~ Licensed under the Apache License, Version 2.0 (the "License"); 5 | ~ you may not use this file except in compliance with the License. 6 | ~ You may obtain a copy of the License at 7 | ~ 8 | ~ http://www.apache.org/licenses/LICENSE-2.0 9 | ~ 10 | ~ Unless required by applicable law or agreed to in writing, software 11 | ~ distributed under the License is distributed on an "AS IS" BASIS, 12 | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | ~ See the License for the specific language governing permissions and 14 | ~ limitations under the License. 15 | -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-mutiny-smallrye-context-propagation.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-mutiny-smallrye-context-propagation.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-mutiny.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-mutiny.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-auth-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-auth-common.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-bridge-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-bridge-common.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-core.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-core.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-redis-client.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-redis-client.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-runtime.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-runtime.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-web-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-web-common.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-web.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-smallrye-mutiny-vertx-web.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-smallrye-reactive-converter-api.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-smallrye-reactive-converter-api.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-smallrye-reactive-converter-mutiny.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-smallrye-reactive-converter-mutiny.txt -------------------------------------------------------------------------------- /licenses/license-io.smallrye.reactive-vertx-mutiny-generator.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.smallrye.reactive-vertx-mutiny-generator.txt -------------------------------------------------------------------------------- /licenses/license-io.vertx-vertx-auth-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.vertx-vertx-auth-common.txt -------------------------------------------------------------------------------- /licenses/license-io.vertx-vertx-bridge-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.vertx-vertx-bridge-common.txt -------------------------------------------------------------------------------- /licenses/license-io.vertx-vertx-codegen.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.vertx-vertx-codegen.txt -------------------------------------------------------------------------------- /licenses/license-io.vertx-vertx-core.txt: -------------------------------------------------------------------------------- 1 | License: {Name: The Apache Software License, Version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: repo, Comments: , } 2 | License: {Name: Eclipse Public License - v 2.0, URL: http://www.eclipse.org/legal/epl-v20.html, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-io.vertx-vertx-redis-client.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.vertx-vertx-redis-client.txt -------------------------------------------------------------------------------- /licenses/license-io.vertx-vertx-web-common.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-io.vertx-vertx-web-common.txt -------------------------------------------------------------------------------- /licenses/license-io.vertx-vertx-web.txt: -------------------------------------------------------------------------------- 1 | License: {Name: The Apache Software License, Version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: repo, Comments: , } 2 | License: {Name: Eclipse Public License - v 2.0, URL: http://www.eclipse.org/legal/epl-v20.html, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-jakarta.activation-jakarta.activation-api.txt: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | - Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | - Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | 15 | - Neither the name of the Eclipse Foundation, Inc. nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 20 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 23 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /licenses/license-jakarta.enterprise-jakarta.enterprise.cdi-api.txt: -------------------------------------------------------------------------------- 1 | https://repository.jboss.org/licenses/apache-2.0.txt -------------------------------------------------------------------------------- /licenses/license-jakarta.inject-jakarta.inject-api.txt: -------------------------------------------------------------------------------- 1 | License: {Name: The Apache Software License, Version 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0.txt, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-jakarta.persistence-jakarta.persistence-api.txt: -------------------------------------------------------------------------------- 1 | http://www.eclipse.org/legal/epl-2.0, http://www.eclipse.org/org/documents/edl-v10.php -------------------------------------------------------------------------------- /licenses/license-jakarta.transaction-jakarta.transaction-api.txt: -------------------------------------------------------------------------------- 1 | http://www.eclipse.org/legal/epl-2.0, https://www.gnu.org/software/classpath/license.html -------------------------------------------------------------------------------- /licenses/license-jakarta.validation-jakarta.validation-api.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- /licenses/license-net.bytebuddy-byte-buddy.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-net.bytebuddy-byte-buddy.txt -------------------------------------------------------------------------------- /licenses/license-org.checkerframework-checker-qual.txt: -------------------------------------------------------------------------------- 1 | License: {Name: The MIT License, URL: http://opensource.org/licenses/MIT, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-org.eclipse.microprofile.openapi-microprofile-openapi-api.txt: -------------------------------------------------------------------------------- 1 | 2 | Licensed under the Apache License, Version 2.0 (the 3 | "License"); you may not use this file except in compliance 4 | with the License. You may obtain a copy of the License at 5 | 6 | http://www.apache.org/licenses/LICENSE-2.0 7 | 8 | Unless required by applicable law or agreed to in writing, 9 | software distributed under the License is distributed on an 10 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11 | KIND, either express or implied. See the License for the 12 | specific language governing permissions and limitations 13 | under the License. 14 | -------------------------------------------------------------------------------- /licenses/license-org.flywaydb-flyway-core.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | Copyright (C) Red Gate Software Ltd 2010-2021 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | 17 | -------------------------------------------------------------------------------- /licenses/license-org.glassfish.jaxb-jaxb-runtime.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions 5 | are met: 6 | 7 | - Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 10 | - Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | - Neither the name of the Eclipse Foundation, Inc. nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 19 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 20 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 22 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 23 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 25 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 26 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 27 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /licenses/license-org.glassfish.jaxb-txw2.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved. 2 | 3 | Redistribution and use in source and binary forms, with or without 4 | modification, are permitted provided that the following conditions 5 | are met: 6 | 7 | - Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 10 | - Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in the 12 | documentation and/or other materials provided with the distribution. 13 | 14 | - Neither the name of the Eclipse Foundation, Inc. nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 19 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 20 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 22 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 23 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 24 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 25 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 26 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 27 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /licenses/license-org.graalvm.sdk-graal-sdk.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Universal Permissive License, Version 1.0, URL: http://opensource.org/licenses/UPL, Distribution: , Comments: , } -------------------------------------------------------------------------------- /licenses/license-org.hibernate-hibernate-core.txt: -------------------------------------------------------------------------------- 1 | License: {Name: GNU Library General Public License v2.1 or later, URL: https://www.opensource.org/licenses/LGPL-2.1, Distribution: repo, Comments: See discussion at https://hibernate.org/community/license/ for more details., } -------------------------------------------------------------------------------- /licenses/license-org.hibernate-hibernate-graalvm.txt: -------------------------------------------------------------------------------- 1 | License: {Name: GNU Library General Public License v2.1 or later, URL: https://www.opensource.org/licenses/LGPL-2.1, Distribution: repo, Comments: See discussion at https://hibernate.org/community/license/ for more details., } -------------------------------------------------------------------------------- /licenses/license-org.hibernate-quarkus-local-cache.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Apache License 2.0, URL: http://www.apache.org/licenses/LICENSE-2.0, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-org.hibernate.common-hibernate-commons-annotations.txt: -------------------------------------------------------------------------------- 1 | License: {Name: GNU Library General Public License v2.1 or later, URL: http://www.opensource.org/licenses/LGPL-2.1, Distribution: repo, Comments: See discussion at http://hibernate.org/community/license/ for more details., } -------------------------------------------------------------------------------- /licenses/license-org.hibernate.validator-hibernate-validator.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss-jandex.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss-jboss-transaction-spi.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss-jboss-transaction-spi.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.logging-commons-logging-jboss-logging.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Apache License 2.0, URL: http://repository.jboss.org/licenses/apache-2.0.txt, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-org.jboss.logmanager-jboss-logmanager-embedded.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Apache License 2.0, URL: http://repository.jboss.org/licenses/apache-2.0.txt, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-org.jboss.narayana.jta-narayana-jta.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.narayana.jta-narayana-jta.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.narayana.jts-narayana-jts-integration.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.narayana.jts-narayana-jts-integration.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-cdi.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-cdi.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-client-api.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-client-api.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-client-microprofile-base.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-client-microprofile-base.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-client-microprofile.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-client-microprofile.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-client.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-client.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-core-spi.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-core-spi.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-core.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-core.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-jackson2-provider.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-jackson2-provider.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-jaxb-provider.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-jaxb-provider.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.resteasy-resteasy-multipart-provider.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.jboss.resteasy-resteasy-multipart-provider.txt -------------------------------------------------------------------------------- /licenses/license-org.jboss.slf4j-slf4j-jboss-logmanager.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Apache License 2.0, URL: http://repository.jboss.org/licenses/apache-2.0.txt, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-org.jboss.spec.javax.xml.bind-jboss-jaxb-api-2.3-spec.txt: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2017, 2018 Oracle and/or its affiliates. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | - Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | - Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in the 13 | documentation and/or other materials provided with the distribution. 14 | 15 | - Neither the name of the Eclipse Foundation, Inc. nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 20 | IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 | PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 23 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 26 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 27 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 28 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 29 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | -------------------------------------------------------------------------------- /licenses/license-org.locationtech.jts-jts-core.txt: -------------------------------------------------------------------------------- 1 | https://github.com/locationtech/jts/blob/master/LICENSE_EPLv1.txt, https://github.com/locationtech/jts/blob/master/LICENSE_EDLv1.txt -------------------------------------------------------------------------------- /licenses/license-org.ow2.asm-asm.txt: -------------------------------------------------------------------------------- 1 | https://asm.ow2.io/LICENSE.txt -------------------------------------------------------------------------------- /licenses/license-org.reactivestreams-reactive-streams.txt: -------------------------------------------------------------------------------- 1 | License: {Name: CC0, URL: http://creativecommons.org/publicdomain/zero/1.0/, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-org.slf4j-slf4j-api.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ao-space/platform-base/1c516027b44048ef2c34458409d2acdc6c037c7a/licenses/license-org.slf4j-slf4j-api.txt -------------------------------------------------------------------------------- /licenses/license-org.wildfly.common-wildfly-common.txt: -------------------------------------------------------------------------------- 1 | License: {Name: Apache License 2.0, URL: http://repository.jboss.org/licenses/apache-2.0.txt, Distribution: repo, Comments: , } -------------------------------------------------------------------------------- /licenses/license-org.yaml-snakeyaml.txt: -------------------------------------------------------------------------------- 1 | http://www.apache.org/licenses/LICENSE-2.0.txt -------------------------------------------------------------------------------- /licenses/license-xyz.eulix.platform.services-eulixplatform-common.txt: -------------------------------------------------------------------------------- 1 | 2 | ~ Copyright (c) 2022 Institute of Software Chinese Academy of Sciences (ISCAS) 3 | ~ 4 | ~ Licensed under the Apache License, Version 2.0 (the "License"); 5 | ~ you may not use this file except in compliance with the License. 6 | ~ You may obtain a copy of the License at 7 | ~ 8 | ~ http://www.apache.org/licenses/LICENSE-2.0 9 | ~ 10 | ~ Unless required by applicable law or agreed to in writing, software 11 | ~ distributed under the License is distributed on an "AS IS" BASIS, 12 | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | ~ See the License for the specific language governing permissions and 14 | ~ limitations under the License. 15 | --------------------------------------------------------------------------------