├── .gitattributes ├── .gitignore ├── Dockerfile ├── LICENSE ├── LICENSE-3RD-PARTY ├── README-en.md ├── README.md ├── build.sh ├── docker-build.sh ├── docker-run.sh ├── docs ├── EKK-design.md ├── deploy_guide.md ├── dev.md ├── ms_guide.md ├── safe_guide.md ├── static_files │ ├── DeskTop.jpg │ ├── Frm.png │ ├── Kibana.jpg │ ├── ark.png │ ├── audit.png │ ├── black.png │ ├── comp.png │ ├── compmgt.png │ ├── componentManager.jpg │ ├── conf1.png │ ├── conf10.png │ ├── conf11.png │ ├── conf12.png │ ├── conf13.png │ ├── conf14.png │ ├── conf15.png │ ├── conf16.png │ ├── conf17.png │ ├── conf2.png │ ├── conf3.png │ ├── conf4.png │ ├── conf5.png │ ├── conf6.png │ ├── conf7.png │ ├── conf8.png │ ├── conf9.png │ ├── deploy.png │ ├── desktop.png │ ├── dis.png │ ├── ekk架构.png │ ├── es.png │ ├── fenlei.jpg │ ├── gateway.png │ ├── gatewayMonitor.jpg │ ├── gatewaySetting.jpg │ ├── gatewaySwagger.jpg │ ├── gatewaytop.png │ ├── homePage.jpg │ ├── hystrixManager.jpg │ ├── jar.png │ ├── logManager.jpg │ ├── login.png │ ├── msa.png │ ├── newRoute.jpg │ ├── newlog.jpeg │ ├── registryManager.jpg │ ├── route.png │ ├── routeManager-operation.jpg │ ├── routeManager-topo.jpg │ ├── routeManager.jpg │ ├── routetop.png │ ├── servicemesh.png │ ├── stacktrace.png │ ├── url.png │ └── zuoyong.jpg ├── third_guide.md ├── user_ekk_zh.md └── user_guide.md ├── pom.xml ├── sia-gateway-admin-buildcomponent ├── .gitignore ├── bin │ ├── gw_proc_watcher.sh │ ├── onekey_start.sh │ ├── run.sh │ ├── run4monitor.sh │ ├── run4service.sh │ ├── run4stream.sh │ ├── run4synchspeed.sh │ ├── shutdown_gateway_admin_test.sh │ ├── shutdown_gateway_monitor_test.sh │ ├── shutdown_gateway_service_test.sh │ ├── shutdown_gateway_stream_test.sh │ ├── shutdown_gateway_synchspeed_test.sh │ ├── start_gateway_admin_test.sh │ ├── start_gateway_monitor_test.sh │ ├── start_gateway_service_test.sh │ ├── start_gateway_stream_test.sh │ ├── start_gateway_synchspeed_test.sh │ └── stop.sh ├── config │ ├── gateway_admin_test.yml │ ├── gateway_monitor_test.yml │ ├── gateway_service_test.yml │ ├── gateway_stream_test.yml │ ├── gateway_synchspeed_test.yml │ └── logback.xml └── pom.xml ├── sia-gateway-admin-display ├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── README.md ├── build │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-server.js │ ├── utils.js │ ├── vue-loader.conf.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js │ ├── webpack.prod.conf.js │ └── webpack.test.conf.js ├── config │ ├── dev.env.js │ ├── index.js │ ├── prod.env.js │ └── test.env.js ├── eslint.guide.md ├── index.html ├── package-lock.json ├── package.json ├── src │ ├── App.vue │ ├── common │ │ ├── components │ │ │ ├── breadcrumb.tmpl.vue │ │ │ └── left-menu.tmpl.vue │ │ ├── images │ │ │ ├── arrow-down.png │ │ │ ├── close.png │ │ │ ├── current-gateway-icon.png │ │ │ ├── current-gateway-icon.svg │ │ │ ├── desktop-icon-ck.svg │ │ │ ├── desktop-icon.svg │ │ │ ├── down-active.png │ │ │ ├── down.png │ │ │ ├── edit-ck.png │ │ │ ├── edit.png │ │ │ ├── eureka-ck.svg │ │ │ ├── eureka.svg │ │ │ ├── group-icon-ck.svg │ │ │ ├── group-icon.svg │ │ │ ├── guanbi.png │ │ │ ├── guanbi2.png │ │ │ ├── home-icon-ck.svg │ │ │ ├── home-icon.svg │ │ │ ├── log-icon-ck.svg │ │ │ ├── log-icon.svg │ │ │ ├── logo.png │ │ │ ├── monitor-icon-ck.svg │ │ │ ├── monitor-icon.svg │ │ │ ├── nav-border.png │ │ │ ├── rong-duan-icon-ck.svg │ │ │ ├── rong-duan-icon.svg │ │ │ ├── router-connecte-icon-ck.svg │ │ │ ├── router-connecte-icon.svg │ │ │ ├── router-icon-ck.svg │ │ │ ├── router-icon.svg │ │ │ ├── set-up-icon-ck.svg │ │ │ ├── set-up-icon.svg │ │ │ ├── shen-ji-icon-ck.svg │ │ │ ├── shen-ji-icon.svg │ │ │ ├── swagger-icon-ck.svg │ │ │ ├── swagger-icon.svg │ │ │ ├── system-icon-ck.svg │ │ │ ├── system-icon.svg │ │ │ ├── up-active.png │ │ │ └── up.png │ │ ├── plugins │ │ │ ├── http.js │ │ │ ├── regExpressions.js │ │ │ └── validator.js │ │ ├── routers │ │ │ ├── common.router.js │ │ │ └── router.index.js │ │ ├── services │ │ │ ├── api.provider.js │ │ │ ├── console.provider.js │ │ │ ├── helper.provider.js │ │ │ ├── store.provider.js │ │ │ └── util.js │ │ ├── styles │ │ │ ├── common │ │ │ │ ├── breadcrumb.tmpl.less │ │ │ │ └── left-menu.tmpl.less │ │ │ ├── global.less │ │ │ ├── reset.less │ │ │ ├── theme.less │ │ │ ├── theme │ │ │ │ └── default.theme.less │ │ │ └── transition.less │ │ └── views │ │ │ ├── 401.page.vue │ │ │ └── 404.page.vue │ ├── connecte-test │ │ ├── routers │ │ │ └── connecte-test.router.js │ │ ├── styles │ │ │ ├── connecte-test.page.less │ │ │ └── connecte-test.page.reset.less │ │ └── views │ │ │ └── connecte-test.page.vue │ ├── desktop │ │ ├── components │ │ │ └── edit-desc.tmpl.vue │ │ ├── images │ │ │ └── bottom-bg.png │ │ ├── routers │ │ │ └── desktop.router.js │ │ ├── styles │ │ │ ├── common │ │ │ │ └── edit-desc.tmpl.less │ │ │ ├── desktop.page.less │ │ │ └── desktop.page.reset.less │ │ └── views │ │ │ └── desktop.page.vue │ ├── frame │ │ ├── routers │ │ │ └── frame.router.js │ │ ├── services │ │ │ └── frame.store.js │ │ ├── styles │ │ │ └── index.page.less │ │ └── views │ │ │ └── index.page.vue │ ├── fuse-manage │ │ ├── components │ │ │ └── trace-info.tmpl.vue │ │ ├── routers │ │ │ └── fuse-manage.router.js │ │ ├── styles │ │ │ ├── common │ │ │ │ └── trace-info.tmpl.less │ │ │ ├── fuse-manage.page.less │ │ │ └── fuse-manage.page.reset.less │ │ └── views │ │ │ └── fuse-manage.page.vue │ ├── ganway-set-up │ │ ├── routers │ │ │ └── ganway-set-up.router.js │ │ ├── styles │ │ │ ├── ganway-set-up.page.less │ │ │ └── ganway-set-up.reset.less │ │ └── views │ │ │ └── ganway-set-up.page.vue │ ├── gateway-audit │ │ ├── routers │ │ │ └── gateway-audit.router.js │ │ ├── styles │ │ │ ├── gateway-audit-list.page.less │ │ │ └── gateway-audit-list.page.reset.less │ │ └── views │ │ │ └── gateway-audit-list.page.vue │ ├── gateway-eureka │ │ ├── components │ │ │ ├── reset-eureka.tmpl.vue │ │ │ └── set-eureka.tmpl.vue │ │ ├── routers │ │ │ └── gateway-eureka.router.js │ │ ├── styles │ │ │ ├── common │ │ │ │ ├── reset-eureka.tmpl.less │ │ │ │ └── set-eureka.tmpl.less │ │ │ ├── gateway-eureka-list.page.less │ │ │ └── gateway-eureka-list.page.reset.less │ │ └── views │ │ │ └── gateway-eureka-list.page.vue │ ├── gateway-monitor │ │ ├── components │ │ │ ├── events-details.tmpl.vue │ │ │ ├── garbage-collection-details.tmpl.vue │ │ │ ├── jvm-details.tmpl.vue │ │ │ ├── log-details.tmpl.vue │ │ │ └── memory-details.tmpl.vue │ │ ├── images │ │ │ ├── events.png │ │ │ ├── log.png │ │ │ ├── monitor.png │ │ │ ├── msg.png │ │ │ ├── sheji.png │ │ │ └── warnning.png │ │ ├── routers │ │ │ └── gateway-monitor.router.js │ │ ├── styles │ │ │ ├── common │ │ │ │ ├── common-tmpl.less │ │ │ │ ├── events-details.tmpl.less │ │ │ │ ├── garbage-collection-details.tmpl.less │ │ │ │ ├── jvm-details.tmpl.less │ │ │ │ └── memory-details.tmpl.less │ │ │ ├── gateway-log-list.page.less │ │ │ ├── gateway-monitor.page.less │ │ │ └── gateway-monitor.page.reset.less │ │ └── views │ │ │ ├── gateway-log-list.page.vue │ │ │ ├── gateway-monitor.page.vue │ │ │ └── monitor-list.page.vue │ ├── gateway-swagger │ │ ├── routers │ │ │ └── gateway-monitor.router.js │ │ ├── styles │ │ │ ├── gateway-swagger.page.less │ │ │ └── gateway-swagger.page.reset.less │ │ └── views │ │ │ └── gateway-swagger.page.vue │ ├── group-manage │ │ ├── components │ │ │ ├── bind-group-list.tmpl.vue │ │ │ └── third-party-group.tmpl.vue │ │ ├── images │ │ │ ├── back-icon.png │ │ │ ├── bind.png │ │ │ ├── delete.png │ │ │ ├── left.png │ │ │ ├── right.png │ │ │ └── warnning.png │ │ ├── routers │ │ │ └── group-manage.router.js │ │ ├── styles │ │ │ ├── common │ │ │ │ ├── bind-group-list.tmpl.less │ │ │ │ └── third-party-group.tmpl.less │ │ │ ├── group-detail.page.less │ │ │ ├── group-detail.page.reset.less │ │ │ ├── group-manage-list.page.less │ │ │ └── group-manage-list.page.reset.less │ │ └── views │ │ │ ├── group-detail.page.vue │ │ │ └── group-manage-list.page.vue │ ├── home │ │ ├── components │ │ │ ├── gateway-route-detail.tmpl.vue │ │ │ ├── gateway-status-detail.tmpl.vue │ │ │ ├── monitor-center-detail.tpml.vue │ │ │ └── monitor-warning-detail.tpml.vue │ │ ├── images │ │ │ ├── number.png │ │ │ ├── register.png │ │ │ ├── router-count.png │ │ │ ├── router-regiter.png │ │ │ ├── warn-count.png │ │ │ ├── warning.png │ │ │ └── wave-line.png │ │ ├── routers │ │ │ └── home.router.js │ │ ├── styles │ │ │ ├── common │ │ │ │ └── gateway-status-detail.tmpl.less │ │ │ ├── home.page.less │ │ │ └── home.page.reset.less │ │ └── views │ │ │ ├── aa.vue │ │ │ └── home.page.vue │ ├── log-manage │ │ ├── routers │ │ │ └── log-manage.router.js │ │ ├── styles │ │ │ ├── log-manage-list.page.less │ │ │ └── log-manage-list.page.reset.less │ │ └── views │ │ │ └── log-manage-list.page.vue │ ├── login │ │ ├── images │ │ │ ├── login-bg.jpg │ │ │ └── logo.svg │ │ ├── routers │ │ │ └── login.router.js │ │ ├── styles │ │ │ ├── login.page.less │ │ │ └── login.page.reset.less │ │ └── views │ │ │ └── login.page.vue │ ├── main.js │ ├── route-manage │ │ ├── components │ │ │ ├── current-limit-group.tmpl.vue │ │ │ ├── dispose-subgroup.tmpl.vue │ │ │ ├── gray-public.tmpl.vue │ │ │ ├── group-list.tmpl.vue │ │ │ ├── router-instruction.tmpl.vue │ │ │ ├── router-level.tmpl.vue │ │ │ └── unload-situat.tmpl.vue │ │ ├── images │ │ │ ├── back-icon.png │ │ │ ├── details.png │ │ │ ├── tuopo.png │ │ │ └── tuopo.svg │ │ ├── routers │ │ │ └── route-manage.router.js │ │ ├── styles │ │ │ ├── black-white-detail.page.less │ │ │ ├── black-white-detail.page.reset.less │ │ │ ├── common │ │ │ │ ├── dispose-subgroup.tmpl.less │ │ │ │ ├── group-list.tmpl.less │ │ │ │ ├── router-instruction.tmpl.less │ │ │ │ ├── router-instruction.tmpl.reset.less │ │ │ │ └── router-level.tmpl.less │ │ │ ├── route-create.page.less │ │ │ ├── route-create.page.reset.less │ │ │ ├── route-manage-list.page.less │ │ │ ├── route-manage-list.page.reset.less │ │ │ ├── route-safe-auth.page.less │ │ │ ├── route-safe-auth.page.reset.less │ │ │ └── run-static-detail.page.less │ │ └── views │ │ │ ├── black-white-detail.page.vue │ │ │ ├── route-create.page.vue │ │ │ ├── route-edit.page.vue │ │ │ ├── route-manage-list.page.vue │ │ │ ├── route-safe-auth.page.vue │ │ │ └── run-static-detail.page.vue │ └── system-set-up │ │ ├── routers │ │ └── system-black-name.router.js │ │ ├── styles │ │ ├── system-black-name.page.less │ │ └── system-black-name.page.reset.less │ │ └── views │ │ └── system-black-name.page.vue ├── static │ ├── .gitkeep │ ├── img │ │ ├── apply.png │ │ ├── browser.png │ │ ├── group.png │ │ ├── router.png │ │ ├── settings.png │ │ └── title-icon.png │ └── site-map.js └── test │ └── unit │ ├── .eslintrc │ ├── index.js │ └── karma.conf.js ├── sia-gateway-admin ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── creditease │ │ │ └── gateway │ │ │ ├── admin │ │ │ ├── GatewayAdminApplication.java │ │ │ ├── aspect │ │ │ │ └── ApiGatewayAuditAspect.java │ │ │ ├── config │ │ │ │ ├── AdminConfigMgt.java │ │ │ │ ├── LocalMetaDataLoader.java │ │ │ │ ├── MultipartConfig.java │ │ │ │ ├── SwaggerConfig.java │ │ │ │ ├── VueRouteInterceptor.java │ │ │ │ └── WebMvcConfiguration.java │ │ │ ├── context │ │ │ │ └── ApplicationContextProvider.java │ │ │ ├── controller │ │ │ │ ├── AdminAuthController.java │ │ │ │ ├── AdminController.java │ │ │ │ ├── AdminFilterController.java │ │ │ │ ├── AdminLoginController.java │ │ │ │ ├── AdminRouteController.java │ │ │ │ ├── ComponentController.java │ │ │ │ ├── FallbackController.java │ │ │ │ ├── FileDownLoadController.java │ │ │ │ ├── FileUploadController.java │ │ │ │ ├── GatewayAdminAuditController.java │ │ │ │ ├── MonitorController.java │ │ │ │ ├── RouteRateLimitController.java │ │ │ │ ├── RouteRibbonController.java │ │ │ │ ├── RouteStatisticController.java │ │ │ │ ├── RouteTestController.java │ │ │ │ ├── ServiceRegistryController.java │ │ │ │ ├── SettingController.java │ │ │ │ ├── SwaggerController.java │ │ │ │ ├── TopoAdminController.java │ │ │ │ ├── URLRecordController.java │ │ │ │ └── base │ │ │ │ │ └── BaseAdminController.java │ │ │ ├── domain │ │ │ │ ├── AdminInfo.java │ │ │ │ ├── AuditQuery.java │ │ │ │ ├── CompAdapter.java │ │ │ │ ├── DescConstant.java │ │ │ │ ├── FallbackQuery.java │ │ │ │ ├── MutiZuul.java │ │ │ │ ├── QueryObj.java │ │ │ │ ├── StatisticQuery.java │ │ │ │ └── common │ │ │ │ │ ├── PageQuery.java │ │ │ │ │ └── PaginateList.java │ │ │ ├── event │ │ │ │ └── GatewayAuditEvent.java │ │ │ ├── filter │ │ │ │ ├── AuthInterceptor.java │ │ │ │ └── CorsFilter.java │ │ │ ├── repository │ │ │ │ ├── AdminDbRepository.java │ │ │ │ ├── CompDbRepository.java │ │ │ │ ├── RedisRepository.java │ │ │ │ ├── RouteDbRepository.java │ │ │ │ └── base │ │ │ │ │ └── BaseAdminRepository.java │ │ │ ├── runner │ │ │ │ └── ZuulAdminRunner.java │ │ │ └── service │ │ │ │ ├── AdminService.java │ │ │ │ ├── AuditService.java │ │ │ │ ├── CompTransferService.java │ │ │ │ ├── ComponentService.java │ │ │ │ ├── FallbackService.java │ │ │ │ ├── FileDownloadService.java │ │ │ │ ├── FileUploadService.java │ │ │ │ ├── FilterService.java │ │ │ │ ├── RouteLimitService.java │ │ │ │ ├── RouteRibbonService.java │ │ │ │ ├── RouteService.java │ │ │ │ ├── RouteTestService.java │ │ │ │ ├── SettingService.java │ │ │ │ └── base │ │ │ │ └── BaseAdminService.java │ │ │ └── oauth │ │ │ ├── AuthConstants.java │ │ │ ├── AuthInfo.java │ │ │ ├── AuthServerRunner.java │ │ │ ├── admin │ │ │ ├── OauthAdminController.java │ │ │ ├── OauthAdminRepository.java │ │ │ └── OauthAdminService.java │ │ │ └── server │ │ │ ├── OauthServer.java │ │ │ └── OauthServerController.java │ └── resources │ │ ├── .gitignore │ │ ├── application.yml │ │ ├── component.json │ │ ├── db │ │ └── gateway_admin.sql │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── creditease │ └── gateway │ └── test │ ├── ClientParams.java │ ├── OauthClient.java │ ├── OauthUrlClient.java │ ├── TestHttp.java │ └── pressuretest │ └── ConcurrentTest.java ├── sia-gateway-base ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ └── java │ └── com │ ├── common │ └── system │ │ ├── RedisCacheManager.java │ │ ├── RedisObjectSerializer.java │ │ ├── RedisSessionDAO.java │ │ ├── ShiroCache.java │ │ ├── entity │ │ ├── RcPrivilege.java │ │ └── RcRole.java │ │ └── shiro │ │ ├── ShiroSession.java │ │ └── ShiroUser.java │ └── creditease │ └── gateway │ ├── alarm │ ├── AlarmContextAware.java │ └── AlarmService.java │ ├── annotation │ └── CatchExcept.java │ ├── aspect │ └── ApiGatewayExceptionAspect.java │ ├── constant │ ├── GatewayConstant.java │ ├── SagProtocol.java │ └── SynchSpeedProtocol.java │ ├── database │ ├── BaseRepository.java │ └── DataSourceConfig.java │ ├── discovery │ └── DiscoveryService.java │ ├── domain │ ├── AlarmInfo.java │ ├── BwfilterObj.java │ ├── CompInfo.java │ ├── CounterInfo.java │ ├── CounterPair.java │ ├── EurekaInfo.java │ ├── FIFOCache.java │ ├── Fallback.java │ ├── GatewayAuditObj.java │ ├── GatewayListDB.java │ ├── GatewayListMsg.java │ ├── RibbonnRule.java │ ├── RouteCounterInfo.java │ ├── RouteObj.java │ ├── RouteObjExtend.java │ ├── RouteRibbonHolder.java │ ├── RouteStrategy.java │ ├── UpstreamObj.java │ ├── UrlRecordAggregate.java │ ├── ZuulInfo.java │ └── topo │ │ ├── Link.java │ │ └── RouteTopo.java │ ├── excpetion │ └── GatewayException.java │ ├── helper │ ├── Base64.java │ ├── ClasspathPackageScanner.java │ ├── DataConvertHelper.java │ ├── DateTimeHelper.java │ ├── EncodeHelper.java │ ├── HostNewworkInfo.java │ ├── IoHelper.java │ ├── IpUtils.java │ ├── JsonHelper.java │ ├── JvmToolHelper.java │ ├── NetworkHelper.java │ ├── ReflectionHelper.java │ ├── RuntimeHelper.java │ ├── SerializerFeature.java │ ├── ShellService.java │ ├── StringHelper.java │ ├── StringUtil.java │ └── TimeHelper.java │ ├── localcache │ ├── L1Cache.java │ ├── L1CacheObj.java │ └── LocalCacheManager.java │ ├── logger │ └── LoggerController.java │ ├── message │ ├── Message.java │ └── ZuulHandler.java │ ├── redis │ ├── RedisConfig.java │ └── RedisUtil.java │ └── zk │ └── ZkConfigClient.java ├── sia-gateway-buildcomponent ├── .gitignore ├── bin │ ├── gw_proc_watcher.sh │ ├── k8s_run.sh │ ├── k8s_start_gateway_test.sh │ ├── run.sh │ ├── shutdown_gateway_test.sh │ ├── start.sh │ ├── start_gateway_pro.sh │ ├── start_gateway_test.sh │ ├── start_gatewayservice_boot_admin.sh │ └── stop.sh ├── config │ ├── gateway_test.yml │ └── logback.xml └── pom.xml ├── sia-gateway-core ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── creditease │ │ └── gateway │ │ ├── GatewayApplication.java │ │ ├── cache │ │ ├── FilterCacheManager.java │ │ ├── LRUCache.java │ │ └── UpstreamCacheManager.java │ │ ├── config │ │ ├── DocumentationConfig.java │ │ ├── GatewayConfig.java │ │ ├── GatewaySupportConfiguration.java │ │ ├── LocalMetaDataLoader.java │ │ ├── MultipartConfig.java │ │ ├── SpringUtil.java │ │ └── SwaggerConfig.java │ │ ├── eureka │ │ ├── EurekaClientRunner.java │ │ ├── EurekaHandler.java │ │ └── listener │ │ │ └── EurekaRefreshListener.java │ │ ├── filter │ │ ├── EventCapFilter.java │ │ ├── GlobalBlackListFilter.java │ │ ├── StatisticErrorFilter.java │ │ ├── StatisticFilter.java │ │ ├── TopoCaptureFilter.java │ │ ├── UrlRecord.java │ │ ├── ZuulDebugFilter.java │ │ ├── abs │ │ │ └── AbstractGatewayFilter.java │ │ ├── common │ │ │ ├── AuthAuthenticateFilter.java │ │ │ ├── AuthWBListFilter.java │ │ │ ├── LogRequestFilter.java │ │ │ ├── LogResponsetFilter.java │ │ │ ├── RateLimitFilter.java │ │ │ ├── RibbonBRRouteFilter.java │ │ │ └── RibbonCanaryRouteFilter.java │ │ └── dynamic │ │ │ ├── AbstractClass.java │ │ │ ├── GatewayClassLoaderFactory.java │ │ │ ├── GatewayCompile.java │ │ │ ├── GatewayLoadLineRunner.java │ │ │ └── JarFileFilter.java │ │ ├── http │ │ └── wrapper │ │ │ ├── HttpHelper.java │ │ │ ├── HttpServletRequestWrapper.java │ │ │ └── HttpServletResponseWrapper.java │ │ ├── hystrix │ │ ├── FallbackEvent.java │ │ ├── SAGFallbackProvider.java │ │ ├── StrategyFactory.java │ │ └── strategy │ │ │ ├── FallCommandStrategy.java │ │ │ ├── FallDefaultStrategy.java │ │ │ ├── FallbackStrategy.java │ │ │ ├── HostConnectStrategy.java │ │ │ ├── HystrixDefaultStrategy.java │ │ │ ├── RejectedthreadStrategy.java │ │ │ ├── RequestBadStrategy.java │ │ │ ├── ShortcircuitStrategy.java │ │ │ └── TimeoutStrategy.java │ │ ├── javassist │ │ ├── EurekaClientJavassist.java │ │ ├── FilterLoaderJavassit.java │ │ └── util │ │ │ └── JavassistProcessor.java │ │ ├── listener │ │ └── ApplicationPreparedEventListener.java │ │ ├── register │ │ ├── GatewayContextMgt.java │ │ └── GatewayRunner.java │ │ ├── repository │ │ ├── RibbonRepository.java │ │ ├── RouteRepository.java │ │ └── ZuulRepository.java │ │ ├── ribbon │ │ ├── RibbonDiscoveryRuleAutoConfiguration.java │ │ ├── RibbonRuleFactory.java │ │ ├── RibbonServerSource.java │ │ ├── RibbonUpdaterFactory.java │ │ ├── RibbonUpdaterInterface.java │ │ ├── context │ │ │ ├── DefaultRibbonFilterContext.java │ │ │ ├── RibbonFilterContext.java │ │ │ └── RibbonFilterContextHolder.java │ │ ├── rule │ │ │ ├── BaseDiscoveryEnabledPredicate.java │ │ │ ├── BaseDiscoveryEnabledRule.java │ │ │ ├── MetadataMatchPredicate.java │ │ │ └── MetadataMatchRule.java │ │ └── updater │ │ │ ├── RibbonUpdater.java │ │ │ ├── RibbonUpdaterEtcd.java │ │ │ ├── RibbonUpdaterStatic.java │ │ │ ├── RibbonUpdaterZookeeper.java │ │ │ └── ZuulListOfServer.java │ │ ├── route │ │ ├── RouteBindRunner.java │ │ ├── RouteLocatorUpdater.java │ │ ├── RouteManager.java │ │ └── locator │ │ │ ├── ZuulDiscovercRouteLocator.java │ │ │ ├── ZuulListofServerLocator.java │ │ │ └── ZuulRouteLocator.java │ │ ├── service │ │ ├── AuthService.java │ │ ├── LogService.java │ │ ├── RateLimitService.java │ │ ├── RouteOptService.java │ │ ├── RouteRibbonService.java │ │ ├── StatisticService.java │ │ ├── ZuulService.java │ │ ├── impl │ │ │ ├── AuthServiceImpl.java │ │ │ ├── LogServiceImpl.java │ │ │ ├── RateLimitServiceImpl.java │ │ │ ├── RouteOptServiceImpl.java │ │ │ ├── RouteRibbonServiceImpl.java │ │ │ ├── StatisticServiceImpl.java │ │ │ ├── UrlAnalysisService.java │ │ │ └── ZuulServiceImpl.java │ │ └── wblist │ │ │ ├── AbstractbwListDispatch.java │ │ │ ├── FilterByDomainProcessor.java │ │ │ ├── FilterbwListStrategyManager.java │ │ │ └── FilterbyipProcessor.java │ │ ├── spi │ │ ├── BaseAdminController.java │ │ └── controller │ │ │ ├── AuthbwListController.java │ │ │ ├── ConfigController.java │ │ │ ├── GatewayConfigWatch.java │ │ │ ├── RouteCompController.java │ │ │ ├── RouteCompUploadController.java │ │ │ ├── RouteMonitorController.java │ │ │ ├── RouteRateLimitController.java │ │ │ ├── RouteRefreshController.java │ │ │ ├── RouteSwitchController.java │ │ │ ├── RouteWatchController.java │ │ │ ├── SynchSpeedController.java │ │ │ ├── TopologyController.java │ │ │ ├── UrlRecordController.java │ │ │ └── ZuulCoreController.java │ │ ├── synch │ │ └── processor │ │ │ └── UpstreamProcessor.java │ │ └── topology │ │ ├── Event.java │ │ ├── TopoLogyScheduled.java │ │ ├── TopologyManager.java │ │ └── intercept │ │ ├── InterceptContext.java │ │ ├── ThreadContext.java │ │ └── ThreadInterceptProcessor.java │ └── resources │ ├── META-INF │ └── spring.factories │ ├── application.yml │ ├── logback.xml │ └── meta.data ├── sia-gateway-esclient ├── .gitignore ├── LICENSE ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── creditease │ └── gateway │ └── elasticsearch │ ├── client │ └── ESClient.java │ └── index │ └── ESIndexHelper.java ├── sia-gateway-messaging ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── creditease │ └── gateway │ └── message │ ├── api │ ├── BaseMqConsumer.java │ ├── BaseMqProducer.java │ ├── MqHandler.java │ ├── domain │ │ └── MqMessage.java │ └── impl │ │ ├── KafkaConsumer.java │ │ └── KafkaProducer.java │ ├── appender │ ├── JsonTransform.java │ ├── SagAppenderRunner.java │ └── SagMqAppender.java │ └── config │ ├── ConsumerAutoConfiguration.java │ ├── EnableSagConsumer.java │ ├── EnableSagProducer.java │ ├── ProducerAutoConfiguration.java │ └── SagMqProperties.java ├── sia-gateway-monitor ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── creditease │ │ └── gateway │ │ ├── GatewayMonitorApplication.java │ │ ├── config │ │ └── MonitorConfiguration.java │ │ └── controller │ │ └── MonitorController.java │ └── resources │ └── application.yml ├── sia-gateway-reactive ├── .gitignore ├── LICENSE ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── creditease │ └── gateway │ └── reactive │ ├── ReactiveExecutable.java │ ├── ReactiveObservable.java │ ├── RxScheduler.java │ ├── RxThreadPool.java │ ├── impl │ └── BaseEventInvoke.java │ └── test │ └── MainEvent.java ├── sia-gateway-registry ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── creditease │ └── gateway │ ├── repository │ └── EurekaRepository.java │ └── service │ └── EurekaService.java ├── sia-gateway-service ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── creditease │ │ └── gateway │ │ ├── GatewayServiceApplication.java │ │ ├── config │ │ ├── GatewaySupportConfiguration.java │ │ ├── LocalMetaDataLoader.java │ │ └── MySchedulingConfigurer.java │ │ ├── controller │ │ ├── SendAlarmEmailController.java │ │ ├── TopoViewController.java │ │ └── UrlViewController.java │ │ ├── scheduler │ │ ├── GatewayHealthCheckScheduledTask.java │ │ ├── GatewayMonitorScheduledTask.java │ │ ├── NotifySuperGatewayScheduledTask.java │ │ ├── TopoLogyScheduledTask.java │ │ └── URLMonitorScheduledTask.java │ │ ├── service │ │ ├── EmailWithFeignService.java │ │ ├── SchedulerService.java │ │ ├── abstractlist │ │ │ ├── AbstractPostAlarmInfo.java │ │ │ └── EmailAlarmPostImpl.java │ │ ├── impl │ │ │ └── SchedulerServiceImpl.java │ │ └── repository │ │ │ ├── AlarmRepository.java │ │ │ └── SchedulerRepository.java │ │ └── vo │ │ └── AlarmEmailVO.java │ └── resources │ ├── application.yml │ └── logback.xml ├── sia-gateway-sink ├── .gitignore ├── LICENSE ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── creditease │ └── gateway │ ├── config │ ├── EnableSink.java │ ├── SinkAutoConfiguration.java │ └── SinkProperties.java │ ├── handler │ └── DataConsumerHandler.java │ ├── runner │ └── SinkRunner.java │ └── sink │ ├── LogDataCollector.java │ ├── abs │ └── BaseDataCollector.java │ ├── es │ └── EsIndexMgr.java │ └── starter │ ├── AbstractSinkStarter.java │ └── LogSinkStarter.java ├── sia-gateway-stream ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── creditease │ │ └── gateway │ │ └── GatewayStreamApplication.java │ └── resources │ ├── application.yml │ └── index-mapping.json ├── sia-gateway-synchspeed ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── creditease │ │ └── gateway │ │ ├── GatewaySynchApplication.java │ │ ├── config │ │ └── GatewaySynchConfiguration.java │ │ ├── controller │ │ └── SynchSpeedController.java │ │ ├── respository │ │ └── SynchDbRepository.java │ │ └── service │ │ ├── TriggerEvent.java │ │ └── impl │ │ └── TriggerEventImpl.java │ └── resources │ ├── application.yml │ └── logback.xml ├── sia-gateway-template ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── creditease │ └── gateway │ ├── annotation │ ├── FilterAnnotation.java │ └── ReflectionHelper.java │ └── template │ ├── absfilter │ └── AbstractThirdPartyFilter.java │ └── context │ ├── GatewayContextAware.java │ └── GatewayFilterProtocal.java ├── sia-gateway-testFilter ├── .gitignore ├── LICENSE ├── findbugs.exclude.xml ├── pom.xml └── src │ └── main │ └── java │ └── com │ └── creditease │ └── gateway │ └── filter │ └── biz │ └── TestFilter.java └── third-libary ├── docker-start.sh ├── nginx.conf ├── tcl-8.5.13-8.el7.x86_64.rpm └── tcl-devel-8.5.13-8.el7.x86_64.rpm /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=java; 2 | *.css linguist-language=java; 3 | *.html linguist-language=java 4 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd ./sia-gateway-admin-buildcomponent/ && mvn clean install -Dmaven.test.skip=true 3 | cd ../sia-gateway-buildcomponent/ && mvn clean install -Dmaven.test.skip=true 4 | cd ../sia-gateway-admin-display/ && sudo npm install -g npm && npm run build 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docker-build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | docker build -t reg.caiwu/sia/gateway:v1 . 3 | -------------------------------------------------------------------------------- /docker-run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | str=$(cd "$(dirname "$0")";pwd) 3 | 4 | volums_path="-v ${str}/sia-gateway-admin-buildcomponent/config:/app/jar/ROOT/gatewayadmin/config -v ${str}/sia-gateway-buildcomponent/config:/app/jar/ROOT/gateway/config" 5 | # volums_path="-v ${str}/config:/app/jar/ROOT/gatewayadmin/config -v ${str}/config:/app/jar/ROOT/gateway/config" 6 | if [ ! $1 ]; then 7 | volums_path="" 8 | fi 9 | 10 | # -v /etc/localtime:/etc/localtime 11 | docker run --name gateway-test -d ${volums_path} -p 18086:18086 -p 8080:8080 -p 8040:8040 --restart=on-failure:10 --privileged=true reg.caiwu/sia/gateway:v1 /bin/bash -c " /app/jar/ROOT/docker-start.sh " 12 | 13 | -------------------------------------------------------------------------------- /docs/dev.md: -------------------------------------------------------------------------------- 1 | ## 开发实例 2 | * SIA-GateWay 第三方组件开发指南[示例](/docs/third_guide.md)。 3 | * SIA-GateWay 安全认证客户端开发指南[示例](/docs/safe_guide.md). 4 | * SIA-GateWay 蓝绿部署、金丝雀部署中微服务配置文件指南[示例](/docs/ms_guide.md) 5 | * EKK构建方法[示例](/docs/user_ekk_zh.md). -------------------------------------------------------------------------------- /docs/ms_guide.md: -------------------------------------------------------------------------------- 1 | # 微服务灰度配置 2 | 3 | ### 网关灰度发布说明 4 | 5 | 目前灰度发布组件包含两种导流方式:蓝绿部署和金丝雀部署, 这两种流量导流策略都需要网关连接的后端服务是SpringBoot微服务并且注册到Eureka注册中心,并且SpringBoot服务需要配置文件中的MetaData版本信息。 6 | 7 | ### 配置文件 8 | 9 | ```yml 10 | 11 | spring.application.name: xxx 12 | server.port: **** 13 | eureka.client.serviceUrl.defaultZone: http://127.0.0.1:19002/eureka/ 14 | eureka.instance.preferIpAddress: true 15 | eureka.instance.instance-id: ${spring.cloud.client.ipAddress}:${server.port} 16 | eureka.instance.prefer-ip-address: true 17 | eureka.instance.metadata-map.version: 1 18 | 19 | ``` 20 | 上面是一个应用的配置文件,其中表明版本信息的MetaData如下,只需要根据不同版本信息表用节点版本即可。 21 | 22 | ```yml 23 | eureka.instance.metadata-map.version: 1 24 | ``` 25 | -------------------------------------------------------------------------------- /docs/static_files/DeskTop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/DeskTop.jpg -------------------------------------------------------------------------------- /docs/static_files/Frm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/Frm.png -------------------------------------------------------------------------------- /docs/static_files/Kibana.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/Kibana.jpg -------------------------------------------------------------------------------- /docs/static_files/ark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/ark.png -------------------------------------------------------------------------------- /docs/static_files/audit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/audit.png -------------------------------------------------------------------------------- /docs/static_files/black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/black.png -------------------------------------------------------------------------------- /docs/static_files/comp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/comp.png -------------------------------------------------------------------------------- /docs/static_files/compmgt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/compmgt.png -------------------------------------------------------------------------------- /docs/static_files/componentManager.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/componentManager.jpg -------------------------------------------------------------------------------- /docs/static_files/conf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf1.png -------------------------------------------------------------------------------- /docs/static_files/conf10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf10.png -------------------------------------------------------------------------------- /docs/static_files/conf11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf11.png -------------------------------------------------------------------------------- /docs/static_files/conf12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf12.png -------------------------------------------------------------------------------- /docs/static_files/conf13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf13.png -------------------------------------------------------------------------------- /docs/static_files/conf14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf14.png -------------------------------------------------------------------------------- /docs/static_files/conf15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf15.png -------------------------------------------------------------------------------- /docs/static_files/conf16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf16.png -------------------------------------------------------------------------------- /docs/static_files/conf17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf17.png -------------------------------------------------------------------------------- /docs/static_files/conf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf2.png -------------------------------------------------------------------------------- /docs/static_files/conf3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf3.png -------------------------------------------------------------------------------- /docs/static_files/conf4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf4.png -------------------------------------------------------------------------------- /docs/static_files/conf5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf5.png -------------------------------------------------------------------------------- /docs/static_files/conf6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf6.png -------------------------------------------------------------------------------- /docs/static_files/conf7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf7.png -------------------------------------------------------------------------------- /docs/static_files/conf8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf8.png -------------------------------------------------------------------------------- /docs/static_files/conf9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/conf9.png -------------------------------------------------------------------------------- /docs/static_files/deploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/deploy.png -------------------------------------------------------------------------------- /docs/static_files/desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/desktop.png -------------------------------------------------------------------------------- /docs/static_files/dis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/dis.png -------------------------------------------------------------------------------- /docs/static_files/ekk架构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/ekk架构.png -------------------------------------------------------------------------------- /docs/static_files/es.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/es.png -------------------------------------------------------------------------------- /docs/static_files/fenlei.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/fenlei.jpg -------------------------------------------------------------------------------- /docs/static_files/gateway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/gateway.png -------------------------------------------------------------------------------- /docs/static_files/gatewayMonitor.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/gatewayMonitor.jpg -------------------------------------------------------------------------------- /docs/static_files/gatewaySetting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/gatewaySetting.jpg -------------------------------------------------------------------------------- /docs/static_files/gatewaySwagger.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/gatewaySwagger.jpg -------------------------------------------------------------------------------- /docs/static_files/gatewaytop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/gatewaytop.png -------------------------------------------------------------------------------- /docs/static_files/homePage.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/homePage.jpg -------------------------------------------------------------------------------- /docs/static_files/hystrixManager.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/hystrixManager.jpg -------------------------------------------------------------------------------- /docs/static_files/jar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/jar.png -------------------------------------------------------------------------------- /docs/static_files/logManager.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/logManager.jpg -------------------------------------------------------------------------------- /docs/static_files/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/login.png -------------------------------------------------------------------------------- /docs/static_files/msa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/msa.png -------------------------------------------------------------------------------- /docs/static_files/newRoute.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/newRoute.jpg -------------------------------------------------------------------------------- /docs/static_files/newlog.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/newlog.jpeg -------------------------------------------------------------------------------- /docs/static_files/registryManager.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/registryManager.jpg -------------------------------------------------------------------------------- /docs/static_files/route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/route.png -------------------------------------------------------------------------------- /docs/static_files/routeManager-operation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/routeManager-operation.jpg -------------------------------------------------------------------------------- /docs/static_files/routeManager-topo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/routeManager-topo.jpg -------------------------------------------------------------------------------- /docs/static_files/routeManager.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/routeManager.jpg -------------------------------------------------------------------------------- /docs/static_files/routetop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/routetop.png -------------------------------------------------------------------------------- /docs/static_files/servicemesh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/servicemesh.png -------------------------------------------------------------------------------- /docs/static_files/stacktrace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/stacktrace.png -------------------------------------------------------------------------------- /docs/static_files/url.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/url.png -------------------------------------------------------------------------------- /docs/static_files/zuoyong.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/docs/static_files/zuoyong.jpg -------------------------------------------------------------------------------- /docs/third_guide.md: -------------------------------------------------------------------------------- 1 | # 第三方插件开发指南 2 | 3 | ### 功能介绍 4 | 5 | API网关对ZuulFilter进行了抽象封装,业务系统根据template提供的AbstractThirdPartyFilter抽象类,实现定制化的业务逻辑按照标准规范开发及打包步骤,上传到API网关平台后通过路由绑定组件功能使业务逻辑生效。 6 | 7 | 8 | 9 | ### POM文件命名规范及依赖 10 | 11 | 【规范1】artifactId命名需要与Filter类名一致,并且需要带version信息。 12 | 13 | 【规范2】需要引入 `sia-gateway-template` 依赖 14 | 15 | 16 | ```xml 17 | 18 | com.sia 19 | TestFilter 20 | 1.0 21 | 22 | ........ 23 | 24 | 25 | com.sia 26 | sia-gateway-template 27 | 1.0 28 | 29 | ``` 30 | 31 | 【规范3】第三方组件工程的依赖包需要放在sia-gateway-template的 POM.xml 加载相关依赖。 32 | 第三方组件工程打包仅包含源码文件,所有第三方JAR包由sia-gateway-template加载依赖 33 | 34 | 35 | ### Demo工程代码实例 36 | 37 | sia-gateway-testFilter 源码工程包含业务第三方组件开发实例。 -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /.project -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/gw_proc_watcher.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | source /etc/profile 3 | process_flag=$1 4 | 5 | working_directory=$2 6 | 7 | start_command=$3 8 | 9 | now=$(date "+%Y-%m-%d %H:%M:%S") 10 | # max log file count 11 | log_file_max=30 12 | 13 | # interval of run 14 | step=15 15 | if [[ "$4" -ge 5 && "$4" -le 60 ]]; then 16 | step=$4 17 | fi 18 | 19 | for(( i = 0; i < 60; i=(i+step) )); do 20 | 21 | # judge process running 22 | count=`ps -fC java | grep $process_flag | wc -l` 23 | if [ $count -eq 0 ]; then 24 | # log 25 | echo "$now $process_flag restart by $start_command">>$working_directory/$(date "+%Y-%m-%d")_restart.out 26 | # start 27 | cd $working_directory 28 | nohup $start_command 1>/dev/null 2>&1 & 29 | 30 | # clear log file 31 | if [ $(find $working_directory -name "*_restart.out" | wc -l) -gt $log_file_max ]; then 32 | rm -rf $(ls $working_directory/*_restart.out|head -n1) 33 | fi 34 | fi 35 | 36 | # 37 | if [ $step -ge 60 ];then 38 | exit 0 39 | else 40 | sleep $step 41 | fi 42 | 43 | done 44 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/onekey_start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | chmod +x *.sh 4 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_admin_test.sh 5 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_service_test.sh 6 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_synchspeed_test.sh 7 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_stream_test.sh 8 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_monitor_test.sh 9 | 10 | echo "启动网关核心" 11 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/shutdown_gateway_admin_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./stop.sh gateway_admin_test >$(pwd)/gateway_admin_test.shutdown 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/shutdown_gateway_monitor_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./stop.sh gateway_monitor_test > /dev/null 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/shutdown_gateway_service_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./stop.sh gateway_service_test >$(pwd)/gateway_service_test.shutdown 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/shutdown_gateway_stream_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./stop.sh gateway_stream_test >$(pwd)/gateway_stream_test.shutdown 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/shutdown_gateway_synchspeed_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./stop.sh gateway_synchspeed_test >/dev/null 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/start_gateway_admin_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./run.sh gateway_admin_test sia-gateway-admin-1.0.jar >$(pwd)/gateway_admin_test.start 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/start_gateway_monitor_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./run4monitor.sh gateway_monitor_test sia-gateway-monitor-1.0.jar > /dev/null 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/start_gateway_service_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./run4service.sh gateway_service_test sia-gateway-service-1.0.jar >$(pwd)/gateway_service_test.start 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/start_gateway_stream_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./run4stream.sh gateway_stream_test sia-gateway-stream-1.0.jar >$(pwd)/gateway_stream_test.start 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/start_gateway_synchspeed_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./run4synchspeed.sh gateway_synchspeed_test sia-gateway-synchspeed-1.0.jar > /dev/null 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/bin/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # First, delete crontab 4 | process_flag=$1 5 | count=`crontab -l 2>/dev/null | grep "$process_flag" | wc -l` 6 | if [ $count -ne 0 ]; then 7 | cronfile=$(pwd)/$process_flag".cron.stop" 8 | crontab -l | grep -v "$process_flag" > $cronfile 9 | crontab $cronfile 10 | rm $cronfile 11 | fi 12 | 13 | # Second, kill running watcher 14 | runing_watcher=$(ps -ef | grep "gw_proc_watcher.sh" | grep "$process_flag" |grep -v grep | awk '{printf "%s ",$2}') 15 | for pid in $runing_watcher; do 16 | echo "watcher will be killed by kill -9 $pid" 17 | kill -9 "$pid" 18 | done 19 | 20 | # Third, kill application 21 | app_pid=$(ps -ef | grep "$process_flag" |grep -v grep |grep -v "stop.sh"| awk '{printf "%s ",$2}') 22 | for pid in $app_pid; do 23 | echo "application will be killed by kill -9 $pid" 24 | kill -9 "$pid" 25 | done 26 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/config/gateway_monitor_test.yml: -------------------------------------------------------------------------------- 1 | spring.application.name: API-GATEWAY-MONITOR 2 | eureka.client.serviceUrl.defaultZone: http://127.0.0.1:19002/eureka/,http://10.143.131.134:19002/eureka/ 3 | eureka.instance.preferIpAddress: true 4 | eureka.instance.instance-id: ${spring.cloud.client.ipAddress}:${server.port} 5 | server.port: 8040 6 | 7 | logging.file: ../logs/${spring.application.name}.log 8 | 9 | # ZUUL actuator功能 10 | management.security.enabled: false -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/config/gateway_synchspeed_test.yml: -------------------------------------------------------------------------------- 1 | ######################################################## 2 | ### ZUUL 辅助服务 3 | ######################################################## 4 | spring.application.name: SYNCH-EUREKA-SERVICE 5 | eureka.client.serviceUrl.defaultZone: http://127.0.0.1:19002/eureka/ 6 | eureka.instance.preferIpAddress: true 7 | eureka.instance.instance-id: ${spring.cloud.client.ipAddress}:${server.port} 8 | server.port: 8060 9 | 10 | # ZUUL actuator功能 11 | management.security.enabled: false 12 | 13 | ######################################################## 14 | ### 数据库 mysql基本配置 15 | ######################################################## 16 | spring.datasource.skytrain: 17 | url: jdbc:mysql://127.0.0.1:3306/zoner?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false 18 | username: root 19 | password: **** 20 | driverClassName: com.mysql.jdbc.Driver 21 | 22 | ######################################################## 23 | ### KAFKA 基本配置 24 | ######################################################## 25 | spring.kafka.bootstrap-servers: 127.0.0.1:9092 26 | # 生产者和消费者topic前缀 27 | spring.kafka.topicPrefix: sag. 28 | 29 | spring.kafka.producer.numOfPartition: 4 30 | spring.kafka.producer.retries: 2 31 | # 每次批量发送消息的数量 32 | spring.kafka.producer.batch-size: 16384 33 | spring.kafka.producer.buffer-memory: 33554432 34 | 35 | logging.file: ../logs/${spring.application.name}.log 36 | 37 | 38 | #网关预警服务邮箱接口 39 | ALARM_EMAIL_ADDRESS: # http://127.0.0.1:8070/alarmEmail/sendAlarmEmail 40 | 41 | #eureka-server名字 42 | EUREKA_SERVER_NAME: GANTRY-EUREKA-SERVER 43 | -------------------------------------------------------------------------------- /sia-gateway-admin-buildcomponent/config/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ${FILE_LOG_PATTERN} 12 | 13 | ${LOG_FILE} 14 | 15 | ${LOG_FILE}.%i 16 | 1 17 | 10 18 | 19 | 20 | 10MB 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { 4 | "modules": false, 5 | "targets": { 6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] 7 | } 8 | }], 9 | "stage-2" 10 | ], 11 | "plugins": ["transform-runtime"], 12 | "env": { 13 | "test": { 14 | "presets": ["env", "stage-2"], 15 | "plugins": ["istanbul"] 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | config/*.js 3 | src/* 4 | static/* 5 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | // 默认情况下,ESLint会在所有父级组件中寻找配置文件,一直到根目录。ESLint一旦发现配置文件中有 "root": true,它就会停止在父级目录中寻找。 3 | root: true, 4 | // 对Babel解析器的包装使其与 ESLint 兼容。 5 | parser: 'babel-eslint', 6 | parserOptions: { 7 | // 代码是 ECMAScript 模块 8 | sourceType: 'module' 9 | }, 10 | env: { 11 | // 预定义的全局变量,这里是浏览器环境 12 | browser: true, 13 | }, 14 | // 扩展一个流行的风格指南,即 eslint-config-standard 15 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 16 | extends: 'standard', 17 | // required to lint *.vue files 18 | plugins: [ 19 | // 此插件用来识别.html 和 .vue文件中的js代码 20 | 'html', 21 | // standard风格的依赖包 22 | "standard", 23 | // standard风格的依赖包 24 | "promise" 25 | ], 26 | // add your custom rules here http://www.cnblogs.com/hahazexia/p/6393212.html 27 | 'rules': { 28 | // allow paren-less arrow functions 29 | 'arrow-parens': 0, 30 | // allow async-await 31 | 'generator-star-spacing': 0, 32 | // allow debugger during development 33 | 'no-debugger': process.env.NODE_ENV === "production" ? 2 : 0 34 | } 35 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (http://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # Typescript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | 60 | # Compiled files 61 | dist 62 | /dist 63 | 64 | # IED file 65 | .vs 66 | .idea 67 | .vscode 68 | 69 | # unit test result files 70 | test/unit/coverage 71 | test/e2e/reports 72 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserslist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/README.md: -------------------------------------------------------------------------------- 1 | ## 前端部署 2 | ### 环境准备 3 | (1)node环境安装 => https://nodejs.org/en/download/ 4 | 5 | (2)Nginx安装 6 | 7 | ### 前端项目打包 8 | (1)进入本地的项目执行命令进行打包 => npm run build 9 | 10 | 注:1、打包完成在改文件夹下面生成dist文件夹,改文件夹为前端工程 11 | 12 | 2、dist/static文件夹下面的site.map.js为后端服务配置(ip:port形式),根据项目需求自行更改 13 | ### 前端项目部署 14 | (1)nginx的代理配置 15 | 16 | 进入nginx的目录下nginx.conf,添加如下代理: 17 | 18 | 19 | ``` 20 | server { 21 | listen 8080; // 前端页面监听端口 22 | server_name localhost; 23 | location / { 24 | root app/dist; // 前端包存放目录 25 | index index.html index.htm; 26 | try_files $uri $uri/ @router; 27 | } 28 | location @router { 29 | rewrite ^.*$ /index.html last; 30 | } 31 | error_page 500 502 503 504 /50x.html; 32 | location = /50x.html { 33 | root html; 34 | } 35 | } 36 | 37 | server { 38 | listen 80; 39 | server_name localhost; 40 | location / { 41 | proxy_pass http://*.*.*.*:8081; // 后端服务地址 42 | add_header 'Access-Control-Allow-Origin' 'http://*.*.*.*:8080'; 43 | add_header 'Access-Control-Allow-Credentials' 'true'; 44 | } 45 | } 46 | ``` -------------------------------------------------------------------------------- /sia-gateway-admin-display/build/build.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | process.env.NODE_ENV = 'production' 4 | 5 | var ora = require('ora') 6 | var rm = require('rimraf') 7 | var path = require('path') 8 | var chalk = require('chalk') 9 | var webpack = require('webpack') 10 | var config = require('../config') 11 | var webpackConfig = require('./webpack.prod.conf') 12 | 13 | var spinner = ora('building for production...') 14 | spinner.start() 15 | 16 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 17 | if (err) throw err 18 | webpack(webpackConfig, function (err, stats) { 19 | spinner.stop() 20 | if (err) throw err 21 | process.stdout.write(stats.toString({ 22 | colors: true, 23 | modules: false, 24 | children: false, 25 | chunks: false, 26 | chunkModules: false 27 | }) + '\n\n') 28 | 29 | if (stats.hasErrors()) { 30 | console.log(chalk.red(' Build failed with errors.\n')) 31 | process.exit(1) 32 | } 33 | 34 | console.log(chalk.cyan(' Build complete.\n')) 35 | console.log(chalk.yellow( 36 | ' Tip: built files are meant to be served over an HTTP server.\n' + 37 | ' Opening index.html over file:// won\'t work.\n' 38 | )) 39 | }) 40 | }) 41 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/build/check-versions.js: -------------------------------------------------------------------------------- 1 | var chalk = require('chalk') 2 | var semver = require('semver') 3 | var packageConfig = require('../package.json') 4 | var shell = require('shelljs') 5 | function exec (cmd) { 6 | return require('child_process').execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | } 15 | ] 16 | 17 | if (shell.which('npm')) { 18 | versionRequirements.push({ 19 | name: 'npm', 20 | currentVersion: exec('npm --version'), 21 | versionRequirement: packageConfig.engines.npm 22 | }) 23 | } 24 | 25 | module.exports = function () { 26 | var warnings = [] 27 | for (var i = 0; i < versionRequirements.length; i++) { 28 | var mod = versionRequirements[i] 29 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 30 | warnings.push(mod.name + ': ' + 31 | chalk.red(mod.currentVersion) + ' should be ' + 32 | chalk.green(mod.versionRequirement) 33 | ) 34 | } 35 | } 36 | 37 | if (warnings.length) { 38 | console.log('') 39 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 40 | console.log() 41 | for (var i = 0; i < warnings.length; i++) { 42 | var warning = warnings[i] 43 | console.log(' ' + warning) 44 | } 45 | console.log() 46 | process.exit(1) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var config = require('../config') 3 | var isProduction = process.env.NODE_ENV === 'production' 4 | 5 | module.exports = { 6 | loaders: utils.cssLoaders({ 7 | sourceMap: isProduction 8 | ? config.build.productionSourceMap 9 | : config.dev.cssSourceMap, 10 | extract: isProduction 11 | }), 12 | transformToRequire: { 13 | video: 'src', 14 | source: 'src', 15 | img: 'src', 16 | image: 'xlink:href' 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var webpack = require('webpack') 3 | var config = require('../config') 4 | var merge = require('webpack-merge') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // cheap-module-eval-source-map is faster for development 19 | devtool: '#cheap-module-eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.HotModuleReplacementPlugin(), 26 | new webpack.NoEmitOnErrorsPlugin(), 27 | // https://github.com/ampedandwired/html-webpack-plugin 28 | new HtmlWebpackPlugin({ 29 | filename: 'index.html', 30 | template: 'index.html', 31 | inject: true 32 | }), 33 | new FriendlyErrorsPlugin() 34 | ] 35 | }) 36 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/build/webpack.test.conf.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | // This is the webpack config used for unit tests. 3 | 4 | const utils = require('./utils') 5 | const webpack = require('webpack') 6 | const merge = require('webpack-merge') 7 | const baseWebpackConfig = require('./webpack.base.conf') 8 | 9 | const webpackConfig = merge(baseWebpackConfig, { 10 | // use inline sourcemap for karma-sourcemap-loader 11 | module: { 12 | rules: utils.styleLoaders() 13 | }, 14 | devtool: '#inline-source-map', 15 | resolveLoader: { 16 | alias: { 17 | // necessary to to make lang="scss" work in test when using vue-loader's ?inject option 18 | // see discussion at https://github.com/vuejs/vue-loader/issues/724 19 | 'scss-loader': 'sass-loader' 20 | } 21 | }, 22 | plugins: [ 23 | new webpack.DefinePlugin({ 24 | 'process.env': require('../config/test.env') 25 | }) 26 | ] 27 | }) 28 | 29 | // no need for app entry during tests 30 | delete webpackConfig.entry 31 | 32 | module.exports = webpackConfig 33 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"', 6 | CESHI_API_HOST: "'10.143.135.138:8090'", 7 | // CESHI_API_HOST: "'10.10.169.78:8090'", 8 | // CESHI_API_HOST: "'10.143.135.183:8090'", 9 | // CESHI_API_HOST: "'10.10.168.19:8090'", 10 | CESHI_API_HOST_LOG: "'10.143.131.86:5601'" 11 | }) 12 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/config/test.env.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const merge = require('webpack-merge') 3 | const devEnv = require('./dev.env') 4 | 5 | module.exports = merge(devEnv, { 6 | NODE_ENV: '"testing"', 7 | CESHI_API_HOST: "'10.143.131.85:8090'" 8 | }) 9 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/eslint.guide.md: -------------------------------------------------------------------------------- 1 | # VS Code 配置 ESLint 提示 2 | 打开扩展器,搜索"eslint",并安装 3 | “文件”->“首选项”->"设置"->搜索“eslint.validate” ,并编辑为 4 | "eslint.validate": [ 5 | "javascript", 6 | "javascriptreact", 7 | "html", 8 | "vue" 9 | ] -------------------------------------------------------------------------------- /sia-gateway-admin-display/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 网关管理中心 9 | 10 | 11 |
12 | 13 |
14 | 15 | 16 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/App.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 14 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/arrow-down.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/close.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/current-gateway-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/current-gateway-icon.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/desktop-icon-ck.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 列表1 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/desktop-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 形状 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/down-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/down-active.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/down.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/edit-ck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/edit-ck.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/edit.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/eureka-ck.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/eureka.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/guanbi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/guanbi.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/guanbi2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/guanbi2.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/logo.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/monitor-icon-ck.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 监控 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/monitor-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 监控 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/nav-border.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/nav-border.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/rong-duan-icon-ck.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/rong-duan-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/router-icon-ck.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 路由管理 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/router-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 路由管理 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/shen-ji-icon-ck.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/shen-ji-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/up-active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/up-active.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/images/up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/common/images/up.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/plugins/validator.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | import { RegExpressions } from './regExpressions' 3 | const validator = {} 4 | 5 | validator.required = function (tips) { 6 | return {required: true, message: tips, trigger: 'blur'} 7 | } 8 | 9 | validator.range = function (begin, to, tips) { 10 | return {min: begin, max: to, message: tips, trigger: 'blur'} 11 | } 12 | 13 | // type : ['date','array','number'] 14 | validator.range = function (type, tips) { 15 | return {type: type, required: true, message: tips, trigger: 'change'} 16 | } 17 | 18 | /** 19 | * 校验字段(字段在非空时校验) 20 | * @param regName(regExpressions 文件中相应的验证正则表达式对象的key) 21 | * @return regExpressions 文件中预定义的错误信息 22 | */ 23 | validator.custom = function (regName) { 24 | return { 25 | validator: (rule, value, callback) => { 26 | if (value !== '') { 27 | var pattern = new RegExp(RegExpressions[regName].reg) 28 | if (!pattern.test(value)) { 29 | callback(new Error(RegExpressions[regName].error_msg)) 30 | } 31 | callback() 32 | } else { 33 | callback() 34 | } 35 | }, 36 | trigger: 'blur' 37 | } 38 | } 39 | export default validator 40 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/routers/common.router.js: -------------------------------------------------------------------------------- 1 | const NotFoundPage = resolve => require(['../views/404.page'], resolve) 2 | const NotPowerPage = resolve => require(['../views/401.page'], resolve) 3 | 4 | const CommonRouter = {} 5 | 6 | CommonRouter.routers = [ 7 | { 8 | path: '/404', 9 | component: NotFoundPage, 10 | hidden: true, 11 | meta: { 12 | title: '404', 13 | auth: false 14 | } 15 | }, 16 | { 17 | path: '/401', 18 | component: NotPowerPage, 19 | hidden: true, 20 | meta: { 21 | title: '401', 22 | auth: false 23 | } 24 | }, 25 | { 26 | path: '*', 27 | hidden: true, 28 | redirect: { path: '/404' } 29 | } 30 | ] 31 | 32 | export default CommonRouter 33 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/routers/router.index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueRouter from 'vue-router' 3 | import CommonRouter from './common.router.js' 4 | import FrameRouter from '../../frame/routers/frame.router.js' 5 | import LoginRouter from '../../login/routers/login.router.js' 6 | 7 | Vue.use(VueRouter) 8 | 9 | let routerArray = [] 10 | 11 | routerArray = routerArray.concat(CommonRouter.routers) 12 | routerArray = routerArray.concat(FrameRouter.routers) 13 | routerArray = routerArray.concat(LoginRouter.routers) 14 | 15 | const appRouter = new VueRouter({ 16 | mode: 'history', 17 | saveScrollPosition: true, 18 | routes: routerArray 19 | }) 20 | 21 | // 路由跳转拦截 22 | appRouter.beforeEach((to, from, next) => { 23 | if (to.meta.auth) { 24 | if (sessionStorage.getItem('login') === 'show') { 25 | next() 26 | } else { 27 | next({ 28 | path: '/login', 29 | query: {redirect: to.fullPath} 30 | }) 31 | } 32 | } else { 33 | next() 34 | } 35 | // next() 36 | document.title = to.meta.title 37 | }) 38 | 39 | export default appRouter 40 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/services/console.provider.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const consoleProvider = {} 3 | consoleProvider.devMode = process.env.NODE_ENV === 'production' 4 | consoleProvider.log = function (key, params) { 5 | if (!this.devMode) { 6 | if (params) { 7 | console.log(key, params) 8 | } else { 9 | console.log(key) 10 | } 11 | } 12 | } 13 | export default consoleProvider 14 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/services/helper.provider.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | const helperProvider = {} 3 | helperProvider.handleLoginErrorMsg = function (response) { 4 | if (response.message && response.message.indexOf('Network Error') > -1) { 5 | return '请求超时!' 6 | } 7 | switch (response.data.code) { 8 | case 400: 9 | return '参数错误!' 10 | case 401: 11 | return '限制调用!' 12 | case 402: 13 | return 'token 过期!' 14 | case 403: 15 | return '禁止访问!' 16 | case 404: 17 | return '资源没找到!' 18 | case 406: 19 | return '服务降级中!' 20 | case 407: 21 | return '路由ID已存在!' 22 | case 408: 23 | return '匹配路径已存在!' 24 | case 500: 25 | return '服务器错误!' 26 | default: 27 | return '服务未响应!' 28 | } 29 | } 30 | 31 | export default helperProvider 32 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/services/store.provider.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | import Vue from 'vue' 3 | import Vuex from 'vuex' 4 | import FrameStore from '../../frame/services/frame.store.js' 5 | 6 | Vue.use(Vuex) 7 | 8 | export default new Vuex.Store( 9 | { 10 | strict: process.env.NODE_ENV !== 'production', // [ext] open vuex strict mode 11 | modules: { 12 | frame: FrameStore 13 | } 14 | } 15 | ) 16 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/services/util.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | import moment from 'moment' 3 | const formatDates = {} 4 | formatDates.dateFormat = function (time) { 5 | if (time === null || time === 'null' || time === '') { 6 | return '' 7 | } else { 8 | return moment(new Date(time)).format('YYYY-MM-DD HH:mm:ss') 9 | } 10 | } 11 | 12 | /** 13 | * getDay(0) 获取当前日期 14 | * getDay(-3) 获取最近三天 15 | * @param day(当前日期最近几天的参数值) 16 | * @return 返回所求天数的日期 17 | */ 18 | 19 | formatDates.getDay = function (day) { 20 | let today = new Date() 21 | let targetdayMilliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day 22 | today.setTime(targetdayMilliseconds) 23 | let tYear = today.getFullYear() 24 | let tMonth = today.getMonth() 25 | let tDate = today.getDate() 26 | tMonth = doHandleMonth(tMonth + 1) 27 | tDate = doHandleMonth(tDate) 28 | return tYear + '-' + tMonth + '-' + tDate 29 | } 30 | 31 | function doHandleMonth (month) { 32 | var m = month 33 | if (month.toString().length === 1) { 34 | m = '0' + month 35 | } 36 | return m 37 | } 38 | 39 | /** 40 | * 获取url参数 41 | * @param urlParams(所求参数的url) 42 | * @return 以对象的形式返回所有参数 43 | */ 44 | 45 | formatDates.getUrlParams = function (urlParams) { 46 | let theRequest = {} 47 | if (urlParams.indexOf('?') !== -1) { 48 | let str = urlParams.substr(urlParams.indexOf('?') + 1) 49 | let strs = str.split('&') 50 | for (let i = 0; i < strs.length; i++) { 51 | theRequest[strs[i].split('=')[0]] = unescape(strs[i].split('=')[1]) 52 | } 53 | } 54 | return theRequest 55 | } 56 | 57 | export default formatDates 58 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/styles/global.less: -------------------------------------------------------------------------------- 1 | @default-section-background: #373C4F; // section-container 内容部分默认背景颜色 2 | 3 | @default-frame-background: #2e313e; // frame-container frame默认背景颜色 4 | 5 | @default-left-menu-background: #393e50; // left-menu 左侧菜单默认背景颜色 6 | 7 | // @default-nav-header-background: #3c8dbc; 8 | 9 | // @default-nav-header-font-color: #fff; 10 | 11 | @default-left-menu-hover-background: #292D40; // 左侧菜单滑过 选中 背景颜色 12 | 13 | @default-left-menu-font-color: #C1C5CF; // 左侧菜单默认 字体颜色 14 | 15 | @default-btn-background: #3C8DBC; // 按钮背景颜色 16 | 17 | @default-btn-border-color: #3bb0d0; // 按钮边框颜色 18 | 19 | @default-table-font-color: #C1C5CF; // table 默认字体颜色 20 | @default-table-background: #373C4F; // table 默认背景颜色 21 | 22 | @default-table-th-background: #4B5061; // table th 默认背景颜色 23 | 24 | @default-font-color: #fff; // 系统默认字体颜色 25 | 26 | @default-font-color-a: #006e62; 27 | 28 | @default-font-color-white: #fff; 29 | 30 | @default-font-color-dark-gray: #666; 31 | 32 | @default-font-color3-light-gray: #999; 33 | 34 | @default-pager-font-color: #337ab7; 35 | @default-pager-active-font-color: white; 36 | 37 | @default-border-color: #bebebe; 38 | 39 | @default-border: solid 1px #cccccc; 40 | 41 | @default-btn-active-background: #38A0FD; 42 | 43 | @default-btn-click-background: #6666CC; 44 | 45 | @default-btn-hover-background: #7193E9; 46 | 47 | @default-btn-disable-background: #ccc; 48 | 49 | @default-btn-text-color: #fff; 50 | 51 | @default-btn-default-border: solid 1px #666; 52 | 53 | @default-btn--default-text-color: #333; -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/styles/theme.less: -------------------------------------------------------------------------------- 1 | @import './global.less'; 2 | @import './reset.less'; 3 | @import './theme/default.theme.less'; -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/styles/transition.less: -------------------------------------------------------------------------------- 1 | /* fade begin */ 2 | .fade-enter-active, 3 | .fade-leave-active { 4 | transition: opacity .3s 5 | } 6 | .fade-enter, 7 | .fade-leave-active { 8 | opacity: 0 9 | } 10 | /* fade end */ 11 | 12 | /* page-fade begin */ 13 | .page-fade-enter-active, 14 | .page-fade-leave-active { 15 | transition: opacity .3s 16 | } 17 | 18 | .page-fade-enter, 19 | .page-fade-leave-active { 20 | opacity: 0; 21 | } 22 | /*page-fade end */ -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/views/401.page.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/common/views/404.page.vue: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/connecte-test/routers/connecte-test.router.js: -------------------------------------------------------------------------------- 1 | const ConnecteTestPage = resolve => require(['../views/connecte-test.page.vue'], resolve) 2 | const ConnecteTestModuleRouter = {} 3 | ConnecteTestModuleRouter.routers = [ 4 | { 5 | path: '/router-connecte-test', 6 | component: ConnecteTestPage, 7 | name: 'ConnecteTestPage', 8 | meta: { 9 | title: '路由连通性测试', 10 | auth: 'show' 11 | } 12 | } 13 | ] 14 | export default ConnecteTestModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/connecte-test/styles/connecte-test.page.reset.less: -------------------------------------------------------------------------------- 1 | .connecte-test-page.dispatch-system-default { 2 | & > .section-container { 3 | .section-content{ 4 | padding-top: 30px; 5 | .el-input-group__append, 6 | .el-input-group__prepend { 7 | background-color: #4B5061;; 8 | border-width: 0px; 9 | } 10 | .params-info-text { 11 | width: 100%; 12 | margin-top: 10px; 13 | height: 100px; 14 | .el-textarea__inner { 15 | width: 100%; 16 | height: 100%; 17 | padding: 10px; 18 | border-radius: 0; 19 | background-color: transparent; 20 | border: 1px solid #4B5061; 21 | resize: none; 22 | color: #fff; 23 | } 24 | } 25 | .test-info { 26 | .el-input { 27 | .el-input-group__append { 28 | .el-button--default { 29 | background: #21A1AE; 30 | border-radius: 0 2px 2px 0; 31 | color: #fff; 32 | } 33 | } 34 | .el-input-group__prepend { 35 | width: 120px; 36 | } 37 | } 38 | } 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/desktop/images/bottom-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/desktop/images/bottom-bg.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/desktop/routers/desktop.router.js: -------------------------------------------------------------------------------- 1 | const DeskTopPage = resolve => require(['../views/desktop.page.vue'], resolve) 2 | const DeskTopModuleRouter = {} 3 | DeskTopModuleRouter.routers = [ 4 | { 5 | path: '/desktop', 6 | component: DeskTopPage, 7 | name: 'DeskTopPage', 8 | meta: { 9 | title: 'DeskTop', 10 | auth: 'notShow' 11 | } 12 | } 13 | ] 14 | export default DeskTopModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/desktop/styles/desktop.page.less: -------------------------------------------------------------------------------- 1 | @import '../../common/styles/global.less'; 2 | .desktop-page { 3 | .gateway-group:hover,.gateway-group.active{ 4 | color: #fff; 5 | border-radius: 3px; 6 | background: #60BECA; 7 | h3 { 8 | color: #fff; 9 | } 10 | ul { 11 | li { 12 | span { 13 | color: #fff; 14 | } 15 | } 16 | } 17 | } 18 | .gateway-group { 19 | width: 300px; 20 | height: 205px; 21 | margin: 0 15px 15px 0; 22 | padding: 17px; 23 | border-radius: 3px; 24 | float: left; 25 | background: #373C4F; 26 | cursor: pointer; 27 | h3 { 28 | margin: 0; 29 | height: 50px; 30 | color: #60BECA; // 标题字体颜色 31 | } 32 | ul { 33 | li { 34 | display: flex; 35 | flex-wrap: wrap; 36 | margin-bottom: 10px; 37 | span { 38 | font-size: 14px; 39 | &:nth-child(1) { 40 | color: #C1C5CF; 41 | width: 78px; 42 | display: inline-block; 43 | } 44 | &:nth-child(2){ 45 | flex: 1; 46 | word-break: break-all; 47 | height: auto; 48 | color: #FDFDFD; 49 | } 50 | } 51 | } 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/desktop/styles/desktop.page.reset.less: -------------------------------------------------------------------------------- 1 | .desktop-page.dispatch-system-default { 2 | .el-card__body { 3 | padding: 15px; 4 | } 5 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/frame/services/frame.store.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const frameStore = {} 4 | 5 | /* @usage : store state data shcema 6 | this.$store.state.frame */ 7 | frameStore.state = { 8 | // 当前网管组 9 | currentGatewayGroup: sessionStorage.getItem('currentGatewayGroup') || '' 10 | } 11 | 12 | /* @usage : unit operation 13 | this.$store.commit('CHANGE_MENU') */ 14 | frameStore.mutations = { 15 | 'CURREN_GATEWAY_GROUP' (state, currentGatewayGroup) { 16 | state.currentGatewayGroup = currentGatewayGroup 17 | sessionStorage.setItem('currentGatewayGroup', currentGatewayGroup) 18 | } 19 | } 20 | 21 | /* @usage : based on state , return state's length or filter state data */ 22 | frameStore.getters = { 23 | 24 | } 25 | 26 | /* @usage : basic the operation for view component , this.$store.dispatch('CHANGE_MENU_ACTION') */ 27 | frameStore.actions = { 28 | 'CURREN_GATEWAY_GROUP_ACTION' ({ commit }, string) { 29 | return new Promise((resolve, reject) => { 30 | commit('CURREN_GATEWAY_GROUP', string) 31 | resolve() 32 | }) 33 | } 34 | } 35 | 36 | export default frameStore 37 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/frame/styles/index.page.less: -------------------------------------------------------------------------------- 1 | .frame { 2 | width: 100%; 3 | height: 100%; 4 | .frame-container { 5 | position: relative; 6 | top: 0px; 7 | left: 200px; 8 | width: calc(~"100% - 200px"); 9 | height: 100%; 10 | overflow: hidden; 11 | .crumbs-tab{ 12 | height: 36px; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/frame/views/index.page.vue: -------------------------------------------------------------------------------- 1 | 14 | 41 | 44 | 48 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/fuse-manage/components/trace-info.tmpl.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 30 | 33 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/fuse-manage/routers/fuse-manage.router.js: -------------------------------------------------------------------------------- 1 | const fuseManagePage = resolve => require(['../views/fuse-manage.page.vue'], resolve) 2 | const FuseManageModuleRouter = {} 3 | FuseManageModuleRouter.routers = [ 4 | { 5 | path: '/fuse-manage', 6 | component: fuseManagePage, 7 | name: 'fuseManagePage', 8 | meta: { 9 | title: '路由管理', 10 | auth: 'show' 11 | } 12 | } 13 | ] 14 | export default FuseManageModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/fuse-manage/styles/common/trace-info.tmpl.less: -------------------------------------------------------------------------------- 1 | .trace-info{ 2 | z-index: 2000; 3 | background-color: rgba(46,49,62,0.63); 4 | top: 0; 5 | left: 0; 6 | width: 100%; 7 | height: 100%; 8 | position: fixed; 9 | .mask-content{ 10 | width: 670px; 11 | margin: 0 auto; 12 | position: relative; 13 | top: 50%; 14 | transform: translateY(-50%); 15 | background-color: #373C4F; 16 | box-shadow: 6px 9px 17px 0 rgba(22,21,21,0.45); 17 | border-radius: 1px; 18 | // padding: 25px; 19 | .mask-main-title{ 20 | padding: 20px 15px 0 20px; 21 | font-size: 16px; 22 | color: #fff; 23 | overflow: hidden; 24 | border-radius: 2px 2px 0 0; 25 | text-overflow: ellipsis; 26 | white-space: nowrap; 27 | text-align: left; 28 | .close-icon { 29 | width: 24px; 30 | height: 24px; 31 | float: right; 32 | background: url('../../../common/images/close.png') no-repeat; 33 | cursor: pointer; 34 | } 35 | } 36 | .info { 37 | color: #fff; 38 | width: 100%; 39 | height: 450px; 40 | padding: 20px; 41 | margin: 25px auto 10px; 42 | overflow-y: auto; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/fuse-manage/styles/fuse-manage.page.reset.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/fuse-manage/styles/fuse-manage.page.reset.less -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/ganway-set-up/routers/ganway-set-up.router.js: -------------------------------------------------------------------------------- 1 | const GanwaySetUpPage = resolve => require(['../views/ganway-set-up.page.vue'], resolve) 2 | const GanwaySetUpModuleRouter = {} 3 | GanwaySetUpModuleRouter.routers = [ 4 | { 5 | path: '/gateway-set-up', 6 | component: GanwaySetUpPage, 7 | name: 'GanwaySetUpPage', 8 | meta: { 9 | title: '网关设置', 10 | auth: 'show' 11 | } 12 | } 13 | ] 14 | export default GanwaySetUpModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/ganway-set-up/styles/ganway-set-up.page.less: -------------------------------------------------------------------------------- 1 | .black-white-detail-page { 2 | width: 100%; 3 | height: calc(~"100% - 55px"); 4 | .section-content{ 5 | padding-top: 30px; 6 | } 7 | & > .section-container { 8 | width: 100%; 9 | height: 100%; 10 | overflow: auto; 11 | h3::before{ 12 | content: ' '; 13 | display: inline-block; 14 | width: 8px; 15 | height: 8px; 16 | background-image: linear-gradient(-135deg, #2DC9EB 0%, #14D2B8 100%); 17 | border-radius: 100%; 18 | margin-right: 8px; 19 | } 20 | h3{ 21 | margin: 0 0 25px 45px; 22 | span{ 23 | display: inline-block; 24 | font-size: 16px; 25 | color: #FFFFFF; 26 | font-style: normal; 27 | font-weight: 600; 28 | // line-height: 40px; 29 | } 30 | } 31 | .routeCreateViewForm { 32 | width: 500px; 33 | margin: auto; 34 | .save-btn-form-two { 35 | 36 | } 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/ganway-set-up/styles/ganway-set-up.reset.less: -------------------------------------------------------------------------------- 1 | .black-white-detail-page.dispatch-system-default { 2 | .section-content > .el-form { 3 | width: 500px; 4 | margin: 30px auto 0 auto; 5 | } 6 | .el-form-item.radio-text > .el-form-item__content { 7 | text-align: left; 8 | } 9 | .el-form-item > .el-form-item__label { 10 | width: 160px; 11 | } 12 | .el-form-item > .el-form-item__content { 13 | display: flex; 14 | height: 35px; 15 | line-height: 35px; 16 | margin-left: 160px; 17 | text-align: center; 18 | .el-icon-question { 19 | width: 22px; 20 | margin-top: 11px; 21 | } 22 | .el-select { 23 | width: 100%; 24 | } 25 | .el-select>.el-input { 26 | width: 100%; 27 | height: 35px; 28 | line-height: 35px; 29 | } 30 | // 单选按钮 31 | .el-radio-group { 32 | line-height: 46px; 33 | } 34 | } 35 | .right-btn-two { 36 | display: flex; 37 | justify-content: flex-end; 38 | text-align: right; 39 | } 40 | .el-form-item > .el-form-item__content > span { 41 | text-align: left; 42 | display: inline-block; 43 | width: 100%; 44 | } 45 | .el-form-item.save-btn-form > .el-form-item__content { 46 | margin-left: 40px; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-audit/routers/gateway-audit.router.js: -------------------------------------------------------------------------------- 1 | const gatewayAuditListPage = resolve => require(['../views/gateway-audit-list.page.vue'], resolve) 2 | const GatewayAuditModuleRouter = {} 3 | GatewayAuditModuleRouter.routers = [ 4 | { 5 | path: '/gateway-audit', 6 | component: gatewayAuditListPage, 7 | name: 'gatewayAuditListPage', 8 | meta: { 9 | title: '路由管理', 10 | auth: 'show' 11 | } 12 | } 13 | ] 14 | export default GatewayAuditModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-audit/styles/gateway-audit-list.page.reset.less: -------------------------------------------------------------------------------- 1 | .el-checkbox__inner { 2 | background: transparent; 3 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-eureka/routers/gateway-eureka.router.js: -------------------------------------------------------------------------------- 1 | const gatewayEurekaListPage = resolve => require(['../views/gateway-eureka-list.page.vue'], resolve) 2 | const GatewayEurekaModuleRouter = {} 3 | GatewayEurekaModuleRouter.routers = [ 4 | { 5 | path: '/gateway-eureka', 6 | component: gatewayEurekaListPage, 7 | name: 'gatewayEurekaListPage', 8 | meta: { 9 | title: '网关注册中心', 10 | auth: 'show' 11 | } 12 | } 13 | ] 14 | export default GatewayEurekaModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-eureka/styles/gateway-eureka-list.page.reset.less: -------------------------------------------------------------------------------- 1 | .el-popper.tooltip::-webkit-scrollbar {width:10px; height:10px; background-color:transparent;} /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/ 2 | .el-popper.tooltip::-webkit-scrollbar-track {background-color:#292D40; -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.3);} /*定义滚动条轨道 内阴影+圆角*/ 3 | .el-popper.tooltip::-webkit-scrollbar-thumb {background-color:#4B5061; -webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);} /*定义滑块 内阴影+圆角*/ 4 | .el-popover.el-popper.tooltip { 5 | border: 1px solid #242731; 6 | border-radius: 2px; 7 | background: #2E313E; 8 | color: #fff; 9 | cursor: pointer; 10 | height: 200px; 11 | overflow-y: auto; 12 | .tooltip-box { 13 | // width: 570px; 14 | p{ 15 | height: 35px; 16 | line-height: 35px; 17 | margin: 0; 18 | padding: 0; 19 | border-top: 1px solid rgba(193, 197, 207, 0.15); 20 | &:nth-child(1) { 21 | border-top-width: 0; 22 | } 23 | } 24 | } 25 | } 26 | #app .gateway-eureka-list-page .is-disabled .el-input__inner{ 27 | height: 32px; 28 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/components/log-details.tmpl.vue: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/gateway-monitor/components/log-details.tmpl.vue -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/images/events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/gateway-monitor/images/events.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/images/log.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/gateway-monitor/images/log.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/images/monitor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/gateway-monitor/images/monitor.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/images/msg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/gateway-monitor/images/msg.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/images/sheji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/gateway-monitor/images/sheji.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/images/warnning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/gateway-monitor/images/warnning.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/routers/gateway-monitor.router.js: -------------------------------------------------------------------------------- 1 | const GatewayMonitorPage = resolve => require(['../views/gateway-monitor.page.vue'], resolve) 2 | const GatewayLogPage = resolve => require(['../views/gateway-log-list.page.vue'], resolve) 3 | const MonitorListPage = resolve => require(['../views/monitor-list.page.vue'], resolve) 4 | const GatewayMonitorModuleRouter = {} 5 | GatewayMonitorModuleRouter.routers = [ 6 | { 7 | path: '/gateway-monitor', 8 | component: GatewayMonitorPage, 9 | name: 'GatewayMonitorPage', 10 | meta: { 11 | title: '网关监控', 12 | auth: 'show' 13 | } 14 | }, 15 | { 16 | path: '/gateway-log-list', 17 | component: GatewayLogPage, 18 | name: 'GatewayLogPage', 19 | meta: { 20 | title: '日志列表', 21 | auth: 'show' 22 | } 23 | }, 24 | { 25 | path: '/monitor-list', 26 | component: MonitorListPage, 27 | name: 'MonitorListPage', 28 | meta: { 29 | title: '监控列表', 30 | auth: 'show' 31 | } 32 | } 33 | ] 34 | export default GatewayMonitorModuleRouter 35 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/styles/gateway-log-list.page.less: -------------------------------------------------------------------------------- 1 | .gateway-log-page { 2 | height: calc(~"100% - 55px"); 3 | &>.section-container.scroll-bar { 4 | background: #fff; 5 | } 6 | .section-content { 7 | height: calc(~"100% - 70px"); 8 | padding: 10px; 9 | background: #fff; 10 | // textarea { 11 | // width: 100%; 12 | // height: 100%; 13 | // resize: none; 14 | // color: #fff; 15 | // border: 1px solid #4B5061; 16 | // } 17 | // textarea.respones-info-text:disabled { 18 | // background: transparent; 19 | // } 20 | } 21 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/views/gateway-log-list.page.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 35 | 38 | 41 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-monitor/views/monitor-list.page.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 36 | 39 | 42 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-swagger/routers/gateway-monitor.router.js: -------------------------------------------------------------------------------- 1 | const GatewaySwaggerPage = resolve => require(['../views/gateway-swagger.page.vue'], resolve) 2 | const GatewaySwaggerModuleRouter = {} 3 | GatewaySwaggerModuleRouter.routers = [ 4 | { 5 | path: '/gateway-swagger', 6 | component: GatewaySwaggerPage, 7 | name: 'GatewaySwaggerPage', 8 | meta: { 9 | title: '网关swagger', 10 | auth: 'notShow' 11 | } 12 | } 13 | ] 14 | export default GatewaySwaggerModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-swagger/styles/gateway-swagger.page.less: -------------------------------------------------------------------------------- 1 | .gateway-swagger-page{ 2 | width: 100%; 3 | height: calc(~"100% - 55px"); 4 | &>.section-container { 5 | width: 100%; 6 | height: 100%; 7 | padding: 0; 8 | .section-header{ 9 | .el-select{ 10 | width: 160px; 11 | } 12 | .select-item{ 13 | font-size: 16px; 14 | margin-right: 10px; 15 | } 16 | .ml{ 17 | margin-left: 15px; 18 | } 19 | .el-input{ 20 | width: 200px; 21 | } 22 | } 23 | .task-manage-table{ 24 | margin-top: 10px; 25 | height: 100%; 26 | .el-table__body-wrapper{ 27 | height: calc(~"100% - 55px"); 28 | overflow-y: auto; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-swagger/styles/gateway-swagger.page.reset.less: -------------------------------------------------------------------------------- 1 | .gateway-swagger-page{ 2 | &>.section-container { 3 | .task-manage-table{ 4 | .el-table__body-wrapper{ 5 | height: calc(~"100% - 55px"); 6 | overflow-y: auto; 7 | } 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/gateway-swagger/views/gateway-swagger.page.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 36 | 39 | 42 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/components/third-party-group.tmpl.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 33 | 36 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/images/back-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/group-manage/images/back-icon.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/images/bind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/group-manage/images/bind.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/group-manage/images/delete.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/images/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/group-manage/images/left.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/images/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/group-manage/images/right.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/images/warnning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/group-manage/images/warnning.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/routers/group-manage.router.js: -------------------------------------------------------------------------------- 1 | const GroupManageListPage = resolve => require(['../views/group-manage-list.page.vue'], resolve) 2 | const GroupDetailPage = resolve => require(['../views/group-detail.page.vue'], resolve) 3 | const TaskManageModuleRouter = {} 4 | TaskManageModuleRouter.routers = [ 5 | { 6 | path: '/group-manage-list', 7 | component: GroupManageListPage, 8 | name: 'GroupManageListPage', 9 | meta: { 10 | title: '组件管理', 11 | auth: 'show' 12 | } 13 | }, 14 | { 15 | path: '/group-detail', 16 | component: GroupDetailPage, 17 | name: 'GroupDetailPage', 18 | meta: { 19 | title: '组件详情', 20 | auth: 'show', 21 | parentnode: {'组件管理': '/group-manage-list'} 22 | } 23 | } 24 | ] 25 | export default TaskManageModuleRouter 26 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/styles/group-detail.page.less: -------------------------------------------------------------------------------- 1 | .route-create-page { 2 | width: 100%; 3 | height: calc(~"100% - 55px"); 4 | .section-header { 5 | .button.blue-button{ 6 | margin-left: auto; 7 | } 8 | } 9 | .section-content{ 10 | padding-top: 30px; 11 | } 12 | & > .section-container { 13 | width: 100%; 14 | height: 100%; 15 | overflow: auto; 16 | .routeCreateViewForm { 17 | width: 500px; 18 | margin: auto; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/styles/group-detail.page.reset.less: -------------------------------------------------------------------------------- 1 | .route-create-page.dispatch-system-default { 2 | .section-content > .el-form { 3 | width: 500px; 4 | margin: 30px auto 0 auto; 5 | } 6 | .el-carousel__indicator button { 7 | width: 10px; 8 | height: 10px; 9 | border-radius: 10px; 10 | overflow: hidden; 11 | } 12 | .el-form-item > .el-form-item__label { 13 | width: 160px; 14 | } 15 | .el-form-item > .el-form-item__content { 16 | margin-left: 160px; 17 | .router-list { 18 | padding: 0; 19 | margin: 0; 20 | span{ 21 | display: inline-block; 22 | height: 25px; 23 | line-height: 21px; 24 | border: 2px solid #67c23a; 25 | border-radius: 20px; 26 | padding: 0px 8px; 27 | margin-right: 6px; 28 | i { 29 | font-style: normal; 30 | } 31 | } 32 | } 33 | .el-button { 34 | margin-top: 30px; 35 | width: 120px; 36 | } 37 | } 38 | .el-select{ 39 | width: 100%; 40 | } 41 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/group-manage/styles/group-manage-list.page.reset.less: -------------------------------------------------------------------------------- 1 | .task-manage-list-page{ 2 | &>.section-container { 3 | &>.section-content { 4 | .el-tabs { 5 | // tabs切换头部样式 6 | .el-tabs__header { 7 | margin: 0 0 25px; 8 | background: #292D40; 9 | // 头部下边框隐藏 10 | .el-tabs__nav-wrap::after { 11 | z-index: -1; 12 | } 13 | .el-tabs__nav-scroll { 14 | padding-left: 25px; 15 | } 16 | // tabs每一项 17 | .el-tabs__nav { 18 | // 每一项字体颜色 19 | .el-tabs__item { 20 | color: #fff; 21 | font-size: 15px; 22 | } 23 | // 选择tab字体样色 24 | .el-tabs__item.is-active{ 25 | color: #60BECA; 26 | } 27 | // 选中边框颜色 28 | .el-tabs__active-bar { 29 | background-color: #60BECA; 30 | } 31 | } 32 | } 33 | } 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/components/gateway-route-detail.tmpl.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 47 | 50 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/images/number.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/home/images/number.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/images/register.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/home/images/register.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/images/router-count.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/home/images/router-count.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/images/router-regiter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/home/images/router-regiter.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/images/warn-count.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/home/images/warn-count.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/images/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/home/images/warning.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/images/wave-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/home/images/wave-line.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/routers/home.router.js: -------------------------------------------------------------------------------- 1 | const HomePage = resolve => require(['../views/home.page.vue'], resolve) 2 | const HomeModuleRouter = {} 3 | HomeModuleRouter.routers = [ 4 | { 5 | path: '/home', 6 | component: HomePage, 7 | name: 'HomePage', 8 | meta: { 9 | title: '首页', 10 | auth: 'show' 11 | } 12 | } 13 | ] 14 | export default HomeModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/home/styles/home.page.reset.less: -------------------------------------------------------------------------------- 1 | .home-page{ 2 | .monitor-list { 3 | .el-radio-group { 4 | display: flex; 5 | flex-direction: column; 6 | padding: 20px; 7 | .el-radio+.el-radio { 8 | margin-left: 0; 9 | } 10 | .el-radio{ 11 | border: 1px solid #5C6171; 12 | border-radius: 1px; 13 | padding: 5px 10px; 14 | &:not(:last-child){ 15 | border-bottom-width: 0px; 16 | } 17 | } 18 | .el-radio.is-checked { 19 | background: #4B5061; 20 | } 21 | } 22 | } 23 | .gateway-status-table{ 24 | height: 100%; 25 | .el-table__body-wrapper{ 26 | height: calc(~"100% - 55px"); 27 | overflow-y: auto; 28 | } 29 | } 30 | .el-table { 31 | background: #373C4F; 32 | tr { 33 | background: #373C4F; 34 | td{ 35 | color: #C1C5CF; 36 | padding: 6px 0; 37 | border-bottom: 1px solid rgba(193,197,207,0.15); 38 | } 39 | } 40 | tr:hover>td { 41 | background: #4B5061; 42 | } 43 | th { 44 | padding: 5px 0; 45 | background: #4B5061; 46 | font-size: 14px; 47 | color: #C1C5CF; 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/log-manage/routers/log-manage.router.js: -------------------------------------------------------------------------------- 1 | const LogManageListPage = resolve => require(['../views/log-manage-list.page.vue'], resolve) 2 | const logManageModuleRouter = {} 3 | logManageModuleRouter.routers = [ 4 | { 5 | path: '/log-manage-list', 6 | component: LogManageListPage, 7 | name: 'LogManageListPage', 8 | meta: { 9 | title: '日志管理', 10 | auth: 'show' 11 | } 12 | } 13 | ] 14 | export default logManageModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/log-manage/styles/log-manage-list.page.less: -------------------------------------------------------------------------------- 1 | .log-manage-list-page{ 2 | width: 100%; 3 | height: calc(~"100% - 55px"); 4 | &>.section-container { 5 | width: 100%; 6 | height: 100%; 7 | padding: 0; 8 | .section-header{ 9 | .el-select{ 10 | width: 160px; 11 | } 12 | .select-item{ 13 | font-size: 16px; 14 | margin-right: 10px; 15 | } 16 | .ml{ 17 | margin-left: 15px; 18 | } 19 | .el-input{ 20 | width: 200px; 21 | } 22 | } 23 | .task-manage-table{ 24 | margin-top: 10px; 25 | height: 100%; 26 | .el-table__body-wrapper{ 27 | height: calc(~"100% - 55px"); 28 | overflow-y: auto; 29 | } 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/log-manage/styles/log-manage-list.page.reset.less: -------------------------------------------------------------------------------- 1 | .log-manage-list-page{ 2 | &>.section-container { 3 | .task-manage-table{ 4 | .el-table__body-wrapper{ 5 | height: calc(~"100% - 55px"); 6 | overflow-y: auto; 7 | } 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/login/images/login-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/login/images/login-bg.jpg -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/login/routers/login.router.js: -------------------------------------------------------------------------------- 1 | const LoginIndexPage = resolve => require(['../views/login.page'], resolve) 2 | 3 | const LoginRouter = {} 4 | 5 | LoginRouter.routers = [ 6 | { 7 | path: '/login', 8 | component: LoginIndexPage, 9 | name: 'LoginIndexPage', 10 | meta: { 11 | title: '登录页', 12 | auth: false, 13 | access: { 14 | module: 'login', 15 | page: 'login' 16 | } 17 | } 18 | } 19 | ] 20 | 21 | export default LoginRouter 22 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/components/group-list.tmpl.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 47 | 50 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/components/unload-situat.tmpl.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 39 | 42 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/images/back-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/route-manage/images/back-icon.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/images/details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/route-manage/images/details.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/images/tuopo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/src/route-manage/images/tuopo.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/styles/black-white-detail.page.less: -------------------------------------------------------------------------------- 1 | .black-white-detail-page { 2 | width: 100%; 3 | height: calc(~"100% - 55px"); 4 | .section-header { 5 | .delete-btn { 6 | margin: 0 0px 0 10px; 7 | } 8 | .el-button+.el-button { 9 | margin: 0px 0 0 5px; 10 | } 11 | } 12 | .section-content{ 13 | padding-top: 30px; 14 | .delete-btn { 15 | float: right; 16 | } 17 | } 18 | & > .section-container { 19 | width: 100%; 20 | height: 100%; 21 | overflow: auto; 22 | .nameListViewForm { 23 | width: 600px; 24 | margin: auto; 25 | h3::before{ 26 | content: ' '; 27 | display: inline-block; 28 | width: 8px; 29 | height: 8px; 30 | background-image: linear-gradient(-135deg, #2DC9EB 0%, #14D2B8 100%); 31 | border-radius: 100%; 32 | margin-right: 8px; 33 | } 34 | h3{ 35 | margin: 0 0 25px 45px; 36 | // background: #4B5061; 37 | // height: 40px; 38 | // padding-left: 10px; 39 | // border-left: 3px solid #15D8E3; 40 | span{ 41 | display: inline-block; 42 | font-size: 16px; 43 | color: #FFFFFF; 44 | font-style: normal; 45 | font-weight: 600; 46 | // line-height: 40px; 47 | } 48 | } 49 | .two-h3 { 50 | margin-top: 50px; 51 | } 52 | } 53 | } 54 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/styles/black-white-detail.page.reset.less: -------------------------------------------------------------------------------- 1 | .black-white-detail-page.dispatch-system-default { 2 | .section-content > .el-form { 3 | width: 600px; 4 | margin: 30px auto 0 auto; 5 | } 6 | .el-carousel__indicator button { 7 | width: 10px; 8 | height: 10px; 9 | border-radius: 10px; 10 | overflow: hidden; 11 | } 12 | .el-form-item.radio-text > .el-form-item__content { 13 | text-align: left; 14 | } 15 | .el-radio__input.is-disabled.is-checked .el-radio__inner{ 16 | border-color: #409EFF; 17 | background: #409EFF; 18 | } 19 | .el-form-item > .el-form-item__label { 20 | width: 160px; 21 | font-size: 13px; 22 | } 23 | .el-form-item > .el-form-item__content { 24 | margin-left: 160px; 25 | .el-button { 26 | margin-top: 30px; 27 | width: 120px; 28 | } 29 | } 30 | .el-form-item.save-btn-form > .el-form-item__content { 31 | margin-left: 40px; 32 | } 33 | .el-select{ 34 | width: 100%; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/styles/common/router-instruction.tmpl.reset.less: -------------------------------------------------------------------------------- 1 | .mask-router-instruction{ 2 | .task-list-table{ 3 | height: 100%; 4 | .el-table__body-wrapper{ 5 | height: calc(~"100% - 55px"); 6 | overflow-y: auto; 7 | } 8 | th.is-leaf { 9 | background-color: #cee2e0; 10 | border-bottom: 0; 11 | border-right: 1px solid #fff; 12 | color: #333333; 13 | height: 50px; 14 | padding: 0; 15 | } 16 | th.is-center.is-leaf:last-child:not(.gutter) { 17 | border-right: 0; 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/styles/route-create.page.less: -------------------------------------------------------------------------------- 1 | .route-create-page { 2 | width: 100%; 3 | height: calc(~"100% - 55px"); 4 | .section-header { 5 | } 6 | .section-content{ 7 | padding-top: 30px; 8 | overflow: auto; 9 | } 10 | & > .section-container { 11 | width: 100%; 12 | height: 100%; 13 | .routeCreateViewForm { 14 | width: 550px; 15 | margin: auto; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/styles/route-create.page.reset.less: -------------------------------------------------------------------------------- 1 | .route-create-page.dispatch-system-default { 2 | .section-content > .el-form { 3 | width: 600px; 4 | margin: 30px auto 0 auto; 5 | } 6 | .el-carousel__indicator button { 7 | width: 10px; 8 | height: 10px; 9 | border-radius: 10px; 10 | overflow: hidden; 11 | } 12 | .el-form-item > .el-form-item__label { 13 | width: 160px; 14 | } 15 | .el-form-item > .el-form-item__content { 16 | margin-left: 160px; 17 | .el-button { 18 | margin-top: 30px; 19 | width: 120px; 20 | } 21 | } 22 | .el-select{ 23 | width: 100%; 24 | } 25 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/styles/route-manage-list.page.reset.less: -------------------------------------------------------------------------------- 1 | .el-checkbox__inner { 2 | background: transparent; 3 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/styles/route-safe-auth.page.less: -------------------------------------------------------------------------------- 1 | .safe-auth-page { 2 | width: 100%; 3 | height: calc(~"100% - 55px"); 4 | .section-header { 5 | .button.blue-button{ 6 | margin-left: auto; 7 | } 8 | } 9 | .section-content{ 10 | padding-top: 30px; 11 | } 12 | & > .section-container { 13 | width: 100%; 14 | height: 100%; 15 | overflow: auto; 16 | .routeCreateViewForm { 17 | width: 550px; 18 | margin: auto; 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/styles/route-safe-auth.page.reset.less: -------------------------------------------------------------------------------- 1 | .safe-auth-page.dispatch-system-default { 2 | .section-content > .el-form { 3 | width: 600px; 4 | margin: 30px auto 0 auto; 5 | } 6 | .el-carousel__indicator button { 7 | width: 10px; 8 | height: 10px; 9 | border-radius: 10px; 10 | overflow: hidden; 11 | } 12 | .el-form-item > .el-form-item__label { 13 | width: 160px; 14 | } 15 | .el-form-item > .el-form-item__content { 16 | display: flex; 17 | margin-left: 160px; 18 | span.start-end { 19 | margin: 0 10px; 20 | } 21 | .el-button { 22 | margin-top: 30px; 23 | width: 120px; 24 | } 25 | } 26 | .el-select{ 27 | width: 100%; 28 | } 29 | .el-input--prefix .el-input__inner { 30 | padding-left: 38px; 31 | } 32 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/route-manage/styles/run-static-detail.page.less: -------------------------------------------------------------------------------- 1 | .run-static-page { 2 | width: 100%; 3 | height: calc(~"100% - 55px"); 4 | & > .section-container { 5 | width: 100%; 6 | height: 100%; 7 | overflow: hidden; 8 | .section-content{ 9 | padding-top: 10px; 10 | height: calc(~"100% - 65px"); 11 | overflow: auto; 12 | .btn-box { 13 | .el-button { 14 | &:not(:nth-child(1)){ 15 | margin-left: 10px; 16 | } 17 | } 18 | .upload-demo { 19 | margin-left: 10px; 20 | .el-button { 21 | padding: 8px 16px; 22 | } 23 | } 24 | } 25 | .task-manage-table{ 26 | margin-top: 10px; 27 | height: calc(~'100% - 65px'); 28 | .router-link { 29 | color: #15D8E3; 30 | cursor: pointer; 31 | display: inline-block; 32 | width: 100%; 33 | } 34 | .box-color { 35 | display: flex; 36 | flex-direction: column; 37 | span { 38 | &:nth-child(2) { 39 | position: relative; 40 | height: 5px; 41 | width: 110px; 42 | border-radius: 10px; 43 | background: #ccc; 44 | i { 45 | position: absolute; 46 | height: 5px; 47 | top: 0; 48 | left: 0px; 49 | border-radius: 10px; 50 | } 51 | } 52 | } 53 | } 54 | } 55 | } 56 | } 57 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/system-set-up/routers/system-black-name.router.js: -------------------------------------------------------------------------------- 1 | const SystemBlackNamePage = resolve => require(['../views/system-black-name.page.vue'], resolve) 2 | const SystemSetUpModuleRouter = {} 3 | SystemSetUpModuleRouter.routers = [ 4 | { 5 | path: '/system-black-name', 6 | component: SystemBlackNamePage, 7 | name: 'SystemBlackNamePage', 8 | meta: { 9 | title: '系统黑名单', 10 | auth: 'show' 11 | } 12 | } 13 | ] 14 | export default SystemSetUpModuleRouter 15 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/system-set-up/styles/system-black-name.page.less: -------------------------------------------------------------------------------- 1 | .black-white-detail-page { 2 | width: 100%; 3 | height: calc(~"100% - 55px"); 4 | 5 | & > .section-container { 6 | width: 100%; 7 | height: 100%; 8 | overflow: auto; 9 | .routeCreateViewForm { 10 | width: 500px; 11 | margin: auto; 12 | h3::before{ 13 | content: ' '; 14 | display: inline-block; 15 | width: 8px; 16 | height: 8px; 17 | background-image: linear-gradient(-135deg, #2DC9EB 0%, #14D2B8 100%); 18 | border-radius: 100%; 19 | margin-right: 8px; 20 | } 21 | h3{ 22 | margin: 0 0 25px 45px; 23 | // background: #4B5061; 24 | // height: 40px; 25 | // padding-left: 10px; 26 | // border-left: 3px solid #15D8E3; 27 | span{ 28 | display: inline-block; 29 | font-size: 16px; 30 | color: #FFFFFF; 31 | font-style: normal; 32 | font-weight: 600; 33 | // line-height: 40px; 34 | } 35 | } 36 | } 37 | } 38 | .section-content{ 39 | padding-top: 30px; 40 | } 41 | } -------------------------------------------------------------------------------- /sia-gateway-admin-display/src/system-set-up/styles/system-black-name.page.reset.less: -------------------------------------------------------------------------------- 1 | .black-white-detail-page.dispatch-system-default { 2 | .section-content > .el-form { 3 | width: 500px; 4 | margin: 30px auto 0 auto; 5 | } 6 | .el-carousel__indicator button { 7 | width: 10px; 8 | height: 10px; 9 | border-radius: 10px; 10 | overflow: hidden; 11 | } 12 | .el-form-item.radio-text > .el-form-item__content { 13 | text-align: left; 14 | } 15 | .el-form-item > .el-form-item__label { 16 | width: 160px; 17 | } 18 | .el-form-item > .el-form-item__content { 19 | margin-left: 160px; 20 | text-align: center; 21 | .el-button { 22 | margin-top: 30px; 23 | width: 120px; 24 | } 25 | } 26 | .el-form-item > .el-form-item__content > span { 27 | text-align: left; 28 | display: inline-block; 29 | width: 100%; 30 | } 31 | .el-form-item.save-btn-form > .el-form-item__content { 32 | margin-left: 40px; 33 | } 34 | .el-select{ 35 | width: 100%; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/static/.gitkeep -------------------------------------------------------------------------------- /sia-gateway-admin-display/static/img/apply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/static/img/apply.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/static/img/browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/static/img/browser.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/static/img/group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/static/img/group.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/static/img/router.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/static/img/router.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/static/img/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/static/img/settings.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/static/img/title-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/sia-gateway-admin-display/static/img/title-icon.png -------------------------------------------------------------------------------- /sia-gateway-admin-display/static/site-map.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | window.API = { 3 | /** 4 | * vmware部署: 127.0.0.1 ----> nginx的ip地址 5 | * docker镜像部署: 127.0.0.1 ----> docker容器的宿主机ip 6 | */ 7 | 'CESHI_API_HOST': '127.0.0.1:18086/vv1', 8 | /** 9 | * 127.0.0.1 ----> kibana的ip地址 10 | */ 11 | 'CESHI_API_HOST_LOG': '127.0.0.1:5601' 12 | } 13 | Object.freeze(window.API) 14 | Object.defineProperty(window, 'API', { 15 | configurable: false, 16 | writable: false 17 | }) 18 | })() 19 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/test/unit/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | }, 5 | "globals": { 6 | "expect": true, 7 | "sinon": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/test/unit/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import 'babel-polyfill' 3 | // [ext] http/axios inject 4 | import HttpPlugIn from '../../src/common/plugins/http.js' 5 | 6 | // [ext] api inject 7 | import ApiProvider from '../../src/common/services/api.provider.js' 8 | 9 | // [ext] helper inject 10 | import HelperProvider from '../../src/common/services/helper.provider.js' 11 | 12 | // [ext] element-ui inject 13 | import ElementUI from 'element-ui' 14 | import 'element-ui/lib/theme-chalk/index.css' 15 | 16 | // [ext] extent element-ui validate inject 17 | import Validator from '../../src/common/plugins/validator.js' 18 | 19 | // [ext] theme provider inject 20 | import ThemeProvider from '../../src/common/services/theme.provider.js' 21 | 22 | Vue.prototype.$theme = ThemeProvider 23 | Vue.prototype.$http = HttpPlugIn 24 | Vue.prototype.$api = ApiProvider 25 | Vue.prototype.$helper = HelperProvider 26 | Vue.use(ElementUI) 27 | Vue.prototype.$validator = Validator 28 | 29 | Vue.config.productionTip = false 30 | 31 | // require all test files (files that ends with .spec.js) 32 | const testsContext = require.context('./specs', true, /\.spec$/) 33 | testsContext.keys().forEach(testsContext) 34 | 35 | // require all vue files in src for coverage. 36 | // you can also change this to match only the subset of files that 37 | // you want coverage for. 38 | const srcContext = require.context('../../src', false, /^\.vue$/) 39 | srcContext.keys().forEach(srcContext) 40 | -------------------------------------------------------------------------------- /sia-gateway-admin-display/test/unit/karma.conf.js: -------------------------------------------------------------------------------- 1 | // This is a karma config file. For more details see 2 | // http://karma-runner.github.io/0.13/config/configuration-file.html 3 | // we are also using it with karma-webpack 4 | // https://github.com/webpack/karma-webpack 5 | 6 | var webpackConfig = require('../../build/webpack.test.conf') 7 | 8 | module.exports = function (config) { 9 | config.set({ 10 | // to run in additional browsers: 11 | // 1. install corresponding karma launcher 12 | // http://karma-runner.github.io/0.13/config/browsers.html 13 | // 2. add it to the `browsers` array below. 14 | client: { 15 | mocha: { 16 | timeout: 10000 17 | } 18 | }, 19 | browsers: ['PhantomJS'], 20 | frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'], 21 | reporters: ['spec', 'coverage'], 22 | files: ['./index.js'], 23 | preprocessors: { 24 | './index.js': ['webpack', 'sourcemap'] 25 | }, 26 | webpack: webpackConfig, 27 | webpackMiddleware: { 28 | noInfo: true 29 | }, 30 | coverageReporter: { 31 | dir: './coverage', 32 | reporters: [ 33 | { type: 'lcov', subdir: '.' }, 34 | { type: 'text-summary' } 35 | ] 36 | } 37 | }) 38 | } 39 | -------------------------------------------------------------------------------- /sia-gateway-admin/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | /.project -------------------------------------------------------------------------------- /sia-gateway-admin/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-admin/src/main/java/com/creditease/gateway/admin/domain/DescConstant.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.admin.domain; 23 | 24 | 25 | /** 26 | * 查詢對象 27 | * 28 | * @author peihua 29 | * 30 | * */ 31 | 32 | public class DescConstant { 33 | 34 | private static String REQUESTLOG = "请求日志组件"; 35 | private static String RSPONSELOG = "响应日志组件"; 36 | private static String BLUEGREEN = "蓝绿部署"; 37 | private static String TOCKENSECURITY = "TOKEN安全认证"; 38 | private static String STATISTIC = "路由统计"; 39 | private static String LIMIT = "流量限流"; 40 | 41 | } 42 | -------------------------------------------------------------------------------- /sia-gateway-admin/src/main/java/com/creditease/gateway/admin/domain/StatisticQuery.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.admin.domain; 23 | 24 | 25 | /** 26 | * 统计對象 27 | * 28 | * @author peihua 29 | * 30 | * */ 31 | 32 | public class StatisticQuery { 33 | 34 | private String routeid; 35 | 36 | private String starttime; 37 | 38 | private String endtime; 39 | 40 | public String getRouteid() { 41 | return routeid; 42 | } 43 | 44 | public void setRouteid(String routeid) { 45 | this.routeid = routeid; 46 | } 47 | 48 | public String getStarttime() { 49 | return starttime; 50 | } 51 | 52 | public void setStarttime(String starttime) { 53 | this.starttime = starttime; 54 | } 55 | 56 | public String getEndtime() { 57 | return endtime; 58 | } 59 | 60 | public void setEndtime(String endtime) { 61 | this.endtime = endtime; 62 | } 63 | 64 | 65 | 66 | } 67 | -------------------------------------------------------------------------------- /sia-gateway-admin/src/main/java/com/creditease/gateway/oauth/AuthConstants.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.oauth; 23 | 24 | /** 25 | *@author peihua 26 | * 27 | * */ 28 | 29 | public class AuthConstants { 30 | public static final String RESOURCE_SERVER_NAME = "oauth-server"; 31 | public static final String INVALID_CLIENT_ID = "客户端验证失败,如错误的client_id/client_secret。"; 32 | public static final String INVALID_TIME = "客户端验证失败,安全口令时间无效"; 33 | public static final String INVALID_ACCESS_TOKEN = "accessToken无效或已过期。"; 34 | public static final String INVALID_REDIRECT_URI = "缺少授权成功后的回调地址。"; 35 | public static final String INVALID_AUTH_CODE = "错误的授权码。"; 36 | } 37 | -------------------------------------------------------------------------------- /sia-gateway-admin/src/main/resources/.gitignore: -------------------------------------------------------------------------------- 1 | /static/ 2 | -------------------------------------------------------------------------------- /sia-gateway-admin/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ${FILE_LOG_PATTERN} 12 | 13 | ${LOG_FILE} 14 | 15 | ${LOG_FILE}.%i 16 | 1 17 | 10 18 | 19 | 20 | 10MB 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /sia-gateway-base/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.settings/ 4 | /.classpath 5 | /.project -------------------------------------------------------------------------------- /sia-gateway-base/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-base/src/main/java/com/creditease/gateway/annotation/CatchExcept.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.annotation; 23 | 24 | import java.lang.annotation.Documented; 25 | import java.lang.annotation.ElementType; 26 | import java.lang.annotation.Inherited; 27 | import java.lang.annotation.Retention; 28 | import java.lang.annotation.RetentionPolicy; 29 | import java.lang.annotation.Target; 30 | 31 | @Target(ElementType.METHOD) 32 | @Retention(RetentionPolicy.RUNTIME) 33 | @Documented 34 | @Inherited 35 | public @interface CatchExcept { 36 | 37 | /** 38 | * ApiGatewayException的描述信息 39 | * 40 | * @return 41 | */ 42 | 43 | String note() default ""; 44 | } 45 | -------------------------------------------------------------------------------- /sia-gateway-base/src/main/java/com/creditease/gateway/constant/SynchSpeedProtocol.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.constant; 23 | 24 | /** 25 | * @description: 常量 26 | * @author: guohuixie2 27 | * @create: 2019-04-16 15:17 28 | **/ 29 | 30 | public class SynchSpeedProtocol { 31 | 32 | public static final String OFFLINEINTERFACE = "/siagateway/setOfflineService"; 33 | 34 | public static final String ONLINEINTERFACE = "/siagateway/setonlineService"; 35 | } 36 | -------------------------------------------------------------------------------- /sia-gateway-base/src/main/java/com/creditease/gateway/domain/RibbonnRule.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.domain; 23 | 24 | /** 25 | * 26 | * @author peihua 27 | * 28 | */ 29 | 30 | public class RibbonnRule { 31 | 32 | public static final String ROUNDROUBIN = "ROUNDROUBIN"; 33 | 34 | public static final String METADATARULE = "METADATARULE"; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /sia-gateway-base/src/main/java/com/creditease/gateway/domain/RouteStrategy.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.domain; 23 | 24 | public enum RouteStrategy { 25 | 26 | SERVICEID("SERVICEID"), SERVICEURL("SERVICEURL"), LISTOFSERVER("LISTOFSERVER"); 27 | 28 | public static RouteStrategy getDefault() { 29 | return SERVICEID; 30 | } 31 | private String name; 32 | 33 | RouteStrategy(String name) { 34 | this.name = name; 35 | } 36 | 37 | @Override 38 | public String toString() { 39 | 40 | return name; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /sia-gateway-base/src/main/java/com/creditease/gateway/domain/UpstreamObj.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.domain; 23 | 24 | /** 25 | * @description: 下游服务OBJ 26 | * @author: guohuixie2 27 | * @modify: peihua 28 | * @create: 2019-04-24 18:02 29 | **/ 30 | 31 | public class UpstreamObj { 32 | 33 | private String appName; 34 | private String instanceId; 35 | 36 | public UpstreamObj(String appName, String instanceId) { 37 | this.appName = appName; 38 | this.instanceId = instanceId; 39 | } 40 | 41 | public String getAppName() { 42 | 43 | return appName; 44 | } 45 | 46 | public void setAppName(String appName) { 47 | 48 | this.appName = appName; 49 | } 50 | 51 | public String getInstanceId() { 52 | 53 | return instanceId; 54 | } 55 | 56 | public void setInstanceId(String instanceId) { 57 | 58 | this.instanceId = instanceId; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /sia-gateway-base/src/main/java/com/creditease/gateway/localcache/L1CacheObj.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.localcache; 23 | 24 | import com.creditease.gateway.localcache.LocalCacheManager.L1CacheState; 25 | /*** 26 | * 27 | * @author admin 28 | * 29 | */ 30 | public class L1CacheObj { 31 | 32 | private Object obj; 33 | 34 | protected L1CacheState state; 35 | 36 | public L1CacheObj(Object obj, L1CacheState state) { 37 | this.obj = obj; 38 | this.state = state; 39 | } 40 | 41 | public Object getObj() { 42 | 43 | return obj; 44 | } 45 | 46 | public L1CacheState getState() { 47 | 48 | return state; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/bin/gw_proc_watcher.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | source /etc/profile 3 | 4 | 5 | process_flag=$1 6 | 7 | working_directory=$2 8 | 9 | start_command=$3 10 | 11 | now=$(date "+%Y-%m-%d %H:%M:%S") 12 | # max log file count 13 | log_file_max=30 14 | 15 | # interval of run 16 | step=15 17 | if [[ "$4" -ge 5 && "$4" -le 60 ]]; then 18 | step=$4 19 | fi 20 | 21 | for(( i = 0; i < 60; i=(i+step) )); do 22 | 23 | # judge process running 24 | count=`ps -fC java | grep $process_flag | wc -l` 25 | if [ $count -eq 0 ]; then 26 | # log 27 | echo "$now $process_flag restart by $start_command">> /dev/null 28 | # start 29 | cd $working_directory 30 | nohup $start_command 1>/dev/null 2>&1 & 31 | 32 | # clear log file 33 | if [ $(find $working_directory -name "*_restart.out" | wc -l) -gt $log_file_max ]; then 34 | rm -rf $(ls $working_directory/*_restart.out|head -n1) 35 | fi 36 | fi 37 | 38 | # 39 | if [ $step -ge 60 ];then 40 | exit 0 41 | else 42 | sleep $step 43 | fi 44 | 45 | done 46 | -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/bin/k8s_start_gateway_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | if [ $# -eq 0 ]; then 3 | sh /app/jar/ROOT/gateway/bin/k8s_run.sh gateway_test sia-gateway-core-1.0.jar 4 | else 5 | sh /app/jar/ROOT/gateway/bin/k8s_run.sh $1 sia-gateway-core-1.0.jar 6 | fi -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/bin/shutdown_gateway_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./stop.sh gateway_test > /dev/null 2>&1 & 3 | -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/bin/start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #while true;do 3 | #echo aaa 4 | #sleep 10 5 | #done 6 | 7 | mkdir -p /app/jar/logs/{{HOSTNAME}}/applog 8 | mkdir -p /app/jar/logs/{{HOSTNAME}}/logbak 9 | 10 | sh /app/jar/ROOT/gateway/bin/k8s_start_gateway_test.sh 11 | 12 | -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/bin/start_gateway_pro.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./run.sh gateway_pro gantry-gateway-core-1.0.jar $1 > /dev/null 2>&1 & -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/bin/start_gateway_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | nohup ./run.sh gateway_test sia-gateway-core-1.0.jar > /dev/null 2>&1 & 3 | 4 | -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/bin/start_gatewayservice_boot_admin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | java -server -Xms128m -Xmx256m -Xss256k -jar /app/gantrygw/gantry-boot-admin-1.0-SNAPSHOT.jar --group.name=gantry --server.port=10000 3 | & -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/bin/stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # First, delete crontab 4 | process_flag=$1 5 | count=`crontab -l 2>/dev/null | grep "$process_flag" | wc -l` 6 | if [ $count -ne 0 ]; then 7 | cronfile=$(pwd)/$process_flag".cron.stop" 8 | crontab -l | grep -v "$process_flag" > $cronfile 9 | crontab $cronfile 10 | rm $cronfile 11 | fi 12 | 13 | # Second, kill running watcher 14 | runing_watcher=$(ps -ef | grep "gw_proc_watcher.sh" | grep "$process_flag" |grep -v grep | awk '{printf "%s ",$2}') 15 | for pid in $runing_watcher; do 16 | echo "watcher will be killed by kill -9 $pid" 17 | kill -9 "$pid" 18 | done 19 | 20 | # Third, kill application 21 | app_pid=$(ps -ef | grep "$process_flag" |grep -v grep |grep -v "stop.sh"| awk '{printf "%s ",$2}') 22 | for pid in $app_pid; do 23 | echo "application will be killed by kill -9 $pid" 24 | kill -9 "$pid" 25 | done 26 | -------------------------------------------------------------------------------- /sia-gateway-buildcomponent/config/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ${FILE_LOG_PATTERN} 12 | 13 | ${LOG_FILE} 14 | 15 | ${LOG_FILE}.%i 16 | 1 17 | 10 18 | 19 | 20 | 10MB 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /sia-gateway-core/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | -------------------------------------------------------------------------------- /sia-gateway-core/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/cache/LRUCache.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.cache; 23 | 24 | import java.util.LinkedHashMap; 25 | 26 | /** 27 | * LRU最近最少使用CACHE 28 | * 29 | * @author peihua 30 | * 31 | */ 32 | public class LRUCache extends LinkedHashMap { 33 | 34 | /** 35 | * 36 | */ 37 | private static final long serialVersionUID = 1L; 38 | private final int SIZE; 39 | 40 | public LRUCache(int size) { 41 | /** 42 | * int initialCapacity, float loadFactor, boolean accessOrder 这3个分别表示容量,加载因子和是否启用LRU规则 43 | */ 44 | super(size, 0.75f, true); 45 | SIZE = size; 46 | } 47 | 48 | @Override 49 | protected boolean removeEldestEntry(java.util.Map.Entry eldest) { 50 | 51 | return size() > SIZE; 52 | } 53 | 54 | } 55 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/config/LocalMetaDataLoader.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.config; 23 | 24 | import org.slf4j.Logger; 25 | import org.slf4j.LoggerFactory; 26 | import org.springframework.boot.CommandLineRunner; 27 | import org.springframework.stereotype.Component; 28 | 29 | 30 | /** 31 | * 读取本地缓存用(保留功能) 32 | 33 | * @author peihua 34 | * 35 | **/ 36 | 37 | @Component 38 | public class LocalMetaDataLoader implements CommandLineRunner { 39 | 40 | private static final Logger LOGGER = LoggerFactory.getLogger(LocalMetaDataLoader.class); 41 | 42 | @Override 43 | public void run(String... args) { 44 | 45 | LOGGER.info("LocalMetaDataLoaderTask 启动!" ); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/config/SwaggerConfig.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.config; 23 | 24 | import org.springframework.cloud.netflix.zuul.filters.discovery.PatternServiceRouteMapper; 25 | import org.springframework.context.annotation.Bean; 26 | import org.springframework.context.annotation.Configuration; 27 | 28 | 29 | /** 30 | * Swagger匹配 31 | * 32 | * @author peihua 33 | * 34 | **/ 35 | 36 | @Configuration 37 | public class SwaggerConfig { 38 | //自定义 serviceId 和路由之间的相互映射 39 | @Bean 40 | public PatternServiceRouteMapper serviceRouteMapper() { 41 | return new PatternServiceRouteMapper( 42 | "(?^.+)-(?.+$)", 43 | "${project}/${subProject}"); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/filter/dynamic/AbstractClass.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.filter.dynamic; 23 | 24 | /** 25 | * @author peihua 26 | */ 27 | public abstract class AbstractClass { 28 | 29 | } 30 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/filter/dynamic/JarFileFilter.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.filter.dynamic; 23 | 24 | import java.io.File; 25 | import java.io.FilenameFilter; 26 | 27 | /** 28 | * @author peihua 29 | * 30 | * JavaFileFilter description: JAR格式验证 31 | * 32 | */ 33 | public class JarFileFilter implements FilenameFilter { 34 | 35 | @Override 36 | public boolean accept(File dir, String name) { 37 | // 验证文件是否已.jar文件结尾 38 | return name.endsWith(".jar"); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/hystrix/strategy/FallbackStrategy.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.hystrix.strategy; 23 | 24 | import com.creditease.gateway.hystrix.FallbackEvent; 25 | 26 | /** 27 | * 熔断管理策略抽象类 28 | * 29 | * @author peihua 30 | * 31 | */ 32 | 33 | public abstract class FallbackStrategy { 34 | 35 | FallbackEvent event; 36 | 37 | public void executeStrategy() { 38 | 39 | event.setFallbackType(getFallbackType()); 40 | 41 | strategy(event); 42 | 43 | event.emit(); 44 | } 45 | 46 | public FallbackStrategy(FallbackEvent event) { 47 | this.event = event; 48 | } 49 | 50 | public abstract void strategy(FallbackEvent event); 51 | 52 | public abstract String getFallbackType(); 53 | } 54 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/ribbon/RibbonServerSource.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.ribbon; 23 | 24 | /** 25 | * Ribbon数据源定义 26 | * 27 | * @author peihua 28 | * 29 | */ 30 | 31 | public enum RibbonServerSource { 32 | 33 | LISTOFSERERROUNDROBIN("LISTOFSERERROUNDROBIN"), LISTOFSERVERETCD("LISTOFSERVERETCD"), LISTOFSERVERZK( 34 | "LISTOFSERVERZK"); 35 | 36 | public static RibbonServerSource getDefault() { 37 | 38 | return LISTOFSERERROUNDROBIN; 39 | } 40 | 41 | private String name; 42 | 43 | RibbonServerSource(String name) { 44 | this.name = name; 45 | } 46 | 47 | @Override 48 | public String toString() { 49 | 50 | return name; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/ribbon/context/RibbonFilterContext.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.ribbon.context; 23 | 24 | import java.util.Map; 25 | 26 | /** 27 | * 28 | * @author peihua 29 | * 30 | * Ribbon discovery filter context stores the attributes based on which the server matching will be performed. 31 | * 32 | */ 33 | public interface RibbonFilterContext { 34 | 35 | /** 36 | * Adds the context attribute. 37 | * 38 | */ 39 | RibbonFilterContext add(String key, String value); 40 | 41 | /** 42 | * Retrieves the context attribute. 43 | */ 44 | String get(String key); 45 | 46 | /** 47 | * Removes the context attribute. 48 | * 49 | */ 50 | RibbonFilterContext remove(String key); 51 | 52 | /** 53 | * Retrieves the attributes. 54 | */ 55 | Map getAttributes(); 56 | } 57 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/ribbon/context/RibbonFilterContextHolder.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.ribbon.context; 23 | 24 | /** 25 | * @author peihua 26 | * 27 | */ 28 | public class RibbonFilterContextHolder { 29 | 30 | private static final ThreadLocal CONTEXTHOLDER = new InheritableThreadLocal() { 31 | 32 | @Override 33 | protected RibbonFilterContext initialValue() { 34 | 35 | return new DefaultRibbonFilterContext(); 36 | } 37 | }; 38 | 39 | public static RibbonFilterContext getCurrentContext() { 40 | 41 | return CONTEXTHOLDER.get(); 42 | } 43 | 44 | /** 45 | * Clears the current context. 46 | */ 47 | public static void clearCurrentContext() { 48 | 49 | CONTEXTHOLDER.remove(); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/ribbon/rule/MetadataMatchRule.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.ribbon.rule; 23 | 24 | /** 25 | * 26 | * 根据元数据匹配 Original server规则 27 | * 28 | * @author peihua 29 | * 30 | * */ 31 | public class MetadataMatchRule extends BaseDiscoveryEnabledRule { 32 | 33 | public MetadataMatchRule() { 34 | 35 | this(new MetadataMatchPredicate()); 36 | } 37 | 38 | /** 39 | * Creates new instance of with specific predicate. 40 | * 41 | */ 42 | public MetadataMatchRule(BaseDiscoveryEnabledPredicate predicate) { 43 | super(predicate); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/service/LogService.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.service; 23 | 24 | import com.netflix.zuul.context.RequestContext; 25 | 26 | /** 27 | * 日志服务 28 | * 29 | * @author peihua 30 | * 31 | * */ 32 | public interface LogService { 33 | 34 | /** 35 | * 记录请求日志 36 | * @param ctx 37 | * @param routeid 38 | * @return void 39 | * 40 | * */ 41 | void recordRequest(RequestContext ctx, String routeid); 42 | 43 | /** 44 | * 记录响应日志 45 | * @param ctx 46 | * @param routeid 47 | * @return void 48 | * 49 | * */ 50 | void recordResponse(RequestContext ctx, String routeid); 51 | } 52 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/service/RateLimitService.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.service; 23 | 24 | import java.util.List; 25 | import java.util.Map; 26 | import com.netflix.zuul.context.RequestContext; 27 | 28 | /** 29 | * 限流服務 30 | * 31 | * @author peihua 32 | * 33 | */ 34 | public interface RateLimitService { 35 | 36 | /** 37 | * 做限流处理 38 | * @param ctx 39 | * @param routeid 40 | * @return void 41 | * 42 | * */ 43 | void runRateLimit(RequestContext ctx, String routeid); 44 | 45 | /** 46 | * 设置限流参数 47 | * @param routlimitMap 48 | * @return void 49 | * 50 | * */ 51 | void setRoutlimitMap(List> routlimitMap); 52 | 53 | /** 54 | * 刷新限流参数 55 | * @param null 56 | * @return boolean 57 | * 58 | * */ 59 | boolean refreshRateLimtMap(); 60 | } 61 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/service/RouteOptService.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.service; 23 | 24 | /** 25 | * 路由服務 26 | * 27 | * @author peihua 28 | * 29 | * */ 30 | 31 | public interface RouteOptService { 32 | 33 | /** 34 | * 路由绑定服务 35 | * @param null 36 | * @return boolean 37 | * 38 | * */ 39 | boolean routeBind(); 40 | 41 | /** 42 | * 删除路由组件 43 | * @param filterName 44 | * @return boolean 45 | * 46 | * */ 47 | boolean removeComp(String filterName); 48 | } 49 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/service/StatisticService.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.service; 23 | 24 | /** 25 | * 统计服务 26 | * 27 | * @author peihua 28 | * 29 | * */ 30 | 31 | public interface StatisticService { 32 | 33 | /** 34 | * 增加计数 35 | * 36 | * @param counterName 37 | * @return void 38 | */ 39 | void increment(String counterName); 40 | 41 | /** 42 | * 获得计数 43 | * 44 | * @param counterName 45 | * @return int 46 | */ 47 | long getCount(String counterName); 48 | 49 | } 50 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/service/ZuulService.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.service; 23 | 24 | import com.creditease.gateway.constant.GatewayConstant.ZuulState; 25 | import com.creditease.gateway.domain.CompInfo; 26 | 27 | /** 28 | * 网关服务 29 | * 30 | * @author peihua 31 | * 32 | * */ 33 | 34 | public interface ZuulService { 35 | 36 | /** 37 | * 注册网关状态 38 | * 39 | * @param null 40 | * @return void 41 | * @exception Exception 42 | * @throws Exception 43 | * 44 | * */ 45 | void registerZuul()throws Exception; 46 | 47 | /** 48 | * 更新网关状态 49 | * 50 | * @param stat 51 | * @param zuulGourpName 52 | * @return void 53 | * 54 | * */ 55 | void updateZuul(ZuulState stat, String zuulGourpName); 56 | 57 | /** 58 | * 注册Filter组件 59 | * 60 | * @param comp 61 | * @return boolean 62 | * 63 | * */ 64 | boolean registerFilter(CompInfo comp); 65 | 66 | } 67 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/service/wblist/FilterByDomainProcessor.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.service.wblist; 23 | 24 | import com.creditease.gateway.domain.BwfilterObj; 25 | import com.netflix.zuul.context.RequestContext; 26 | 27 | /** 28 | * 29 | * BlackWhiteListFilterProcess description: 黑白名单 访问域名 策略 30 | * 31 | * @author peihua 32 | * 33 | */ 34 | public class FilterByDomainProcessor extends AbstractbwListDispatch { 35 | 36 | /** 37 | * 组装响应报文 38 | * 39 | * @param ctx 40 | * @param serviceId 41 | * @param ip 42 | * @param type 43 | */ 44 | @SuppressWarnings("unused") 45 | private void adaptorRseponse(RequestContext ctx, String serviceId, String ip, String type) { 46 | 47 | 48 | 49 | } 50 | 51 | @Override 52 | public void process(RequestContext ctx, BwfilterObj obj, String routeid) { 53 | 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/topology/intercept/InterceptContext.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.topology.intercept; 23 | 24 | import java.util.Map; 25 | 26 | /** 27 | * 拓扑上下文 接口 28 | * 29 | * @author peihua 30 | */ 31 | 32 | public interface InterceptContext { 33 | 34 | public T get(Class c); 35 | 36 | public void put(Class c, T obj); 37 | 38 | public Object get(String name); 39 | 40 | public void put(String name, Object obj); 41 | 42 | public Map getAll(); 43 | 44 | public void putAll(Map m); 45 | 46 | public int size(); 47 | } 48 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/java/com/creditease/gateway/topology/intercept/ThreadInterceptProcessor.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.topology.intercept; 23 | 24 | /** 25 | * 拓扑处理 26 | * 27 | * @author peihua 28 | */ 29 | 30 | public class ThreadInterceptProcessor { 31 | 32 | private static ThreadLocal ThreadCaptureContextHelper = new ThreadLocal(); 33 | 34 | public static ThreadContext getContext() { 35 | 36 | return ThreadCaptureContextHelper.get(); 37 | } 38 | 39 | public static void putContext(ThreadContext context) { 40 | 41 | ThreadCaptureContextHelper.set(context); 42 | } 43 | 44 | public static void releaseContext() { 45 | 46 | ThreadCaptureContextHelper.remove(); 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.creditease.gateway.ribbon.RibbonDiscoveryRuleAutoConfiguration -------------------------------------------------------------------------------- /sia-gateway-core/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ${FILE_LOG_PATTERN} 12 | 13 | ${LOG_FILE} 14 | 15 | ${LOG_FILE}.%i 16 | 1 17 | 10 18 | 19 | 20 | 10MB 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /sia-gateway-core/src/main/resources/meta.data: -------------------------------------------------------------------------------- 1 | { 2 | "version":"1.0" 3 | } -------------------------------------------------------------------------------- /sia-gateway-esclient/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | -------------------------------------------------------------------------------- /sia-gateway-messaging/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | -------------------------------------------------------------------------------- /sia-gateway-messaging/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-messaging/src/main/java/com/creditease/gateway/message/api/MqHandler.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.message.api; 23 | 24 | import com.creditease.gateway.message.api.domain.MqMessage; 25 | 26 | import java.util.List; 27 | 28 | /** 29 | * 消息处理接口 30 | * 31 | * @author peihua 32 | **/ 33 | public interface MqHandler { 34 | 35 | /** 36 | * Mq消息处理 37 | * 38 | * @param msg 39 | * @return void 40 | */ 41 | void handle(MqMessage msg); 42 | 43 | /** 44 | * Mq批量消息处理 45 | * 46 | * @param msgList 47 | * @return void 48 | */ 49 | void handle(List msgList); 50 | } 51 | -------------------------------------------------------------------------------- /sia-gateway-messaging/src/main/java/com/creditease/gateway/message/config/EnableSagConsumer.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.message.config; 23 | 24 | import org.springframework.context.annotation.Import; 25 | 26 | import java.lang.annotation.*; 27 | 28 | /** 29 | * @Author: yongbiao 30 | * @Date: 2019-06-05 18:01 31 | */ 32 | @Target(ElementType.TYPE) 33 | @Retention(RetentionPolicy.RUNTIME) 34 | @Import(ConsumerAutoConfiguration.class) 35 | @Documented 36 | @Inherited 37 | public @interface EnableSagConsumer { 38 | } 39 | -------------------------------------------------------------------------------- /sia-gateway-messaging/src/main/java/com/creditease/gateway/message/config/EnableSagProducer.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.message.config; 23 | 24 | import org.springframework.context.annotation.Import; 25 | 26 | import java.lang.annotation.*; 27 | 28 | /** 29 | * @Author: yongbiao 30 | * @Date: 2019-06-05 18:01 31 | */ 32 | @Target(ElementType.TYPE) 33 | @Retention(RetentionPolicy.RUNTIME) 34 | @Import(ProducerAutoConfiguration.class) 35 | @Documented 36 | @Inherited 37 | public @interface EnableSagProducer { 38 | } 39 | -------------------------------------------------------------------------------- /sia-gateway-monitor/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | -------------------------------------------------------------------------------- /sia-gateway-monitor/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-monitor/src/main/java/com/creditease/gateway/GatewayMonitorApplication.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway; 23 | 24 | import org.springframework.boot.SpringApplication; 25 | import org.springframework.boot.autoconfigure.SpringBootApplication; 26 | import org.springframework.cloud.netflix.eureka.EnableEurekaClient; 27 | import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; 28 | 29 | /** 30 | * Monitor进程主要监控实时流量信息及实时日志信息 31 | * 32 | * @author guohuixie2 33 | * */ 34 | 35 | @SpringBootApplication 36 | @EnableHystrixDashboard 37 | @EnableEurekaClient 38 | public class GatewayMonitorApplication { 39 | 40 | public static void main(String[] args) { 41 | SpringApplication.run(GatewayMonitorApplication.class, args); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /sia-gateway-monitor/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | application: 3 | name: API-GATEWAY-MONITOR 4 | 5 | server: 6 | port: 8040 7 | 8 | 9 | logging.file: ../logs/${spring.application.name}.log 10 | 11 | eureka.client.serviceUrl.defaultZone: http://127.0.0.1:19002/eureka/ 12 | eureka.instance.preferIpAddress: true 13 | eureka.instance.instance-id: ${spring.cloud.client.ipAddress}:${server.port} 14 | management.security.enabled: false 15 | #turbine: 16 | # appConfig: GANTRY-GATEWAY-CORE,SMP-GATEWAY-CORE 17 | # aggregator: 18 | # clusterConfig: GANTRY-GATEWAY-CORE,SMP-GATEWAY-CORE 19 | # 表示集群的名字为default,当服务数量非常多的时候,可以启动多个Turbine服务来构建不同的聚合集群 20 | # clusterNameExpression: metadata['default'] 21 | # # 表示同一主机上的服务通过host和port的组合来进行区分,默认情况下是使用host来区分,这样会使本地调试有问题 22 | # # combine-host-port: true 23 | #turbine.InstanceMonitor.eventStream.skipLineLogic.enabled: false 24 | 25 | # # spring boot 2.x以上版本需要加此配置 26 | #management: 27 | # endpoints: 28 | # web: 29 | # exposure: 30 | # include: "*" -------------------------------------------------------------------------------- /sia-gateway-reactive/.gitignore: -------------------------------------------------------------------------------- 1 | /.classpath 2 | -------------------------------------------------------------------------------- /sia-gateway-reactive/src/main/java/com/creditease/gateway/reactive/ReactiveObservable.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.reactive; 23 | 24 | import rx.Observable; 25 | 26 | /** 27 | * 观察接口 28 | * 29 | * @author peihua 30 | * 31 | * */ 32 | 33 | public interface ReactiveObservable { 34 | 35 | /** 36 | *@Callback This eagerly starts execution of the command 37 | * 38 | *@return that executes and calls back. 39 | 40 | * @throws RuntimeException 41 | * 42 | */ 43 | public Observable observe(); 44 | 45 | /** 46 | *@Callback This lazily starts execution of the command 47 | * 48 | *@return that executes and calls back. 49 | 50 | * @throws RuntimeException 51 | * 52 | */ 53 | public Observable toObservable(); 54 | 55 | } 56 | -------------------------------------------------------------------------------- /sia-gateway-registry/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | -------------------------------------------------------------------------------- /sia-gateway-registry/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-service/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | -------------------------------------------------------------------------------- /sia-gateway-service/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-service/src/main/java/com/creditease/gateway/service/SchedulerService.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.service; 23 | 24 | import java.util.List; 25 | 26 | import com.creditease.gateway.domain.ZuulInfo; 27 | 28 | /** 29 | * 定时任务接口 30 | * 31 | * @author peihua 32 | * 33 | * */ 34 | 35 | public interface SchedulerService { 36 | 37 | /** 38 | * 取得Counter個數 39 | * 40 | * @param counterKeysuccess 41 | * @return int 42 | * @throws Exception 43 | * */ 44 | int getCounter(String counterKeysuccess)throws Exception; 45 | 46 | /** 47 | * 取得ZUUL实例列表 48 | * 49 | * @return List 50 | * @throws Exception 51 | * 52 | * */ 53 | List getZuulList()throws Exception; 54 | 55 | /** 56 | * 取得路由ID列表 57 | * 58 | * @return String 59 | * @throws Exception 60 | * 61 | * */ 62 | String getStatisicBindRouteIdlist()throws Exception; 63 | } 64 | -------------------------------------------------------------------------------- /sia-gateway-service/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ${FILE_LOG_PATTERN} 12 | 13 | ${LOG_FILE} 14 | 15 | ${LOG_FILE}.%i 16 | 1 17 | 10 18 | 19 | 20 | 10MB 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /sia-gateway-sink/.gitignore: -------------------------------------------------------------------------------- 1 | /.classpath 2 | -------------------------------------------------------------------------------- /sia-gateway-sink/src/main/java/com/creditease/gateway/config/EnableSink.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.config; 23 | 24 | import com.creditease.gateway.message.config.EnableSagConsumer; 25 | import org.springframework.context.annotation.Import; 26 | 27 | import java.lang.annotation.*; 28 | 29 | /** 30 | * @Author: yongbiao 31 | * @Date: 2019-06-04 17:46 32 | */ 33 | @Target(ElementType.TYPE) 34 | @Retention(RetentionPolicy.RUNTIME) 35 | @Import(SinkAutoConfiguration.class) 36 | @Documented 37 | @Inherited 38 | @EnableSagConsumer 39 | public @interface EnableSink { 40 | } 41 | -------------------------------------------------------------------------------- /sia-gateway-sink/src/main/java/com/creditease/gateway/runner/SinkRunner.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.runner; 23 | 24 | import com.creditease.gateway.sink.starter.AbstractSinkStarter; 25 | import org.slf4j.Logger; 26 | import org.slf4j.LoggerFactory; 27 | import org.springframework.beans.factory.annotation.Autowired; 28 | import org.springframework.boot.CommandLineRunner; 29 | 30 | /** 31 | * Sink初始化动作 32 | * 33 | * @author peihua 34 | **/ 35 | public class SinkRunner implements CommandLineRunner { 36 | 37 | private static final Logger logger = LoggerFactory.getLogger(SinkRunner.class); 38 | 39 | @Autowired 40 | private AbstractSinkStarter sinkStarter; 41 | 42 | @Override 43 | public void run(String... args) { 44 | 45 | logger.info("Sink Runner start"); 46 | 47 | sinkStarter.run(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /sia-gateway-sink/src/main/java/com/creditease/gateway/sink/abs/BaseDataCollector.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.sink.abs; 23 | 24 | import java.util.List; 25 | import java.util.Map; 26 | 27 | /** 28 | * @Author: peihua 29 | * @Date: 2019/2/26 10:45 30 | */ 31 | public abstract class BaseDataCollector { 32 | 33 | public abstract void sinkToSource(Map> map); 34 | 35 | public abstract void sinkToSource(String topic, String json); 36 | } 37 | -------------------------------------------------------------------------------- /sia-gateway-sink/src/main/java/com/creditease/gateway/sink/starter/AbstractSinkStarter.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.sink.starter; 23 | 24 | /** 25 | * Sink初始化动作 26 | * 27 | * @author peihua 28 | **/ 29 | public abstract class AbstractSinkStarter { 30 | 31 | public void run() { 32 | 33 | preStart(); 34 | 35 | postStart(); 36 | } 37 | 38 | public abstract void preStart(); 39 | 40 | public abstract void postStart(); 41 | } 42 | -------------------------------------------------------------------------------- /sia-gateway-stream/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | -------------------------------------------------------------------------------- /sia-gateway-stream/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-stream/src/main/resources/index-mapping.json: -------------------------------------------------------------------------------- 1 | { 2 | "msg": { 3 | "type": "text", 4 | "analyzer": "standard" 5 | }, 6 | "instanceid": { 7 | "type": "keyword" 8 | }, 9 | "appname": { 10 | "type": "keyword" 11 | }, 12 | "level": { 13 | "type": "keyword" 14 | }, 15 | "logtime": { 16 | "type": "date", 17 | "fields": { 18 | "long": { 19 | "type": "long" 20 | } 21 | } 22 | }, 23 | "loggername": { 24 | "type": "keyword" 25 | }, 26 | "threadname": { 27 | "type": "keyword" 28 | }, 29 | "routeid": { 30 | "type": "keyword" 31 | }, 32 | "uri": { 33 | "type": "keyword" 34 | }, 35 | "parameter": { 36 | "type": "text", 37 | "analyzer": "standard" 38 | }, 39 | "body": { 40 | "type": "text", 41 | "analyzer": "standard" 42 | } 43 | } -------------------------------------------------------------------------------- /sia-gateway-synchspeed/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | -------------------------------------------------------------------------------- /sia-gateway-synchspeed/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-synchspeed/src/main/java/com/creditease/gateway/service/TriggerEvent.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.service; 23 | 24 | import com.creditease.gateway.message.Message; 25 | 26 | /** 27 | * @description: 刷新eureka 逻辑处理interface 28 | * @author: guohuixie2 29 | * @modify: peihua 30 | * @create: 2019-04-11 14:29 31 | **/ 32 | 33 | public interface TriggerEvent { 34 | 35 | /** 36 | * offline 37 | * 38 | * @param ip 39 | * @return message 40 | */ 41 | Message offline(String ip); 42 | 43 | /** 44 | * TODO:onLine 45 | * 46 | * @param serviceId 47 | * @return message 48 | */ 49 | Message online(String serviceId); 50 | } 51 | -------------------------------------------------------------------------------- /sia-gateway-synchspeed/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | ######################################################## 2 | ### ZUUL 辅助服务 3 | ######################################################## 4 | spring.application.name: SYNCH-EUREKA-SERVICE 5 | eureka.client.serviceUrl.defaultZone: http://127.0.0.1:19002/eureka/ 6 | eureka.instance.preferIpAddress: true 7 | eureka.instance.instance-id: ${spring.cloud.client.ipAddress}:${server.port} 8 | server.port: 8060 9 | 10 | # ZUUL actuator功能 11 | management.security.enabled: false 12 | 13 | logging.file: ../logs/${spring.application.name}.log 14 | 15 | ######################################################## 16 | ### 数据库 mysql基本配置; 17 | ######################################################## 18 | spring.datasource.skytrain: 19 | url: jdbc:mysql://127.0.0.1:3306/zoner?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&maxReconnects=10 20 | username: root 21 | password: #### 22 | driverClassName: com.mysql.jdbc.Driver 23 | 24 | ######################################################## 25 | ### KAFKA 基本配置 26 | ######################################################## 27 | spring.kafka.bootstrap-servers: 127.0.0.1:9092 28 | # 生产者和消费者topic前缀 29 | spring.kafka.topicPrefix: sag. 30 | 31 | spring.kafka.producer.numOfPartition: 4 32 | spring.kafka.producer.retries: 2 33 | # 每次批量发送消息的数量 34 | spring.kafka.producer.batch-size: 16384 35 | spring.kafka.producer.buffer-memory: 33554432 36 | 37 | #网关预警服务邮箱接口 38 | ALARM_EMAIL_ADDRESS: http://127.0.0.1:8070/alarmEmail/sendAlarmEmail 39 | 40 | #eureka-server名字 41 | EUREKA_SERVER_NAME: GANTRY-EUREKA-SERVER 42 | -------------------------------------------------------------------------------- /sia-gateway-synchspeed/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ${FILE_LOG_PATTERN} 12 | 13 | ${LOG_FILE} 14 | 15 | ${LOG_FILE}.%i 16 | 1 17 | 10 18 | 19 | 20 | 10MB 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /sia-gateway-template/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /bin/ 3 | /.classpath 4 | -------------------------------------------------------------------------------- /sia-gateway-template/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-template/src/main/java/com/creditease/gateway/annotation/FilterAnnotation.java: -------------------------------------------------------------------------------- 1 | package com.creditease.gateway.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Inherited; 6 | import java.lang.annotation.Retention; 7 | import java.lang.annotation.RetentionPolicy; 8 | import java.lang.annotation.Target; 9 | 10 | /** 11 | * 12 | * 自定义组件注解 13 | * 14 | * @author peihua 15 | * 16 | */ 17 | 18 | @Target(ElementType.TYPE) 19 | @Retention(RetentionPolicy.RUNTIME) 20 | @Documented 21 | @Inherited 22 | public @interface FilterAnnotation { 23 | 24 | /** 25 | * FilterAnnotation的描述信息 26 | * 27 | * @return 28 | */ 29 | 30 | String type() default ""; 31 | 32 | int order() default 0; 33 | 34 | boolean isenabled() default false; 35 | 36 | String compname() default ""; 37 | 38 | String compdesc() default ""; 39 | } -------------------------------------------------------------------------------- /sia-gateway-template/src/main/java/com/creditease/gateway/template/context/GatewayFilterProtocal.java: -------------------------------------------------------------------------------- 1 | package com.creditease.gateway.template.context; 2 | 3 | /** 4 | * 5 | * 组件类型 6 | * 7 | * @author peihua 8 | * 9 | */ 10 | 11 | public class GatewayFilterProtocal { 12 | 13 | public static enum GWFilterType { 14 | 15 | /** 16 | * ERROR_TYPE: 错误Filter类型 17 | * POST_TYPE: 后置Filter类型 18 | * PRE_TYPE: 前置Filter类型 19 | * ROUTE_TYPE:路由Filter类型 20 | * 21 | * */ 22 | ERROR_TYPE("error"), POST_TYPE("post"), PRE_TYPE("pre"), ROUTE_TYPE("route"); 23 | 24 | private String type; 25 | 26 | GWFilterType(String type) { 27 | this.type = type; 28 | } 29 | 30 | @Override 31 | public String toString() { 32 | 33 | return type; 34 | } 35 | } 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /sia-gateway-testFilter/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | /.classpath 3 | -------------------------------------------------------------------------------- /sia-gateway-testFilter/findbugs.exclude.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /sia-gateway-testFilter/src/main/java/com/creditease/gateway/filter/biz/TestFilter.java: -------------------------------------------------------------------------------- 1 | /*- 2 | * << 3 | * sag 4 | * == 5 | * Copyright (C) 2019 sia 6 | * == 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * >> 19 | */ 20 | 21 | 22 | package com.creditease.gateway.filter.biz; 23 | 24 | import com.creditease.gateway.annotation.FilterAnnotation; 25 | import com.creditease.gateway.template.absfilter.AbstractThirdPartyFilter; 26 | import com.netflix.zuul.context.RequestContext; 27 | 28 | /** 29 | * 30 | * 业务Filter模板实例Demo 31 | * 32 | * @author peihua 33 | */ 34 | 35 | @FilterAnnotation(type = "pre", order = 9, isenabled = true, compname = "测试组件", compdesc = "heel2444422ooo") 36 | public class TestFilter extends AbstractThirdPartyFilter { 37 | 38 | @Override 39 | public void process(RequestContext ctx, String routeid) { 40 | 41 | System.out.println(">> hello testFilter4 !"); 42 | } 43 | 44 | @Override 45 | public Class getClassValue() { 46 | 47 | return TestFilter.class; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /third-libary/docker-start.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | nginx -tc /opt/nginx.conf && nginx -c /opt/nginx.conf 3 | 4 | cd /app/jar/ROOT/gatewayadmin/bin 5 | chmod +x *.sh 6 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_admin_test.sh 7 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_service_test.sh 8 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_synchspeed_test.sh 9 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_stream_test.sh 10 | /app/jar/ROOT/gatewayadmin/bin/start_gateway_monitor_test.sh 11 | 12 | echo "启动网关核心" 13 | 14 | cd /app/jar/ROOT/gateway/bin 15 | chmod +x *.sh 16 | /app/jar/ROOT/gateway/bin/start_gateway_test.sh 17 | 18 | echo "启动完毕" 19 | 20 | while true;do 21 | echo ">>>" > /tmp/acc.log 22 | sleep 60 23 | done 24 | 25 | -------------------------------------------------------------------------------- /third-libary/tcl-8.5.13-8.el7.x86_64.rpm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/third-libary/tcl-8.5.13-8.el7.x86_64.rpm -------------------------------------------------------------------------------- /third-libary/tcl-devel-8.5.13-8.el7.x86_64.rpm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/siaorg/sia-gateway/80f3487d94350296de37a9c7b2e9889fc70fb148/third-libary/tcl-devel-8.5.13-8.el7.x86_64.rpm --------------------------------------------------------------------------------