diff --git a/profile/README.ko.md b/profile/README.ko.md index cc9d4f9..a403aaa 100644 --- a/profile/README.ko.md +++ b/profile/README.ko.md @@ -52,7 +52,7 @@ ai Anthropic ยท OpenAI ยท LangChain ยท pgvector - ๐Ÿ›ก๏ธ **[ssrf-guard](https://github.com/devslab-kr/ssrf-guard)**  [![Maven Central](https://img.shields.io/maven-central/v/kr.devslab/ssrf-guard)](https://central.sonatype.com/artifact/kr.devslab/ssrf-guard) โ€” JVM์šฉ SSRF ๋ฐฉ์–ด. ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ + IP ์šฐํšŒ ์ฐจ๋‹จ (10์ง„์ˆ˜ยท16์ง„์ˆ˜ยท8์ง„์ˆ˜ยทIPv6 ๋‚œ๋…ํ™”) + ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์žฌ๊ฒ€์ฆ์„ 9๊ฐœ HTTP ํด๋ผ์ด์–ธํŠธ ๋ชจ๋“ˆ (RestClient ยท RestTemplate ยท WebClient ยท Feign ยท OkHttp ยท JDK HttpClient ยท Apache HttpClient 5)์— ๋™์‹œ ์ ์šฉ. **`-springai` / `-langchain4j` ๋ชจ๋“ˆ์€ LLM ์—์ด์ „ํŠธ์˜ ํˆด URL ๊ฒ€์ฆ** โ€” Spring AI `ToolCallback`, LangChain4j `ToolExecutor` ๊ธฐ๋ฐ˜ ์—์ด์ „ํŠธ์˜ `fetch_url` ๋ฅ˜ ์ƒˆ SSRF ํ‘œ๋ฉด ๋Œ€์‘. GraalVM native-image ํžŒํŠธ์™€ WebClient์šฉ reactor-netty DNS-time ๊ฐ€๋“œ๋„ ํฌํ•จ. - ๐Ÿชถ **[easy-paging-spring-boot-starter](https://github.com/devslab-kr/easy-paging-spring-boot-starter)**  [![Spring Boot 4](https://img.shields.io/maven-central/v/kr.devslab/easy-paging-spring-boot-starter?label=Spring%20Boot%204&versionPrefix=4)](https://central.sonatype.com/artifact/kr.devslab/easy-paging-spring-boot-starter) ยท [![SB3 maintenance](https://img.shields.io/maven-central/v/kr.devslab/easy-paging-spring-boot-starter?label=SB3%20maintenance&versionPrefix=3)](https://central.sonatype.com/artifact/kr.devslab/easy-paging-spring-boot-starter) โ€” Spring Boot + MyBatis์šฉ ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€๋„ค์ด์…˜. Offset (`@AutoPaginate`)๊ณผ cursor/keyset (`@KeysetPaginate`)์„ ํ•˜๋‚˜์˜ ์Šคํƒ€ํ„ฐ๋กœ. WebFlux + R2DBC์šฉ ์ž๋งค ์•„ํ‹ฐํŒฉํŠธ (`-reactive`)๋Š” wire์—์„œ ๋™์ผํ•œ JSON ๋ด‰ํˆฌ. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฉ”์ด์ €๊ฐ€ Spring Boot ๋ฉ”์ด์ €์™€ ์ผ์น˜ ([๋ฒ„์ „ ์ •์ฑ…](https://github.com/devslab-kr/.github/blob/main/.github/VERSIONING.md#ํ•œ๊ตญ์–ด) ์ฐธ์กฐ): `4.x` ๋ผ์ธ์€ **Spring Boot 4 / Spring Framework 7 / Jackson 3** ๋Œ€์ƒ์ด๋ฉฐ, `3.x` [maintenance ๋ธŒ๋žœ์น˜](https://github.com/devslab-kr/easy-paging-spring-boot-starter/tree/3.x)๊ฐ€ SB 3.3โ€“3.5์— ๋Œ€ํ•œ ๋ณด์•ˆ ํŒจ์น˜๋ฅผ ๊ณ„์† ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. -- ๐Ÿ“œ **[api-log](https://github.com/devslab-kr/api-log)**  [![Maven Central](https://img.shields.io/maven-central/v/kr.devslab/api-log)](https://central.sonatype.com/artifact/kr.devslab/api-log) โ€” Spring Boot์šฉ ์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ API ๋กœ๊น…, PostgreSQL JSONB ์ €์žฅ. ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ๊ตฌ์„ฑ: `api-log-core` + ์˜์†์„ฑ ๋“œ๋ผ์ด๋ฒ„ (`-jpa`, `-r2dbc`, `-mybatis`). +- ๐Ÿ“œ **[api-log](https://github.com/devslab-kr/api-log)**  [![Maven Central](https://img.shields.io/maven-central/v/kr.devslab/api-log-core)](https://central.sonatype.com/artifact/kr.devslab/api-log-core) โ€” Spring Boot์šฉ ์ด๋ฒคํŠธ ๋“œ๋ฆฌ๋ธ API ๋กœ๊น…, PostgreSQL JSONB ์ €์žฅ. ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ ๊ตฌ์„ฑ: `api-log-core` + ์˜์†์„ฑ ๋“œ๋ผ์ด๋ฒ„ (`-jpa`, `-r2dbc`, `-mybatis`) โ€” ๋ชจ๋‘ ๊ฐ™์€ ๋ฒ„์ „ ๋ผ์ธ. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฉ”์ด์ €๊ฐ€ ํƒ€๊ฒŸ Spring Boot ๋ฉ”์ด์ €์™€ ์ผ์น˜ ([๋ฒ„์ „ ์ •์ฑ…](https://github.com/devslab-kr/.github/blob/main/.github/VERSIONING.md#ํ•œ๊ตญ์–ด) ์ฐธ์กฐ). - ๐Ÿงช **[devslab-examples](https://github.com/devslab-kr/devslab-examples)** โ€” ์œ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชจ๋“  ๋ชจ๋“ˆ์˜ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ Spring Boot ๋ฐ๋ชจ 14๊ฐœ (easy-paging SB4 4๊ฐœ + easy-paging SB3 maintenance 4๊ฐœ + ssrf-guard 6๊ฐœ โ€” HTTP ํด๋ผ์ด์–ธํŠธ์™€ LLM ํ”„๋ ˆ์ž„์›Œํฌ ์ „๋ฐ˜), ์ด์ค‘์–ธ์–ด README. Clone, `./gradlew bootRun`, curl. ์Šค๋ชจํฌ ํ…Œ์ŠคํŠธ ํฌํ•จ. ``` diff --git a/profile/README.md b/profile/README.md index 756131a..89a7f87 100644 --- a/profile/README.md +++ b/profile/README.md @@ -53,7 +53,7 @@ Battle-tested in our own SaaS first, then shared on Maven Central under `kr.devs - ๐Ÿ›ก๏ธ **[ssrf-guard](https://github.com/devslab-kr/ssrf-guard)**  [![Maven Central](https://img.shields.io/maven-central/v/kr.devslab/ssrf-guard)](https://central.sonatype.com/artifact/kr.devslab/ssrf-guard) โ€” SSRF defense for the JVM. Whitelist + IP-bypass hardening (decimal/hex/octal/IPv6 obfuscation) + redirect re-validation across 9 HTTP-client modules (RestClient ยท RestTemplate ยท WebClient ยท Feign ยท OkHttp ยท JDK HttpClient ยท Apache HttpClient 5). Includes **`-springai` and `-langchain4j` for LLM-agent tool URL validation** โ€” the new SSRF surface for `fetch_url`-style tools in Spring AI `ToolCallback` and LangChain4j `ToolExecutor` agents. Plus GraalVM native-image hints and reactor-netty DNS-time guards for WebClient. - ๐Ÿชถ **[easy-paging-spring-boot-starter](https://github.com/devslab-kr/easy-paging-spring-boot-starter)**  [![Spring Boot 4](https://img.shields.io/maven-central/v/kr.devslab/easy-paging-spring-boot-starter?label=Spring%20Boot%204&versionPrefix=4)](https://central.sonatype.com/artifact/kr.devslab/easy-paging-spring-boot-starter) ยท [![SB3 maintenance](https://img.shields.io/maven-central/v/kr.devslab/easy-paging-spring-boot-starter?label=SB3%20maintenance&versionPrefix=3)](https://central.sonatype.com/artifact/kr.devslab/easy-paging-spring-boot-starter) โ€” Annotation-driven pagination for Spring Boot + MyBatis. Offset (`@AutoPaginate`) and cursor/keyset (`@KeysetPaginate`) in one starter. Reactive companion artifact (`-reactive`) for WebFlux + R2DBC, identical JSON envelope on the wire. Library major matches Spring Boot major (see [versioning policy](https://github.com/devslab-kr/.github/blob/main/.github/VERSIONING.md)): `4.x` targets **Spring Boot 4 / Spring Framework 7 / Jackson 3**; the `3.x` [maintenance branch](https://github.com/devslab-kr/easy-paging-spring-boot-starter/tree/3.x) keeps SB 3.3โ€“3.5 supported with security patches. -- ๐Ÿ“œ **[api-log](https://github.com/devslab-kr/api-log)**  [![Maven Central](https://img.shields.io/maven-central/v/kr.devslab/api-log)](https://central.sonatype.com/artifact/kr.devslab/api-log) โ€” Event-driven API logging for Spring Boot, PostgreSQL JSONB storage. Multi-module: `api-log-core` plus persistence drivers (`-jpa`, `-r2dbc`, `-mybatis`). +- ๐Ÿ“œ **[api-log](https://github.com/devslab-kr/api-log)**  [![Maven Central](https://img.shields.io/maven-central/v/kr.devslab/api-log-core)](https://central.sonatype.com/artifact/kr.devslab/api-log-core) โ€” Event-driven API logging for Spring Boot, PostgreSQL JSONB storage. Multi-module: `api-log-core` plus persistence drivers (`-jpa`, `-r2dbc`, `-mybatis`) โ€” all on the same version line. Library major matches the Spring Boot major it targets (see [versioning policy](https://github.com/devslab-kr/.github/blob/main/.github/VERSIONING.md)). - ๐Ÿงช **[devslab-examples](https://github.com/devslab-kr/devslab-examples)** โ€” Runnable Spring Boot demos for every library above (14 demos: 4 easy-paging SB4 + 4 easy-paging SB3 maintenance + 6 ssrf-guard across HTTP clients and LLM frameworks; bilingual READMEs). Clone, `./gradlew bootRun`, curl. Smoke tests included. ```