Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
io.github.zhangbinhub.acp.boot:acp-spring-boot-starter-ftp
Advanced tools
Application Construction Platform 应用构建平台,使用该脚手架可快速搭建基于Kotlin或Java语言的普通应用、SpringBoot应用和SpringCloud应用
此项目已不再更新,由于某些不可抗因素,已转移至https://gitee.com/zhangbinhub/acp
javaVersion
-jdk8
定义外部依赖版本号
定义项目/模块结构
gradle全局参数:
groupid.acp.core
公共构建脚本
单个模块特有的构建脚本
gradlew project:release -Pactive=test
mavenUploadUrlRelease=https://maven.com/repositories/releases/
mavenUploadUrlSnapshot=https://maven.com/repositories/snapshot/
mavenUserName=username
mavenPassword=password
mavenUploadUrlRelease=https://maven.com/repositories/releases/
mavenUploadUrlSnapshot=https://maven.com/repositories/snapshot/
mavenUserName=username
mavenPassword=password
signing.keyId=shortId
signing.password=keyPassword
signing.secretKeyRingFile=keyFile
gradlew wrapper --gradle-version=7.4 --distribution-type=all
引入 acp 下相应模块包,使用 acp-dependency 进行版本管理,例如:
dependencyManagement {
imports {
mavenBom("io.github.zhangbinhub.acp.dependency:acp-dependency:2021.0.2")
}
}
springboot 应用扩展组件
依赖 acp-client
在 springboot 基础上整合大量底层功能,扩展支持 tcp、udp 等协议服务端配置;同时封装定时任务
提供一个 Spring Boot 的InfoContributor
,例如:
curl http://localhost:8080/actuator/info
{
"acp": {
"version": "2021.0.2"
}
}
acp:
swagger:
enabled: true
acp:
schedule:
cron:
task1: 0 0/1 * * * ?
key-value 形式(可配置多个),其中 task1 为任务的 beanName;0 0/1 * * * ? 为定时执行规则cron表达式。
acp:
controller-log:
enabled: true #是否开启controller日志输出,默认true
no-log-uri-regular:
- /oauth/.* #不进行日志输出的 url 正则表达式,可配置多个
acp:
tcp-server:
listeners:
- name: testSocket #监听服务名称
enabled: true #是否启用,默认false
keepAlive: false #是否为长连接,默认false;TCP服务有效
idletime: 10000 #连接进入空闲状态的等待时间单位毫秒,默认10000;TCP服务有效
messageDecoder: "" #粘包拆包解码器 Bean 的类名,默认不设置;TCP服务有效
threadNumber: 100 #接收报文处理的最大线程数,为0或不设置则使用系统默认线程数;TCP服务有效
hex: false #接收报文是否是十六进制机器码,默认false
port: 9999 #监听端口号
handleBean: io.github.zhangbinhub.acp.test.application.test.TestTcpHandle #报文接收处理 Bean 的类名
responsable: true #报文是否需要进行原路响应,默认true
charset: gbk #服务使用字符集,为空或不设置则系统默认字符集
acp:
udp-server:
listeners:
- name: testSocket #监听服务名称
enabled: true #是否启用,默认false
hex: false #接收报文是否是十六进制机器码,默认false
port: 9999 #监听端口号
handleBean: io.github.zhangbinhub.acp.test.application.test.TestTcpHandle #报文接收处理 Bean 的类名
responsable: true #报文是否需要进行原路响应,默认true
charset: gbk
acp:
ftp-server:
listeners:
- name: "测试ftp服务器" #服务名车鞥
enabled: true #可空,是否启用,默认false
port: 221 #服务端口号
pwd-encrypt-mode: MD5 #可空,用户密码加密方式(支持MD5、SHA1、SHA256),默认MD5
login-failure-delay: 30 #可空,默认30
max-login-failures: 20 #可空,默认20
max-logins: 10 #可空,默认10
max-anonymous-logins: 20 #可空,默认20
max-threads: 10 #可空,默认10
default-home-directory: "abs:D:\\个人\\测试ftp" #默认根路径
anonymous-login-enabled: false #可空,是否允许匿名用户登录,默认false
anonymous-write-permission: false #可空,是否允许匿名用户写操作,默认false
user-factory-class: io.github.zhangbinhub.acp.test.application.test.TestUserFactory #用户工厂类
acp:
sftp-server:
listeners:
- name: "测试sftp服务器" #服务名称
enabled: true #可空,是否启用,默认false
port: 4221 #服务端口号
host-key-path: "files/resource/key/hostkey" #服务器密钥文件路径
password-auth: true #可空,是否进行密码登录,默认true
public-key-auth: false #可空,是否进行证书登录(开启后仅支持证书验证),用户证书只支持openssh生成的密钥,默认false
key-auth-type: pem #可空,证书类型(der/pem/ssh),默认pem
key-auth-mode: RSA #可空,证书验证模式(RSA/DSA),默认RSA
default-home-directory: "abs:D:\\个人\\测试ftp" #默认根路径
user-factory-class: io.github.zhangbinhub.acp.test.application.test.TestUserFactory #用户工厂类
命令 | 描述 |
---|---|
./server.sh | 查看可用参数 |
./server.sh status | 查看系统运行状态 |
./server.sh start | 启动应用 |
./server.sh stop | 停止应用 |
./server.sh restart | 重启应用 |
引入 cloud 下相应模块包,demo 位于 cloud 下,使用 acp-dependency 进行版本管理,例如:
dependencyManagement {
imports {
mavenBom("io.github.zhangbinhub.acp.dependency:acp-dependency:2021.0.0-M4")
}
}
原子服务公共模块:
监控界面
网关服务
统一认证服务:token 存储于 Redis,user 及 client 信息可扩展配置
url | 描述 |
---|---|
/oauth/authorize | 申请授权,basic认证保护 |
/oauth/token | 获取token的服务,url中没有client_id和client_secret的,走basic认证保护 |
/oauth/check_token | 资源服务器用来校验token,basic认证保护 |
/oauth/confirm_access | 授权确认,basic认证保护 |
/oauth/error | 认证失败,无认证保护 |
test:cloud:oauth-server 中增加 authorization_code 方式配置,详见 io.github.zhangbinhub.acp.cloud.oauth.conf.WebSecurityConfiguration 注释
注:使用 authorization_code 方式时,认证请求时需要直接访问 oauth-server 不能通过 gateway
日志服务,使用 kafka 作为日志消息队列
原子服务,分别调用 hello 和 world
原子服务
原子服务
基础中间件包括:redis、zookeeper、kafka、kafka-manager、elasticsearch、kibana、logstash、zoonavigator-api、zoonavigator-web、prometheus、grafana、setup_grafana_datasource
命令模式进入dockerfile目录,执行启动命令
docker-compose -f docker-compose-base.yaml up -d
命令模式进入dockerfile目录,执行启动命令
docker-compose -f docker-compose-base.yaml stop
命令模式进入dockerfile目录,执行启动命令
docker-compose -f docker-compose-base.yaml down
acp:
cloud:
oauth:
oauth-server: true
a. 配置两个 appender(一个输出到本地文件,一个输出到logstash;单独配置的目的是为了将不同类型的日志写入不同名称的文件并在elasticsearch中创建不同的索引)
b. 之后再配置一个 logger (name属性为某个日志类型),包含之前配置的两个 appender
c. 强烈建议 logback-spring.xml 中配置的本地日志文件路径需与 yml 中的 logging.file.path 一致,方便统一管理
acp:
cloud:
log-server:
enabled: true #是否开启日志服务
acp:
cloud:
log-server:
client:
enabled: true #是否启用日志服务
log-type: ALL #当前服务的日志类型,默认ALL,也自定义;自定义的类型需要在日志服务中参照ALL配置appender和logger
exclude group: 'org.springframework.cloud', module: 'spring-cloud-starter-stream-kafka'
acp:
cloud:
oauth:
auth-exception-entry-point: AuthExceptionEntryPoint #自定义 token 异常 bean 名称
access-denied-handler: CustomAccessDeniedHandler #自定义权限异常 bean 名称
acp:
cloud:
oauth:
resource-server-permit-all-path:
- /customer
resource-server-security-path:
- /customer2
acp:
cloud:
oauth:
resource-server: false #是否是资源服务器
security:
oauth2:
resource:
token-info-uri: http://server-oauth2/open/inner/check-token
自行编写 Dockerfile,使用命令单独执行或使用 docker-compose 批量执行,请自行百度
FAQs
Unknown package
We found that io.github.zhangbinhub.acp.boot:acp-spring-boot-starter-ftp demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.