├── tiklab-hadess-server ├── src │ ├── main │ │ ├── resources │ │ │ ├── scripts │ │ │ │ ├── mysql │ │ │ │ │ ├── scan_1.0.1.sql │ │ │ │ │ ├── xpack_1.0.3.sql │ │ │ │ │ ├── hadess_1.0.5.sql │ │ │ │ │ ├── hadess_1.0.4.sql │ │ │ │ │ ├── hadess_1.0.1.sql │ │ │ │ │ ├── hadess_1.0.6.sql │ │ │ │ │ ├── xprivilege_1.0.2.sql │ │ │ │ │ ├── hadess_1.0.3.sql │ │ │ │ │ ├── hadess_1.0.2.sql │ │ │ │ │ ├── xpack_1.0.4.sql │ │ │ │ │ ├── hadess_1.0.0.sql │ │ │ │ │ ├── xprivilege_1.0.1.sql │ │ │ │ │ └── xpack_1.0.2.sql │ │ │ │ ├── .DS_Store │ │ │ │ └── pgsql │ │ │ │ │ ├── scan_1.0.1.sql │ │ │ │ │ ├── xpack_1.0.3.sql │ │ │ │ │ ├── hadess_1.0.5.sql │ │ │ │ │ ├── hadess_1.0.4.sql │ │ │ │ │ ├── hadess_1.0.1.sql │ │ │ │ │ ├── hadess_1.0.6.sql │ │ │ │ │ ├── xprivilege_1.0.2.sql │ │ │ │ │ ├── hadess_1.0.3.sql │ │ │ │ │ ├── hadess_1.0.2.sql │ │ │ │ │ ├── xpack_1.0.4.sql │ │ │ │ │ ├── hadess_1.0.0.sql │ │ │ │ │ ├── xprivilege_1.0.1.sql │ │ │ │ │ └── xpack_1.0.2.sql │ │ │ └── .DS_Store │ │ ├── .DS_Store │ │ └── java │ │ │ ├── .DS_Store │ │ │ └── io │ │ │ ├── .DS_Store │ │ │ └── tiklab │ │ │ ├── .DS_Store │ │ │ └── hadess │ │ │ ├── .DS_Store │ │ │ ├── upload │ │ │ ├── .DS_Store │ │ │ ├── common │ │ │ │ └── response │ │ │ │ │ ├── RpmResponse.java │ │ │ │ │ ├── ConanResponse.java │ │ │ │ │ ├── GoResponse.java │ │ │ │ │ ├── PypiResponse.java │ │ │ │ │ ├── NugetResponse.java │ │ │ │ │ └── ComposerResponse.java │ │ │ └── controller │ │ │ │ ├── RpmUploadController.java │ │ │ │ ├── ComposerPackageController.java │ │ │ │ ├── GenericUploadController.java │ │ │ │ ├── PypiUploadController.java │ │ │ │ ├── ComposerUploadController.java │ │ │ │ ├── GoUploadController.java │ │ │ │ ├── NugetUploadController.java │ │ │ │ ├── HandUploadController.java │ │ │ │ └── ConanUploadController.java │ │ │ ├── timedtask │ │ │ ├── service │ │ │ │ └── TimeTaskJob.java │ │ │ └── util │ │ │ │ ├── InitScheduler.java │ │ │ │ ├── JobFactory.java │ │ │ │ └── RunJob.java │ │ │ ├── annotation │ │ │ ├── EnableHadessServer.java │ │ │ └── HadessServerAutoConfiguration.java │ │ │ ├── repository │ │ │ ├── dao │ │ │ │ └── XpackBackupsDao.java │ │ │ ├── controller │ │ │ │ └── ResourceManController.java │ │ │ ├── entity │ │ │ │ ├── RepositoryRemoteProxyEntity.java │ │ │ │ ├── RepositoryMavenEntity.java │ │ │ │ ├── XpackBackupsEntity.java │ │ │ │ ├── RepositoryGroupEntity.java │ │ │ │ ├── StorageEntity.java │ │ │ │ └── NetworkProxyEntity.java │ │ │ └── service │ │ │ │ └── ResourceManServiceImpl.java │ │ │ ├── setting │ │ │ └── controller │ │ │ │ └── SystemCountController.java │ │ │ ├── library │ │ │ └── entity │ │ │ │ ├── LibraryComposerEntity.java │ │ │ │ ├── LibraryPypiEntity.java │ │ │ │ ├── PullInfoEntity.java │ │ │ │ └── LibraryMavenEntity.java │ │ │ ├── pushcentral │ │ │ ├── entity │ │ │ │ └── PushGroupEntity.java │ │ │ └── controller │ │ │ │ └── PushOperationController.java │ │ │ └── leadIn │ │ │ └── controller │ │ │ └── LeanInLibraryController.java │ └── .DS_Store └── .DS_Store ├── .DS_Store ├── tiklab-hadess-starter ├── version ├── .DS_Store ├── file │ ├── .DS_Store │ ├── npm-sample.tgz │ ├── maven-sample.zip │ ├── maven-sample-data │ ├── backups.sh │ └── recovery.sh ├── src │ ├── .DS_Store │ └── main │ │ ├── .DS_Store │ │ ├── java │ │ ├── .DS_Store │ │ └── io │ │ │ └── tiklab │ │ │ └── hadess │ │ │ └── starter │ │ │ ├── annotation │ │ │ └── EnableHadess.java │ │ │ └── HadessApplication.java │ │ └── resources │ │ ├── .DS_Store │ │ ├── config │ │ ├── pub │ │ │ └── application.yaml │ │ ├── prd │ │ │ └── application.yaml │ │ └── dev │ │ │ └── application.yaml │ │ └── application.yaml ├── bin │ └── linux │ │ ├── update.sh │ │ └── status.sh └── assembly │ └── distribution.xml ├── tiklab-hadess-api ├── .DS_Store └── src │ ├── .DS_Store │ └── main │ ├── .DS_Store │ └── java │ ├── .DS_Store │ └── io │ ├── .DS_Store │ └── tiklab │ ├── .DS_Store │ └── hadess │ ├── .DS_Store │ ├── setting │ └── service │ │ └── SystemCountService.java │ ├── upload │ ├── service │ │ ├── GoUploadService.java │ │ ├── RpmUploadService.java │ │ ├── NugetUploadService.java │ │ ├── GenericUploadService.java │ │ ├── HelmUploadService.java │ │ ├── PypiUploadService.java │ │ ├── HandUploadService.java │ │ ├── NpmUploadService.java │ │ ├── ComposerUploadService.java │ │ ├── MavenUploadService.java │ │ ├── ConanUploadService.java │ │ └── DockerUploadService.java │ └── model │ │ ├── LibraryHelmServer.java │ │ ├── LibraryHelmClient.java │ │ ├── LibraryUploadResult.java │ │ └── error │ │ └── DockerErrorResponse.java │ ├── repository │ ├── service │ │ ├── InitializeSampleService.java │ │ ├── ResourceManService.java │ │ ├── StorageService.java │ │ ├── ThirdPathService.java │ │ ├── RepositoryClusterCfgService.java │ │ ├── NetworkProxyService.java │ │ ├── RepositoryGroupService.java │ │ └── RemoteProxyService.java │ └── model │ │ ├── ExecLog.java │ │ ├── StorageQuery.java │ │ ├── ResourceMan.java │ │ ├── ThirdPathQuery.java │ │ ├── NetworkProxyQuery.java │ │ ├── RepositoryClusterCfgQuery.java │ │ ├── RemoteProxyQuery.java │ │ ├── RepositoryMavenQuery.java │ │ ├── RepositoryRemoteProxyQuery.java │ │ ├── NetworkProxy.java │ │ ├── RepositoryGroupQuery.java │ │ ├── Storage.java │ │ ├── XpackBackups.java │ │ ├── RepositoryMaven.java │ │ └── RepositoryGroup.java │ ├── pushcentral │ ├── service │ │ ├── PushCenWarehouse.java │ │ ├── PushOperationService.java │ │ └── PushGroupService.java │ └── model │ │ ├── PushOperationQuery.java │ │ ├── PushGroupQuery.java │ │ └── PushOperation.java │ ├── common │ ├── HadessMessageService.java │ ├── UserCheckService.java │ └── XpackYamlDataMaService.java │ ├── leadIn │ ├── service │ │ └── LeadInLibraryService.java │ └── model │ │ └── LeadInQuery.java │ ├── library │ ├── model │ │ ├── LibraryComposer.java │ │ ├── LibraryPypi.java │ │ ├── LibraryPypiQuery.java │ │ ├── LibraryComposerQuery.java │ │ ├── PullInfoQuery.java │ │ └── LibraryMavenQuery.java │ └── service │ │ ├── PullInfoService.java │ │ ├── LibraryPypiService.java │ │ └── LibraryComposerService.java │ └── timedtask │ ├── model │ ├── TimeTaskQuery.java │ └── TimeTaskInstanceQuery.java │ └── service │ ├── TimeTaskService.java │ └── TimeTaskInstanceService.java ├── .gitignore └── README.md /tiklab-hadess-server/src/main/resources/scripts/mysql/scan_1.0.1.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-starter/version: -------------------------------------------------------------------------------- 1 | {"application":"xpack","version":"V1.0.0-release","type":"ce"} -------------------------------------------------------------------------------- /tiklab-hadess-api/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-api/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-api/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-api/src/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-starter/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-starter/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/src/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-api/src/main/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-starter/file/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-starter/file/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-starter/src/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/src/main/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-api/src/main/java/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-starter/file/npm-sample.tgz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-starter/file/npm-sample.tgz -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-starter/src/main/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-api/src/main/java/io/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/src/main/java/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-starter/file/maven-sample.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-starter/file/maven-sample.zip -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/src/main/java/io/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/main/java/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-starter/src/main/java/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/src/main/resources/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-api/src/main/java/io/tiklab/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/main/resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-starter/src/main/resources/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/src/main/java/io/tiklab/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/src/main/resources/scripts/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-api/src/main/java/io/tiklab/hadess/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/src/main/java/io/tiklab/hadess/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tiklab-project/tiklab-hadess/HEAD/tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/.DS_Store -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/scan_1.0.1.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE pack_scan_scheme RENAME COLUMN describe TO description; 2 | ALTER TABLE pack_scan_hole RENAME COLUMN describe TO description; -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | .settings/ 3 | .classpath 4 | .project 5 | .idea 6 | *.iml 7 | data/ 8 | logs/ 9 | plugin/ 10 | APP_HOME_IS_UNDEFINED/ 11 | DATA_HOME_IS_UNDEFINED/ 12 | 13 | tiklab-hadess-starter/embbed 14 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/xpack_1.0.3.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 4 | ('1231145439', 'goproxy-cn','https://goproxy.cn','go',0,null,null,null); -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/xpack_1.0.3.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 4 | ('1231145439', 'goproxy-cn','https://goproxy.cn','go',0,null,null,null); -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/hadess_1.0.5.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 4 | ('0231113541', 'conan-server','https://center.conan.io','conan',0,null,null,null); 5 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/hadess_1.0.5.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 4 | ('0231113541', 'conan-server','https://center.conan.io','conan',0,null,null,null); 5 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/setting/service/SystemCountService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.setting.service; 2 | 3 | 4 | import io.tiklab.hadess.setting.model.SystemCount; 5 | 6 | public interface SystemCountService { 7 | 8 | /** 9 | * 系统设置查询汇总数据 10 | */ 11 | SystemCount collectCount(); 12 | } 13 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/hadess_1.0.4.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ALTER TABLE pack_library_version MODIFY hash VARCHAR(248); 5 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 6 | ('0230655241', 'nuget.org','https://api.nuget.org/v3/index.json','nuget',0,null,null,null); 7 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/GoUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import io.tiklab.core.Result; 4 | 5 | public interface GoUploadService { 6 | 7 | /** 8 | * 制品拉取 9 | * @param pathData 请求路径(仓库+包路径) 10 | */ 11 | Result pullData(String pathData); 12 | } 13 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/hadess_1.0.4.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ALTER TABLE pack_library_version ALTER COLUMN hash TYPE VARCHAR(248); 5 | 6 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 7 | ('0230655241', 'nuget.org','https://api.nuget.org/v3/index.json','nuget',0,null,null,null); 8 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/service/InitializeSampleService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.service; 2 | 3 | public interface InitializeSampleService { 4 | 5 | /** 6 | * 创建示例制品库 7 | */ 8 | void createSampleData(); 9 | 10 | /** 11 | * 修改数据项目权限数据 12 | */ 13 | void updateRepRole(); 14 | } 15 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/file/maven-sample-data: -------------------------------------------------------------------------------- 1 | tiklab-sample-server-1.0.0-20230801.091147-1.jar, 2 | tiklab-sample-server-1.0.0-20230801.091147-1.jar.md5, 3 | tiklab-sample-server-1.0.0-20230801.091147-1.jar.sha1, 4 | tiklab-sample-server-1.0.0-20230801.091147-1.pom, 5 | tiklab-sample-server-1.0.0-20230801.091147-1.pom.md5, 6 | tiklab-sample-server-1.0.0-20230801.091147-1.pom.sha1 7 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/service/ResourceManService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.service; 2 | 3 | import io.tiklab.hadess.repository.model.ResourceMan; 4 | 5 | /* 6 | * 查询资源占用情况 7 | * */ 8 | public interface ResourceManService { 9 | 10 | /** 11 | * 查询资源 12 | * @return 13 | */ 14 | ResourceMan findResource(); 15 | } 16 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/timedtask/service/TimeTaskJob.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.timedtask.service; 2 | 3 | import org.springframework.stereotype.Component; 4 | import org.springframework.stereotype.Service; 5 | 6 | @Component 7 | public class TimeTaskJob { 8 | 9 | public void execTaskJob(String objectId,String type){ 10 | 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/hadess_1.0.1.sql: -------------------------------------------------------------------------------- 1 | 2 | -- --------------------------- 3 | -- 网络代理地址 4 | -- ---------------------------- 5 | CREATE TABLE pack_repository_network_proxy( 6 | id VARCHAR(12) PRIMARY KEY, 7 | address varchar(128) NOT NULL, 8 | port integer NOT NULL, 9 | description varchar(128), 10 | enable integer, 11 | create_time timestamp 12 | ); 13 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/hadess_1.0.1.sql: -------------------------------------------------------------------------------- 1 | 2 | -- --------------------------- 3 | -- 网络代理地址 4 | -- ---------------------------- 5 | CREATE TABLE pack_repository_network_proxy( 6 | id VARCHAR(12) PRIMARY KEY, 7 | address varchar(128) NOT NULL, 8 | port integer NOT NULL, 9 | description varchar(128), 10 | enable integer, 11 | create_time timestamp 12 | ); 13 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/annotation/EnableHadessServer.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.annotation; 2 | 3 | import org.springframework.context.annotation.Import; 4 | 5 | import java.lang.annotation.*; 6 | 7 | @Target({ElementType.TYPE}) 8 | @Retention(RetentionPolicy.RUNTIME) 9 | @Documented 10 | @Import({HadessServerAutoConfiguration.class}) 11 | public @interface EnableHadessServer { 12 | } 13 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/annotation/HadessServerAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.annotation; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | /** 7 | * OmsServerAutoConfiguration 8 | */ 9 | @Configuration 10 | @ComponentScan({"io.tiklab.hadess"}) 11 | public class HadessServerAutoConfiguration { 12 | 13 | } 14 | 15 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/main/java/io/tiklab/hadess/starter/annotation/EnableHadess.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.starter.annotation; 2 | 3 | import io.tiklab.hadess.starter.config.HadessAutoConfiguration; 4 | import org.springframework.context.annotation.Import; 5 | 6 | import java.lang.annotation.*; 7 | 8 | @Target({ElementType.TYPE}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | @Documented 11 | @Import({HadessAutoConfiguration.class}) 12 | public @interface EnableHadess { 13 | } 14 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/hadess_1.0.6.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -- --------------------------- 5 | -- 第三方集成地址 6 | -- ---------------------------- 7 | CREATE TABLE pack_third_path( 8 | id VARCHAR(12) PRIMARY KEY, 9 | name varchar(64) NOT NULL, 10 | address varchar(64) NOT NULL, 11 | type varchar(32) NOT NULL, 12 | account varchar(128), 13 | password varchar(128), 14 | user_id varchar(32), 15 | create_time timestamp 16 | ); 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/hadess_1.0.6.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -- --------------------------- 5 | -- 第三方集成地址 6 | -- ---------------------------- 7 | CREATE TABLE pack_third_path( 8 | id VARCHAR(12) PRIMARY KEY, 9 | name varchar(64) NOT NULL, 10 | address varchar(32) NOT NULL, 11 | type varchar(32) NOT NULL, 12 | account varchar(128), 13 | password varchar(128), 14 | user_id varchar(12), 15 | create_time timestamp 16 | ); 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/xprivilege_1.0.2.sql: -------------------------------------------------------------------------------- 1 | 2 | -- --------------------------- 3 | --消息发送人 4 | -- ---------------------------- 5 | INSERT INTO pcs_mec_message_notice_connect_user (id,message_notice_id,user_id) VALUES ('fbf8c6bb1d3c', 'HDS_CREATE', '111111'); 6 | INSERT INTO pcs_mec_message_notice_connect_user (id,message_notice_id,user_id) VALUES ('defe335b21ef', 'HDS_UPDATE', '111111'); 7 | INSERT INTO pcs_mec_message_notice_connect_user (id,message_notice_id,user_id) VALUES ('f11c3d87764b', 'HDS_DELETE', '111111'); 8 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/pushcentral/service/PushCenWarehouse.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.pushcentral.service; 2 | 3 | import io.tiklab.hadess.pushcentral.model.PushLibrary; 4 | 5 | import java.util.List; 6 | 7 | public interface PushCenWarehouse { 8 | 9 | /** 10 | * 推送中央仓库 11 | * @param pushLibrary 12 | */ 13 | String pushCentralWare(PushLibrary pushLibrary); 14 | 15 | /** 16 | * 推送中央仓库结果 17 | * @param repositoryId 制品id 18 | */ 19 | List pushResult(String repositoryId); 20 | } 21 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/xprivilege_1.0.2.sql: -------------------------------------------------------------------------------- 1 | 2 | -- --------------------------- 3 | --消息发送人 4 | -- ---------------------------- 5 | INSERT INTO pcs_mec_message_notice_connect_user ("id", "message_notice_id", "user_id") VALUES ('fbf8c6bb1d3c', 'HDS_CREATE', '111111'); 6 | INSERT INTO pcs_mec_message_notice_connect_user ("id", "message_notice_id", "user_id") VALUES ('defe335b21ef', 'HDS_UPDATE', '111111'); 7 | INSERT INTO pcs_mec_message_notice_connect_user ("id", "message_notice_id", "user_id") VALUES ('f11c3d87764b', 'HDS_DELETE', '111111'); 8 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/RpmUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletResponse; 5 | 6 | public interface RpmUploadService { 7 | 8 | /** 9 | * 上传数据 10 | * @param request request 11 | */ 12 | void rpmUpload(HttpServletRequest request, HttpServletResponse response); 13 | 14 | /** 15 | * 拉取数据 16 | * @param request request 17 | */ 18 | void rpmDownload(HttpServletRequest request, HttpServletResponse response); 19 | } 20 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/timedtask/util/InitScheduler.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.timedtask.util; 2 | 3 | import org.quartz.Scheduler; 4 | import org.quartz.SchedulerException; 5 | import org.quartz.SchedulerFactory; 6 | import org.quartz.impl.StdSchedulerFactory; 7 | import org.springframework.context.annotation.Bean; 8 | 9 | public class InitScheduler { 10 | 11 | /** 12 | * 初始注入scheduler 13 | * @throws SchedulerException 14 | */ 15 | @Bean 16 | public Scheduler scheduler() throws SchedulerException { 17 | SchedulerFactory schedulerFactoryBean = new StdSchedulerFactory(); 18 | return schedulerFactoryBean.getScheduler(); 19 | } 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/common/HadessMessageService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.common; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | public interface HadessMessageService { 7 | 8 | /** 9 | * 配置全局消息 10 | * @param templateId 方案id 11 | * @param map 信息 12 | */ 13 | void settingMessage(Map map,String templateId); 14 | 15 | 16 | /** 17 | * 配置日志 18 | * @param logType 方案类型 19 | * @param map 信息 20 | * @param model 模型 21 | */ 22 | void settingLog( Map map,String logType,String model); 23 | 24 | /** 25 | * 初始化公共消息,日志信息 26 | */ 27 | HashMap initMap(); 28 | } 29 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/NugetUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletResponse; 5 | 6 | public interface NugetUploadService { 7 | /** 8 | * 上传制品数据(通过了索引json格式校验才会执行这第二步) 9 | * @param request request 10 | * @param response response 11 | */ 12 | void uploadData(HttpServletRequest request, HttpServletResponse response); 13 | 14 | 15 | /** 16 | * 下载制品数据 。 (注意:上传的时候也会先调用get请求,获取索引json格式文件) 17 | * @param request request 18 | * @param response response 19 | */ 20 | void downloadData(HttpServletRequest request, HttpServletResponse response); 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/pushcentral/service/PushOperationService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.pushcentral.service; 2 | 3 | import io.tiklab.hadess.pushcentral.model.PushOperation; 4 | import io.tiklab.hadess.pushcentral.model.PushOperationQuery; 5 | 6 | public interface PushOperationService { 7 | 8 | 9 | /** 10 | * 推送组 11 | * @param pushOperationQuery 12 | */ 13 | String pushGroup(PushOperationQuery pushOperationQuery); 14 | 15 | /** 16 | * 推送制品 17 | * @param pushOperationQuery 18 | */ 19 | String pushLibrary(PushOperationQuery pushOperationQuery); 20 | 21 | /** 22 | * 获取推送结果 23 | * @param key 获取结果的key 24 | */ 25 | PushOperation getPushResult(String key); 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/leadIn/service/LeadInLibraryService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.leadIn.service; 2 | 3 | import io.tiklab.hadess.leadIn.model.LeadInQuery; 4 | 5 | import java.util.LinkedHashMap; 6 | import java.util.List; 7 | 8 | public interface LeadInLibraryService { 9 | 10 | /** 11 | * 查询仓库 12 | * @param leadInQuery leadInQuery 13 | */ 14 | List findRepositoryList(LeadInQuery leadInQuery); 15 | 16 | 17 | 18 | /** 19 | * 导入仓库制品 20 | * @param leadInQuery leadInQuery 21 | */ 22 | void leadInRepLibrary(LeadInQuery leadInQuery); 23 | 24 | 25 | /** 26 | * 查询导入状态 27 | * @param targetRepId targetRepId 28 | */ 29 | Boolean findLeadInState(String targetRepId); 30 | } 31 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/ExecLog.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | import io.tiklab.postin.annotation.ApiModel; 4 | import io.tiklab.postin.annotation.ApiProperty; 5 | 6 | @ApiModel 7 | public class ExecLog { 8 | 9 | @ApiProperty(name="execState",desc="执行状态") 10 | private String execState; 11 | 12 | 13 | @ApiProperty(name="log",desc="日志") 14 | private String log; 15 | 16 | public String getExecState() { 17 | return execState; 18 | } 19 | 20 | public void setExecState(String execState) { 21 | this.execState = execState; 22 | } 23 | 24 | public String getLog() { 25 | return log; 26 | } 27 | 28 | public void setLog(String log) { 29 | this.log = log; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/GenericUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import io.tiklab.core.Result; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | import javax.servlet.http.HttpServletResponse; 7 | import java.io.InputStream; 8 | 9 | public interface GenericUploadService { 10 | 11 | 12 | /** 13 | * generic提交 14 | * @param request request 15 | * @param response response 16 | * @return 17 | */ 18 | void GenericUpload(HttpServletRequest request, HttpServletResponse response); 19 | 20 | /** 21 | * generic下载 22 | * @param request request 23 | * @param response response 24 | * @return 25 | */ 26 | void GenericDownload(HttpServletRequest request, HttpServletResponse response); 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/bin/linux/update.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | DIR=$(dirname "$PWD") 4 | 5 | JAR_DIR=`find ${DIR}/lib -name "tiklab-upgrade-starter*.jar" -print` 6 | 7 | JAVA_HOME=${DIR}/embbed/jdk-16.0.2 8 | 9 | if [ -d ${JAR_DIR} ] ; then 10 | echo "The upgrade program does not exist。" 11 | exit 1 12 | fi 13 | 14 | echo "The system starts upgrading and stops running!" 15 | 16 | cd ${DIR}/bin && sh shutdown.sh 17 | 18 | cd ${JAVA_HOME}/bin && ./java -jar -Dfiledir="${DIR}" "${JAR_DIR}" 19 | 20 | 21 | 22 | #Remote_File_Name=`find ${DIR} -name "tiklab-*.tar.gz" -print` 23 | 24 | #Remote_File_Name=$(cat ${DIR}/fileName.txt) 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/HelmUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import io.tiklab.core.Result; 4 | import io.tiklab.hadess.upload.model.LibraryHelmClient; 5 | 6 | public interface HelmUploadService { 7 | 8 | /** 9 | * 用户校验 10 | * @param authorization 认证信息 11 | */ 12 | Result userCheck(String authorization); 13 | 14 | /** 15 | * 连接仓库 16 | * @param authorization 认证信息 17 | */ 18 | Result connectWarehouse(String authorization,String pathData); 19 | 20 | /** 21 | * 数据上传 22 | * @param helmClient helmClient 23 | */ 24 | Result uploadData(LibraryHelmClient helmClient); 25 | 26 | /** 27 | * 制品拉取 28 | * @param pathData 请求路径(仓库+包路径) 29 | */ 30 | Result pullData(String pathData); 31 | } 32 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/hadess_1.0.3.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -- --------------------------- 5 | -- composer制品扩展数据 6 | -- ---------------------------- 7 | CREATE TABLE pack_library_composer( 8 | id VARCHAR(12) PRIMARY KEY, 9 | library_id varchar(12) NOT NULL, 10 | metadata_path varchar(448) NOT NULL 11 | ); 12 | 13 | 14 | 15 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 16 | ('0230641241', 'Aliyun Composer','https://mirrors.aliyun.com/composer/','composer',0,null,null,null), 17 | ('0230641242', 'Composer','https://packagist.org/','composer',0,null,null,null); 18 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/hadess_1.0.3.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -- --------------------------- 5 | -- composer制品扩展数据 6 | -- ---------------------------- 7 | CREATE TABLE pack_library_composer( 8 | id VARCHAR(12) PRIMARY KEY, 9 | library_id varchar(12) NOT NULL, 10 | metadata_path varchar(448) NOT NULL 11 | ); 12 | 13 | 14 | 15 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 16 | ('0230641241', 'Aliyun Composer','https://mirrors.aliyun.com/composer/','composer',0,null,null,null), 17 | ('0230641242', 'Composer','https://packagist.org/','composer',0,null,null,null); 18 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/PypiUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import io.tiklab.core.Result; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | import javax.servlet.http.HttpServletResponse; 7 | 8 | public interface PypiUploadService { 9 | 10 | /** 11 | * 下载元数据Json,代理的制品元数据存在版本的更新,所以每次转发了代理去拉取制品的元数据 12 | * @param request request 13 | */ 14 | void downloadMetadata(HttpServletRequest request,HttpServletResponse response); 15 | 16 | /** 17 | * 下载包数据,版本在hadess服务器中存在就直接下载,不存在转发代理拉取 18 | * @param contextPath 客户端请求路径 19 | */ 20 | void downloadPackages(String contextPath,HttpServletResponse response); 21 | 22 | 23 | /** 24 | * 上传 25 | * @param req 客户端上传Request 26 | */ 27 | void UploadData(HttpServletRequest req,HttpServletResponse resp); 28 | } 29 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/HandUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import io.tiklab.hadess.library.model.LibraryFileHand; 4 | 5 | import java.io.IOException; 6 | import java.io.InputStream; 7 | 8 | /** 9 | * LibraryFileReadService-制品文件读取 10 | */ 11 | public interface HandUploadService { 12 | 13 | /** 14 | * 文件读取 versionId 15 | * @param requestURI 访问路径 16 | */ 17 | byte[] fileRead(String requestURI); 18 | 19 | /** 20 | * 获取服务器ip 21 | */ 22 | String findServerIp(); 23 | 24 | /** 25 | * 文件上传 26 | */ 27 | String fileUpload(InputStream inputStream, String fileName) throws IOException; 28 | 29 | /** 30 | * 手动上传制品 31 | */ 32 | String libraryHandPush(LibraryFileHand libraryFileHand) ; 33 | 34 | /** 35 | * 获取手动上传结果 36 | */ 37 | String findHandPushResult(String repositoryId); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/NpmUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import io.tiklab.hadess.upload.model.LibraryUploadData; 4 | import io.tiklab.hadess.upload.model.LibraryUploadResult; 5 | import io.tiklab.hadess.upload.model.NpmPubData; 6 | 7 | import java.io.IOException; 8 | 9 | /** 10 | * NpmUploadService-npm上传下载接口 11 | */ 12 | public interface NpmUploadService { 13 | 14 | 15 | 16 | void createAndWritePullLibrary(NpmPubData npmPubData,String fileTgzName) throws IOException; 17 | 18 | /** 19 | * 创建拉取的制品 20 | * @param npmPubData 创建相关数据 21 | * @param fileName 文件名字 22 | * @return 23 | */ 24 | void createPullLibrary(NpmPubData npmPubData, String fileName); 25 | 26 | 27 | /** 28 | * npm 上传的入口 29 | * @param libraryUploadData 上传数据 30 | */ 31 | LibraryUploadResult uploadEntrance(LibraryUploadData libraryUploadData); 32 | 33 | } 34 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/common/UserCheckService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.common; 2 | 3 | 4 | import io.tiklab.user.user.model.User; 5 | 6 | import java.util.List; 7 | 8 | public interface UserCheckService { 9 | 10 | /** 11 | * maven用户校验 12 | * @param userData 用户数据 13 | */ 14 | String mavenUserCheck(String userData); 15 | 16 | /** 17 | * npm用户校验 18 | * @param userName 账号 19 | * @param password 密码 20 | */ 21 | String npmUserCheck(String userName,String password); 22 | 23 | /** 24 | * npm通过用户校验 25 | * @param userName 账号 26 | */ 27 | List npmUserCheckByName(String userName); 28 | 29 | /** 30 | * 基础用户校验 docker、helm 31 | * @param userData 用户数据 32 | */ 33 | void basicsUserCheck(String userData); 34 | 35 | /** 36 | * generic 通用类型用户校验 37 | * @param userData 用户数据 38 | */ 39 | String genericUserCheck(String userData); 40 | 41 | } 42 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/ComposerUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletResponse; 5 | 6 | public interface ComposerUploadService { 7 | 8 | /** 9 | * composer拉取->拉取json数据。根包信息packages.json、特定包的元数据 10 | * @param request request 11 | * @param response response 12 | */ 13 | void downloadJsonData(HttpServletRequest request, HttpServletResponse response); 14 | 15 | /** 16 | * composer拉取->拉取json数据,客户端接收的路径发起请求下载包文件,请求的仓库只会是local、remote库 17 | * 如果客户端存在了包,执行拉取的时候只会执行 <>拉取json数据,不会执行该接口 18 | * @param request request 19 | * @param response response 20 | */ 21 | void downloadPackage(HttpServletRequest request, HttpServletResponse response); 22 | 23 | /** 24 | * composer上传 25 | * @param request request 26 | * @param response response 27 | */ 28 | void uploadPackage(HttpServletRequest request, HttpServletResponse response); 29 | } 30 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/file/backups.sh: -------------------------------------------------------------------------------- 1 | !/bin/bash 2 | host=$host 3 | port=$port 4 | userName=$userName 5 | password=$password 6 | dbName=$dbName 7 | schemaName=$schemaName 8 | backupsUrl=$backupsUrl 9 | 10 | 11 | backupsCodeUrl=$backupsCodeUrl 12 | sourceFilePath=$sourceFilePath 13 | reduceName=$reduceName 14 | length=$length 15 | 16 | #mysql_bin="/Users/limingliang/postgreSQL/bin" 17 | mysql_bin=$pgsqlUrl 18 | psql="${mysql_bin}/psql" 19 | pg_dump="${mysql_bin}/pg_dump" 20 | current_time="xcode-backups-"$(date +%s) 21 | 22 | echo "用户名:"$userName 23 | echo "密码:"$password 24 | echo "host:"$host 25 | echo "dbName:"$dbName 26 | echo "schemaName:"$schemaName 27 | echo "pg_dump:"$pg_dump 28 | echo "备份地址:"$backupsUrl 29 | 30 | 31 | echo PGPASSWORD=${password} ${pg_dump} -U ${userName} -h ${host} -p ${port} -d ${dbName} -n ${schemaName}>${backupsUrl}/${dbName}.sql 32 | 33 | 34 | PGPASSWORD=${password} ${pg_dump} -U ${userName} -h ${host} -p ${port} -d ${dbName} -n ${schemaName}>${backupsUrl}/${dbName}.sql 35 | 36 | 37 | echo "执行dump完成" 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/common/response/RpmResponse.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.common.response; 2 | 3 | import javax.servlet.http.HttpServletResponse; 4 | import java.io.IOException; 5 | import java.io.PrintWriter; 6 | 7 | public class RpmResponse { 8 | 9 | 10 | //拉取错误信息 11 | public static void downloadErrorToClient(HttpServletResponse resp,Integer code, String message) { 12 | try { 13 | resp.setContentType("text/plain; charset=utf-8"); 14 | PrintWriter out = resp.getWriter(); 15 | resp.setStatus(code); 16 | out.println(message); 17 | } catch (IOException e) { 18 | throw new RuntimeException(e); 19 | } 20 | } 21 | 22 | 23 | //上传错误信息 24 | public static void uploadErrorToClient(HttpServletResponse resp, String message) { 25 | try { 26 | resp.setStatus(500); 27 | resp.getWriter().write(message); 28 | } catch (IOException e) { 29 | throw new RuntimeException(e); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/repository/dao/XpackBackupsDao.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.dao; 2 | 3 | import io.tiklab.hadess.repository.entity.XpackBackupsEntity; 4 | import io.tiklab.dal.jpa.JpaTemplate; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Component; 9 | 10 | import java.util.List; 11 | 12 | @Component 13 | public class XpackBackupsDao { 14 | 15 | private static Logger logger = LoggerFactory.getLogger(XpackBackupsDao.class); 16 | 17 | @Autowired 18 | JpaTemplate jpaTemplate; 19 | 20 | 21 | /** 22 | * 更新 23 | * @param backupsEntity 24 | */ 25 | public void updateBackups(XpackBackupsEntity backupsEntity){ 26 | jpaTemplate.update(backupsEntity); 27 | } 28 | 29 | 30 | /** 31 | * findAllBackups 32 | * @return 33 | */ 34 | public List findAllBackups() { 35 | return jpaTemplate.findAll(XpackBackupsEntity.class); 36 | } 37 | 38 | 39 | } 40 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/main/resources/config/pub/application.yaml: -------------------------------------------------------------------------------- 1 | #application config 2 | app: 3 | name: thoughtware-hadess-public 4 | 5 | 6 | #web config 7 | server: 8 | port: 8083 9 | 10 | APP_HOME: ${APP_HOME} 11 | 12 | DATA_HOME: /opt/tiklab/hadess_public 13 | 14 | #dal config for mysql jdbc 15 | jdbc: 16 | driverClassName: org.postgresql.Driver 17 | url: jdbc:postgresql://localhost:5483/hadess_public?stringtype=unspecified 18 | username: postgres 19 | password: darth2020 20 | 21 | 22 | postgresql: 23 | embbed: 24 | enable: true 25 | database: hadess_public 26 | db: 27 | port: 5483 28 | username: postgres 29 | password: darth2020 30 | address: ${DATA_HOME}/postgresql 31 | 32 | 33 | #dcs config 34 | dcs: 35 | server: 36 | enabled: true 37 | port: 8000 38 | datapath: ${DATA_HOME}/data 39 | client: 40 | url: 127.0.0.1:8000 41 | group: g1 42 | database: dcs1 43 | expire: 6000 44 | 45 | 46 | auth: 47 | type: local 48 | 49 | 50 | external: 51 | url: https://mirror.tiklab.net 52 | 53 | verify: 54 | state: false 55 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/main/resources/application.yaml: -------------------------------------------------------------------------------- 1 | #application config 2 | app: 3 | name: hadess 4 | 5 | 6 | spring: 7 | config: 8 | import: optional:classpath:/config/${env:dev}/application.yaml 9 | profiles: 10 | active: prd 11 | 12 | #web config 13 | server: 14 | port: 8080 15 | 16 | 17 | APP_HOME: ${APP_HOME} 18 | 19 | DATA_HOME: ${user.home}/tiklab/hadess 20 | 21 | #dal config for mysql jdbc 22 | jdbc: 23 | driverClassName: org.postgresql.Driver 24 | url: jdbc:postgresql://localhost:5441/hadess?stringtype=unspecified 25 | username: postgres 26 | password: darth2020 27 | 28 | 29 | postgresql: 30 | embbed: 31 | enable: true 32 | database: hadess 33 | db: 34 | port: 5441 35 | username: postgres 36 | password: darth2020 37 | address: ${DATA_HOME}/postgresql 38 | 39 | #dcs config 40 | dcs: 41 | server: 42 | enabled: true 43 | mode: server 44 | port: 5001 45 | datapath: ${DATA_HOME}/caches 46 | client: 47 | url: 127.0.0.1:5001 48 | group: g1 49 | database: dcs1 50 | expire: 7200 51 | 52 | 53 | 54 | external: 55 | url: 56 | 57 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/common/response/ConanResponse.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.common.response; 2 | 3 | import javax.servlet.ServletOutputStream; 4 | import javax.servlet.http.HttpServletResponse; 5 | import java.io.File; 6 | import java.io.FileInputStream; 7 | import java.io.IOException; 8 | import java.io.InputStream; 9 | 10 | public class ConanResponse { 11 | 12 | 13 | public static void ConanUploadError(){ 14 | 15 | } 16 | 17 | /** 18 | * 读取文件信息 19 | * @param file 文件 20 | * @return 21 | */ 22 | public static void readFileData(File file, HttpServletResponse response) throws IOException { 23 | ServletOutputStream outputStream = response.getOutputStream(); 24 | 25 | InputStream inputStream = new FileInputStream(file); 26 | byte[] buffer = new byte[8192]; 27 | int bytesRead; 28 | while ((bytesRead = inputStream.read(buffer)) != -1) { 29 | outputStream.write(buffer, 0, bytesRead); 30 | } 31 | // 关闭输入流和输出流 32 | inputStream.close(); 33 | outputStream.close(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/StorageQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.util.List; 11 | 12 | @ApiModel 13 | public class StorageQuery { 14 | 15 | @ApiProperty(name ="orderParams",desc = "排序参数") 16 | private List orderParams = OrderBuilders.instance().asc("id").get(); 17 | 18 | @ApiProperty(name ="pageParam",desc = "分页参数") 19 | private Page pageParam = new Page(); 20 | 21 | public List getOrderParams() { 22 | return orderParams; 23 | } 24 | 25 | public void setOrderParams(List orderParams) { 26 | this.orderParams = orderParams; 27 | } 28 | 29 | public Page getPageParam() { 30 | return pageParam; 31 | } 32 | 33 | public void setPageParam(Page pageParam) { 34 | this.pageParam = pageParam; 35 | } 36 | } -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/main/resources/config/prd/application.yaml: -------------------------------------------------------------------------------- 1 | #application config 2 | app: 3 | name: tiklab-hadess 4 | 5 | server: 6 | port: 8080 7 | 8 | 9 | APP_HOME: ${APP_HOME} 10 | 11 | DATA_HOME: ${user.home}/tiklab/${app.name} 12 | 13 | 14 | #dal config for mysql jdbc 15 | jdbc: 16 | driverClassName: org.postgresql.Driver 17 | url: jdbc:postgresql://localhost:5432/thoughtware_hadess?stringtype=unspecified 18 | username: postgres 19 | password: darth2020 20 | 21 | postgresql: 22 | embbed: 23 | enable: true 24 | database: thoughtware_hadess 25 | db: 26 | port: 5432 27 | username: postgres 28 | password: darth2020 29 | address: ${DATA_HOME}/postgresql 30 | 31 | 32 | #dcs config 33 | dcs: 34 | server: 35 | enabled: true 36 | mode: server 37 | port: 5000 38 | datapath: ${DATA_HOME}/caches 39 | client: 40 | url: 127.0.0.1:5000 41 | group: g1 42 | database: dcs1 43 | expire: 7200 44 | 45 | 46 | # (local:本地登录 soular:统一登录) 47 | auth: 48 | type: soular 49 | soular: 50 | address: http://e.tiklab.net 51 | expire: 86400 # 过期时间,单位秒,默认1天 52 | 53 | external: 54 | url: http://e.hadess.tiklab.net 55 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/hadess_1.0.2.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | -- --------------------------- 4 | -- pypi制品扩展数据 5 | -- ---------------------------- 6 | CREATE TABLE pack_library_pypi( 7 | id VARCHAR(12) PRIMARY KEY, 8 | library_id varchar(12) NOT NULL, 9 | metadata_path varchar(248) NOT NULL 10 | ); 11 | 12 | 13 | ALTER TABLE pack_library DROP COLUMN size; 14 | 15 | ALTER TABLE pack_library_version MODIFY version VARCHAR(248); 16 | 17 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 18 | ('0230641234', 'TencentCloud PyPI','https://mirrors.cloud.tencent.com/pypi/simple/','pypi',0,null,null,null), 19 | ('0230641235', 'AliYun PyPI','https://mirrors.aliyun.com/pypi/simple/','pypi',0,null,null,null), 20 | ('0230641236', 'PyPI','https://pypi.org/simple/','pypi',0,null,null,null); -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/timedtask/util/JobFactory.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.timedtask.util; 2 | 3 | import org.quartz.spi.TriggerFiredBundle; 4 | import org.springframework.beans.BeansException; 5 | import org.springframework.beans.factory.config.AutowireCapableBeanFactory; 6 | import org.springframework.context.ApplicationContext; 7 | import org.springframework.context.ApplicationContextAware; 8 | import org.springframework.scheduling.quartz.SpringBeanJobFactory; 9 | import org.springframework.stereotype.Component; 10 | 11 | @Component 12 | public class JobFactory extends SpringBeanJobFactory implements ApplicationContextAware { 13 | 14 | @Override 15 | public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { 16 | this.beanFactory = applicationContext.getAutowireCapableBeanFactory(); 17 | } 18 | private transient AutowireCapableBeanFactory beanFactory; 19 | 20 | @Override 21 | protected Object createJobInstance(final TriggerFiredBundle bundle) throws Exception { 22 | final Object job = super.createJobInstance(bundle); 23 | beanFactory.autowireBean(job); 24 | return job; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/hadess_1.0.2.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | -- --------------------------- 4 | -- pypi制品扩展数据 5 | -- ---------------------------- 6 | CREATE TABLE pack_library_pypi( 7 | id VARCHAR(12) PRIMARY KEY, 8 | library_id varchar(12) NOT NULL, 9 | metadata_path varchar(248) NOT NULL 10 | ); 11 | 12 | 13 | ALTER TABLE pack_library DROP COLUMN size; 14 | 15 | ALTER TABLE pack_library_version ALTER COLUMN version TYPE VARCHAR(248); 16 | 17 | 18 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 19 | ('0230641234', 'TencentCloud PyPI','https://mirrors.cloud.tencent.com/pypi/simple/','pypi',0,null,null,null), 20 | ('0230641235', 'AliYun PyPI','https://mirrors.aliyun.com/pypi/simple/','pypi',0,null,null,null), 21 | ('0230641236', 'PyPI','https://pypi.org/simple/','pypi',0,null,null,null); -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/pushcentral/model/PushOperationQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.pushcentral.model; 2 | 3 | import io.tiklab.postin.annotation.ApiProperty; 4 | 5 | import java.util.List; 6 | 7 | public class PushOperationQuery { 8 | 9 | @ApiProperty(name ="pushGroupIds",desc = "推送组ids") 10 | private List pushGroupIds; 11 | 12 | @ApiProperty(name ="pushLibraryIds",desc = "推送制品ids") 13 | private Object pushLibraryIds; 14 | 15 | @ApiProperty(name ="pushType",desc = "推送类型 hadess、center") 16 | private String pushType; 17 | 18 | public List getPushGroupIds() { 19 | return pushGroupIds; 20 | } 21 | 22 | public void setPushGroupIds(List pushGroupIds) { 23 | this.pushGroupIds = pushGroupIds; 24 | } 25 | 26 | public Object getPushLibraryIds() { 27 | return pushLibraryIds; 28 | } 29 | 30 | public void setPushLibraryIds(Object pushLibraryIds) { 31 | this.pushLibraryIds = pushLibraryIds; 32 | } 33 | 34 | public String getPushType() { 35 | return pushType; 36 | } 37 | 38 | public void setPushType(String pushType) { 39 | this.pushType = pushType; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/repository/controller/ResourceManController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.controller; 2 | 3 | 4 | import io.tiklab.core.Result; 5 | import io.tiklab.hadess.repository.model.ResourceMan; 6 | import io.tiklab.hadess.repository.service.ResourceManService; 7 | import io.tiklab.postin.annotation.Api; 8 | import io.tiklab.postin.annotation.ApiMethod; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | import org.springframework.web.bind.annotation.RestController; 13 | 14 | @RestController 15 | @RequestMapping("/resourceMan") 16 | //@Api(name = "ResourceManController",desc = "资源管理") 17 | public class ResourceManController { 18 | 19 | @Autowired 20 | ResourceManService resourceManService; 21 | 22 | 23 | @RequestMapping(path="/findResource",method = RequestMethod.POST) 24 | @ApiMethod(name = "findResource",desc = "查询资源") 25 | public Result findResource(){ 26 | ResourceMan resource = resourceManService.findResource(); 27 | 28 | return Result.ok(resource); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/ResourceMan.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.postin.annotation.ApiModel; 5 | import io.tiklab.postin.annotation.ApiProperty; 6 | 7 | @ApiModel 8 | public class ResourceMan extends BaseModel { 9 | 10 | @ApiProperty(name="version",desc=" 1 : 社区版 2: 企业版 3: sass版") 11 | private java.lang.Integer version; 12 | 13 | 14 | @ApiProperty(name="usedSpace",desc="使用空间") 15 | private java.lang.String usedSpace; 16 | 17 | @ApiProperty(name="allSpace",desc="总空间") 18 | private java.lang.String allSpace; 19 | 20 | 21 | public Integer getVersion() { 22 | return version; 23 | } 24 | 25 | public void setVersion(Integer version) { 26 | this.version = version; 27 | } 28 | 29 | public String getUsedSpace() { 30 | return usedSpace; 31 | } 32 | 33 | public void setUsedSpace(String usedSpace) { 34 | this.usedSpace = usedSpace; 35 | } 36 | 37 | public String getAllSpace() { 38 | return allSpace; 39 | } 40 | 41 | public void setAllSpace(String allSpace) { 42 | this.allSpace = allSpace; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/main/resources/config/dev/application.yaml: -------------------------------------------------------------------------------- 1 | #application config 2 | app: 3 | name: hadess 4 | 5 | 6 | #web config 7 | server: 8 | port: 8080 9 | 10 | 11 | 12 | APP_HOME: ${APP_HOME} 13 | 14 | DATA_HOME: ${user.home}/tiklab/tiklab-hadess 15 | 16 | #dal config for mysql jdbc 17 | jdbc: 18 | driverClassName: org.postgresql.Driver 19 | url: jdbc:postgresql://172.10.1.10:5432/tiklab_hadess?currentSchema=public&stringtype=unspecified 20 | username: postgres 21 | #driverClassName: com.mysql.cj.jdbc.Driver 22 | #url: jdbc:mysql://172.10.1.10:3306/tiklab_hadess?characterEncoding=utf8&useSSL=false 23 | #username: root 24 | password: darth2020 25 | 26 | 27 | postgresql: 28 | embbed: 29 | enable: false 30 | database: thoughtware_hadess 31 | type: local 32 | 33 | #dcs config 34 | dcs: 35 | server: 36 | enabled: true 37 | port: 5002 38 | datapath: ${DATA_HOME}/data 39 | client: 40 | url: 127.0.0.1:5002 41 | group: g1 42 | database: dcs1 43 | expire: 6000 44 | 45 | 46 | # (local:本地登录 soular:统一登录) 47 | auth: 48 | type: local 49 | soular: 50 | address: http://192.168.10.15:8080 51 | expire: 86400 # 过期时间,单位秒,默认1天 52 | 53 | external: 54 | url: 55 | 56 | verify: 57 | state: false 58 | 59 | 60 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/src/main/java/io/tiklab/hadess/starter/HadessApplication.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.starter; 2 | 3 | import io.tiklab.hadess.starter.annotation.EnableHadess; 4 | import io.tiklab.toolkit.property.PropertyAndYamlSourceFactory; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.boot.SpringApplication; 8 | import org.springframework.boot.autoconfigure.SpringBootApplication; 9 | import org.springframework.boot.web.servlet.ServletComponentScan; 10 | import org.springframework.context.annotation.PropertySource; 11 | import org.springframework.scheduling.annotation.EnableScheduling; 12 | 13 | /** 14 | * WorkbenchApplication 15 | */ 16 | @SpringBootApplication 17 | @PropertySource(value = {"classpath:application.yaml" },factory = PropertyAndYamlSourceFactory.class ) 18 | @EnableScheduling 19 | @EnableHadess 20 | @ServletComponentScan("io.tiklab.hadess") 21 | public class HadessApplication { 22 | 23 | public static final Logger logger = LoggerFactory.getLogger(HadessApplication.class); 24 | 25 | public static void main(String[] args) { 26 | System.setProperty("org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH","true"); 27 | SpringApplication.run(HadessApplication.class, args); 28 | 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/setting/controller/SystemCountController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.setting.controller; 2 | 3 | import io.tiklab.core.Result; 4 | import io.tiklab.hadess.setting.model.SystemCount; 5 | import io.tiklab.hadess.setting.service.SystemCountService; 6 | import io.tiklab.postin.annotation.Api; 7 | import io.tiklab.postin.annotation.ApiMethod; 8 | import io.tiklab.postin.annotation.ApiParam; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | import org.springframework.web.bind.annotation.RestController; 13 | 14 | @RestController 15 | @RequestMapping("/systemCount") 16 | //@Api(name = "AuthController",desc = "系统设置汇总") 17 | public class SystemCountController { 18 | 19 | @Autowired 20 | private SystemCountService systemCountService; 21 | 22 | @RequestMapping(path="/collectCount",method = RequestMethod.POST) 23 | @ApiMethod(name = "createAuth",desc = "系统设置汇总") 24 | @ApiParam(name = "auth",desc = "auth",required = true) 25 | public Result collectCount(){ 26 | 27 | SystemCount systemCount = systemCountService.collectCount(); 28 | 29 | return Result.ok(systemCount); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/library/entity/LibraryComposerEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | /** 7 | * LibraryPypiEntity-composer扩展数据 8 | */ 9 | @Entity 10 | @Table(name="pack_library_composer") 11 | public class LibraryComposerEntity extends BaseModel { 12 | 13 | @Id 14 | @GeneratorValue(length = 12) 15 | @Column(name = "id",length = 12) 16 | private String id; 17 | 18 | 19 | //制品Id 20 | @Column(name = "library_id",length = 32,notNull = true) 21 | private String libraryId; 22 | 23 | //目标包的版本和依赖详情文件的路径 24 | @Column(name = "metadata_path",length = 448,notNull = true) 25 | private String metadataPath; 26 | 27 | public String getId() { 28 | return id; 29 | } 30 | 31 | public void setId(String id) { 32 | this.id = id; 33 | } 34 | 35 | public String getLibraryId() { 36 | return libraryId; 37 | } 38 | 39 | public void setLibraryId(String libraryId) { 40 | this.libraryId = libraryId; 41 | } 42 | 43 | public String getMetadataPath() { 44 | return metadataPath; 45 | } 46 | 47 | public void setMetadataPath(String metadataPath) { 48 | this.metadataPath = metadataPath; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/library/entity/LibraryPypiEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | import java.sql.Timestamp; 7 | 8 | /** 9 | * LibraryPypiEntity-pypi扩展数据 10 | */ 11 | @Entity 12 | @Table(name="pack_library_pypi") 13 | public class LibraryPypiEntity extends BaseModel { 14 | 15 | @Id 16 | @GeneratorValue(length = 12) 17 | @Column(name = "id",length = 12) 18 | private String id; 19 | 20 | 21 | //制品Id 22 | @Column(name = "library_id",length = 32,notNull = true) 23 | private String libraryId; 24 | 25 | //元数据路径 26 | @Column(name = "metadata_path",length = 248,notNull = true) 27 | private String metadataPath; 28 | 29 | public String getId() { 30 | return id; 31 | } 32 | 33 | public void setId(String id) { 34 | this.id = id; 35 | } 36 | 37 | public String getLibraryId() { 38 | return libraryId; 39 | } 40 | 41 | public void setLibraryId(String libraryId) { 42 | this.libraryId = libraryId; 43 | } 44 | 45 | public String getMetadataPath() { 46 | return metadataPath; 47 | } 48 | 49 | public void setMetadataPath(String metadataPath) { 50 | this.metadataPath = metadataPath; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/ThirdPathQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.util.List; 11 | 12 | @ApiModel 13 | public class ThirdPathQuery { 14 | 15 | @ApiProperty(name ="orderParams",desc = "排序参数") 16 | private List orderParams = OrderBuilders.instance().asc("id").get(); 17 | 18 | @ApiProperty(name ="pageParam",desc = "分页参数") 19 | private Page pageParam = new Page(); 20 | 21 | private String type; 22 | 23 | public List getOrderParams() { 24 | return orderParams; 25 | } 26 | 27 | public void setOrderParams(List orderParams) { 28 | this.orderParams = orderParams; 29 | } 30 | 31 | public Page getPageParam() { 32 | return pageParam; 33 | } 34 | 35 | public void setPageParam(Page pageParam) { 36 | this.pageParam = pageParam; 37 | } 38 | 39 | public String getType() { 40 | return type; 41 | } 42 | 43 | public void setType(String type) { 44 | this.type = type; 45 | } 46 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/library/model/LibraryComposer.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.model; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.postin.annotation.ApiModel; 5 | import io.tiklab.postin.annotation.ApiProperty; 6 | import io.tiklab.toolkit.beans.annotation.Mapper; 7 | import io.tiklab.toolkit.join.annotation.Join; 8 | 9 | /** 10 | * LibraryComposer-Composer制品扩展数据 11 | */ 12 | @ApiModel 13 | @Mapper 14 | @Join 15 | public class LibraryComposer extends BaseModel { 16 | 17 | @ApiProperty(name="id",desc="id") 18 | private String id; 19 | 20 | @ApiProperty(name="libraryId",desc="制品id",required = true) 21 | private String libraryId; 22 | 23 | @ApiProperty(name="metadataPath",desc="目标包的版本和依赖详情文件的路径") 24 | private String metadataPath; 25 | 26 | 27 | public String getId() { 28 | return id; 29 | } 30 | 31 | public void setId(String id) { 32 | this.id = id; 33 | } 34 | 35 | public String getLibraryId() { 36 | return libraryId; 37 | } 38 | 39 | public void setLibraryId(String libraryId) { 40 | this.libraryId = libraryId; 41 | } 42 | 43 | public String getMetadataPath() { 44 | return metadataPath; 45 | } 46 | 47 | public void setMetadataPath(String metadataPath) { 48 | this.metadataPath = metadataPath; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/timedtask/model/TimeTaskQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.timedtask.model; 2 | 3 | import io.tiklab.core.order.Order; 4 | import io.tiklab.core.order.OrderBuilders; 5 | import io.tiklab.core.page.Page; 6 | import io.tiklab.postin.annotation.ApiProperty; 7 | 8 | import java.util.List; 9 | 10 | public class TimeTaskQuery { 11 | 12 | @ApiProperty(name ="orderParams",desc = "排序参数") 13 | private List orderParams = OrderBuilders.instance().desc("createTime").get(); 14 | 15 | @ApiProperty(name ="pageParam",desc = "分页参数") 16 | private Page pageParam = new Page(); 17 | 18 | @ApiProperty(name ="scanPlayId",desc = "扫描计划id") 19 | private String scanPlayId ; 20 | 21 | public List getOrderParams() { 22 | return orderParams; 23 | } 24 | 25 | public void setOrderParams(List orderParams) { 26 | this.orderParams = orderParams; 27 | } 28 | 29 | public Page getPageParam() { 30 | return pageParam; 31 | } 32 | 33 | public void setPageParam(Page pageParam) { 34 | this.pageParam = pageParam; 35 | } 36 | 37 | public String getScanPlayId() { 38 | return scanPlayId; 39 | } 40 | 41 | public TimeTaskQuery setScanPlayId(String scanPlayId) { 42 | this.scanPlayId = scanPlayId; 43 | return this; 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/NetworkProxyQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | import io.tiklab.core.order.Order; 4 | import io.tiklab.core.order.OrderBuilders; 5 | import io.tiklab.core.page.Page; 6 | import io.tiklab.postin.annotation.ApiProperty; 7 | 8 | import java.io.Serializable; 9 | import java.util.List; 10 | 11 | public class NetworkProxyQuery implements Serializable { 12 | 13 | @ApiProperty(name ="orderParams",desc = "排序参数") 14 | private List orderParams = OrderBuilders.instance().asc("type").get(); 15 | 16 | 17 | @ApiProperty(name ="pageParam",desc = "分页参数") 18 | private Page pageParam = new Page(); 19 | 20 | @ApiProperty(name ="enable",desc = "是否启动") 21 | private Integer enable; 22 | 23 | public List getOrderParams() { 24 | return orderParams; 25 | } 26 | 27 | public void setOrderParams(List orderParams) { 28 | this.orderParams = orderParams; 29 | } 30 | 31 | public Page getPageParam() { 32 | return pageParam; 33 | } 34 | 35 | public void setPageParam(Page pageParam) { 36 | this.pageParam = pageParam; 37 | } 38 | 39 | public Integer getEnable() { 40 | return enable; 41 | } 42 | 43 | public NetworkProxyQuery setEnable(Integer enable) { 44 | this.enable = enable; 45 | return this; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/xpack_1.0.4.sql: -------------------------------------------------------------------------------- 1 | 2 | -- --------------------------- 3 | -- 消息类型 4 | -- ---------------------------- 5 | INSERT INTO pcs_mec_message_type (id, name, description, bgroup) VALUES ('SCAN_RESULT', '扫码结果', '制品库扫描结果', 'hadess'); 6 | 7 | 8 | -- --------------------------- 9 | -- 发送消息途径 10 | -- ---------------------------- 11 | INSERT INTO pcs_mec_message_notice (id, message_type_id, type, bgroup, message_send_type_id, scope, is_open) VALUES ('SCAN_RESULT', 'SCAN_RESULT', 2, 'hadess', 'site,email,qywechat', 2, 'true'); 12 | 13 | 14 | -- --------------------------- 15 | --消息发送人 16 | -- ---------------------------- 17 | INSERT INTO pcs_mec_message_notice_connect_user (id, message_notice_id, user_id) VALUES ('SCAN_RESULT', 'SCAN_RESULT', '111111'); 18 | 19 | -- 模版 20 | INSERT INTO pcs_mec_message_template (id, msg_type_id, msg_send_type_id, title, content,link,bgroup,link_params) VALUES 21 | ('8363126abe9', 'SCAN_RESULT', 'site', '制品扫描', '制品扫描',null,'hadess',null), 22 | 23 | ('83f3e496abe9', 'SCAN_RESULT', 'email', '制品扫描', '${repositoryName}制品库中执行扫描${scanPlayName},存在漏洞${message}', NULL, 'hadess', NULL) , 24 | 25 | ('SCAN_RESULT', 'SCAN_RESULT', 'qywechat', '制品扫描', '## 制品扫描\n 26 | > 制品库:${repositoryName}\n 27 | > 仓库组名称:[${holeMessage}](${qywxurl})','/#/repository/${repositoryId}/scanDetails/${scanRecordId}','hadess',NULL); 28 | 29 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/xpack_1.0.4.sql: -------------------------------------------------------------------------------- 1 | 2 | -- --------------------------- 3 | -- 消息类型 4 | -- ---------------------------- 5 | INSERT INTO pcs_mec_message_type (id, name, description, bgroup) VALUES ('SCAN_RESULT', '扫码结果', '制品库扫描结果', 'hadess'); 6 | 7 | 8 | -- --------------------------- 9 | -- 发送消息途径 10 | -- ---------------------------- 11 | INSERT INTO pcs_mec_message_notice (id, message_type_id, type, bgroup, message_send_type_id, scope, is_open) VALUES ('SCAN_RESULT', 'SCAN_RESULT', 2, 'hadess', 'site,email,qywechat', 2, 'true'); 12 | 13 | 14 | -- --------------------------- 15 | --消息发送人 16 | -- ---------------------------- 17 | INSERT INTO pcs_mec_message_notice_connect_user (id, message_notice_id, user_id) VALUES ('SCAN_RESULT', 'SCAN_RESULT', '111111'); 18 | 19 | -- 模版 20 | INSERT INTO pcs_mec_message_template (id, msg_type_id, msg_send_type_id, title, content,link,bgroup,link_params) VALUES 21 | ('8363126abe9', 'SCAN_RESULT', 'site', '制品扫描', '制品扫描',null,'hadess',null), 22 | 23 | ('83f3e496abe9', 'SCAN_RESULT', 'email', '制品扫描', '${repositoryName}制品库中执行扫描${scanPlayName},存在漏洞${message}', NULL, 'hadess', NULL) , 24 | 25 | ('SCAN_RESULT', 'SCAN_RESULT', 'qywechat', '制品扫描', '## 制品扫描\n 26 | > 制品库:${repositoryName}\n 27 | > 仓库组名称:[${holeMessage}](${qywxurl})','/#/repository/${repositoryId}/scanDetails/${scanRecordId}','hadess',NULL); 28 | 29 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/controller/RpmUploadController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.controller; 2 | 3 | 4 | import io.tiklab.hadess.upload.service.RpmUploadService; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | import javax.servlet.http.HttpServletRequest; 11 | import javax.servlet.http.HttpServletResponse; 12 | import java.util.Enumeration; 13 | 14 | @RestController 15 | @RequestMapping("/rpm") 16 | public class RpmUploadController { 17 | 18 | @Autowired 19 | RpmUploadService rpmUploadService; 20 | 21 | 22 | //上传 23 | @RequestMapping(path="/**",method = {RequestMethod.POST,RequestMethod.PUT}) 24 | public void doPost(HttpServletRequest request, HttpServletResponse response){ 25 | System.out.println("请求地址1:"+request.getRequestURI()); 26 | rpmUploadService.rpmUpload(request,response); 27 | } 28 | 29 | 30 | 31 | //拉取 32 | @RequestMapping(path="/**",method = {RequestMethod.GET}) 33 | public void doGet(HttpServletRequest request, HttpServletResponse response){ 34 | Enumeration headerNames = request.getHeaderNames(); 35 | System.out.println("请求地址:"+request.getRequestURI()); 36 | rpmUploadService.rpmDownload(request,response); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/hadess_1.0.0.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE pack_library_file ADD size bigint; 2 | ALTER TABLE pack_repository_maven ADD cover_state int; 3 | 4 | DROP TABLE pack_repository_remote_proxy; 5 | 6 | -- --------------------------- 7 | -- 远程库代理表 8 | -- ---------------------------- 9 | CREATE TABLE pack_repository_remote_proxy( 10 | id VARCHAR(12) PRIMARY KEY, 11 | repository_id varchar (12) NOT NULL, 12 | remote_proxy_id varchar(12) NOT NULL, 13 | create_time timestamp 14 | 15 | ); 16 | 17 | 18 | -- --------------------------- 19 | -- 代理地址 20 | -- ---------------------------- 21 | CREATE TABLE pack_remote_proxy( 22 | id VARCHAR(12) PRIMARY KEY, 23 | agency_url varchar (324) NOT NULL, 24 | agency_name varchar (32), 25 | agency_type varchar(12), 26 | type int, 27 | account varchar(16), 28 | password varchar (16), 29 | create_time timestamp 30 | ); 31 | 32 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 33 | ('0230645439', 'maven-center','https://repo.maven.apache.org/maven2','maven',0,null,null,null), 34 | ('023066639','maven-aliyun','https://maven.aliyun.com/repository/public','maven',0,null,null,null), 35 | ('023077739','npmjs','https://registry.npmjs.org','npm',0,null,null,null), 36 | ('023088839','cnpm','https://registry.npmmirror.com','npm',0,null,null,null), 37 | ('023087839','docker-centre','https://registry-1.docker.io','docker',0,null,null,null); 38 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/hadess_1.0.0.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE pack_library_file ADD size bigint; 2 | ALTER TABLE pack_repository_maven ADD cover_state int; 3 | 4 | DROP TABLE pack_repository_remote_proxy; 5 | 6 | -- --------------------------- 7 | -- 远程库代理表 8 | -- ---------------------------- 9 | CREATE TABLE pack_repository_remote_proxy( 10 | id VARCHAR(12) PRIMARY KEY, 11 | repository_id varchar (12) NOT NULL, 12 | remote_proxy_id varchar(12) NOT NULL, 13 | create_time timestamp 14 | 15 | ); 16 | 17 | 18 | -- --------------------------- 19 | -- 代理地址 20 | -- ---------------------------- 21 | CREATE TABLE pack_remote_proxy( 22 | id VARCHAR(12) PRIMARY KEY, 23 | agency_url varchar (324) NOT NULL, 24 | agency_name varchar (32), 25 | agency_type varchar(12), 26 | type int, 27 | account varchar(16), 28 | password varchar (16), 29 | create_time timestamp 30 | ); 31 | 32 | INSERT INTO pack_remote_proxy (id, agency_name,agency_url ,agency_type,type,account,password,create_time) VALUES 33 | ('0230645439', 'maven-center','https://repo.maven.apache.org/maven2','maven',0,null,null,null), 34 | ('023066639','maven-aliyun','https://maven.aliyun.com/repository/public','maven',0,null,null,null), 35 | ('023077739','npmjs','https://registry.npmjs.org','npm',0,null,null,null), 36 | ('023088839','cnpm','https://registry.npmmirror.com','npm',0,null,null,null), 37 | ('023087839','docker-centre','https://registry-1.docker.io','docker',0,null,null,null); 38 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/RepositoryClusterCfgQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.util.List; 11 | 12 | @ApiModel 13 | public class RepositoryClusterCfgQuery { 14 | 15 | @ApiProperty(name ="orderParams",desc = "排序参数") 16 | private List orderParams = OrderBuilders.instance().asc("id").get(); 17 | 18 | @ApiProperty(name ="pageParam",desc = "分页参数") 19 | private Page pageParam = new Page(); 20 | 21 | @ApiProperty(name ="repositoryId",desc = "制品库id") 22 | private String repositoryId; 23 | 24 | public List getOrderParams() { 25 | return orderParams; 26 | } 27 | 28 | public void setOrderParams(List orderParams) { 29 | this.orderParams = orderParams; 30 | } 31 | 32 | public Page getPageParam() { 33 | return pageParam; 34 | } 35 | 36 | public void setPageParam(Page pageParam) { 37 | this.pageParam = pageParam; 38 | } 39 | 40 | public String getRepositoryId() { 41 | return repositoryId; 42 | } 43 | 44 | public void setRepositoryId(String repositoryId) { 45 | this.repositoryId = repositoryId; 46 | } 47 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/library/model/LibraryPypi.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.model; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.postin.annotation.ApiModel; 5 | import io.tiklab.postin.annotation.ApiProperty; 6 | import io.tiklab.toolkit.beans.annotation.Mapper; 7 | import io.tiklab.toolkit.beans.annotation.Mapping; 8 | import io.tiklab.toolkit.beans.annotation.Mappings; 9 | import io.tiklab.toolkit.join.annotation.Join; 10 | import io.tiklab.toolkit.join.annotation.JoinField; 11 | 12 | import javax.validation.constraints.NotNull; 13 | 14 | /** 15 | * LibraryPypi-pypi制品扩展数据 16 | */ 17 | @ApiModel 18 | @Mapper 19 | @Join 20 | public class LibraryPypi extends BaseModel { 21 | 22 | @ApiProperty(name="id",desc="id") 23 | private String id; 24 | 25 | @ApiProperty(name="libraryId",desc="制品id",required = true) 26 | private String libraryId; 27 | 28 | @ApiProperty(name="metadataPath",desc="pypi元数据路径") 29 | private String metadataPath; 30 | 31 | 32 | public String getId() { 33 | return id; 34 | } 35 | 36 | public void setId(String id) { 37 | this.id = id; 38 | } 39 | 40 | public String getLibraryId() { 41 | return libraryId; 42 | } 43 | 44 | public void setLibraryId(String libraryId) { 45 | this.libraryId = libraryId; 46 | } 47 | 48 | public String getMetadataPath() { 49 | return metadataPath; 50 | } 51 | 52 | public void setMetadataPath(String metadataPath) { 53 | this.metadataPath = metadataPath; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Hadess制品管理工具 2 | hadess是一款开源、免费的制品管理工具,提供了高效、安全的制品存储和版本控制。无论是小型团队,还是大规模企业,Hadess 都能帮助开发者从容应对复杂的制品管理需求 3 | 4 | # 功能介绍 5 | ### 全面的制品管理 6 | Hadess 支持多种格式的制品管理,如 Maven、NPM、Docker、helm 等,可以轻松存储和分发制品。每个制品的版本信息都一目了然,方便团队跟踪版本更新及历史记录 7 | 各类型制品库管理 8 | ![](https://image.tiklab.net/img/g1/homes/8fb3567a53bbbad9) 9 | 10 | ### 各类型制品库管理 11 | 支持多种格式的制品库,如 Maven、NPM、Docker 等,轻松管理和存储开发过程中生成的各种制品 12 | ![](https://image.tiklab.net/img/g1/homes/eaaa0d9d6a7cd6f4) 13 | 14 | ### 制品扫描 15 | 通过安全扫描功能,Hadess 能够自动检测制品中的安全漏洞和潜在风险 16 | ![](https://image.tiklab.net/img/g1/homes/52334a717485c2a8) 17 | 18 | # 安装 19 | ### 系统要求 20 | * Java 16+ 21 | * Maven 3.4+ 22 | ### 克隆仓库 23 | ``` 24 | git clone https://gitee.com/tiklab/tiklab-hadess.git 25 | 26 | cd tiklab-hadess 27 | ``` 28 | ### 配置MAVEN仓库 29 | 配置maven的settings.xml文件的远程仓库为一下内容 30 | ``` 31 | 32 | hadess 33 | hadess 34 | https://mirror.tiklab.net/repository/tiklab-maven 35 | * 36 | 37 | ``` 38 | 39 | ### 构建项目 40 | 41 | * MAC系统:mvn clean package -P system-mac,env-dev 42 | * Linux系统:mvn clean package -P system-linux,env-dev 43 | * Windows系统:mvn clean package -P system-windows,env-dev 44 | 45 | # 快速使用 46 | 47 | 1. 启动 HadessApplication类 48 | 2. 浏览器访问:http://localhost:8080 49 | 3. 登录信息,用户名:admin 密码:123456 50 | 51 | # 贡献 52 | 53 | 我们欢迎社区的贡献!如果你有好的建议或发现了问题,请通过以下方式联系我: 54 | 55 | 联系我们 56 | 57 | 邮箱: tiklab@126.com 58 | 59 | 如需了解更多信息,请访问我们的官方网站或加入我们的社区讨论: 60 | 61 | 官网:https://tiklab.net 62 | 63 | # 进阶使用 64 | 65 | 文档地址:https://doc.tiklab.net/document/a9abc0b02ca7 66 | 演示地址:https://demo.tiklab.net/hadess -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/pushcentral/model/PushGroupQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.pushcentral.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.io.Serializable; 11 | import java.util.List; 12 | 13 | @ApiModel 14 | public class PushGroupQuery implements Serializable { 15 | 16 | @ApiProperty(name ="orderParams",desc = "排序参数") 17 | private List orderParams = OrderBuilders.instance().desc("id").get(); 18 | 19 | @ApiProperty(name ="pageParam",desc = "分页参数") 20 | private Page pageParam = new Page(); 21 | 22 | @ApiProperty(name ="repositoryId",desc = "制品库id") 23 | private String repositoryId; 24 | 25 | 26 | public List getOrderParams() { 27 | return orderParams; 28 | } 29 | 30 | public void setOrderParams(List orderParams) { 31 | this.orderParams = orderParams; 32 | } 33 | 34 | public Page getPageParam() { 35 | return pageParam; 36 | } 37 | 38 | public void setPageParam(Page pageParam) { 39 | this.pageParam = pageParam; 40 | } 41 | 42 | public String getRepositoryId() { 43 | return repositoryId; 44 | } 45 | 46 | public PushGroupQuery setRepositoryId(String repositoryId) { 47 | this.repositoryId = repositoryId; 48 | return this; 49 | } 50 | 51 | } -------------------------------------------------------------------------------- /tiklab-hadess-starter/file/recovery.sh: -------------------------------------------------------------------------------- 1 | !/bin/bash 2 | host=$host 3 | port=$port 4 | userName=$userName 5 | password=$password 6 | dbName=$dbName 7 | schemaName=$schemaName 8 | prePath=$prePath 9 | backupsSqlUrl=$backupsSqlUrl 10 | 11 | backupsCodeUrl=$backupsCodeUrl 12 | sourceFilePath=$sourceFilePath 13 | reduceUrl=$reduceUrl 14 | 15 | mysql_bin="/Users/limingliang/postgreSQL/bin" 16 | #mysql_bin=$pgsqlUrl 17 | psql="${mysql_bin}/psql" 18 | 19 | 20 | #PGPASSWORD=${password} ${psql} -U ${userName} -h ${host} -p ${port} -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname='${dbName}';" 21 | echo "用户名:"$userName 22 | echo "密码:"$password 23 | echo "host:"$host 24 | echo "dbName:"$dbName 25 | echo "schemaName:"$schemaName 26 | echo "psql:"$psql 27 | echo "删除schenam:"PGPASSWORD=${password} ${psql} -U ${userName} -d ${dbName} -h ${host} -p ${port} -c "DROP SCHEMA IF EXISTS ${schemaName} CASCADE;" 28 | echo "创建schenam:"PGPASSWORD=${password} ${psql} -U ${userName} -h ${host} -p ${port} -d ${dbName} -c "CREATE schema ${schemaName};" 29 | 30 | 31 | 32 | PGPASSWORD=${password} ${psql} -U ${userName} -d ${dbName} -h ${host} -p ${port} -c "DROP SCHEMA IF EXISTS ${schemaName} CASCADE;" 33 | PGPASSWORD=${password} ${psql} -U ${userName} -h ${host} -p ${port} -d ${dbName} -c "CREATE schema ${schemaName};" 34 | 35 | 36 | PGPASSWORD=${password} ${psql} -U ${userName} -h ${host} -p ${port} -d ${dbName} -n ${schemaName}<${backupsSqlUrl}${dbName}.sql; 37 | 38 | 39 | #tar -zxvf ${reduceUrl} -C ${prePath} 40 | #cp -r ${backupsCodeUrl}/* ${sourceFilePath} 41 | 42 | #rm -rf ${backupsSqlUrl} 43 | 44 | #create db 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/common/XpackYamlDataMaService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.common; 2 | 3 | public interface XpackYamlDataMaService { 4 | 5 | /** 6 | * 仓库备份上传地址 7 | */ 8 | String uploadAddress(); 9 | 10 | /** 11 | *jdbc host 12 | */ 13 | String host(); 14 | 15 | /** 16 | *jdbc dbName 17 | */ 18 | String dbName(); 19 | 20 | /** 21 | *jdbc schemaName 22 | */ 23 | String schemaName(); 24 | 25 | //获取是否校验状态 26 | boolean getVerify(); 27 | 28 | 29 | /** 30 | * 仓库地址 31 | */ 32 | String repositoryAddress(); 33 | 34 | /** 35 | * 项目端口 36 | */ 37 | String serverPort(); 38 | 39 | /** 40 | * 文件地址 41 | */ 42 | String fileAddress(); 43 | 44 | /** 45 | * 扫描文件地址 46 | */ 47 | String scanFileAddress(); 48 | 49 | /** 50 | * pgsql的地址 51 | */ 52 | String pgSqlAddress(); 53 | 54 | 55 | /** 56 | * 获取上传的制品的路径 57 | * @param requestURL 请求路径 58 | * @param type 客户端请求的地址前缀 repository、xpack、 generic 59 | */ 60 | String getUploadRepositoryUrl(String requestURL,String type); 61 | 62 | /** 63 | * 获取openscan执行路径 64 | */ 65 | String getOpenScanUrl(); 66 | 67 | /** 68 | * 获取openscan的本地漏洞路径 69 | */ 70 | String getLocalHoleUrl(); 71 | 72 | 73 | //查询visible地址 配置的域名地址 74 | String findVisitAddress(); 75 | 76 | /** 77 | * 获取下载ComposerPackage的地址 78 | * @param hostPath 客户端请求网络地址 79 | * @param filePath 文件地址 80 | */ 81 | String getComposerPackageUrl(String hostPath,String filePath); 82 | } 83 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/pushcentral/entity/PushGroupEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.pushcentral.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | import java.sql.Timestamp; 7 | 8 | /** 9 | * PushGroupEntity-推送制品组 10 | */ 11 | @Entity 12 | @Table(name="pack_push_group") 13 | public class PushGroupEntity extends BaseModel { 14 | 15 | @Id 16 | @GeneratorValue(length = 12) 17 | @Column(name = "id",length = 12) 18 | private String id; 19 | 20 | //推送组名字 21 | @Column(name = "group_name",length = 64,notNull = true) 22 | private String groupName; 23 | 24 | //制品id 25 | @Column(name = "repository_id",length = 12,notNull = true) 26 | private String repositoryId; 27 | 28 | 29 | //最后推送结果 30 | @Column(name = "create_time") 31 | private Timestamp createTime; 32 | 33 | public String getId() { 34 | return id; 35 | } 36 | 37 | public void setId(String id) { 38 | this.id = id; 39 | } 40 | 41 | public String getGroupName() { 42 | return groupName; 43 | } 44 | 45 | public void setGroupName(String groupName) { 46 | this.groupName = groupName; 47 | } 48 | 49 | public String getRepositoryId() { 50 | return repositoryId; 51 | } 52 | 53 | public void setRepositoryId(String repositoryId) { 54 | this.repositoryId = repositoryId; 55 | } 56 | 57 | 58 | public Timestamp getCreateTime() { 59 | return createTime; 60 | } 61 | 62 | public void setCreateTime(Timestamp createTime) { 63 | this.createTime = createTime; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/common/response/GoResponse.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.common.response; 2 | 3 | import io.tiklab.core.Result; 4 | 5 | import javax.servlet.ServletOutputStream; 6 | import javax.servlet.http.HttpServletResponse; 7 | import java.io.IOException; 8 | import java.io.PrintWriter; 9 | 10 | public class GoResponse { 11 | 12 | 13 | /** 14 | * go类型制品 拉取返回类型 15 | * @param response response 16 | */ 17 | public static void goPull(Result result, String contextPath,HttpServletResponse response) throws IOException { 18 | if (result.getCode()==0){ 19 | response.setStatus(HttpServletResponse.SC_OK); 20 | if (contextPath.endsWith(".zip")){ 21 | response.setContentType("application/zip"); 22 | } 23 | if (contextPath.endsWith(".list")){ 24 | response.setContentType("application/json; charset=UTF-8"); 25 | } 26 | if (contextPath.endsWith(".mod")){ 27 | response.setContentType("text/plain; charset=UTF-8"); 28 | } 29 | ServletOutputStream outputStream = response.getOutputStream(); 30 | outputStream.write(result.getData()); 31 | outputStream.close(); 32 | }else { 33 | response.setStatus(result.getCode()); 34 | response.setContentType("text/plain;charset=UTF-8"); 35 | response.setHeader("X-Content-Type-Options", "nosniff"); 36 | PrintWriter writer = response.getWriter(); 37 | writer.print(result.getMsg()); 38 | writer.close(); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/common/response/PypiResponse.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.common.response; 2 | 3 | import javax.servlet.http.HttpServletResponse; 4 | import java.io.IOException; 5 | import java.io.PrintWriter; 6 | 7 | public class PypiResponse { 8 | 9 | /** 10 | * 返回错误信息 11 | * @param message 错误信息 12 | * @param resp response 13 | * @param code 错误code 14 | */ 15 | public static void errorToClient(HttpServletResponse resp,int code ,String message) { 16 | try { 17 | //resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // 401 18 | resp.setStatus(code); 19 | resp.setContentType("text/plain; charset=utf-8"); // 必须设置文本类型 20 | resp.setCharacterEncoding("UTF-8"); // 明确指定编码 21 | resp.getWriter().write(message); 22 | resp.getWriter().flush(); 23 | resp.getWriter().close(); // 立即终止响应 24 | 25 | } catch (IOException e) { 26 | throw new RuntimeException(e); 27 | } 28 | } 29 | 30 | /** 31 | * 正确返回 32 | * @param data 内容 33 | * @param resp response 34 | */ 35 | public static void correctToClient(HttpServletResponse resp,String data) { 36 | try { 37 | //resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // 401 38 | resp.setStatus(HttpServletResponse.SC_OK); 39 | resp.setContentType("text/html"); 40 | PrintWriter writer = resp.getWriter(); 41 | writer.write(data); 42 | 43 | } catch (IOException e) { 44 | throw new RuntimeException(e); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/controller/ComposerPackageController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.controller; 2 | 3 | import io.tiklab.core.exception.SystemException; 4 | import io.tiklab.hadess.upload.service.ComposerUploadService; 5 | import io.tiklab.postin.annotation.ApiMethod; 6 | import io.tiklab.postin.annotation.ApiParam; 7 | import org.slf4j.Logger; 8 | import org.slf4j.LoggerFactory; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | import org.springframework.web.bind.annotation.RestController; 13 | 14 | import javax.servlet.ServletOutputStream; 15 | import javax.servlet.http.HttpServletRequest; 16 | import javax.servlet.http.HttpServletResponse; 17 | import java.io.IOException; 18 | /* 19 | * 拉取composer 客户端根据服务端获取的json文件中的dist的地址拉取package 20 | * */ 21 | @RestController 22 | @RequestMapping("/composerPack") 23 | public class ComposerPackageController { 24 | private static Logger logger = LoggerFactory.getLogger(ComposerPackageController.class); 25 | @Autowired 26 | ComposerUploadService composerUploadService; 27 | 28 | @RequestMapping(path = "/**",method = RequestMethod.GET) 29 | @ApiMethod(name = "downloadPackage",desc = "composer下载package") 30 | @ApiParam(name = "request",desc = "request") 31 | public void downloadPackage(HttpServletRequest request, HttpServletResponse response) { 32 | logger.info("composer download Package path:"+request.getRequestURI()); 33 | composerUploadService.downloadPackage(request,response); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/MavenUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import io.tiklab.core.Result; 4 | import io.tiklab.hadess.repository.model.Repository; 5 | 6 | import javax.servlet.http.HttpServletResponse; 7 | import java.io.IOException; 8 | import java.io.InputStream; 9 | import java.util.Map; 10 | 11 | public interface MavenUploadService { 12 | 13 | /** 14 | * maven提交 15 | * @param contextPath 路径 16 | * @param inputStream 文件liu 17 | * @param userData 用户信息 18 | * @return 19 | */ 20 | Result mavenSubmit(String contextPath, InputStream inputStream, String userData); 21 | 22 | 23 | /** 24 | * maven提交 写入文件 25 | * @param inputStream 流文件 26 | * @param userName 推送人 27 | * @param contextPath 客户端请求路径 28 | * @return 29 | */ 30 | Result fileWriteData(InputStream inputStream, String userName,String contextPath ) throws IOException; 31 | 32 | /** 33 | * maven拉取 34 | * @param contextPath 客户端拉取文件的地址 35 | * @return 36 | */ 37 | void mavenPull(HttpServletResponse response, String contextPath); 38 | 39 | 40 | /** 41 | * 写入文件 42 | * @param inputStream 客户端拉取文件的地址 43 | * @param dataMap dataMap 44 | */ 45 | Result writeFile(InputStream inputStream, Map dataMap) throws IOException; 46 | 47 | 48 | /** 49 | * 拉取远程后创建制品信息 50 | * @param dataMap 数据整合的map 51 | * @param repository 远程库 52 | * @param entityBody entityBody 53 | */ 54 | void pullCreateLibrary(Map dataMap, Repository repository, byte[] entityBody); 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/RemoteProxyQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | import io.tiklab.core.order.Order; 4 | import io.tiklab.core.order.OrderBuilders; 5 | import io.tiklab.core.page.Page; 6 | import io.tiklab.postin.annotation.ApiProperty; 7 | 8 | import java.io.Serializable; 9 | import java.util.List; 10 | 11 | public class RemoteProxyQuery implements Serializable { 12 | 13 | @ApiProperty(name ="orderParams",desc = "排序参数") 14 | private List orderParams = OrderBuilders.instance().asc("type").get(); 15 | 16 | 17 | @ApiProperty(name ="pageParam",desc = "分页参数") 18 | private Page pageParam = new Page(); 19 | 20 | @ApiProperty(name ="agencyType",desc = "类型") 21 | private String agencyType; 22 | 23 | @ApiProperty(name ="agencyUrl",desc = "地址") 24 | private String agencyUrl; 25 | 26 | public List getOrderParams() { 27 | return orderParams; 28 | } 29 | 30 | public void setOrderParams(List orderParams) { 31 | this.orderParams = orderParams; 32 | } 33 | 34 | public Page getPageParam() { 35 | return pageParam; 36 | } 37 | 38 | public void setPageParam(Page pageParam) { 39 | this.pageParam = pageParam; 40 | } 41 | 42 | public String getAgencyType() { 43 | return agencyType; 44 | } 45 | 46 | public void setAgencyType(String agencyType) { 47 | this.agencyType = agencyType; 48 | } 49 | 50 | public String getAgencyUrl() { 51 | return agencyUrl; 52 | } 53 | 54 | public RemoteProxyQuery setAgencyUrl(String agencyUrl) { 55 | this.agencyUrl = agencyUrl; 56 | return this; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/leadIn/model/LeadInQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.leadIn.model; 2 | 3 | import io.tiklab.postin.annotation.ApiModel; 4 | import io.tiklab.postin.annotation.ApiProperty; 5 | 6 | @ApiModel 7 | public class LeadInQuery { 8 | 9 | @ApiProperty(name ="url",desc = "路径") 10 | private String url; 11 | 12 | @ApiProperty(name ="type",desc = "仓库类型 maven、npm") 13 | private String type; 14 | 15 | @ApiProperty(name ="versionType",desc = "maven仓库版本类型 Release、Snapshot") 16 | private String versionType; 17 | 18 | @ApiProperty(name ="targetRepId",desc = "目标仓库id") 19 | private String targetRepId; 20 | 21 | @ApiProperty(name ="sourceRepName",desc = "源仓库名字") 22 | private String sourceRepName; 23 | 24 | public String getUrl() { 25 | return url; 26 | } 27 | 28 | public void setUrl(String url) { 29 | this.url = url; 30 | } 31 | 32 | public String getType() { 33 | return type; 34 | } 35 | 36 | public void setType(String type) { 37 | this.type = type; 38 | } 39 | 40 | public String getTargetRepId() { 41 | return targetRepId; 42 | } 43 | 44 | public void setTargetRepId(String targetRepId) { 45 | this.targetRepId = targetRepId; 46 | } 47 | 48 | public String getSourceRepName() { 49 | return sourceRepName; 50 | } 51 | 52 | public void setSourceRepName(String sourceRepName) { 53 | this.sourceRepName = sourceRepName; 54 | } 55 | 56 | public String getVersionType() { 57 | return versionType; 58 | } 59 | 60 | public void setVersionType(String versionType) { 61 | this.versionType = versionType; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/model/LibraryHelmServer.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.model; 2 | 3 | import io.tiklab.core.BaseModel; 4 | 5 | import java.util.Map; 6 | 7 | public class LibraryHelmServer extends BaseModel { 8 | 9 | 10 | 11 | //sha256 12 | private String digest; 13 | 14 | //helm 的Chart名字 15 | private String name; 16 | 17 | private String urls; 18 | 19 | //helm包版本 20 | private String version; 21 | 22 | 23 | //临时文件存储的路径 24 | private String scratchFilePath; 25 | 26 | //chart.yaml内容 27 | private Map data; 28 | 29 | public String getDigest() { 30 | return digest; 31 | } 32 | 33 | public void setDigest(String digest) { 34 | this.digest = digest; 35 | } 36 | 37 | public String getName() { 38 | return name; 39 | } 40 | 41 | public void setName(String name) { 42 | this.name = name; 43 | } 44 | 45 | public String getUrls() { 46 | return urls; 47 | } 48 | 49 | public void setUrls(String urls) { 50 | this.urls = urls; 51 | } 52 | 53 | public String getVersion() { 54 | return version; 55 | } 56 | 57 | public void setVersion(String version) { 58 | this.version = version; 59 | } 60 | 61 | 62 | public String getScratchFilePath() { 63 | return scratchFilePath; 64 | } 65 | 66 | public void setScratchFilePath(String scratchFilePath) { 67 | this.scratchFilePath = scratchFilePath; 68 | } 69 | 70 | public Map getData() { 71 | return data; 72 | } 73 | 74 | public void setData(Map data) { 75 | this.data = data; 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/model/LibraryHelmClient.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.model; 2 | 3 | import io.tiklab.postin.annotation.ApiProperty; 4 | 5 | import java.io.InputStream; 6 | 7 | public class LibraryHelmClient { 8 | 9 | @ApiProperty(name="fileName",desc="上传文件名字") 10 | private String fileName; 11 | 12 | @ApiProperty(name="repositoryName",desc="仓库名字") 13 | private String repositoryName; 14 | 15 | @ApiProperty(name="fileSize",desc="文件大小") 16 | private Long fileSize; 17 | 18 | @ApiProperty(name="inputStream",desc="文件") 19 | private InputStream inputStream; 20 | 21 | 22 | @ApiProperty(name="userName",desc="推送用户名") 23 | private String userName; 24 | 25 | 26 | public String getFileName() { 27 | return fileName; 28 | } 29 | 30 | public void setFileName(String fileName) { 31 | this.fileName = fileName; 32 | } 33 | 34 | public Long getFileSize() { 35 | return fileSize; 36 | } 37 | 38 | public void setFileSize(Long fileSize) { 39 | this.fileSize = fileSize; 40 | } 41 | 42 | public String getRepositoryName() { 43 | return repositoryName; 44 | } 45 | 46 | public void setRepositoryName(String repositoryName) { 47 | this.repositoryName = repositoryName; 48 | } 49 | 50 | public InputStream getInputStream() { 51 | return inputStream; 52 | } 53 | 54 | public void setInputStream(InputStream inputStream) { 55 | this.inputStream = inputStream; 56 | } 57 | 58 | public String getUserName() { 59 | return userName; 60 | } 61 | 62 | public void setUserName(String userName) { 63 | this.userName = userName; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/repository/entity/RepositoryRemoteProxyEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | import java.sql.Timestamp; 7 | 8 | /** 9 | * RepositoryRemoteProxyEntity-远程库代理信息实体 10 | */ 11 | @Entity 12 | @Table(name="pack_repository_remote_proxy") 13 | public class RepositoryRemoteProxyEntity extends BaseModel { 14 | 15 | @Id 16 | @GeneratorValue(length = 12) 17 | @Column(name = "id",length = 12) 18 | private String id; 19 | 20 | //制品库Id 21 | @Column(name = "repository_id",length = 12,notNull = true) 22 | private String repositoryId; 23 | 24 | 25 | //代理Id 26 | @Column(name = "remote_proxy_id",length = 12,notNull = true) 27 | private String remoteProxyId; 28 | 29 | 30 | 31 | @Column(name = "create_time") 32 | private Timestamp createTime; 33 | 34 | 35 | public String getId() { 36 | return id; 37 | } 38 | 39 | public void setId(String id) { 40 | this.id = id; 41 | } 42 | 43 | public String getRepositoryId() { 44 | return repositoryId; 45 | } 46 | 47 | public void setRepositoryId(String repositoryId) { 48 | this.repositoryId = repositoryId; 49 | } 50 | 51 | 52 | 53 | public Timestamp getCreateTime() { 54 | return createTime; 55 | } 56 | 57 | public void setCreateTime(Timestamp createTime) { 58 | this.createTime = createTime; 59 | } 60 | 61 | 62 | public String getRemoteProxyId() { 63 | return remoteProxyId; 64 | } 65 | 66 | public void setRemoteProxyId(String remoteProxyId) { 67 | this.remoteProxyId = remoteProxyId; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/model/LibraryUploadResult.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.model; 2 | 3 | import io.tiklab.postin.annotation.ApiProperty; 4 | 5 | public class LibraryUploadResult { 6 | 7 | @ApiProperty(name="status",desc="结果code") 8 | private int status; 9 | 10 | 11 | @ApiProperty(name="data",desc="返回的结果") 12 | private String data; 13 | 14 | @ApiProperty(name="details",desc="返回内容") 15 | private byte[] details; 16 | 17 | @ApiProperty(name="msg",desc="返回的消息") 18 | private String msg; 19 | 20 | @ApiProperty(name="contentType",desc="结果类型") 21 | private String contentType; 22 | 23 | 24 | @ApiProperty(name="resultType",desc="结果类型") 25 | private String resultType; 26 | 27 | public int getStatus() { 28 | return status; 29 | } 30 | 31 | public void setStatus(int status) { 32 | this.status = status; 33 | } 34 | 35 | public String getData() { 36 | return data; 37 | } 38 | 39 | public void setData(String data) { 40 | this.data = data; 41 | } 42 | 43 | public byte[] getDetails() { 44 | return details; 45 | } 46 | 47 | public void setDetails(byte[] details) { 48 | this.details = details; 49 | } 50 | 51 | public String getMsg() { 52 | return msg; 53 | } 54 | 55 | public void setMsg(String msg) { 56 | this.msg = msg; 57 | } 58 | 59 | public String getContentType() { 60 | return contentType; 61 | } 62 | 63 | public void setContentType(String contentType) { 64 | this.contentType = contentType; 65 | } 66 | 67 | public String getResultType() { 68 | return resultType; 69 | } 70 | 71 | public void setResultType(String resultType) { 72 | this.resultType = resultType; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/library/model/LibraryPypiQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.io.Serializable; 11 | import java.util.List; 12 | 13 | 14 | @ApiModel 15 | public class LibraryPypiQuery implements Serializable { 16 | 17 | @ApiProperty(name ="orderParams",desc = "排序参数") 18 | private List orderParams = OrderBuilders.instance().desc("id").get(); 19 | 20 | @ApiProperty(name ="pageParam",desc = "分页参数") 21 | private Page pageParam = new Page(); 22 | 23 | @ApiProperty(name ="libraryId",desc = "制品id") 24 | private String libraryId; 25 | 26 | @ApiProperty(name ="libraryIds",desc = "制品ids") 27 | private String[] libraryIds; 28 | 29 | 30 | public List getOrderParams() { 31 | return orderParams; 32 | } 33 | 34 | public void setOrderParams(List orderParams) { 35 | this.orderParams = orderParams; 36 | } 37 | 38 | public Page getPageParam() { 39 | return pageParam; 40 | } 41 | 42 | public void setPageParam(Page pageParam) { 43 | this.pageParam = pageParam; 44 | } 45 | 46 | public String getLibraryId() { 47 | return libraryId; 48 | } 49 | 50 | public LibraryPypiQuery setLibraryId(String libraryId) { 51 | this.libraryId = libraryId; 52 | return this; 53 | } 54 | 55 | public String[] getLibraryIds() { 56 | return libraryIds; 57 | } 58 | 59 | public LibraryPypiQuery setLibraryIds(String[] libraryIds) { 60 | this.libraryIds = libraryIds; 61 | return this; 62 | } 63 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/ConanUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletResponse; 5 | 6 | public interface ConanUploadService { 7 | 8 | 9 | 10 | /** 11 | * 数据执行的校验步骤 get请求 12 | * @param request request 13 | * @param response response 14 | */ 15 | void dataVerifyGet(HttpServletRequest request, HttpServletResponse response); 16 | 17 | /** 18 | * 上传写入制品数据 19 | * @param request request 20 | * @param response response 21 | */ 22 | void uploadData(HttpServletRequest request, HttpServletResponse response); 23 | 24 | 25 | /** 26 | * 获取上传文件的路径 27 | * @param request request 28 | * @param response response 29 | */ 30 | String getUploadDataPath(HttpServletRequest request, HttpServletResponse response); 31 | 32 | 33 | /** 34 | * 获取元数据、二进制文件下载链接L(客户端会发起两次请求,第一次获取元数据、第二次二进制包) 35 | * @param request request 36 | * @param response response 37 | */ 38 | String getDownloadUrls(HttpServletRequest request, HttpServletResponse response); 39 | 40 | 41 | /** 42 | * 下载元数据、二进制包 43 | * @param request request 44 | * @param response response 45 | */ 46 | void downloadPackage(HttpServletRequest request, HttpServletResponse response); 47 | 48 | 49 | /** 50 | * 上传、下载 校验二进制包数据 客户端执行 --all时候上传会把二进制包上传 51 | * @param request request 52 | * @param response response 53 | */ 54 | String verifyPackage(HttpServletRequest request, HttpServletResponse response); 55 | 56 | /** 57 | * 拉取文件内容 58 | * @param request request 59 | * @param response response 60 | */ 61 | void downloadFileData(HttpServletRequest request, HttpServletResponse response); 62 | } 63 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/model/error/DockerErrorResponse.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.model.error; 2 | 3 | import java.util.List; 4 | 5 | public class DockerErrorResponse { 6 | private List errors; 7 | 8 | public static class ErrorDetail { 9 | private String code; 10 | private String message; 11 | private List detail; 12 | 13 | public static class DetailItem { 14 | private String Name; 15 | private String Tag; 16 | 17 | public String getName() { 18 | return Name; 19 | } 20 | 21 | public void setName(String name) { 22 | Name = name; 23 | } 24 | 25 | public String getTag() { 26 | return Tag; 27 | } 28 | 29 | public void setTag(String tag) { 30 | Tag = tag; 31 | } 32 | 33 | // getters and setters 34 | } 35 | 36 | public String getCode() { 37 | return code; 38 | } 39 | 40 | public void setCode(String code) { 41 | this.code = code; 42 | } 43 | 44 | public String getMessage() { 45 | return message; 46 | } 47 | 48 | public void setMessage(String message) { 49 | this.message = message; 50 | } 51 | 52 | public List getDetail() { 53 | return detail; 54 | } 55 | 56 | public void setDetail(List detail) { 57 | this.detail = detail; 58 | } 59 | // getters and setters 60 | } 61 | 62 | public List getErrors() { 63 | return errors; 64 | } 65 | 66 | public void setErrors(List errors) { 67 | this.errors = errors; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/library/model/LibraryComposerQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.io.Serializable; 11 | import java.util.List; 12 | 13 | 14 | @ApiModel 15 | public class LibraryComposerQuery implements Serializable { 16 | 17 | @ApiProperty(name ="orderParams",desc = "排序参数") 18 | private List orderParams = OrderBuilders.instance().desc("id").get(); 19 | 20 | @ApiProperty(name ="pageParam",desc = "分页参数") 21 | private Page pageParam = new Page(); 22 | 23 | @ApiProperty(name ="libraryId",desc = "制品id") 24 | private String libraryId; 25 | 26 | @ApiProperty(name ="libraryIds",desc = "制品ids") 27 | private String[] libraryIds; 28 | 29 | 30 | public List getOrderParams() { 31 | return orderParams; 32 | } 33 | 34 | public void setOrderParams(List orderParams) { 35 | this.orderParams = orderParams; 36 | } 37 | 38 | public Page getPageParam() { 39 | return pageParam; 40 | } 41 | 42 | public void setPageParam(Page pageParam) { 43 | this.pageParam = pageParam; 44 | } 45 | 46 | public String getLibraryId() { 47 | return libraryId; 48 | } 49 | 50 | public LibraryComposerQuery setLibraryId(String libraryId) { 51 | this.libraryId = libraryId; 52 | return this; 53 | } 54 | 55 | public String[] getLibraryIds() { 56 | return libraryIds; 57 | } 58 | 59 | public LibraryComposerQuery setLibraryIds(String[] libraryIds) { 60 | this.libraryIds = libraryIds; 61 | return this; 62 | } 63 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/service/StorageService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.service; 2 | 3 | 4 | import io.tiklab.hadess.repository.model.Storage; 5 | import io.tiklab.hadess.repository.model.StorageQuery; 6 | import io.tiklab.core.page.Pagination; 7 | import io.tiklab.toolkit.join.annotation.FindAll; 8 | import io.tiklab.toolkit.join.annotation.FindList; 9 | import io.tiklab.toolkit.join.annotation.FindOne; 10 | import io.tiklab.toolkit.join.annotation.JoinProvider; 11 | 12 | import javax.validation.Valid; 13 | import javax.validation.constraints.NotNull; 14 | import java.util.List; 15 | 16 | /** 17 | * StorageService-存储库接口 18 | */ 19 | @JoinProvider(model = Storage.class) 20 | public interface StorageService { 21 | 22 | /** 23 | * 创建 24 | * @param storage 25 | * @return 26 | */ 27 | String createStorage(@NotNull @Valid Storage storage); 28 | 29 | /** 30 | * 更新 31 | * @param storage 32 | */ 33 | void updateStorage(@NotNull @Valid Storage storage); 34 | 35 | /** 36 | * 删除 37 | * @param id 38 | */ 39 | void deleteStorage(@NotNull String id); 40 | 41 | @FindOne 42 | Storage findOne(@NotNull String id); 43 | 44 | @FindList 45 | List findList(List idList); 46 | 47 | /** 48 | * 查找 49 | * @param id 50 | * @return 51 | */ 52 | Storage findStorage(@NotNull String id); 53 | 54 | /** 55 | * 查找所有 56 | * @return 57 | */ 58 | @FindAll 59 | List findAllStorage(); 60 | 61 | /** 62 | * 查询列表 63 | * @param storageQuery 64 | * @return 65 | */ 66 | List findStorageList(StorageQuery storageQuery); 67 | 68 | /** 69 | * 按分页查询 70 | * @param storageQuery 71 | * @return 72 | */ 73 | Pagination findStoragePage(StorageQuery storageQuery); 74 | 75 | } -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/repository/service/ResourceManServiceImpl.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.service; 2 | 3 | import io.tiklab.hadess.common.RepositoryUtil; 4 | import io.tiklab.hadess.common.XpackYamlDataMaService; 5 | import io.tiklab.hadess.repository.model.ResourceMan; 6 | import io.tiklab.licence.licence.model.Version; 7 | import io.tiklab.licence.licence.service.VersionService; 8 | import org.apache.commons.io.FileUtils; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Service; 11 | 12 | import java.io.File; 13 | 14 | @Service 15 | public class ResourceManServiceImpl implements ResourceManService{ 16 | 17 | @Autowired 18 | XpackYamlDataMaService yamlDataMaService; 19 | 20 | @Autowired 21 | VersionService versionService; 22 | 23 | @Override 24 | public ResourceMan findResource() { 25 | ResourceMan resourceMan = new ResourceMan(); 26 | 27 | String repositoryAddress = yamlDataMaService.repositoryAddress(); 28 | File file = new File(repositoryAddress); 29 | //第一次还未创建文件夹 30 | if (!file.exists()){ 31 | return null; 32 | } 33 | 34 | long logBytes = FileUtils.sizeOfDirectory(file); 35 | String size = RepositoryUtil.countStorageSize(logBytes); 36 | resourceMan.setUsedSpace(size); 37 | 38 | resourceMan.setAllSpace(getDiskSize(repositoryAddress)); 39 | 40 | Version version = versionService.getVersion(); 41 | resourceMan.setVersion(version.getRelease()); 42 | 43 | 44 | return resourceMan; 45 | } 46 | 47 | /** 48 | * 磁盘大小 49 | * @return 50 | */ 51 | public String getDiskSize(String repositoryAddress){ 52 | float diskSize = RepositoryUtil.findDiskSize(repositoryAddress); 53 | return diskSize+"GB"; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/RepositoryMavenQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.util.List; 11 | 12 | @ApiModel 13 | public class RepositoryMavenQuery { 14 | 15 | @ApiProperty(name ="orderParams",desc = "排序参数") 16 | private List orderParams = OrderBuilders.instance().asc("id").get(); 17 | 18 | @ApiProperty(name ="pageParam",desc = "分页参数") 19 | private Page pageParam = new Page(); 20 | 21 | 22 | @ApiProperty(name ="repositoryId",desc = "制品库id") 23 | private String repositoryId; 24 | 25 | @ApiProperty(name ="repositoryId",desc = "制品库ids") 26 | private String[] repIds; 27 | public List getOrderParams() { 28 | return orderParams; 29 | } 30 | 31 | public void setOrderParams(List orderParams) { 32 | this.orderParams = orderParams; 33 | } 34 | 35 | public Page getPageParam() { 36 | return pageParam; 37 | } 38 | 39 | public void setPageParam(Page pageParam) { 40 | this.pageParam = pageParam; 41 | } 42 | 43 | public String getRepositoryId() { 44 | return repositoryId; 45 | } 46 | 47 | public RepositoryMavenQuery setRepositoryId(String repositoryId) { 48 | this.repositoryId = repositoryId; 49 | return this; 50 | } 51 | 52 | public String[] getRepIds() { 53 | return repIds; 54 | } 55 | 56 | public RepositoryMavenQuery setRepIds(String[] repIds) { 57 | this.repIds = repIds; 58 | return this; 59 | } 60 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/library/service/PullInfoService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.service; 2 | 3 | 4 | import io.tiklab.core.page.Pagination; 5 | import io.tiklab.toolkit.join.annotation.FindAll; 6 | import io.tiklab.toolkit.join.annotation.FindList; 7 | import io.tiklab.toolkit.join.annotation.FindOne; 8 | import io.tiklab.toolkit.join.annotation.JoinProvider; 9 | import io.tiklab.hadess.library.model.PullInfo; 10 | import io.tiklab.hadess.library.model.PullInfoQuery; 11 | 12 | 13 | import javax.validation.Valid; 14 | import javax.validation.constraints.NotNull; 15 | import java.util.List; 16 | 17 | /** 18 | * PullInfoService-制品拉取信息接口 19 | */ 20 | @JoinProvider(model = PullInfo.class) 21 | public interface PullInfoService { 22 | 23 | /** 24 | * 创建 25 | * @param pullInfo 26 | * @return 27 | */ 28 | String createPullInfo(@NotNull @Valid PullInfo pullInfo); 29 | 30 | /** 31 | * 更新 32 | * @param pullInfo 33 | */ 34 | void updatePullInfo(@NotNull @Valid PullInfo pullInfo); 35 | 36 | /** 37 | * 删除 38 | * @param id 39 | */ 40 | void deletePullInfo(@NotNull String id); 41 | 42 | @FindOne 43 | PullInfo findOne(@NotNull String id); 44 | 45 | @FindList 46 | List findList(List idList); 47 | 48 | /** 49 | * 查找 50 | * @param id 51 | * @return 52 | */ 53 | PullInfo findPullInfo(@NotNull String id); 54 | 55 | /** 56 | * 查找所有 57 | * @return 58 | */ 59 | @FindAll 60 | List findAllPullInfo(); 61 | 62 | /** 63 | * 查询列表 64 | * @param pullInfoQuery 65 | * @return 66 | */ 67 | List findPullInfoList(PullInfoQuery pullInfoQuery); 68 | 69 | /** 70 | * 按分页查询 71 | * @param pullInfoQuery 72 | * @return 73 | */ 74 | Pagination findPullInfoPage(PullInfoQuery pullInfoQuery); 75 | 76 | 77 | 78 | 79 | } -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/library/entity/PullInfoEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | import java.sql.Timestamp; 7 | 8 | /** 9 | * LibraryEntity 制品拉取信息实体 10 | */ 11 | @Entity 12 | @Table(name="pack_pull_info") 13 | public class PullInfoEntity extends BaseModel { 14 | 15 | @Id 16 | @GeneratorValue(length = 12) 17 | @Column(name = "id",length = 12) 18 | private String id; 19 | 20 | //制品id 21 | @Column(name = "library_id",length = 12,notNull = true) 22 | private String libraryId; 23 | 24 | //制品版本id 25 | @Column(name = "library_version_id",length = 12,notNull = true) 26 | private String libraryVersionId; 27 | 28 | //拉取人id 29 | @Column(name = "user_id",length = 12) 30 | private String userId; 31 | 32 | @Column(name = "pull_create") 33 | private Timestamp pullCreate; 34 | 35 | 36 | public String getId() { 37 | return id; 38 | } 39 | 40 | public void setId(String id) { 41 | this.id = id; 42 | } 43 | 44 | public String getLibraryId() { 45 | return libraryId; 46 | } 47 | 48 | public void setLibraryId(String libraryId) { 49 | this.libraryId = libraryId; 50 | } 51 | 52 | public String getLibraryVersionId() { 53 | return libraryVersionId; 54 | } 55 | 56 | public void setLibraryVersionId(String libraryVersionId) { 57 | this.libraryVersionId = libraryVersionId; 58 | } 59 | 60 | public String getUserId() { 61 | return userId; 62 | } 63 | 64 | public void setUserId(String userId) { 65 | this.userId = userId; 66 | } 67 | 68 | public Timestamp getPullCreate() { 69 | return pullCreate; 70 | } 71 | 72 | public void setPullCreate(Timestamp pullCreate) { 73 | this.pullCreate = pullCreate; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/library/service/LibraryPypiService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.service; 2 | 3 | 4 | import io.tiklab.core.page.Pagination; 5 | import io.tiklab.hadess.library.model.Library; 6 | import io.tiklab.hadess.library.model.LibraryPypi; 7 | import io.tiklab.hadess.library.model.LibraryPypiQuery; 8 | 9 | import javax.validation.Valid; 10 | import javax.validation.constraints.NotNull; 11 | import java.util.List; 12 | 13 | /** 14 | * LibraryPypiService-Pypi类型制品差异数据接口 15 | */ 16 | public interface LibraryPypiService { 17 | 18 | /** 19 | * 创建 20 | * @param libraryPypi 21 | * @return 22 | */ 23 | String createLibraryPypi(@NotNull @Valid LibraryPypi libraryPypi); 24 | 25 | /** 26 | * 更新 27 | * @param libraryPypi 28 | */ 29 | void updateLibraryPypi(@NotNull @Valid LibraryPypi libraryPypi); 30 | 31 | /** 32 | * 删除 33 | * @param id 34 | */ 35 | void deleteLibraryPypi(@NotNull String id); 36 | 37 | 38 | /** 39 | * 通过条件删除 40 | * @param field 删除条件字段 41 | * @param value 删除字段值 42 | */ 43 | void deleteLibraryPypiByCondition(@NotNull String field ,@NotNull String value); 44 | 45 | 46 | LibraryPypi findOne(@NotNull String id); 47 | 48 | List findList(List idList); 49 | 50 | /** 51 | * 查找 52 | * @param id 53 | * @return 54 | */ 55 | LibraryPypi findLibraryPypi(@NotNull String id); 56 | 57 | /** 58 | * 查找所有 59 | * @return 60 | */ 61 | List findAllLibraryPypi(); 62 | 63 | /** 64 | * 查询列表 65 | * @param libraryPypiQuery 66 | * @return 67 | */ 68 | List findLibraryPypiList(LibraryPypiQuery libraryPypiQuery); 69 | 70 | /** 71 | * 按分页查询 72 | * @param libraryPypiQuery 73 | * @return 74 | */ 75 | Pagination findLibraryPypiPage(LibraryPypiQuery libraryPypiQuery); 76 | 77 | } -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/repository/entity/RepositoryMavenEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | import java.sql.Timestamp; 7 | 8 | /** 9 | * RepositoryMavenEntity-maven制品库多余字段实体 10 | */ 11 | @Entity 12 | @Table(name="pack_repository_maven") 13 | public class RepositoryMavenEntity extends BaseModel { 14 | 15 | @Id 16 | @GeneratorValue(length = 12) 17 | @Column(name = "id",length = 12) 18 | private String id; 19 | 20 | //maven制品库版本 类型 21 | @Column(name = "version",length = 12,notNull = true) 22 | private String version; 23 | 24 | //制品库id 25 | @Column(name = "repository_id",length = 12) 26 | private String repositoryId; 27 | 28 | //是否覆盖 29 | @Column(name = "cover_state") 30 | private Integer coverState; 31 | 32 | 33 | @Column(name = "create_time") 34 | private Timestamp createTime; 35 | 36 | public String getId() { 37 | return id; 38 | } 39 | 40 | public void setId(String id) { 41 | this.id = id; 42 | } 43 | 44 | public String getVersion() { 45 | return version; 46 | } 47 | 48 | public void setVersion(String version) { 49 | this.version = version; 50 | } 51 | 52 | public String getRepositoryId() { 53 | return repositoryId; 54 | } 55 | 56 | public void setRepositoryId(String repositoryId) { 57 | this.repositoryId = repositoryId; 58 | } 59 | 60 | public Timestamp getCreateTime() { 61 | return createTime; 62 | } 63 | 64 | public void setCreateTime(Timestamp createTime) { 65 | this.createTime = createTime; 66 | } 67 | 68 | public Integer getCoverState() { 69 | return coverState; 70 | } 71 | 72 | public void setCoverState(Integer coverState) { 73 | this.coverState = coverState; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/service/ThirdPathService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.service; 2 | 3 | 4 | import io.tiklab.core.page.Pagination; 5 | import io.tiklab.hadess.repository.model.ThirdPath; 6 | import io.tiklab.hadess.repository.model.ThirdPathQuery; 7 | import io.tiklab.toolkit.join.annotation.FindAll; 8 | import io.tiklab.toolkit.join.annotation.FindList; 9 | import io.tiklab.toolkit.join.annotation.FindOne; 10 | import io.tiklab.toolkit.join.annotation.JoinProvider; 11 | 12 | import javax.validation.Valid; 13 | import javax.validation.constraints.NotNull; 14 | import java.util.List; 15 | 16 | /** 17 | * ThirdPathService-第三方集成地址 18 | */ 19 | @JoinProvider(model = ThirdPath.class) 20 | public interface ThirdPathService { 21 | 22 | /** 23 | * 创建 24 | * @param thirdPath 25 | * @return 26 | */ 27 | String createThirdPath(@NotNull @Valid ThirdPath thirdPath); 28 | 29 | /** 30 | * 更新 31 | * @param thirdPath 32 | */ 33 | void updateThirdPath(@NotNull @Valid ThirdPath thirdPath); 34 | 35 | /** 36 | * 删除 37 | * @param id 38 | */ 39 | void deleteThirdPath(@NotNull String id); 40 | 41 | @FindOne 42 | ThirdPath findOne(@NotNull String id); 43 | 44 | @FindList 45 | List findList(List idList); 46 | 47 | /** 48 | * 查找 49 | * @param id 50 | * @return 51 | */ 52 | ThirdPath findThirdPath(@NotNull String id); 53 | 54 | /** 55 | * 查找所有 56 | * @return 57 | */ 58 | @FindAll 59 | List findAllThirdPath(); 60 | 61 | /** 62 | * 查询列表 63 | * @param thirdPathQuery 64 | * @return 65 | */ 66 | List findThirdPathList(ThirdPathQuery thirdPathQuery); 67 | 68 | /** 69 | * 按分页查询 70 | * @param thirdPathQuery 71 | * @return 72 | */ 73 | Pagination findThirdPathPage(ThirdPathQuery thirdPathQuery); 74 | 75 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/service/RepositoryClusterCfgService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.service; 2 | 3 | 4 | import io.tiklab.hadess.repository.model.RepositoryClusterCfg; 5 | import io.tiklab.hadess.repository.model.RepositoryClusterCfgQuery; 6 | import io.tiklab.core.page.Pagination; 7 | 8 | import javax.validation.Valid; 9 | import javax.validation.constraints.NotNull; 10 | import java.util.List; 11 | 12 | /** 13 | * RepositoryClusterCfgService-制品库复制接口 14 | */ 15 | public interface RepositoryClusterCfgService { 16 | 17 | /** 18 | * 创建 19 | * @param repositoryClusterCfg 20 | * @return 21 | */ 22 | String createRepositoryClusterCfg(@NotNull @Valid RepositoryClusterCfg repositoryClusterCfg); 23 | 24 | /** 25 | * 更新 26 | * @param repositoryClusterCfg 27 | */ 28 | void updateRepositoryClusterCfg(@NotNull @Valid RepositoryClusterCfg repositoryClusterCfg); 29 | 30 | /** 31 | * 删除 32 | * @param id 33 | */ 34 | void deleteRepositoryClusterCfg(@NotNull String id); 35 | 36 | RepositoryClusterCfg findOne(@NotNull String id); 37 | 38 | List findList(List idList); 39 | 40 | /** 41 | * 查找 42 | * @param id 43 | * @return 44 | */ 45 | RepositoryClusterCfg findRepositoryClusterCfg(@NotNull String id); 46 | 47 | /** 48 | * 查找所有 49 | * @return 50 | */ 51 | List findAllRepositoryClusterCfg(); 52 | 53 | /** 54 | * 查询列表 55 | * @param repositoryClusterCfgQuery 56 | * @return 57 | */ 58 | List findRepositoryClusterCfgList(RepositoryClusterCfgQuery repositoryClusterCfgQuery); 59 | 60 | /** 61 | * 按分页查询 62 | * @param repositoryClusterCfgQuery 63 | * @return 64 | */ 65 | Pagination findRepositoryClusterCfgPage(RepositoryClusterCfgQuery repositoryClusterCfgQuery); 66 | 67 | } -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/leadIn/controller/LeanInLibraryController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.leadIn.controller; 2 | 3 | 4 | import io.tiklab.core.Result; 5 | import io.tiklab.hadess.leadIn.model.LeadInQuery; 6 | import io.tiklab.hadess.leadIn.service.LeadInLibraryService; 7 | import io.tiklab.hadess.library.model.Library; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.web.bind.annotation.RequestBody; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | import org.springframework.web.bind.annotation.RestController; 13 | 14 | import javax.validation.Valid; 15 | import javax.validation.constraints.NotNull; 16 | import java.util.LinkedHashMap; 17 | import java.util.List; 18 | 19 | @RestController 20 | @RequestMapping("/leanInLibrary") 21 | public class LeanInLibraryController { 22 | 23 | @Autowired 24 | LeadInLibraryService leadInLibraryService; 25 | 26 | 27 | @RequestMapping(path="/findRepository",method = RequestMethod.POST) 28 | public Result findLibrary(@RequestBody @NotNull @Valid LeadInQuery leadInQuery){ 29 | List repositoryList = leadInLibraryService.findRepositoryList(leadInQuery); 30 | 31 | return Result.ok(repositoryList); 32 | } 33 | 34 | @RequestMapping(path="/leadInRepLibrary",method = RequestMethod.POST) 35 | public Result leadInRepLibrary(@RequestBody @NotNull @Valid LeadInQuery leadInQuery){ 36 | leadInLibraryService.leadInRepLibrary(leadInQuery); 37 | 38 | return Result.ok(); 39 | } 40 | 41 | @RequestMapping(path="/findLeadInState",method = RequestMethod.POST) 42 | public Result findLeadInState( @NotNull String targetRepId){ 43 | Boolean stata=leadInLibraryService.findLeadInState(targetRepId); 44 | 45 | return Result.ok(stata); 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/repository/entity/XpackBackupsEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.entity; 2 | 3 | import io.tiklab.dal.jpa.annotation.*; 4 | 5 | @Entity 6 | @Table(name="pack_backups") 7 | public class XpackBackupsEntity { 8 | 9 | @Id 10 | @GeneratorValue(length=12) 11 | @Column(name = "id") 12 | private String id; 13 | 14 | //定时状态 开启open 关闭:close 15 | @Column(name = "task_state") 16 | private String taskState; 17 | 18 | 19 | //最后执行的结果 20 | @Column(name = "exec_result") 21 | private String execResult; 22 | 23 | //最近执行时间 24 | @Column(name = "exec_time") 25 | private String execTime; 26 | 27 | //执行状态 28 | @Column(name = "exec_state") 29 | private String execState; 30 | 31 | 32 | //日志 33 | @Column(name = "log") 34 | private String log; 35 | 36 | 37 | 38 | public String getId() { 39 | return id; 40 | } 41 | 42 | public void setId(String id) { 43 | this.id = id; 44 | } 45 | 46 | public String getTaskState() { 47 | return taskState; 48 | } 49 | 50 | public void setTaskState(String taskState) { 51 | this.taskState = taskState; 52 | } 53 | 54 | public String getExecResult() { 55 | return execResult; 56 | } 57 | 58 | public void setExecResult(String execResult) { 59 | this.execResult = execResult; 60 | } 61 | 62 | public String getExecTime() { 63 | return execTime; 64 | } 65 | 66 | public void setExecTime(String execTime) { 67 | this.execTime = execTime; 68 | } 69 | 70 | public String getExecState() { 71 | return execState; 72 | } 73 | 74 | public void setExecState(String execState) { 75 | this.execState = execState; 76 | } 77 | 78 | public String getLog() { 79 | return log; 80 | } 81 | 82 | public void setLog(String log) { 83 | this.log = log; 84 | } 85 | 86 | } 87 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/pushcentral/model/PushOperation.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.pushcentral.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import io.tiklab.core.BaseModel; 5 | import io.tiklab.postin.annotation.ApiModel; 6 | import io.tiklab.postin.annotation.ApiProperty; 7 | 8 | import java.sql.Timestamp; 9 | 10 | /** 11 | * PushOperation-推送 12 | */ 13 | @ApiModel 14 | public class PushOperation extends BaseModel { 15 | 16 | @ApiProperty(name="log",desc="日志") 17 | private String log; 18 | 19 | @ApiProperty(name="pushResult",desc="推送结果 success、fail") 20 | private String pushResult; 21 | 22 | @ApiProperty(name="resultKey",desc="存储结果的key pushGroupId、loginId") 23 | private String resultKey; 24 | 25 | @ApiProperty(name="pushTimeLong",desc="推送时长") 26 | private String pushTimeLong; 27 | 28 | @ApiProperty(name="startTime",desc="开始时间") 29 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8") 30 | private Timestamp startTime; 31 | 32 | public String getLog() { 33 | return log; 34 | } 35 | 36 | public void setLog(String log) { 37 | this.log = log; 38 | } 39 | 40 | public String getPushResult() { 41 | return pushResult; 42 | } 43 | 44 | public void setPushResult(String pushResult) { 45 | this.pushResult = pushResult; 46 | } 47 | 48 | public String getResultKey() { 49 | return resultKey; 50 | } 51 | 52 | public void setResultKey(String resultKey) { 53 | this.resultKey = resultKey; 54 | } 55 | 56 | public String getPushTimeLong() { 57 | return pushTimeLong; 58 | } 59 | 60 | public void setPushTimeLong(String pushTimeLong) { 61 | this.pushTimeLong = pushTimeLong; 62 | } 63 | 64 | public Timestamp getStartTime() { 65 | return startTime; 66 | } 67 | 68 | public void setStartTime(Timestamp startTime) { 69 | this.startTime = startTime; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/upload/service/DockerUploadService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.service; 2 | 3 | import io.tiklab.core.Result; 4 | 5 | import javax.servlet.http.HttpServletResponse; 6 | import java.io.IOException; 7 | import java.io.InputStream; 8 | import java.security.NoSuchAlgorithmException; 9 | import java.util.Map; 10 | 11 | public interface DockerUploadService { 12 | /** 13 | * 用户校验 14 | * @param authorization 用户信息 15 | */ 16 | Result userCheck(String authorization); 17 | 18 | /** 19 | * 推送-校验Sha256 。存在则直接返回文件大小 20 | * @param repositoryPath 路径 21 | */ 22 | Result v2Sha256Check(String repositoryPath) throws Exception; 23 | 24 | /** 25 | * 推送-文件上传 26 | * @param inputStream 文件流 27 | */ 28 | Result uploadData(InputStream inputStream, String repositoryPath) throws Exception; 29 | 30 | /** 31 | * 推送-创建会话 判断制品库是否存在 32 | * @param repositoryPath repositoryPath 33 | */ 34 | Result createSession(String repositoryPath); 35 | 36 | /** 37 | * 推送-创建文件 38 | * @param digest 文件名 39 | * @param repositoryPath 客户端请求路径 40 | */ 41 | String createFile(String digest,String repositoryPath) throws IOException; 42 | 43 | /** 44 | * 推送-创建Manifests、tag(版本)信息 45 | * @param inputStream 文件流 46 | * @param authorization 用户信息 47 | */ 48 | String createManifests(InputStream inputStream, String repositoryPath,String authorization) throws IOException, NoSuchAlgorithmException; 49 | 50 | 51 | /** 52 | * 拉取docker-获取manifests镜像校验数据 53 | * @param repositoryPath 54 | */ 55 | Map downloadManifests(String repositoryPath,String userAgent); 56 | 57 | 58 | /** 59 | * 拉取docker-读取manifests、blobs镜像数据。这一步是已经校验了manifests数据后执行 60 | * @param repositoryPath 客户端请求路径 61 | */ 62 | void downloadMirroringData(HttpServletResponse response,String repositoryPath) throws IOException; 63 | 64 | 65 | } 66 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/library/model/PullInfoQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.io.Serializable; 11 | import java.util.List; 12 | 13 | @ApiModel 14 | public class PullInfoQuery implements Serializable { 15 | 16 | @ApiProperty(name ="orderParams",desc = "排序参数") 17 | private List orderParams = OrderBuilders.instance().desc("pullCreate").get(); 18 | 19 | @ApiProperty(name ="pageParam",desc = "分页参数") 20 | private Page pageParam = new Page(); 21 | 22 | @ApiProperty(name ="libraryVersionId",desc = "制品版本id") 23 | private String libraryVersionId; 24 | 25 | @ApiProperty(name ="libraryId",desc = "制品id") 26 | private String libraryId; 27 | 28 | 29 | 30 | public List getOrderParams() { 31 | return orderParams; 32 | } 33 | 34 | public void setOrderParams(List orderParams) { 35 | this.orderParams = orderParams; 36 | } 37 | 38 | public Page getPageParam() { 39 | return pageParam; 40 | } 41 | 42 | public void setPageParam(Page pageParam) { 43 | this.pageParam = pageParam; 44 | } 45 | 46 | 47 | public String getLibraryId() { 48 | return libraryId; 49 | } 50 | 51 | public PullInfoQuery setLibraryId(String libraryId) { 52 | this.libraryId = libraryId; 53 | return this; 54 | } 55 | 56 | public String getLibraryVersionId() { 57 | return libraryVersionId; 58 | } 59 | 60 | public PullInfoQuery setLibraryVersionId(String libraryVersionId) { 61 | this.libraryVersionId = libraryVersionId; 62 | return this; 63 | } 64 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/library/service/LibraryComposerService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.service; 2 | 3 | 4 | import io.tiklab.core.page.Pagination; 5 | import io.tiklab.hadess.library.model.LibraryComposer; 6 | import io.tiklab.hadess.library.model.LibraryComposerQuery; 7 | 8 | import javax.validation.Valid; 9 | import javax.validation.constraints.NotNull; 10 | import java.util.List; 11 | 12 | /** 13 | * LibraryComposerService-Composer类型制品差异数据接口 14 | */ 15 | public interface LibraryComposerService { 16 | 17 | /** 18 | * 创建 19 | * @param libraryComposer 20 | * @return 21 | */ 22 | String createLibraryComposer(@NotNull @Valid LibraryComposer libraryComposer); 23 | 24 | /** 25 | * 更新 26 | * @param libraryComposer 27 | */ 28 | void updateLibraryComposer(@NotNull @Valid LibraryComposer libraryComposer); 29 | 30 | /** 31 | * 删除 32 | * @param id 33 | */ 34 | void deleteLibraryComposer(@NotNull String id); 35 | 36 | 37 | /** 38 | * 通过条件删除 39 | * @param field 删除条件字段 40 | * @param value 删除字段值 41 | */ 42 | void deleteLibraryComposerByCondition(@NotNull String field ,@NotNull String value); 43 | 44 | 45 | LibraryComposer findOne(@NotNull String id); 46 | 47 | List findList(List idList); 48 | 49 | /** 50 | * 查找 51 | * @param id 52 | * @return 53 | */ 54 | LibraryComposer findLibraryComposer(@NotNull String id); 55 | 56 | /** 57 | * 查找所有 58 | * @return 59 | */ 60 | List findAllLibraryComposer(); 61 | 62 | /** 63 | * 查询列表 64 | * @param libraryComposerQuery 65 | * @return 66 | */ 67 | List findLibraryComposerList(LibraryComposerQuery libraryComposerQuery); 68 | 69 | /** 70 | * 按分页查询 71 | * @param libraryComposerQuery 72 | * @return 73 | */ 74 | Pagination findLibraryComposerPage(LibraryComposerQuery libraryComposerQuery); 75 | 76 | } -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/controller/GenericUploadController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.controller; 2 | 3 | import io.tiklab.core.Result; 4 | import io.tiklab.hadess.common.XpackYamlDataMaService; 5 | import io.tiklab.hadess.repository.service.RepositoryService; 6 | import io.tiklab.hadess.upload.common.response.GenericResponse; 7 | import io.tiklab.hadess.upload.service.GenericUploadService; 8 | import org.apache.commons.lang.StringUtils; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | 11 | import javax.servlet.ServletException; 12 | import javax.servlet.annotation.WebInitParam; 13 | import javax.servlet.annotation.WebServlet; 14 | import javax.servlet.http.HttpServlet; 15 | import javax.servlet.http.HttpServletRequest; 16 | import javax.servlet.http.HttpServletResponse; 17 | import java.io.IOException; 18 | import java.io.InputStream; 19 | import java.util.Base64; 20 | 21 | @WebServlet(name = "genericServlet",urlPatterns = {"/generic/*"}, 22 | initParams = { 23 | @WebInitParam(name = "base-path", value = "//"), 24 | @WebInitParam(name = "export-all", value = "true") 25 | } 26 | ) 27 | public class GenericUploadController extends HttpServlet { 28 | 29 | 30 | @Autowired 31 | RepositoryService repositoryService; 32 | 33 | @Autowired 34 | GenericUploadService genericUploadService; 35 | 36 | @Autowired 37 | XpackYamlDataMaService yamlDataMaService; 38 | 39 | @Override 40 | protected void doGet(HttpServletRequest request, HttpServletResponse response) { 41 | String contextPath = request.getRequestURI(); 42 | String methodType = request.getHeader("type"); 43 | 44 | genericUploadService.GenericDownload(request,response); 45 | 46 | } 47 | 48 | 49 | @Override 50 | protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 51 | genericUploadService.GenericUpload(req,resp); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/repository/entity/RepositoryGroupEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | import java.sql.Timestamp; 7 | 8 | /** 9 | * RepositoryGroupEntity-组合库关联实体 10 | */ 11 | @Entity 12 | @Table(name="pack_repository_group_items") 13 | public class RepositoryGroupEntity extends BaseModel { 14 | 15 | @Id 16 | @GeneratorValue(length = 12) 17 | @Column(name = "id",length = 12) 18 | private String id; 19 | 20 | //组合库id 21 | @Column(name = "repository_group_id",length = 12,notNull = true) 22 | private String repositoryGroupId; 23 | 24 | //关联库id 25 | @Column(name = "repository_id",length = 12,notNull = true) 26 | private String repositoryId; 27 | 28 | //创建时间 29 | @Column(name = "create_time") 30 | private Timestamp createTime; 31 | 32 | @Column(name = "update_time") 33 | private Timestamp updateTime; 34 | 35 | public String getId() { 36 | return id; 37 | } 38 | 39 | public void setId(String id) { 40 | this.id = id; 41 | } 42 | 43 | public String getRepositoryGroupId() { 44 | return repositoryGroupId; 45 | } 46 | 47 | public void setRepositoryGroupId(String repositoryGroupId) { 48 | this.repositoryGroupId = repositoryGroupId; 49 | } 50 | 51 | public String getRepositoryId() { 52 | return repositoryId; 53 | } 54 | 55 | public void setRepositoryId(String repositoryId) { 56 | this.repositoryId = repositoryId; 57 | } 58 | 59 | public Timestamp getCreateTime() { 60 | return createTime; 61 | } 62 | 63 | public void setCreateTime(Timestamp createTime) { 64 | this.createTime = createTime; 65 | } 66 | 67 | public Timestamp getUpdateTime() { 68 | return updateTime; 69 | } 70 | 71 | public void setUpdateTime(Timestamp updateTime) { 72 | this.updateTime = updateTime; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/RepositoryRemoteProxyQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.io.Serializable; 11 | import java.util.List; 12 | 13 | @ApiModel 14 | public class RepositoryRemoteProxyQuery implements Serializable { 15 | 16 | @ApiProperty(name ="orderParams",desc = "排序参数") 17 | private List orderParams = OrderBuilders.instance().asc("id").get(); 18 | 19 | @ApiProperty(name ="pageParam",desc = "分页参数") 20 | private Page pageParam = new Page(); 21 | 22 | @ApiProperty(name ="repositoryId",desc = "制品库id") 23 | private String repositoryId; 24 | 25 | @ApiProperty(name ="remoteProxyId",desc = "代理地址id") 26 | private String remoteProxyId; 27 | 28 | public List getOrderParams() { 29 | return orderParams; 30 | } 31 | 32 | public void setOrderParams(List orderParams) { 33 | this.orderParams = orderParams; 34 | } 35 | 36 | public Page getPageParam() { 37 | return pageParam; 38 | } 39 | 40 | public void setPageParam(Page pageParam) { 41 | this.pageParam = pageParam; 42 | } 43 | 44 | public String getRepositoryId() { 45 | return repositoryId; 46 | } 47 | 48 | public RepositoryRemoteProxyQuery setRepositoryId(String repositoryId) { 49 | this.repositoryId = repositoryId; 50 | return this; 51 | } 52 | 53 | public String getRemoteProxyId() { 54 | return remoteProxyId; 55 | } 56 | 57 | public RepositoryRemoteProxyQuery setRemoteProxyId(String remoteProxyId) { 58 | this.remoteProxyId = remoteProxyId; 59 | return this; 60 | } 61 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/service/NetworkProxyService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.service; 2 | 3 | 4 | import io.tiklab.core.page.Pagination; 5 | import io.tiklab.hadess.repository.model.NetworkProxy; 6 | import io.tiklab.hadess.repository.model.NetworkProxyQuery; 7 | import io.tiklab.toolkit.join.annotation.FindAll; 8 | import io.tiklab.toolkit.join.annotation.FindList; 9 | import io.tiklab.toolkit.join.annotation.FindOne; 10 | import io.tiklab.toolkit.join.annotation.JoinProvider; 11 | 12 | import javax.validation.Valid; 13 | import javax.validation.constraints.NotNull; 14 | import java.util.List; 15 | 16 | /** 17 | * NetworkProxyService-网络代理地址接口 18 | */ 19 | @JoinProvider(model = NetworkProxy.class) 20 | public interface NetworkProxyService { 21 | 22 | /** 23 | * 创建 24 | * @param networkProxy 25 | * @return 26 | */ 27 | String createNetworkProxy(@NotNull @Valid NetworkProxy networkProxy); 28 | 29 | /** 30 | * 更新 31 | * @param networkProxy 32 | */ 33 | void updateNetworkProxy(@NotNull @Valid NetworkProxy networkProxy); 34 | 35 | /** 36 | * 删除 37 | * @param id 38 | */ 39 | void deleteNetworkProxy(@NotNull String id); 40 | 41 | @FindOne 42 | NetworkProxy findOne(@NotNull String id); 43 | 44 | @FindList 45 | List findList(List idList); 46 | 47 | /** 48 | * 查找 49 | * @param id 50 | * @return 51 | */ 52 | NetworkProxy findNetworkProxy(@NotNull String id); 53 | 54 | /** 55 | * 查找所有 56 | * @return 57 | */ 58 | @FindAll 59 | List findAllNetworkProxy(); 60 | 61 | /** 62 | * 查询列表 63 | * @param networkProxyQuery 64 | * @return 65 | */ 66 | List findNetworkProxyList(NetworkProxyQuery networkProxyQuery); 67 | 68 | /** 69 | * 按分页查询 70 | * @param networkProxyQuery 71 | * @return 72 | */ 73 | Pagination findNetworkProxyPage(NetworkProxyQuery networkProxyQuery); 74 | 75 | 76 | } -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/controller/PypiUploadController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.controller; 2 | 3 | import io.tiklab.hadess.upload.service.PypiUploadService; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | 8 | import javax.servlet.ServletException; 9 | import javax.servlet.annotation.WebInitParam; 10 | import javax.servlet.annotation.WebServlet; 11 | import javax.servlet.http.HttpServlet; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.io.IOException; 15 | 16 | @WebServlet(name = "pypiServlet",urlPatterns = {"/pypi/*"}, 17 | initParams = { 18 | @WebInitParam(name = "base-path", value = "//"), 19 | @WebInitParam(name = "export-all", value = "true") 20 | } 21 | ) 22 | public class PypiUploadController extends HttpServlet { 23 | private static Logger logger = LoggerFactory.getLogger(PypiUploadController.class); 24 | 25 | @Autowired 26 | PypiUploadService pypiUploadService; 27 | 28 | @Override 29 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 30 | String contextPath = request.getRequestURI(); 31 | logger.info("pypi拉取请求路径:"+contextPath); 32 | if (contextPath.contains("packages")){ 33 | //下载包文件 34 | pypiUploadService.downloadPackages(contextPath,response); 35 | }else { 36 | //下载元数据 37 | pypiUploadService.downloadMetadata(request,response); 38 | } 39 | } 40 | 41 | 42 | @Override 43 | protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 44 | doGet(req, resp); 45 | } 46 | 47 | 48 | @Override 49 | protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 50 | //上传 51 | pypiUploadService.UploadData(req,resp); 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/xprivilege_1.0.1.sql: -------------------------------------------------------------------------------- 1 | -- --------------------------- 2 | -- 日志类型 3 | -- ---------------------------- 4 | INSERT INTO pcs_op_log_type (id, name, bgroup) VALUES ('HDS_CREATE', '创建制品库', 'hadess'); 5 | INSERT INTO pcs_op_log_type (id, name, bgroup) VALUES ('HDS_UPDATE', '更新制品库', 'hadess'); 6 | INSERT INTO pcs_op_log_type (id, name, bgroup) VALUES ('HDS_DELETE', '删除制品库', 'hadess'); 7 | 8 | 9 | 10 | -- --------------------------- 11 | -- 消息类型 12 | -- ---------------------------- 13 | INSERT INTO pcs_mec_message_type (id, name, description, bgroup) VALUES ('HDS_CREATE', '创建制品库', '制品库创建消息', 'hadess'); 14 | INSERT INTO pcs_mec_message_type (id, name, description, bgroup) VALUES ('HDS_UPDATE', '更新制品库', '制品库更新消息', 'hadess'); 15 | INSERT INTO pcs_mec_message_type (id, name, description, bgroup) VALUES ('HDS_DELETE', '删除制品库', '制品库删除消息', 'hadess'); 16 | 17 | 18 | -- --------------------------- 19 | -- 发送消息途径 20 | -- ---------------------------- 21 | INSERT INTO pcs_mec_message_notice (id, message_type_id, type, bgroup, message_send_type_id) VALUES ('HDS_CREATE', 'HDS_CREATE', 1, 'hadess', 'site'); 22 | INSERT INTO pcs_mec_message_notice (id, message_type_id, type, bgroup, message_send_type_id) VALUES ('HDS_UPDATE', 'HDS_UPDATE', 1, 'hadess', 'site'); 23 | INSERT INTO pcs_mec_message_notice (id, message_type_id, type, bgroup, message_send_type_id) VALUES ('HDS_DELETE', 'HDS_DELETE', 1, 'hadess', 'site'); 24 | 25 | 26 | 27 | -- --------------------------- 28 | -- 发送消息模版 29 | -- ---------------------------- 30 | INSERT INTO pcs_mec_message_template (id, msg_type_id, msg_send_type_id, title, content,link,bgroup,link_params) VALUES ('HDS_CREATE', 'HDS_CREATE', 'site', '创建制品库', '创建制品库',null,'hadess',null); 31 | INSERT INTO pcs_mec_message_template (id, msg_type_id, msg_send_type_id, title, content,link,bgroup,link_params) VALUES ('HDS_UPDATE', 'HDS_UPDATE', 'site', '更新制品库', '更新制品库',null,'hadess',null); 32 | INSERT INTO pcs_mec_message_template (id, msg_type_id, msg_send_type_id, title, content,link,bgroup,link_params) VALUES ('HDS_DELETE', 'HDS_DELETE', 'site', '删除制品库', '删除制品库',null,'hadess',null); 33 | 34 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/xprivilege_1.0.1.sql: -------------------------------------------------------------------------------- 1 | -- --------------------------- 2 | -- 日志类型 3 | -- ---------------------------- 4 | INSERT INTO pcs_op_log_type (id, name, bgroup) VALUES ('HDS_CREATE', '创建制品库', 'hadess'); 5 | INSERT INTO pcs_op_log_type (id, name, bgroup) VALUES ('HDS_UPDATE', '更新制品库', 'hadess'); 6 | INSERT INTO pcs_op_log_type (id, name, bgroup) VALUES ('HDS_DELETE', '删除制品库', 'hadess'); 7 | 8 | 9 | 10 | -- --------------------------- 11 | -- 消息类型 12 | -- ---------------------------- 13 | INSERT INTO pcs_mec_message_type (id, name, description, bgroup) VALUES ('HDS_CREATE', '创建制品库', '制品库创建消息', 'hadess'); 14 | INSERT INTO pcs_mec_message_type (id, name, description, bgroup) VALUES ('HDS_UPDATE', '更新制品库', '制品库更新消息', 'hadess'); 15 | INSERT INTO pcs_mec_message_type (id, name, description, bgroup) VALUES ('HDS_DELETE', '删除制品库', '制品库删除消息', 'hadess'); 16 | 17 | 18 | -- --------------------------- 19 | -- 发送消息途径 20 | -- ---------------------------- 21 | INSERT INTO pcs_mec_message_notice (id, message_type_id, type, bgroup, message_send_type_id) VALUES ('HDS_CREATE', 'HDS_CREATE', 1, 'hadess', 'site'); 22 | INSERT INTO pcs_mec_message_notice (id, message_type_id, type, bgroup, message_send_type_id) VALUES ('HDS_UPDATE', 'HDS_UPDATE', 1, 'hadess', 'site'); 23 | INSERT INTO pcs_mec_message_notice (id, message_type_id, type, bgroup, message_send_type_id) VALUES ('HDS_DELETE', 'HDS_DELETE', 1, 'hadess', 'site'); 24 | 25 | 26 | 27 | -- --------------------------- 28 | -- 发送消息模版 29 | -- ---------------------------- 30 | INSERT INTO pcs_mec_message_template (id, msg_type_id, msg_send_type_id, title, content,link,bgroup,link_params) VALUES ('HDS_CREATE', 'HDS_CREATE', 'site', '创建制品库', '创建制品库',null,'hadess',null); 31 | INSERT INTO pcs_mec_message_template (id, msg_type_id, msg_send_type_id, title, content,link,bgroup,link_params) VALUES ('HDS_UPDATE', 'HDS_UPDATE', 'site', '更新制品库', '更新制品库',null,'hadess',null); 32 | INSERT INTO pcs_mec_message_template (id, msg_type_id, msg_send_type_id, title, content,link,bgroup,link_params) VALUES ('HDS_DELETE', 'HDS_DELETE', 'site', '删除制品库', '删除制品库',null,'hadess',null); 33 | 34 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/controller/ComposerUploadController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.controller; 2 | 3 | import io.tiklab.hadess.upload.service.ComposerUploadService; 4 | import io.tiklab.hadess.upload.service.PypiUploadService; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | 9 | import javax.servlet.ServletException; 10 | import javax.servlet.annotation.WebInitParam; 11 | import javax.servlet.annotation.WebServlet; 12 | import javax.servlet.http.HttpServlet; 13 | import javax.servlet.http.HttpServletRequest; 14 | import javax.servlet.http.HttpServletResponse; 15 | import java.io.IOException; 16 | import java.util.Enumeration; 17 | 18 | @WebServlet(name = "ComposerServlet",urlPatterns = {"/composer/*"}, 19 | initParams = { 20 | @WebInitParam(name = "base-path", value = "//"), 21 | @WebInitParam(name = "export-all", value = "true") 22 | } 23 | ) 24 | public class ComposerUploadController extends HttpServlet { 25 | 26 | private static Logger logger = LoggerFactory.getLogger(ComposerUploadController.class); 27 | 28 | @Autowired 29 | ComposerUploadService composerUploadService; 30 | 31 | @Override 32 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 33 | logger.info("composer download json path:"+request.getRequestURI()); 34 | composerUploadService.downloadJsonData(request,response); 35 | } 36 | 37 | 38 | @Override 39 | protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 40 | logger.info("composer upload path:"+req.getRequestURI()); 41 | composerUploadService.uploadPackage(req,resp); 42 | } 43 | 44 | 45 | @Override 46 | protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 47 | doGet(req, resp); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/repository/entity/StorageEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | import java.sql.Timestamp; 7 | 8 | /** 9 | * StorageEntity-存储库实体 10 | */ 11 | @Entity 12 | @Table(name="pack_storage") 13 | public class StorageEntity extends BaseModel { 14 | 15 | @Id 16 | @GeneratorValue(length = 12) 17 | @Column(name = "id",length = 12) 18 | private String id; 19 | 20 | //存储库名称 21 | @Column(name = "name",length = 128,notNull = true) 22 | private String name; 23 | 24 | //总大小 25 | @Column(name = "all_size",length = 12) 26 | private String allSize; 27 | 28 | //剩余大小 29 | @Column(name = "residue_size",length = 12) 30 | private String residueSize; 31 | 32 | //创建时间 33 | @Column(name = "create_time") 34 | private Timestamp createTime; 35 | 36 | @Column(name = "update_time") 37 | private Timestamp updateTime; 38 | 39 | 40 | public String getId() { 41 | return id; 42 | } 43 | 44 | public void setId(String id) { 45 | this.id = id; 46 | } 47 | 48 | public String getName() { 49 | return name; 50 | } 51 | 52 | public void setName(String name) { 53 | this.name = name; 54 | } 55 | 56 | public String getAllSize() { 57 | return allSize; 58 | } 59 | 60 | public void setAllSize(String allSize) { 61 | this.allSize = allSize; 62 | } 63 | 64 | public String getResidueSize() { 65 | return residueSize; 66 | } 67 | 68 | public void setResidueSize(String residueSize) { 69 | this.residueSize = residueSize; 70 | } 71 | 72 | public Timestamp getCreateTime() { 73 | return createTime; 74 | } 75 | 76 | public void setCreateTime(Timestamp createTime) { 77 | this.createTime = createTime; 78 | } 79 | 80 | public Timestamp getUpdateTime() { 81 | return updateTime; 82 | } 83 | 84 | public void setUpdateTime(Timestamp updateTime) { 85 | this.updateTime = updateTime; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/repository/entity/NetworkProxyEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | import java.sql.Timestamp; 7 | 8 | /** 9 | * RemoteProxyEntity-网络代理地址 10 | */ 11 | @Entity 12 | @Table(name="pack_repository_network_proxy") 13 | public class NetworkProxyEntity extends BaseModel { 14 | 15 | @Id 16 | @GeneratorValue(length = 12) 17 | @Column(name = "id",length = 12) 18 | private String id; 19 | 20 | //地址 21 | @Column(name = "address",length = 128,notNull = true) 22 | private String address; 23 | 24 | //端口 25 | @Column(name = "port",notNull = true) 26 | private Integer port; 27 | 28 | //描述 29 | @Column(name = "description",length = 128) 30 | private String description; 31 | 32 | 33 | //启用 34 | @Column(name = "enable") 35 | private Integer enable; 36 | 37 | //创建时间 38 | @Column(name = "create_time") 39 | private Timestamp createTime; 40 | 41 | 42 | public String getId() { 43 | return id; 44 | } 45 | 46 | public void setId(String id) { 47 | this.id = id; 48 | } 49 | 50 | public String getAddress() { 51 | return address; 52 | } 53 | 54 | public void setAddress(String address) { 55 | this.address = address; 56 | } 57 | 58 | public Integer getPort() { 59 | return port; 60 | } 61 | 62 | public void setPort(Integer port) { 63 | this.port = port; 64 | } 65 | 66 | public String getDescription() { 67 | return description; 68 | } 69 | 70 | public void setDescription(String description) { 71 | this.description = description; 72 | } 73 | 74 | public Integer getEnable() { 75 | return enable; 76 | } 77 | 78 | public void setEnable(Integer enable) { 79 | this.enable = enable; 80 | } 81 | 82 | public Timestamp getCreateTime() { 83 | return createTime; 84 | } 85 | 86 | public void setCreateTime(Timestamp createTime) { 87 | this.createTime = createTime; 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/pushcentral/service/PushGroupService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.pushcentral.service; 2 | 3 | 4 | import io.tiklab.core.page.Pagination; 5 | import io.tiklab.hadess.pushcentral.model.PushGroup; 6 | import io.tiklab.hadess.pushcentral.model.PushGroupQuery; 7 | import io.tiklab.toolkit.join.annotation.FindAll; 8 | import io.tiklab.toolkit.join.annotation.FindList; 9 | import io.tiklab.toolkit.join.annotation.FindOne; 10 | import io.tiklab.toolkit.join.annotation.JoinProvider; 11 | 12 | import javax.validation.Valid; 13 | import javax.validation.constraints.NotNull; 14 | import java.util.List; 15 | 16 | /** 17 | * PushGroupService-推送组接口 18 | */ 19 | @JoinProvider(model = PushGroup.class) 20 | public interface PushGroupService { 21 | 22 | /** 23 | * 创建 24 | * @param pushGroup 25 | * @return 26 | */ 27 | String createPushGroup(@NotNull @Valid PushGroup pushGroup); 28 | 29 | 30 | 31 | /** 32 | * 更新 33 | * @param pushGroup 34 | */ 35 | void updatePushGroup(@NotNull @Valid PushGroup pushGroup); 36 | 37 | /** 38 | * 删除 39 | * @param id 40 | */ 41 | void deletePushGroup(@NotNull String id); 42 | 43 | /** 44 | * 条件删除 45 | * @param field 根据删除的字段 46 | * @param value value 47 | * @return 48 | */ 49 | void deleteVersionByCondition(String field, String value); 50 | 51 | @FindOne 52 | PushGroup findOne(@NotNull String id); 53 | 54 | @FindList 55 | List findList(List idList); 56 | 57 | /** 58 | * 查找 59 | * @param id 60 | * @return 61 | */ 62 | PushGroup findPushGroup(@NotNull String id); 63 | 64 | /** 65 | * 查找所有 66 | * @return 67 | */ 68 | @FindAll 69 | List findAllPushGroup(); 70 | 71 | /** 72 | * 查询列表 73 | * @param pushGroupQuery 74 | * @return 75 | */ 76 | List findPushGroupList(PushGroupQuery pushGroupQuery); 77 | 78 | 79 | /** 80 | * 按分页查询 81 | * @param pushGroupQuery 82 | * @return 83 | */ 84 | Pagination findPushGroupPage(PushGroupQuery pushGroupQuery); 85 | 86 | 87 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/service/RepositoryGroupService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.service; 2 | 3 | 4 | import io.tiklab.hadess.repository.model.RepositoryGroup; 5 | import io.tiklab.core.page.Pagination; 6 | import io.tiklab.hadess.repository.model.RepositoryGroupQuery; 7 | 8 | import javax.validation.Valid; 9 | import javax.validation.constraints.NotNull; 10 | import java.util.List; 11 | 12 | /** 13 | * RepositoryGroupService-组合库关联接口 14 | */ 15 | public interface RepositoryGroupService { 16 | 17 | /** 18 | * 创建 19 | * @param repositoryGroup 20 | * @return 21 | */ 22 | String createRepositoryGroup(@NotNull @Valid RepositoryGroup repositoryGroup); 23 | 24 | /** 25 | * 更新 26 | * @param repositoryGroup 27 | */ 28 | void updateRepositoryGroup(@NotNull @Valid RepositoryGroup repositoryGroup); 29 | 30 | /** 31 | * 删除 32 | * @param id 33 | */ 34 | void deleteRepositoryGroup(@NotNull String id); 35 | 36 | 37 | /** 38 | * 通过条件删除版本 39 | * @param field 删除条件字段 40 | * @param value 删除字段值 41 | */ 42 | void deleteGroupItemByCondition(String field,String value); 43 | 44 | RepositoryGroup findOne(@NotNull String id); 45 | 46 | List findList(List idList); 47 | 48 | /** 49 | * 查找 50 | * @param id 51 | * @return 52 | */ 53 | RepositoryGroup findRepositoryGroup(@NotNull String id); 54 | 55 | /** 56 | * 查找所有 57 | * @return 58 | */ 59 | List findAllRepositoryGroup(); 60 | 61 | /** 62 | * 查询列表 63 | * @param repositoryGroupQuery 64 | * @return 65 | */ 66 | List findRepositoryGroupList(RepositoryGroupQuery repositoryGroupQuery); 67 | 68 | /** 69 | * 按分页查询 70 | * @param repositoryGroupQuery 71 | * @return 72 | */ 73 | Pagination findRepositoryGroupPage(RepositoryGroupQuery repositoryGroupQuery); 74 | 75 | /** 76 | * 根据条件编辑组合库关联 77 | * @param repositoryGroupQuery 78 | * @return 79 | */ 80 | void compileRepositoryGroup(RepositoryGroupQuery repositoryGroupQuery); 81 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/NetworkProxy.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import io.tiklab.core.BaseModel; 5 | import io.tiklab.postin.annotation.ApiModel; 6 | import io.tiklab.postin.annotation.ApiProperty; 7 | import io.tiklab.toolkit.beans.annotation.Mapper; 8 | 9 | import java.sql.Timestamp; 10 | 11 | @ApiModel 12 | @Mapper 13 | public class NetworkProxy extends BaseModel { 14 | 15 | @ApiProperty(name="id",desc="id") 16 | private String id; 17 | 18 | @ApiProperty(name="address",desc="地址") 19 | private String address; 20 | 21 | @ApiProperty(name="port",desc="端口") 22 | private Integer port; 23 | 24 | @ApiProperty(name="description",desc="描述") 25 | private String description; 26 | 27 | @ApiProperty(name="enable",desc="是否启动 0:不启动、1启动 ") 28 | private Integer enable=0; 29 | 30 | 31 | @ApiProperty(name="createTime",desc="创建时间") 32 | @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") 33 | private Timestamp createTime; 34 | 35 | public String getId() { 36 | return id; 37 | } 38 | 39 | public void setId(String id) { 40 | this.id = id; 41 | } 42 | 43 | public String getAddress() { 44 | return address; 45 | } 46 | 47 | public void setAddress(String address) { 48 | this.address = address; 49 | } 50 | 51 | public Integer getPort() { 52 | return port; 53 | } 54 | 55 | public void setPort(Integer port) { 56 | this.port = port; 57 | } 58 | 59 | public String getDescription() { 60 | return description; 61 | } 62 | 63 | public void setDescription(String description) { 64 | this.description = description; 65 | } 66 | 67 | public Integer getEnable() { 68 | return enable; 69 | } 70 | 71 | public void setEnable(Integer enable) { 72 | this.enable = enable; 73 | } 74 | 75 | public Timestamp getCreateTime() { 76 | return createTime; 77 | } 78 | 79 | public void setCreateTime(Timestamp createTime) { 80 | this.createTime = createTime; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/timedtask/service/TimeTaskService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.timedtask.service; 2 | 3 | 4 | import io.tiklab.core.page.Pagination; 5 | import io.tiklab.hadess.timedtask.model.TimeTask; 6 | import io.tiklab.hadess.timedtask.model.TimeTaskQuery; 7 | import io.tiklab.toolkit.join.annotation.FindAll; 8 | import io.tiklab.toolkit.join.annotation.FindList; 9 | import io.tiklab.toolkit.join.annotation.FindOne; 10 | import io.tiklab.toolkit.join.annotation.JoinProvider; 11 | 12 | import javax.validation.Valid; 13 | import javax.validation.constraints.NotNull; 14 | import java.util.List; 15 | 16 | /** 17 | * TimeTaskService-定时任务 18 | */ 19 | @JoinProvider(model = TimeTask.class) 20 | public interface TimeTaskService { 21 | 22 | /** 23 | * 创建 24 | * @param timeTask 25 | * @return 26 | */ 27 | String createTimeTask(@NotNull @Valid TimeTask timeTask); 28 | 29 | /** 30 | * 更新 31 | * @param timeTask 32 | */ 33 | void updateTimeTask(@NotNull @Valid TimeTask timeTask); 34 | 35 | /** 36 | * 更新 37 | * @param taskInstanceId id 38 | */ 39 | void updateTimeTask(String taskInstanceId); 40 | 41 | /** 42 | * 删除 43 | * @param id 44 | */ 45 | void deleteTimeTask(@NotNull String id); 46 | 47 | 48 | @FindOne 49 | TimeTask findOne(@NotNull String id); 50 | 51 | @FindList 52 | List findList(List idList); 53 | 54 | /** 55 | * 查找 56 | * @param id 57 | * @return 58 | */ 59 | 60 | TimeTask findTimeTask(@NotNull String id); 61 | 62 | /** 63 | * 查找所有 64 | * @return 65 | */ 66 | @FindAll 67 | List findAllTimeTask(); 68 | 69 | /** 70 | * 查询列表 71 | * @param timeTaskQuery 72 | * @return 73 | */ 74 | List findTimeTaskList(TimeTaskQuery timeTaskQuery); 75 | 76 | /** 77 | * 通过定时对象id 查询 78 | * @param scanPlayId 79 | * @return 80 | */ 81 | List findTimeTaskList(String scanPlayId); 82 | 83 | /** 84 | * 按分页查询 85 | * @param timeTaskQuery 86 | * @return 87 | */ 88 | Pagination findTimeTaskPage(TimeTaskQuery timeTaskQuery); 89 | 90 | } -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/library/entity/LibraryMavenEntity.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.entity; 2 | 3 | import io.tiklab.core.BaseModel; 4 | import io.tiklab.dal.jpa.annotation.*; 5 | 6 | import java.sql.Timestamp; 7 | 8 | /** 9 | * LibraryMavenEntity-maven制品差异数据实体 10 | */ 11 | @Entity 12 | @Table(name="pack_library_maven") 13 | public class LibraryMavenEntity extends BaseModel { 14 | 15 | @Id 16 | @GeneratorValue(length = 12) 17 | @Column(name = "id",length = 12) 18 | private String id; 19 | 20 | //制品库id 21 | @Column(name = "repository_id",length = 32) 22 | private String repositoryId; 23 | 24 | //制品Id 25 | @Column(name = "library_id",length = 32,notNull = true) 26 | private String libraryId; 27 | 28 | //maven -groupId 29 | @Column(name = "group_id",length = 32,notNull = true) 30 | private String groupId; 31 | 32 | //maven -artifactId 33 | @Column(name = "artifact_id",length = 128) 34 | private String artifactId; 35 | 36 | @Column(name = "create_time") 37 | private Timestamp createTime; 38 | 39 | 40 | public String getId() { 41 | return id; 42 | } 43 | 44 | public void setId(String id) { 45 | this.id = id; 46 | } 47 | 48 | public String getLibraryId() { 49 | return libraryId; 50 | } 51 | 52 | public void setLibraryId(String libraryId) { 53 | this.libraryId = libraryId; 54 | } 55 | 56 | public String getGroupId() { 57 | return groupId; 58 | } 59 | 60 | public void setGroupId(String groupId) { 61 | this.groupId = groupId; 62 | } 63 | 64 | public String getArtifactId() { 65 | return artifactId; 66 | } 67 | 68 | public void setArtifactId(String artifactId) { 69 | this.artifactId = artifactId; 70 | } 71 | 72 | public Timestamp getCreateTime() { 73 | return createTime; 74 | } 75 | 76 | public void setCreateTime(Timestamp createTime) { 77 | this.createTime = createTime; 78 | } 79 | 80 | public String getRepositoryId() { 81 | return repositoryId; 82 | } 83 | 84 | public void setRepositoryId(String repositoryId) { 85 | this.repositoryId = repositoryId; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/controller/GoUploadController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.controller; 2 | 3 | 4 | import io.tiklab.core.Result; 5 | import io.tiklab.hadess.common.XpackYamlDataMaService; 6 | import io.tiklab.hadess.upload.common.response.GoResponse; 7 | import io.tiklab.hadess.upload.service.GoUploadService; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | 10 | import javax.servlet.ServletException; 11 | import javax.servlet.annotation.WebInitParam; 12 | import javax.servlet.annotation.WebServlet; 13 | import javax.servlet.http.HttpServlet; 14 | import javax.servlet.http.HttpServletRequest; 15 | import javax.servlet.http.HttpServletResponse; 16 | import java.io.IOException; 17 | import java.util.Enumeration; 18 | 19 | @WebServlet(name = "goServlet",urlPatterns = {"/go/*"}, 20 | initParams = { 21 | @WebInitParam(name = "base-path", value = "//"), 22 | @WebInitParam(name = "export-all", value = "true") 23 | } 24 | ) 25 | public class GoUploadController extends HttpServlet { 26 | @Autowired 27 | XpackYamlDataMaService yamlDataMaService; 28 | 29 | @Autowired 30 | GoUploadService goUploadService; 31 | 32 | @Override 33 | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 34 | 35 | String contextPath = request.getRequestURI(); 36 | String pathData = yamlDataMaService.getUploadRepositoryUrl(contextPath,"go"); 37 | Enumeration headerNames = request.getHeaderNames(); 38 | //用户信息 39 | String authorization = request.getHeader("Authorization"); 40 | String agent = request.getHeader("user-agent"); 41 | 42 | Result pullData = goUploadService.pullData(pathData); 43 | 44 | GoResponse.goPull(pullData,contextPath,response); 45 | } 46 | 47 | 48 | @Override 49 | protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 50 | doGet(req, resp); 51 | } 52 | 53 | @Override 54 | protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 55 | doGet(req, resp); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/controller/NugetUploadController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.controller; 2 | 3 | import io.tiklab.hadess.common.FileUtil; 4 | import io.tiklab.hadess.upload.service.NugetUploadService; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | 9 | import javax.servlet.ServletException; 10 | import javax.servlet.annotation.MultipartConfig; 11 | import javax.servlet.annotation.WebInitParam; 12 | import javax.servlet.annotation.WebServlet; 13 | import javax.servlet.http.HttpServlet; 14 | import javax.servlet.http.HttpServletRequest; 15 | import javax.servlet.http.HttpServletResponse; 16 | import java.io.IOException; 17 | import java.io.InputStream; 18 | import java.util.Enumeration; 19 | 20 | @WebServlet(name = "nugetServlet",urlPatterns = {"/nuget/*"}, 21 | initParams = { 22 | @WebInitParam(name = "base-path", value = "//"), 23 | @WebInitParam(name = "export-all", value = "true") 24 | } 25 | ) 26 | @MultipartConfig 27 | public class NugetUploadController extends HttpServlet { 28 | private static Logger logger = LoggerFactory.getLogger(NugetUploadController.class); 29 | 30 | @Autowired 31 | NugetUploadService nugetUploadService; 32 | 33 | @Override 34 | protected void doGet(HttpServletRequest request, HttpServletResponse response) { 35 | String contextPath = request.getRequestURI(); 36 | logger.info("hadess nuget download request address:"+contextPath); 37 | nugetUploadService.downloadData(request,response); 38 | } 39 | 40 | 41 | @Override 42 | protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 43 | String contextPath = request.getRequestURI(); 44 | logger.info("hadess nuget upload request address:"+contextPath); 45 | nugetUploadService.uploadData(request,response); 46 | } 47 | 48 | 49 | @Override 50 | protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 51 | //上传 52 | String contextPath = req.getRequestURI(); 53 | logger.info("hadess nuget request address:"+contextPath); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/RepositoryGroupQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | import io.tiklab.core.order.Order; 4 | import io.tiklab.core.order.OrderBuilders; 5 | import io.tiklab.core.page.Page; 6 | import io.tiklab.postin.annotation.ApiModel; 7 | import io.tiklab.postin.annotation.ApiProperty; 8 | 9 | import java.util.List; 10 | 11 | @ApiModel 12 | public class RepositoryGroupQuery { 13 | 14 | @ApiProperty(name ="orderParams",desc = "排序参数") 15 | private List orderParams = OrderBuilders.instance().asc("id").get(); 16 | 17 | @ApiProperty(name ="pageParam",desc = "分页参数") 18 | private Page pageParam = new Page(); 19 | 20 | @ApiProperty(name ="repositoryGroupId",desc = "组合库id") 21 | private String repositoryGroupId; 22 | 23 | @ApiProperty(name ="repositoryId",desc = "repositoryId") 24 | private String repositoryId; 25 | 26 | private List repositoryList; 27 | 28 | public List getRepositoryList() { 29 | return repositoryList; 30 | } 31 | 32 | public void setRepositoryList(List repositoryList) { 33 | this.repositoryList = repositoryList; 34 | } 35 | 36 | public List getOrderParams() { 37 | return orderParams; 38 | } 39 | 40 | public void setOrderParams(List orderParams) { 41 | this.orderParams = orderParams; 42 | } 43 | 44 | public Page getPageParam() { 45 | return pageParam; 46 | } 47 | 48 | public void setPageParam(Page pageParam) { 49 | this.pageParam = pageParam; 50 | } 51 | 52 | public String getRepositoryGroupId() { 53 | return repositoryGroupId; 54 | } 55 | 56 | public RepositoryGroupQuery setRepositoryGroupId(String repositoryGroupId) { 57 | this.repositoryGroupId = repositoryGroupId; 58 | return this; 59 | } 60 | 61 | public String getRepositoryId() { 62 | return repositoryId; 63 | } 64 | 65 | public RepositoryGroupQuery setRepositoryId(String repositoryId) { 66 | this.repositoryId = repositoryId; 67 | return this; 68 | } 69 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/service/RemoteProxyService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.service; 2 | 3 | 4 | import io.tiklab.core.page.Pagination; 5 | import io.tiklab.hadess.repository.model.RemoteProxy; 6 | import io.tiklab.hadess.repository.model.RemoteProxyQuery; 7 | import io.tiklab.toolkit.join.annotation.FindAll; 8 | import io.tiklab.toolkit.join.annotation.FindList; 9 | import io.tiklab.toolkit.join.annotation.FindOne; 10 | import io.tiklab.toolkit.join.annotation.JoinProvider; 11 | 12 | import javax.validation.Valid; 13 | import javax.validation.constraints.NotNull; 14 | import java.util.List; 15 | 16 | /** 17 | * RemoteProxyService-代理地址接口 18 | */ 19 | @JoinProvider(model = RemoteProxy.class) 20 | public interface RemoteProxyService { 21 | 22 | /** 23 | * 创建 24 | * @param remoteProxy 25 | * @return 26 | */ 27 | String createRemoteProxy(@NotNull @Valid RemoteProxy remoteProxy); 28 | 29 | /** 30 | * 更新 31 | * @param remoteProxy 32 | */ 33 | void updateRemoteProxy(@NotNull @Valid RemoteProxy remoteProxy); 34 | 35 | /** 36 | * 删除 37 | * @param id 38 | */ 39 | void deleteRemoteProxy(@NotNull String id); 40 | 41 | @FindOne 42 | RemoteProxy findOne(@NotNull String id); 43 | 44 | @FindList 45 | List findList(List idList); 46 | 47 | /** 48 | * 查找 49 | * @param id 50 | * @return 51 | */ 52 | RemoteProxy findRemoteProxy(@NotNull String id); 53 | 54 | /** 55 | * 查找所有 56 | * @return 57 | */ 58 | @FindAll 59 | List findAllRemoteProxy(); 60 | 61 | /** 62 | * 查询列表 63 | * @param remoteProxyQuery 64 | * @return 65 | */ 66 | List findRemoteProxyList(RemoteProxyQuery remoteProxyQuery); 67 | 68 | /** 69 | * 按分页查询 70 | * @param remoteProxyQuery 71 | * @return 72 | */ 73 | Pagination findRemoteProxyPage(RemoteProxyQuery remoteProxyQuery); 74 | 75 | /** 76 | * 通过仓库id查询代理 77 | * @param repositoryId 78 | * @return 79 | */ 80 | List findProxyListByRpyId(String repositoryId); 81 | /** 82 | * 通过代理地址的id 查询是关联的仓库 83 | * @param id 84 | * @return 85 | */ 86 | List findRepositoryByProxyId(String id); 87 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/library/model/LibraryMavenQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.library.model; 2 | 3 | 4 | import io.tiklab.core.order.Order; 5 | import io.tiklab.core.order.OrderBuilders; 6 | import io.tiklab.core.page.Page; 7 | import io.tiklab.postin.annotation.ApiModel; 8 | import io.tiklab.postin.annotation.ApiProperty; 9 | 10 | import java.io.Serializable; 11 | import java.util.List; 12 | 13 | 14 | @ApiModel 15 | public class LibraryMavenQuery implements Serializable { 16 | 17 | @ApiProperty(name ="orderParams",desc = "排序参数") 18 | private List orderParams = OrderBuilders.instance().desc("createTime").get(); 19 | 20 | @ApiProperty(name ="pageParam",desc = "分页参数") 21 | private Page pageParam = new Page(); 22 | 23 | @ApiProperty(name ="libraryId",desc = "制品id") 24 | private String libraryId; 25 | 26 | 27 | @ApiProperty(name ="groupId",desc = "groupId") 28 | private String groupId; 29 | 30 | @ApiProperty(name ="artifactId",desc = "artifactId") 31 | private String artifactId; 32 | 33 | public List getOrderParams() { 34 | return orderParams; 35 | } 36 | 37 | public void setOrderParams(List orderParams) { 38 | this.orderParams = orderParams; 39 | } 40 | 41 | public Page getPageParam() { 42 | return pageParam; 43 | } 44 | 45 | public void setPageParam(Page pageParam) { 46 | this.pageParam = pageParam; 47 | } 48 | 49 | public String getLibraryId() { 50 | return libraryId; 51 | } 52 | 53 | public LibraryMavenQuery setLibraryId(String libraryId) { 54 | this.libraryId = libraryId; 55 | return this; 56 | } 57 | 58 | public String getGroupId() { 59 | return groupId; 60 | } 61 | 62 | public LibraryMavenQuery setGroupId(String groupId) { 63 | this.groupId = groupId; 64 | return this; 65 | } 66 | 67 | public String getArtifactId() { 68 | return artifactId; 69 | } 70 | 71 | public LibraryMavenQuery setArtifactId(String artifactId) { 72 | this.artifactId = artifactId; 73 | return this; 74 | } 75 | } -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/Storage.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | 4 | import io.tiklab.toolkit.beans.annotation.Mapper; 5 | import io.tiklab.core.BaseModel; 6 | import io.tiklab.postin.annotation.ApiModel; 7 | import io.tiklab.postin.annotation.ApiProperty; 8 | 9 | import javax.validation.constraints.NotNull; 10 | 11 | /** 12 | * RepositoryRemoteProxy-存储库模型 13 | */ 14 | @ApiModel 15 | @Mapper 16 | public class Storage extends BaseModel { 17 | 18 | @ApiProperty(name="id",desc="id") 19 | private java.lang.String id; 20 | 21 | @NotNull 22 | @ApiProperty(name="name",desc="存储库名称",required = true) 23 | private java.lang.String name; 24 | 25 | @ApiProperty(name="allSize",desc="总大小") 26 | private java.lang.String allSize; 27 | 28 | @ApiProperty(name="residueSize",desc="剩余大小") 29 | private java.lang.String residueSize; 30 | 31 | @ApiProperty(name="createTime",desc="创建时间") 32 | private java.sql.Timestamp createTime; 33 | 34 | @ApiProperty(name="updateTime",desc="更新时间") 35 | private java.sql.Timestamp updateTime; 36 | 37 | public java.lang.String getId() { 38 | return id; 39 | } 40 | 41 | public void setId(java.lang.String id) { 42 | this.id = id; 43 | } 44 | public java.lang.String getName() { 45 | return name; 46 | } 47 | 48 | public void setName(java.lang.String name) { 49 | this.name = name; 50 | } 51 | public java.lang.String getAllSize() { 52 | return allSize; 53 | } 54 | 55 | public void setAllSize(java.lang.String allSize) { 56 | this.allSize = allSize; 57 | } 58 | public java.lang.String getResidueSize() { 59 | return residueSize; 60 | } 61 | 62 | public void setResidueSize(java.lang.String residueSize) { 63 | this.residueSize = residueSize; 64 | } 65 | public java.sql.Timestamp getCreateTime() { 66 | return createTime; 67 | } 68 | 69 | public void setCreateTime(java.sql.Timestamp createTime) { 70 | this.createTime = createTime; 71 | } 72 | public java.sql.Timestamp getUpdateTime() { 73 | return updateTime; 74 | } 75 | 76 | public void setUpdateTime(java.sql.Timestamp updateTime) { 77 | this.updateTime = updateTime; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/common/response/NugetResponse.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.common.response; 2 | 3 | import javax.servlet.http.HttpServletResponse; 4 | import java.io.IOException; 5 | import java.io.PrintWriter; 6 | import java.security.NoSuchAlgorithmException; 7 | 8 | public class NugetResponse { 9 | 10 | /** 11 | * 返回校验错误信息 12 | * @param message 错误信息 13 | * @param resp response 14 | */ 15 | public static void errorAuthToClient(HttpServletResponse resp ,String message) { 16 | try { 17 | resp.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // 401 18 | resp.setContentType("text/plain; charset=utf-8"); // 必须设置文本类型 19 | resp.setHeader("WWW-Authenticate","BASIC realm=\"Hadess Repository Manager\""); 20 | resp.setCharacterEncoding("UTF-8"); 21 | // 明确指定编码 22 | resp.getWriter().write(message); 23 | resp.getWriter().flush(); 24 | resp.getWriter().close(); // 立即终止响应 25 | 26 | } catch (IOException e) { 27 | throw new RuntimeException(e); 28 | } 29 | } 30 | 31 | /** 32 | * 返回错误信息 33 | * @param message 错误信息 34 | * @param resp response 35 | */ 36 | public static void errorToClient(HttpServletResponse resp,int coed ,String message) { 37 | try { 38 | resp.setStatus(coed); 39 | resp.setContentType("application/json"); 40 | resp.getWriter().write( 41 | "{\n" + 42 | "\"status\": \"error\""+ 43 | " \"error\": \""+message+"\",\n" + 44 | " \"details\": \""+message+"\",\n" + 45 | "}" 46 | ); 47 | } catch (IOException e) { 48 | throw new RuntimeException(e); 49 | } 50 | } 51 | 52 | 53 | public static void correctToClient(HttpServletResponse resp,String data) { 54 | try { 55 | resp.setStatus(HttpServletResponse.SC_OK); 56 | resp.setContentType("application/json"); 57 | PrintWriter writer = resp.getWriter(); 58 | writer.write(data); 59 | 60 | } catch (IOException e) { 61 | throw new RuntimeException(e); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/XpackBackups.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | import io.tiklab.toolkit.beans.annotation.Mapper; 4 | import io.tiklab.postin.annotation.ApiModel; 5 | import io.tiklab.postin.annotation.ApiProperty; 6 | 7 | @ApiModel 8 | @Mapper 9 | public class XpackBackups { 10 | 11 | @ApiProperty(name="id",desc="备份id") 12 | private String id; 13 | 14 | @ApiProperty(name="taskState",desc="定时任务状态") 15 | private String taskState; 16 | 17 | 18 | @ApiProperty(name="log",desc="日志") 19 | private String log; 20 | 21 | @ApiProperty(name="execResult",desc="最后执行结果 未执行:non 失败:fail 成功:success") 22 | private String execResult; 23 | 24 | @ApiProperty(name="execTime",desc="执行时间") 25 | private String execTime; 26 | 27 | @ApiProperty(name="execState",desc="执行状态") 28 | private String execState; 29 | 30 | 31 | @ApiProperty(name="backupsAddress",desc="备份地址") 32 | private String backupsAddress; 33 | 34 | 35 | 36 | public String getId() { 37 | return id; 38 | } 39 | 40 | public void setId(String id) { 41 | this.id = id; 42 | } 43 | 44 | public String getTaskState() { 45 | return taskState; 46 | } 47 | 48 | public void setTaskState(String taskState) { 49 | this.taskState = taskState; 50 | } 51 | 52 | public String getExecTime() { 53 | return execTime; 54 | } 55 | 56 | public void setExecTime(String execTime) { 57 | this.execTime = execTime; 58 | } 59 | 60 | public String getExecResult() { 61 | return execResult; 62 | } 63 | 64 | public void setExecResult(String execResult) { 65 | this.execResult = execResult; 66 | } 67 | 68 | 69 | public String getBackupsAddress() { 70 | return backupsAddress; 71 | } 72 | 73 | public void setBackupsAddress(String backupsAddress) { 74 | this.backupsAddress = backupsAddress; 75 | } 76 | 77 | public String getExecState() { 78 | return execState; 79 | } 80 | 81 | public void setExecState(String execState) { 82 | this.execState = execState; 83 | } 84 | 85 | public String getLog() { 86 | return log; 87 | } 88 | 89 | public void setLog(String log) { 90 | this.log = log; 91 | } 92 | 93 | } 94 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/timedtask/service/TimeTaskInstanceService.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.timedtask.service; 2 | 3 | 4 | import io.tiklab.core.page.Pagination; 5 | import io.tiklab.hadess.timedtask.model.TimeTaskInstance; 6 | import io.tiklab.hadess.timedtask.model.TimeTaskInstanceQuery; 7 | import io.tiklab.toolkit.join.annotation.FindAll; 8 | import io.tiklab.toolkit.join.annotation.FindList; 9 | import io.tiklab.toolkit.join.annotation.FindOne; 10 | import io.tiklab.toolkit.join.annotation.JoinProvider; 11 | 12 | import javax.validation.Valid; 13 | import javax.validation.constraints.NotNull; 14 | import java.util.List; 15 | 16 | /** 17 | * TimeTaskInstanceService-定时任务实例 18 | */ 19 | @JoinProvider(model = TimeTaskInstance.class) 20 | public interface TimeTaskInstanceService { 21 | 22 | /** 23 | * 创建 24 | * @param timeTaskInstance 25 | * @return 26 | */ 27 | String createTimeTaskInstance(@NotNull @Valid TimeTaskInstance timeTaskInstance); 28 | 29 | /** 30 | * 更新 31 | * @param timeTaskInstance 32 | */ 33 | void updateTimeTaskInstance(@NotNull @Valid TimeTaskInstance timeTaskInstance); 34 | 35 | 36 | 37 | /** 38 | * 删除 39 | * @param id 40 | */ 41 | void deleteTimeTaskInstance(@NotNull String id); 42 | 43 | /** 44 | * 条件删除 45 | * @param fieldType 字段类型 46 | * @param value 删除value 47 | */ 48 | void deleteTimeTaskInstance(@NotNull String fieldType,@NotNull String value); 49 | 50 | 51 | @FindOne 52 | TimeTaskInstance findOne(@NotNull String id); 53 | 54 | @FindList 55 | List findList(List idList); 56 | 57 | /** 58 | * 查找 59 | * @param id 60 | * @return 61 | */ 62 | 63 | TimeTaskInstance findTimeTaskInstance(@NotNull String id); 64 | 65 | /** 66 | * 查找所有 67 | * @return 68 | */ 69 | @FindAll 70 | List findAllTimeTaskInstance(); 71 | 72 | /** 73 | * 查询列表 74 | * @param timeTaskInstanceQuery 75 | * @return 76 | */ 77 | List findTimeTaskInstanceList(TimeTaskInstanceQuery timeTaskInstanceQuery); 78 | 79 | /** 80 | * 按分页查询 81 | * @param timeTaskInstanceQuery 82 | * @return 83 | */ 84 | Pagination findTimeTaskInstancePage(TimeTaskInstanceQuery timeTaskInstanceQuery); 85 | 86 | } -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/timedtask/util/RunJob.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.timedtask.util; 2 | 3 | import io.tiklab.eam.common.context.LoginContext; 4 | 5 | 6 | import io.tiklab.hadess.timedtask.service.TimeTaskJob; 7 | import io.tiklab.hadess.timedtask.service.TimeTaskService; 8 | import org.quartz.JobDataMap; 9 | import org.quartz.JobExecutionContext; 10 | import org.quartz.JobExecutionException; 11 | import org.slf4j.Logger; 12 | import org.slf4j.LoggerFactory; 13 | import org.springframework.beans.factory.annotation.Autowired; 14 | import org.springframework.stereotype.Component; 15 | 16 | @Component 17 | public class RunJob implements org.quartz.Job { 18 | private static final Logger logger = LoggerFactory.getLogger(RunJob.class); 19 | 20 | 21 | public static TimeTaskService taskService; 22 | 23 | public static JobManager jobManager; 24 | 25 | public static TimeTaskJob timeTaskJob; 26 | 27 | @Autowired 28 | public void setTimeTaskService(TimeTaskService taskService) { 29 | this.taskService = taskService; 30 | } 31 | 32 | @Autowired 33 | public void setJobManager(JobManager jobManager) { 34 | this.jobManager = jobManager; 35 | } 36 | 37 | @Autowired 38 | public void setTimeTaskJob(TimeTaskJob timeTaskJob) { 39 | this.timeTaskJob = timeTaskJob; 40 | } 41 | 42 | 43 | @Override 44 | public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { 45 | String jobName = jobExecutionContext.getTrigger().getKey().getName(); 46 | logger.info("定时任务JobName:"+jobName); 47 | String[] split = jobName.split("_"); 48 | String taskInstanceId = split[0]; 49 | String execObjectId = split[1]; 50 | 51 | JobDataMap map = jobExecutionContext.getMergedJobDataMap(); 52 | String group = (String)map.get("group"); 53 | logger.info("定时任务group:"+group); 54 | String taskType = (String)map.get("taskType"); 55 | 56 | //执行具体定时任务 57 | timeTaskJob.execTaskJob(execObjectId,taskType); 58 | 59 | taskService.updateTimeTask(taskInstanceId); 60 | jobManager.removeJob(group,jobName); 61 | } 62 | 63 | } 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/mysql/xpack_1.0.2.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO pack_scan_scheme (id, scheme_name, language,description,scheme_type,create_time) VALUES 2 | ('0230645439', 'Maven推荐扫描方案','maven','默认maven扫描方案','default','2022-12-12 11:30:00'); 3 | 4 | INSERT INTO pack_scan_scheme_hole (id, scan_scheme_id, scan_hole_id,create_time) VALUES 5 | ('123456781000', '0230645439','123456781000','2022-10-1 11:30:00'), 6 | ('123456781002', '0230645439','123456781001','2022-10-1 12:30:00'), 7 | ('123456781003', '0230645439','123456781002','2022-10-1 13:30:00'); 8 | 9 | INSERT INTO pack_scan_hole(id,vendor,product,version,language,hole_name,hole_number,hole_level,create_time,suggestion,description) VALUES 10 | ('123456781000', 'com.alibaba','fastjson','[1.2.62,1.3.0)','java','fastjson安全漏洞','CWE-502',2,'2020-06-03','更新到1.2.69或更高版本','fastjson受影响的版本存在反序列化漏洞'), 11 | ('123456781001', 'com.alibaba','fastjson','[2.0-beta9,2.12.2)||[1.2.62,1.3.0)','java','Fastjson 反序列化漏洞','CVE-2022-25845、CNNVD-202206-1037',1,'2022-06-10','官方已修复该漏洞,建议升级到1.2.83及以上版本。其他修复方案: 12 | (1)开启safeMode,fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,无论白名单和黑名单,都不支持autoType,可杜绝反序列化Gadgets类变种攻击(关闭autoType注意评估对业务的影响)。三种开启方法:代码中ParserConfig.getGlobalInstance().setSafeMode(true);启动参数-Dfastjson.parser.safeMode=true;fastjson.properties文件配置fastjson.parser.safeMode=true 13 | (2)升级到fastjson v2,fastjson已经开源2.0版本,在2.0版本中,不再为了兼容提供白名单,提升了安全性。fastjson v2代码已经重写,性能有了很大提升,不完全兼容1.x,升级需要做认真的兼容测试。 14 | (3)升级到noneautotype版本,为了方便使用老版本用户兼容安全加固需求,提供了noneautotype版本,效果和1.2.68的safeMode效果一样,完全禁止autotype功能。目前发布的版本:1.2.8_noneautotype、1.2.48_noneautotype、1.2.50_noneautotype、1.2.54_noneautotype、1.2.60_noneautotype、1.2.71_noneautotype','Fastjson使用黑白名单用于防御反序列化漏洞,这个漏洞在特定条件下可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大'), 15 | ('123456781002', 'com.google.guava','guava','[11.0,24.x)||[24.1.1,24.1.2)','java','Google Guava 代码问题漏洞','CVE-2018-10237、CNNVD-201804-1461、CNVD-2018-10064、CWE-770',3,'2018-04-26','目前厂商已发布升级补丁以修复漏洞,补丁获取链接: 16 | https://groups.google.com/forum/#!topic/guava-announce/xqWALw4W1vs/discussion','Google Guava是美国谷歌(Google)公司的一款包括图形库、函数类型、I/O和字符串处理等的Java核心库。 17 | Google Guava 11.0版本至24.1.1版本(不包括24.1.1版本)中存在代码问题漏洞。该漏洞源于网络系统或产品的代码开发过程中存在设计或实现不当的问题。'), 18 | ('123456781003', null,'Node.js','[16.x - 16.6.0)||[14.x - 14.17.4)||[12.x - 12.22.4)','js','Use After Free 攻击','CWE-502',1,'2020-06-03',null,'此漏洞存在于 Node.js 版本 16.6.0 之前、14.17.4 之前和 12.22.4 之前,攻击者可以利用该漏洞进行“使用后释放”(Use After Free)攻击,从而导致内存损坏和进程行为的改变'); -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/resources/scripts/pgsql/xpack_1.0.2.sql: -------------------------------------------------------------------------------- 1 | INSERT INTO pack_scan_scheme (id, scheme_name, language,description,scheme_type,create_time) VALUES 2 | ('0230645439', 'Maven推荐扫描方案','maven','默认maven扫描方案','default','2022-12-12 11:30:00'); 3 | 4 | INSERT INTO pack_scan_scheme_hole (id, scan_scheme_id, scan_hole_id,create_time) VALUES 5 | ('123456781000', '0230645439','123456781000','2022-10-1 11:30:00'), 6 | ('123456781002', '0230645439','123456781001','2022-10-1 12:30:00'), 7 | ('123456781003', '0230645439','123456781002','2022-10-1 13:30:00'); 8 | 9 | INSERT INTO pack_scan_hole(id,vendor,product,version,language,hole_name,hole_number,hole_level,create_time,suggestion,description) VALUES 10 | ('123456781000', 'com.alibaba','fastjson','[1.2.62,1.3.0)','java','fastjson安全漏洞','CWE-502',2,'2020-06-03','更新到1.2.69或更高版本','fastjson受影响的版本存在反序列化漏洞'), 11 | ('123456781001', 'com.alibaba','fastjson','[2.0-beta9,2.12.2)||[1.2.62,1.3.0)','java','Fastjson 反序列化漏洞','CVE-2022-25845、CNNVD-202206-1037',1,'2022-06-10','官方已修复该漏洞,建议升级到1.2.83及以上版本。其他修复方案: 12 | (1)开启safeMode,fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,无论白名单和黑名单,都不支持autoType,可杜绝反序列化Gadgets类变种攻击(关闭autoType注意评估对业务的影响)。三种开启方法:代码中ParserConfig.getGlobalInstance().setSafeMode(true);启动参数-Dfastjson.parser.safeMode=true;fastjson.properties文件配置fastjson.parser.safeMode=true 13 | (2)升级到fastjson v2,fastjson已经开源2.0版本,在2.0版本中,不再为了兼容提供白名单,提升了安全性。fastjson v2代码已经重写,性能有了很大提升,不完全兼容1.x,升级需要做认真的兼容测试。 14 | (3)升级到noneautotype版本,为了方便使用老版本用户兼容安全加固需求,提供了noneautotype版本,效果和1.2.68的safeMode效果一样,完全禁止autotype功能。目前发布的版本:1.2.8_noneautotype、1.2.48_noneautotype、1.2.50_noneautotype、1.2.54_noneautotype、1.2.60_noneautotype、1.2.71_noneautotype','Fastjson使用黑白名单用于防御反序列化漏洞,这个漏洞在特定条件下可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大'), 15 | ('123456781002', 'com.google.guava','guava','[11.0,24.x)||[24.1.1,24.1.2)','java','Google Guava 代码问题漏洞','CVE-2018-10237、CNNVD-201804-1461、CNVD-2018-10064、CWE-770',3,'2018-04-26','目前厂商已发布升级补丁以修复漏洞,补丁获取链接: 16 | https://groups.google.com/forum/#!topic/guava-announce/xqWALw4W1vs/discussion','Google Guava是美国谷歌(Google)公司的一款包括图形库、函数类型、I/O和字符串处理等的Java核心库。 17 | Google Guava 11.0版本至24.1.1版本(不包括24.1.1版本)中存在代码问题漏洞。该漏洞源于网络系统或产品的代码开发过程中存在设计或实现不当的问题。'), 18 | ('123456781003', null,'Node.js','[16.x - 16.6.0)||[14.x - 14.17.4)||[12.x - 12.22.4)','js','Use After Free 攻击','CWE-502',1,'2020-06-03',null,'此漏洞存在于 Node.js 版本 16.6.0 之前、14.17.4 之前和 12.22.4 之前,攻击者可以利用该漏洞进行“使用后释放”(Use After Free)攻击,从而导致内存损坏和进程行为的改变'); -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/RepositoryMaven.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import io.tiklab.toolkit.beans.annotation.Mapper; 5 | import io.tiklab.toolkit.beans.annotation.Mapping; 6 | import io.tiklab.toolkit.beans.annotation.Mappings; 7 | import io.tiklab.core.BaseModel; 8 | import io.tiklab.toolkit.join.annotation.Join; 9 | import io.tiklab.toolkit.join.annotation.JoinField; 10 | import io.tiklab.postin.annotation.ApiModel; 11 | import io.tiklab.postin.annotation.ApiProperty; 12 | 13 | import javax.validation.constraints.NotNull; 14 | import java.sql.Timestamp; 15 | 16 | /** 17 | * Repository-maven制品库模型 18 | */ 19 | @ApiModel 20 | @Mapper 21 | @Join 22 | public class RepositoryMaven extends BaseModel { 23 | 24 | @ApiProperty(name="id",desc="id") 25 | private String id; 26 | 27 | @NotNull 28 | @ApiProperty(name="repository",desc="组合库id",required = true) 29 | @Mappings({ 30 | @Mapping(source = "repository.id",target = "repositoryId") 31 | }) 32 | @JoinField(key = "id") 33 | private Repository repository; 34 | 35 | @ApiProperty(name="version",desc="maven 仓库版本 Release、Snapshot、Mixed") 36 | private String version; 37 | 38 | @ApiProperty(name="coverState",desc="是否覆盖 0不覆盖、 1 覆盖") 39 | private Integer coverState=1; 40 | 41 | @ApiProperty(name="createTime",desc="创建时间") 42 | @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8") 43 | private java.sql.Timestamp createTime; 44 | 45 | public String getId() { 46 | return id; 47 | } 48 | 49 | public void setId(String id) { 50 | this.id = id; 51 | } 52 | 53 | public Repository getRepository() { 54 | return repository; 55 | } 56 | 57 | public void setRepository(Repository repository) { 58 | this.repository = repository; 59 | } 60 | 61 | public String getVersion() { 62 | return version; 63 | } 64 | 65 | public void setVersion(String version) { 66 | this.version = version; 67 | } 68 | 69 | public Timestamp getCreateTime() { 70 | return createTime; 71 | } 72 | 73 | public void setCreateTime(Timestamp createTime) { 74 | this.createTime = createTime; 75 | } 76 | 77 | public Integer getCoverState() { 78 | return coverState; 79 | } 80 | 81 | public void setCoverState(Integer coverState) { 82 | this.coverState = coverState; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/common/response/ComposerResponse.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.common.response; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | 5 | import javax.servlet.http.HttpServletResponse; 6 | import java.io.IOException; 7 | import java.io.PrintWriter; 8 | import java.net.URLEncoder; 9 | 10 | public class ComposerResponse { 11 | 12 | /** 13 | * 返回上传错误信息 14 | * @param message 错误信息 15 | * @param resp response 16 | * @param code 错误code 17 | */ 18 | public static void errorUpToClient(HttpServletResponse resp,int code ,String message) { 19 | try { 20 | resp.setStatus(code); 21 | resp.setContentType("application/json"); // 必须设置文本类型 22 | resp.setCharacterEncoding("UTF-8"); // 明确指定编码 23 | resp.getWriter().write(message); 24 | resp.getWriter().flush(); 25 | resp.getWriter().close(); // 立即终止响应 26 | 27 | } catch (IOException e) { 28 | throw new RuntimeException(e); 29 | } 30 | } 31 | 32 | /** 33 | * 返回下载错误信息 34 | * @param message 错误信息 35 | * @param resp response 36 | * @param code 错误code 37 | */ 38 | public static void errorDoToClient(HttpServletResponse resp,int code ,String message) { 39 | try { 40 | // 构建Composer格式的错误JSON 41 | JSONObject errorResponse = new JSONObject(); 42 | errorResponse.put("status", "error"); 43 | errorResponse.put("message",message ); 44 | // 设置响应头 45 | resp.setContentType("application/json"); 46 | resp.setStatus(code); 47 | // 发送响应 48 | PrintWriter out = resp.getWriter(); 49 | out.print(errorResponse.toString()); 50 | out.flush(); 51 | } catch (IOException e) { 52 | throw new RuntimeException(e); 53 | } 54 | } 55 | 56 | /** 57 | * 正确返回 58 | * @param data 内容 59 | * @param resp response 60 | */ 61 | public static void correctToClient(HttpServletResponse resp,String data) { 62 | try { 63 | resp.setStatus(HttpServletResponse.SC_OK); 64 | resp.setContentType("application/json"); 65 | resp.setCharacterEncoding("UTF-8"); 66 | PrintWriter writer = resp.getWriter(); 67 | writer.write(data); 68 | 69 | } catch (IOException e) { 70 | throw new RuntimeException(e); 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/bin/linux/status.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | DIRS=$(dirname "$PWD") 4 | APP_MAIN="io.tiklab.hadess.starter.HadessApplication" 5 | 6 | JDK_VERSION=jdk-16.0.2 7 | valid_jdk(){ 8 | if [ -d "${DIRS}/embbed/${JDK_VERSION}" ]; then 9 | echo "user embbed jdk ${JAVA_HOME}" 10 | JAVA_HOME="${DIRS}/embbed/${JDK_VERSION}" 11 | else 12 | echo "Unable to find embbed jdk!" 13 | exit 1; 14 | fi 15 | } 16 | 17 | PID=0 18 | getPID(){ 19 | javaps=`$JAVA_HOME/bin/jps -l | grep $APP_MAIN` 20 | if [ -n "$javaps" ]; then 21 | PID=`echo $javaps | awk '{print $1}'` 22 | else 23 | PID=0 24 | fi 25 | } 26 | 27 | status(){ 28 | getPID 29 | echo "================================================================================================================" 30 | if [ $PID -ne 0 ]; then 31 | echo "$APP_MAIN is running(PID=$PID)" 32 | pgsql 33 | echo "================================================================================================================" 34 | else 35 | echo "$APP_MAIN is not running" 36 | echo "================================================================================================================" 37 | fi 38 | } 39 | 40 | db_port=0 41 | pg_port(){ 42 | db_port=$(awk -F": *" '/^postgresql:/ { 43 | inf=1 44 | next 45 | } 46 | inf && /^ db:/ { 47 | db=1 48 | next 49 | } 50 | db && /^ port:/ { 51 | print $2 52 | exit 53 | }' "${YAML}") 54 | 55 | echo "PostgreSQL start Port: ${db_port}" 56 | } 57 | 58 | db_enable="false" 59 | pg_enable(){ 60 | db_enable=$(awk -F": *" '/^postgresql:/ { 61 | inf=1 62 | next 63 | } 64 | inf && /^ embbed:/ { 65 | embbed=1 66 | next 67 | } 68 | embbed && /^ enable:/ { 69 | print $2 70 | exit 71 | }' "${YAML}") 72 | 73 | echo "PostgreSQL embbed enable: ${db_enable}" 74 | } 75 | 76 | pgsql(){ 77 | pg_enable 78 | if [ "${db_enable}" = "true" ]; then 79 | pg_port 80 | if [ ${db_port} -ne 0 ]; then 81 | echo "find pgsql port error " 82 | exit 1 83 | fi 84 | 85 | result=$(netstat -tuln | grep ":${db_port}") 86 | # shellcheck disable=SC2039 87 | if [[ -n "$result" ]]; then 88 | pids=$(echo "$result" | awk '{print $7}' | awk -F'/' '{print $1}') 89 | echo "pgsql is running(PID=$pids)" 90 | fi 91 | fi 92 | 93 | 94 | } 95 | 96 | status -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/controller/HandUploadController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.controller; 2 | 3 | import io.tiklab.core.Result; 4 | import io.tiklab.core.exception.SystemException; 5 | import io.tiklab.postin.annotation.Api; 6 | import io.tiklab.postin.annotation.ApiMethod; 7 | import io.tiklab.postin.annotation.ApiParam; 8 | import io.tiklab.hadess.common.XpackYamlDataMaService; 9 | import io.tiklab.hadess.upload.service.MavenUploadService; 10 | import io.tiklab.hadess.upload.service.NpmUploadService; 11 | import org.springframework.beans.factory.annotation.Autowired; 12 | import org.springframework.web.bind.annotation.RequestMapping; 13 | import org.springframework.web.bind.annotation.RequestMethod; 14 | import org.springframework.web.bind.annotation.RestController; 15 | 16 | import javax.servlet.ServletOutputStream; 17 | import javax.servlet.http.HttpServletRequest; 18 | import javax.servlet.http.HttpServletResponse; 19 | import java.io.InputStream; 20 | 21 | @RestController 22 | @RequestMapping("/xpack") 23 | //@Api(name = "MavenUploadController",desc = "Maven提交这个用于手动提交不校验用户信息") 24 | public class HandUploadController { 25 | 26 | @Autowired 27 | MavenUploadService downloadMavenService; 28 | 29 | @Autowired 30 | NpmUploadService downloadNpmService; 31 | 32 | @Autowired 33 | XpackYamlDataMaService yamlDataMaService; 34 | 35 | @RequestMapping(path = "/maven/**",method = {RequestMethod.PUT,RequestMethod.GET}) 36 | @ApiMethod(name = "mavenSubmit",desc = "通过xpack界面手动上传maven") 37 | @ApiParam(name = "request",desc = "request") 38 | public void mavenSubmit(HttpServletRequest request, HttpServletResponse response) { 39 | String contextPath = request.getRequestURI(); 40 | 41 | String path = yamlDataMaService.getUploadRepositoryUrl(contextPath,"xpack"); 42 | String repositoryPath=path.substring(path.indexOf("/")+1); 43 | String method = request.getMethod(); 44 | 45 | try { 46 | InputStream inputStream = request.getInputStream(); 47 | if ("POST".equals(method) || "PUT".equals(method)) { 48 | 49 | Result result = downloadMavenService.mavenSubmit(repositoryPath, inputStream, "hadess"); 50 | response.setStatus(result.getCode(), result.getMsg()); 51 | 52 | } else { 53 | downloadMavenService.mavenPull(response,repositoryPath); 54 | } 55 | } catch (Exception e) { 56 | throw new SystemException(e); 57 | } 58 | } 59 | 60 | 61 | } 62 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/pushcentral/controller/PushOperationController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.pushcentral.controller; 2 | 3 | import io.tiklab.core.Result; 4 | import io.tiklab.hadess.pushcentral.model.PushOperation; 5 | import io.tiklab.hadess.pushcentral.model.PushOperationQuery; 6 | import io.tiklab.hadess.pushcentral.service.PushOperationService; 7 | import io.tiklab.postin.annotation.Api; 8 | import io.tiklab.postin.annotation.ApiMethod; 9 | import io.tiklab.postin.annotation.ApiParam; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.web.bind.annotation.RequestBody; 12 | import org.springframework.web.bind.annotation.RequestMapping; 13 | import org.springframework.web.bind.annotation.RequestMethod; 14 | import org.springframework.web.bind.annotation.RestController; 15 | 16 | import javax.validation.Valid; 17 | import javax.validation.constraints.NotNull; 18 | 19 | @RestController 20 | @RequestMapping("/pushOperation") 21 | //@Api(name = "PushGroupController",desc = "推送组") 22 | public class PushOperationController { 23 | 24 | @Autowired 25 | PushOperationService pushOperationService; 26 | 27 | @RequestMapping(path = "/executePushGroup",method = RequestMethod.POST) 28 | @ApiMethod(name = "findPushLibraryPage",desc = "推送制品组") 29 | @ApiParam(name = "pushOperationQuery",desc = "pushOperationQuery",required = true) 30 | public Result pushGroup(@RequestBody @Valid @NotNull PushOperationQuery pushOperationQuery){ 31 | String state = pushOperationService.pushGroup(pushOperationQuery); 32 | 33 | return Result.ok(state); 34 | } 35 | 36 | @RequestMapping(path = "/executePushLibrary",method = RequestMethod.POST) 37 | @ApiMethod(name = "findPushLibraryPage",desc = "推送制品") 38 | @ApiParam(name = "pushOperationQuery",desc = "pushOperationQuery",required = true) 39 | public Result pushLibrary(@RequestBody @Valid @NotNull PushOperationQuery pushOperationQuery){ 40 | String state = pushOperationService.pushLibrary(pushOperationQuery); 41 | 42 | return Result.ok(state); 43 | } 44 | 45 | @RequestMapping(path = "/getPushResult",method = RequestMethod.POST) 46 | @ApiMethod(name = "findPushLibraryPage",desc = "推送制品组") 47 | @ApiParam(name = "key",desc = "获取推送结果的key",required = true) 48 | public Result getPushResult(@NotNull String key){ 49 | PushOperation pushOperation = pushOperationService.getPushResult(key); 50 | 51 | return Result.ok(pushOperation); 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /tiklab-hadess-starter/assembly/distribution.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | linux 7 | 8 | tar.gz 9 | 10 | 11 | 12 | ${basedir}/target 13 | 14 | ${artifactId}-${version}.jar 15 | 16 | /lib 17 | 18 | 19 | ${basedir}/src/main/resources/${yaml-type} 20 | 21 | application.yaml 22 | 23 | /conf 24 | 25 | 26 | ${basedir}/src/main/resources 27 | 28 | *.xml 29 | 30 | /conf 31 | 32 | 33 | ${basedir} 34 | 35 | version 36 | 37 | / 38 | 39 | 40 | ${basedir}/bin/${systemType} 41 | 755 42 | /bin 43 | 44 | 45 | ${basedir}/plugin 46 | 755 47 | /plugin 48 | 49 | 50 | ${basedir}/embbed 51 | 755 52 | /embbed 53 | 54 | 55 | ${basedir}/file 56 | 755 57 | /file 58 | 59 | 60 | 61 | 62 | 63 | /lib 64 | 65 | 66 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/timedtask/model/TimeTaskInstanceQuery.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.timedtask.model; 2 | 3 | import io.tiklab.core.order.Order; 4 | import io.tiklab.core.order.OrderBuilders; 5 | import io.tiklab.core.page.Page; 6 | import io.tiklab.postin.annotation.ApiProperty; 7 | 8 | import java.util.List; 9 | 10 | public class TimeTaskInstanceQuery { 11 | 12 | @ApiProperty(name ="orderParams",desc = "排序参数") 13 | private List orderParams = OrderBuilders.instance().asc("id").get(); 14 | 15 | @ApiProperty(name ="pageParam",desc = "分页参数") 16 | private Page pageParam = new Page(); 17 | 18 | @ApiProperty(name ="timeTaskId",desc = "定时任务id") 19 | private String timeTaskId ; 20 | 21 | @ApiProperty(name ="cron",desc = "表达式") 22 | private String cron ; 23 | 24 | @ApiProperty(name ="weekDay",desc = "周数") 25 | private Integer weekDay ; 26 | 27 | @ApiProperty(name ="execTime",desc = "执行时间") 28 | private String execTime ; 29 | @ApiProperty(name ="execObjectId",desc = "执行对象的id") 30 | private String execObjectId ; 31 | 32 | public List getOrderParams() { 33 | return orderParams; 34 | } 35 | 36 | public void setOrderParams(List orderParams) { 37 | this.orderParams = orderParams; 38 | } 39 | 40 | public Page getPageParam() { 41 | return pageParam; 42 | } 43 | 44 | public void setPageParam(Page pageParam) { 45 | this.pageParam = pageParam; 46 | } 47 | 48 | public String getTimeTaskId() { 49 | return timeTaskId; 50 | } 51 | 52 | public TimeTaskInstanceQuery setTimeTaskId(String timeTaskId) { 53 | this.timeTaskId = timeTaskId; 54 | return this; 55 | } 56 | 57 | public String getCron() { 58 | return cron; 59 | } 60 | 61 | public TimeTaskInstanceQuery setCron(String cron) { 62 | this.cron = cron; 63 | return this; 64 | } 65 | 66 | public String getExecObjectId() { 67 | return execObjectId; 68 | } 69 | 70 | public TimeTaskInstanceQuery setExecObjectId(String execObjectId) { 71 | this.execObjectId = execObjectId; 72 | return this; 73 | } 74 | 75 | public Integer getWeekDay() { 76 | return weekDay; 77 | } 78 | 79 | public TimeTaskInstanceQuery setWeekDay(Integer weekDay) { 80 | this.weekDay = weekDay; 81 | return this; 82 | } 83 | 84 | public String getExecTime() { 85 | return execTime; 86 | } 87 | 88 | public TimeTaskInstanceQuery setExecTime(String execTime) { 89 | this.execTime = execTime; 90 | return this; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /tiklab-hadess-server/src/main/java/io/tiklab/hadess/upload/controller/ConanUploadController.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.upload.controller; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import io.tiklab.hadess.upload.service.ConanUploadService; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | import javax.servlet.http.HttpServletRequest; 11 | import javax.servlet.http.HttpServletResponse; 12 | import java.io.IOException; 13 | 14 | /* 15 | * 16 | * */ 17 | @RestController 18 | @RequestMapping("/conan") 19 | public class ConanUploadController { 20 | 21 | @Autowired 22 | ConanUploadService conanUploadService; 23 | 24 | 25 | @RequestMapping(path="/**",method = RequestMethod.GET) 26 | public Object doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { 27 | String requestURI = request.getRequestURI(); 28 | 29 | //获取元数据、二进制文件下载链接 30 | if (requestURI.endsWith("/download_urls")){ 31 | String downloadUrls = conanUploadService.getDownloadUrls(request, response); 32 | JSONObject object = JSONObject.parseObject(downloadUrls); 33 | return object; 34 | } 35 | 36 | //客户端拉取->拉取元数据、二进制文件 37 | if (requestURI.contains("/download_package/")){ 38 | conanUploadService.downloadPackage(request, response); 39 | return null; 40 | } 41 | 42 | if (requestURI.contains("/_/_/packages/")&&!requestURI.endsWith("/download_urls")){ 43 | String a=conanUploadService.verifyPackage(request, response); 44 | 45 | JSONObject object = JSONObject.parseObject(a); 46 | return object; 47 | } 48 | 49 | //拉取远程的拉取文件内容 50 | if (requestURI.contains("/v1/files/")){ 51 | conanUploadService.downloadFileData(request, response); 52 | } 53 | 54 | 55 | conanUploadService.dataVerifyGet(request,response); 56 | return null; 57 | } 58 | 59 | @RequestMapping(path="/**",method = RequestMethod.POST) 60 | public String doPost(HttpServletRequest request, HttpServletResponse response){ 61 | String uploaded = conanUploadService.getUploadDataPath(request, response); 62 | return uploaded; 63 | } 64 | @RequestMapping(path="/**",method = RequestMethod.PUT) 65 | public void doPut(HttpServletRequest request, HttpServletResponse response){ 66 | conanUploadService.uploadData(request, response); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /tiklab-hadess-api/src/main/java/io/tiklab/hadess/repository/model/RepositoryGroup.java: -------------------------------------------------------------------------------- 1 | package io.tiklab.hadess.repository.model; 2 | 3 | import io.tiklab.toolkit.beans.annotation.Mapper; 4 | import io.tiklab.toolkit.beans.annotation.Mapping; 5 | import io.tiklab.toolkit.beans.annotation.Mappings; 6 | import io.tiklab.core.BaseModel; 7 | import io.tiklab.toolkit.join.annotation.Join; 8 | import io.tiklab.toolkit.join.annotation.JoinField; 9 | import io.tiklab.postin.annotation.ApiModel; 10 | import io.tiklab.postin.annotation.ApiProperty; 11 | 12 | import javax.validation.constraints.NotNull; 13 | import java.sql.Timestamp; 14 | 15 | /** 16 | * RepositoryGroup-组合库关联模型 17 | */ 18 | @ApiModel 19 | @Mapper 20 | @Join 21 | public class RepositoryGroup extends BaseModel { 22 | 23 | @ApiProperty(name="id",desc="id") 24 | private java.lang.String id; 25 | 26 | @NotNull 27 | @ApiProperty(name="repositoryGroup",desc="组合库id",required = true) 28 | @Mappings({ 29 | @Mapping(source = "repositoryGroup.id",target = "repositoryGroupId") 30 | }) 31 | @JoinField(key = "id") 32 | private Repository repositoryGroup; 33 | 34 | @NotNull 35 | @ApiProperty(name="repository",desc="关联的库id",required = true) 36 | @Mappings({ 37 | @Mapping(source = "repository.id",target = "repositoryId") 38 | }) 39 | @JoinField(key = "id") 40 | private Repository repository; 41 | 42 | @ApiProperty(name="createTime",desc="createTime") 43 | private java.sql.Timestamp createTime; 44 | 45 | @ApiProperty(name="updateTime",desc="updateTime") 46 | private java.sql.Timestamp updateTime; 47 | 48 | 49 | 50 | 51 | public String getId() { 52 | return id; 53 | } 54 | 55 | public void setId(String id) { 56 | this.id = id; 57 | } 58 | 59 | public Repository getRepositoryGroup() { 60 | return repositoryGroup; 61 | } 62 | 63 | public void setRepositoryGroup(Repository repositoryGroup) { 64 | this.repositoryGroup = repositoryGroup; 65 | } 66 | 67 | public Repository getRepository() { 68 | return repository; 69 | } 70 | 71 | public void setRepository(Repository repository) { 72 | this.repository = repository; 73 | } 74 | 75 | public Timestamp getCreateTime() { 76 | return createTime; 77 | } 78 | 79 | public void setCreateTime(Timestamp createTime) { 80 | this.createTime = createTime; 81 | } 82 | 83 | public Timestamp getUpdateTime() { 84 | return updateTime; 85 | } 86 | 87 | public void setUpdateTime(Timestamp updateTime) { 88 | this.updateTime = updateTime; 89 | } 90 | 91 | 92 | } 93 | --------------------------------------------------------------------------------