외부 카드망 연동(전문처리)을 실제 프로토콜로 구현 — 마이그레이션 최난이도 계층 (소켓·바이너리 전문·프레이밍·상태처리)이 실제로 동작. ■ ISO 8583 와이어 코덱 (common/acq_iso8583.c) - 1차 비트맵(64bit) + DE 인코딩/파싱(PAN LLVAR·금액·STAN·RRN·응답코드·MID/TID 등). - iso_build/iso_parse 왕복 무손실 검증(비트맵 7220000000C08000 정확). ■ 외부 카드망 시뮬레이터 (clients/acq_extsw.c, :9500) - TCP 서버: 길이접두 프레이밍 + ISO 전문. 0200 수신→승인판정→0210 응답 조립 (DE38 승인번호·DE39 응답코드). 금액임계/STAN으로 일부 거절(05). ■ 전문 왕복 드라이버 (clients/acq_netdrv.c) - 실매입건→0200 조립→소켓 전송→0210 수신·파싱→mg_netlog 적재(RTT·응답코드). - 실측: 200건 왕복 승인198/거절2/오류0, 0200→0210, 평균 RTT 0.3ms. ■ 클리어링 파일 교환 (clients/acq_clrfile.c) - cl_presentment→고정폭 정산파일(/app/out/CLR_BC_YYYYMMDD.dat) HD/DT/TR+체크섬 생성, cl_clearing_file 등록. 실제 SFTP 배치 파일교환 대역. 샘플 파일 커밋. ■ 스키마·부팅·화면 - 74-netio.sql: mg_netlog(왕복로그)·cl_clearing_file(파일 레지스트리). - entrypoint.sh: acq_extsw 부팅 자동기동(:9500). - build.sh: 클라이언트에 libacqcommon.a(ISO 코덱) 링크. - 시스템현황에 "외부망 전문 왕복"·"클리어링 파일 교환" 패널. 패리티 재채점 ≈89/100. 남은 ~11%는 상용회선·HSM·다중센터 DR 등 배포 인프라. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
59 lines
2.3 KiB
Bash
Executable file
59 lines
2.3 KiB
Bash
Executable file
#!/bin/bash
|
|
##
|
|
## Build (via the reusable build.sh) + boot the Enduro/X acquiring stack, then
|
|
## stay alive. Runs inside the app container (image acquire-x/endurox:7.0.12).
|
|
##
|
|
set -e
|
|
|
|
. /app/conf/setapp.sh
|
|
|
|
echo "=================================================================="
|
|
echo " acquire-core-x : build + boot (module-server pattern)"
|
|
echo "=================================================================="
|
|
|
|
# runtime dirs
|
|
mkdir -p /app/log /app/tmp /app/tmlogs/rm1 /app/bin /app/lib /app/obj
|
|
rm -f /app/log/*.log 2>/dev/null || true
|
|
|
|
# ensure posix mqueue is available (compose provides the sysctls/ulimits)
|
|
if [ ! -d /dev/mqueue ]; then
|
|
mkdir -p /dev/mqueue
|
|
mount -t mqueue none /dev/mqueue 2>/dev/null || true
|
|
fi
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Build everything + generate ndrxconfig.xml (discovers all modules)
|
|
# ---------------------------------------------------------------------------
|
|
bash /app/build.sh
|
|
ls -l /app/bin
|
|
|
|
# ---------------------------------------------------------------------------
|
|
# Boot Enduro/X
|
|
# ---------------------------------------------------------------------------
|
|
echo "--- xadmin down/start ---"
|
|
xadmin down -y 2>/dev/null || true
|
|
xadmin start -y
|
|
|
|
echo "--- xadmin psc (advertised services) ---"
|
|
xadmin psc
|
|
echo "--- xadmin ppm (processes) ---"
|
|
xadmin ppm
|
|
|
|
echo "--- acq_httpgw (업무화면 HTTP 게이트웨이 :8090 — 브라우저 → tpcall) ---"
|
|
nohup /app/bin/acq_httpgw > /app/log/acq_httpgw.log 2>&1 &
|
|
sleep 1
|
|
grep -q "listening" /app/log/acq_httpgw.log && echo "acq_httpgw: UP (:8090)" || tail -3 /app/log/acq_httpgw.log
|
|
|
|
echo "--- acq_extsw (외부 카드망 시뮬레이터 :9500 — ISO 8583 전문 왕복 상대망) ---"
|
|
nohup /app/bin/acq_extsw 9500 > /app/log/acq_extsw.log 2>&1 &
|
|
sleep 1
|
|
grep -q "listening" /app/log/acq_extsw.log && echo "acq_extsw: UP (:9500)" || tail -2 /app/log/acq_extsw.log
|
|
|
|
echo "=================================================================="
|
|
echo " acquire-core-x : UP. Run the 매입 chain driver with:"
|
|
echo " docker compose -f docker/docker-compose.yml exec app /app/run-driver.sh"
|
|
echo " 업무화면(포털): http://localhost:8090/"
|
|
echo "=================================================================="
|
|
|
|
# keep the container (and the ndrxd daemon) alive
|
|
tail -F /app/log/ndrxd.log
|