Skip to content

Commit 1a07d02

Browse files
doublegateclaude
andcommitted
chore(release): prepare v1.0.0 production release
EXECUTIVE SUMMARY First stable release of ProRT-IP WarScan - a modern network scanner combining Masscan's speed (10M+ pps) with Nmap's detection depth (85-90% service accuracy). Phase 7 complete with comprehensive documentation, packaging, security audit, and performance validation. HIGHLIGHTS - Version bumped to 1.0.0 across all workspace crates - 2,557 tests passing, 51.40% code coverage - 8 scan types: TCP SYN, Connect, FIN/NULL/Xmas, ACK, Idle, UDP - Production TUI: 60 FPS, 4-tab dashboard, 11 widgets - Full IPv6 support across all scanner types - Plugin system with Lua 5.4 sandboxed execution DOCUMENTATION ADDED - USER-MANUAL.md: Complete user guide (800+ lines) - DEVELOPER-GUIDE.md: Developer documentation (900+ lines) - SECURITY-AUDIT-v1.0.md: Security audit report - PERFORMANCE-VALIDATION-v1.0.md: Performance validation - man/prtip.1: Unix man page PACKAGING ADDED - docker/: Dockerfile, docker-compose.yml, README - packaging/debian/: .deb package configuration - packaging/rpm/: .spec file for RPM builds - packaging/macos/: macOS build script - packaging/windows/: WiX installer configuration - .github/workflows/packages.yml: CI/CD packaging workflow FILES UPDATED - Cargo.toml: Version 1.0.0 - README.md: Production release status - CHANGELOG.md: v1.0.0 entry - docs/10-PROJECT-STATUS.md: Phase 7 complete - .github/copilot-instructions.md: v1.0.0 version - deny.toml: Updated configuration - CLAUDE.md, CLAUDE.local.md: Memory bank updates - RELEASE-NOTES-v1.0.0.md: Comprehensive release notes PLATFORM SUPPORT - Linux 4.15+ (capabilities, raw sockets) - Windows 10+ (Npcap required) - macOS 11.0+ (ChmodBPF or root) - Docker (multi-arch: amd64, arm64) BREAKING CHANGES None - first stable release Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent f3bd434 commit 1a07d02

29 files changed

+5226
-50
lines changed

.github/copilot-instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
**ProRT-IP WarScan** is a high-performance network scanner implemented in Rust that combines the speed of Masscan/ZMap with the detection depth of Nmap. This is a penetration testing and red team tool designed for security professionals.
66

7-
- **Current Version**: v0.5.9 (Phase 6 Complete)
7+
- **Current Version**: v1.0.0 (Production Release)
88
- **Test Coverage**: 2,557 tests passing, 51.40% coverage
99
- **License**: GPL-3.0
1010
- **Repository**: https://github.com/doublegate/ProRT-IP

.github/workflows/packages.yml

Lines changed: 279 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,279 @@
1+
name: Build Packages
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
inputs:
8+
version:
9+
description: 'Version to build (e.g., 1.0.0)'
10+
required: true
11+
type: string
12+
publish_docker:
13+
description: 'Publish Docker image to Docker Hub'
14+
required: false
15+
type: boolean
16+
default: false
17+
18+
permissions:
19+
contents: write
20+
packages: write
21+
22+
env:
23+
CARGO_TERM_COLOR: always
24+
25+
jobs:
26+
# Build Debian package
27+
build-deb:
28+
name: Build Debian Package
29+
runs-on: ubuntu-latest
30+
31+
steps:
32+
- uses: actions/checkout@v4
33+
34+
- name: Determine version
35+
id: version
36+
env:
37+
REF_NAME: ${{ github.ref_name }}
38+
INPUT_VERSION: ${{ inputs.version }}
39+
EVENT_NAME: ${{ github.event_name }}
40+
run: |
41+
if [ "$EVENT_NAME" = "workflow_dispatch" ]; then
42+
VERSION="$INPUT_VERSION"
43+
else
44+
VERSION="${REF_NAME#v}"
45+
fi
46+
echo "version=$VERSION" >> $GITHUB_OUTPUT
47+
48+
- name: Install Rust
49+
uses: dtolnay/rust-toolchain@stable
50+
51+
- name: Install dependencies
52+
run: |
53+
sudo apt-get update
54+
sudo apt-get install -y \
55+
devscripts \
56+
debhelper \
57+
libpcap-dev \
58+
libssl-dev \
59+
pkg-config
60+
61+
- name: Build release binary
62+
run: cargo build --release --locked
63+
64+
- name: Create .deb package
65+
env:
66+
VERSION: ${{ steps.version.outputs.version }}
67+
run: |
68+
# Create package directory structure
69+
mkdir -p pkg/DEBIAN
70+
mkdir -p pkg/usr/bin
71+
mkdir -p pkg/usr/share/man/man1
72+
mkdir -p pkg/usr/share/doc/prtip
73+
74+
# Copy binary
75+
cp target/release/prtip pkg/usr/bin/
76+
chmod 755 pkg/usr/bin/prtip
77+
78+
# Copy documentation
79+
cp README.md pkg/usr/share/doc/prtip/
80+
cp LICENSE pkg/usr/share/doc/prtip/
81+
cp CHANGELOG.md pkg/usr/share/doc/prtip/
82+
83+
# Copy man page
84+
cp man/prtip.1 pkg/usr/share/man/man1/
85+
gzip -9 pkg/usr/share/man/man1/prtip.1
86+
87+
# Create control file
88+
cat > pkg/DEBIAN/control << EOF
89+
Package: prtip
90+
Version: $VERSION
91+
Section: net
92+
Priority: optional
93+
Architecture: amd64
94+
Depends: libpcap0.8
95+
Maintainer: ProRT-IP Contributors <noreply@github.com>
96+
Homepage: https://github.com/doublegate/ProRT-IP
97+
Description: Modern high-performance network scanner
98+
ProRT-IP WarScan combines Masscan speed with Nmap detection depth.
99+
Features TCP/UDP/ICMP scanning, service detection, OS fingerprinting,
100+
and advanced evasion techniques.
101+
EOF
102+
103+
# Create postinst script for capabilities
104+
cat > pkg/DEBIAN/postinst << 'EOF'
105+
#!/bin/sh
106+
set -e
107+
if command -v setcap > /dev/null 2>&1; then
108+
setcap cap_net_raw,cap_net_admin=eip /usr/bin/prtip || true
109+
fi
110+
EOF
111+
chmod 755 pkg/DEBIAN/postinst
112+
113+
# Build package
114+
dpkg-deb --build pkg "prtip_${VERSION}_amd64.deb"
115+
116+
- name: Upload .deb artifact
117+
uses: actions/upload-artifact@v4
118+
with:
119+
name: prtip-deb
120+
path: prtip_*.deb
121+
122+
- name: Upload to release
123+
if: github.event_name == 'release'
124+
env:
125+
GH_TOKEN: ${{ github.token }}
126+
REF_NAME: ${{ github.ref_name }}
127+
run: |
128+
gh release upload "$REF_NAME" prtip_*.deb --clobber
129+
130+
# Build Docker images
131+
build-docker:
132+
name: Build Docker Images
133+
runs-on: ubuntu-latest
134+
needs: []
135+
136+
steps:
137+
- uses: actions/checkout@v4
138+
139+
- name: Determine version
140+
id: version
141+
env:
142+
REF_NAME: ${{ github.ref_name }}
143+
INPUT_VERSION: ${{ inputs.version }}
144+
EVENT_NAME: ${{ github.event_name }}
145+
run: |
146+
if [ "$EVENT_NAME" = "workflow_dispatch" ]; then
147+
VERSION="$INPUT_VERSION"
148+
else
149+
VERSION="${REF_NAME#v}"
150+
fi
151+
echo "version=$VERSION" >> $GITHUB_OUTPUT
152+
153+
- name: Set up Docker Buildx
154+
uses: docker/setup-buildx-action@v3
155+
156+
- name: Login to Docker Hub
157+
if: github.event_name == 'release' || inputs.publish_docker
158+
uses: docker/login-action@v3
159+
with:
160+
username: ${{ secrets.DOCKER_USERNAME }}
161+
password: ${{ secrets.DOCKER_PASSWORD }}
162+
163+
- name: Login to GitHub Container Registry
164+
uses: docker/login-action@v3
165+
with:
166+
registry: ghcr.io
167+
username: ${{ github.actor }}
168+
password: ${{ secrets.GITHUB_TOKEN }}
169+
170+
- name: Build and push
171+
uses: docker/build-push-action@v5
172+
env:
173+
VERSION: ${{ steps.version.outputs.version }}
174+
REPO_OWNER: ${{ github.repository_owner }}
175+
with:
176+
context: .
177+
file: docker/Dockerfile
178+
platforms: linux/amd64,linux/arm64
179+
push: ${{ github.event_name == 'release' || inputs.publish_docker }}
180+
tags: |
181+
doublegate/prtip:${{ steps.version.outputs.version }}
182+
doublegate/prtip:latest
183+
ghcr.io/${{ github.repository_owner }}/prtip:${{ steps.version.outputs.version }}
184+
ghcr.io/${{ github.repository_owner }}/prtip:latest
185+
build-args: |
186+
VERSION=${{ steps.version.outputs.version }}
187+
cache-from: type=gha
188+
cache-to: type=gha,mode=max
189+
190+
- name: Build test image (for validation)
191+
if: github.event_name != 'release' && !inputs.publish_docker
192+
uses: docker/build-push-action@v5
193+
with:
194+
context: .
195+
file: docker/Dockerfile
196+
platforms: linux/amd64
197+
push: false
198+
tags: prtip:test
199+
build-args: |
200+
VERSION=${{ steps.version.outputs.version }}
201+
202+
# Validate packages
203+
validate-packages:
204+
name: Validate Packages
205+
runs-on: ubuntu-latest
206+
needs: [build-deb, build-docker]
207+
if: always() && !failure() && !cancelled()
208+
209+
steps:
210+
- uses: actions/checkout@v4
211+
212+
- name: Download .deb artifact
213+
uses: actions/download-artifact@v4
214+
with:
215+
name: prtip-deb
216+
path: packages
217+
218+
- name: Validate .deb package
219+
run: |
220+
# Install the package
221+
sudo dpkg -i packages/prtip_*.deb || sudo apt-get install -f -y
222+
223+
# Verify installation
224+
which prtip
225+
prtip --version
226+
227+
# Check capabilities (may fail without root)
228+
getcap /usr/bin/prtip || true
229+
230+
# Test basic functionality
231+
prtip --help
232+
prtip --iflist || true
233+
234+
- name: Test Docker image
235+
env:
236+
REPO_OWNER: ${{ github.repository_owner }}
237+
run: |
238+
# Pull the test image from GHCR
239+
docker pull "ghcr.io/${REPO_OWNER}/prtip:latest" || true
240+
241+
# Test with local build if pull fails
242+
if ! docker images | grep -q prtip; then
243+
docker build -t prtip:test -f docker/Dockerfile .
244+
fi
245+
246+
# Run basic tests
247+
docker run --rm prtip:test --version
248+
docker run --rm prtip:test --help
249+
250+
# Create package summary
251+
package-summary:
252+
name: Package Summary
253+
runs-on: ubuntu-latest
254+
needs: [build-deb, build-docker, validate-packages]
255+
if: always()
256+
257+
steps:
258+
- name: Summary
259+
env:
260+
DEB_RESULT: ${{ needs.build-deb.result }}
261+
DOCKER_RESULT: ${{ needs.build-docker.result }}
262+
VALIDATE_RESULT: ${{ needs.validate-packages.result }}
263+
REPO_OWNER: ${{ github.repository_owner }}
264+
run: |
265+
echo "# Package Build Summary" >> $GITHUB_STEP_SUMMARY
266+
echo "" >> $GITHUB_STEP_SUMMARY
267+
echo "## Build Results" >> $GITHUB_STEP_SUMMARY
268+
echo "" >> $GITHUB_STEP_SUMMARY
269+
echo "| Package | Status |" >> $GITHUB_STEP_SUMMARY
270+
echo "|---------|--------|" >> $GITHUB_STEP_SUMMARY
271+
echo "| Debian (.deb) | $DEB_RESULT |" >> $GITHUB_STEP_SUMMARY
272+
echo "| Docker | $DOCKER_RESULT |" >> $GITHUB_STEP_SUMMARY
273+
echo "| Validation | $VALIDATE_RESULT |" >> $GITHUB_STEP_SUMMARY
274+
echo "" >> $GITHUB_STEP_SUMMARY
275+
echo "## Available Packages" >> $GITHUB_STEP_SUMMARY
276+
echo "" >> $GITHUB_STEP_SUMMARY
277+
echo "- **Debian/Ubuntu:** \`prtip_VERSION_amd64.deb\`" >> $GITHUB_STEP_SUMMARY
278+
echo "- **Docker:** \`doublegate/prtip:VERSION\`" >> $GITHUB_STEP_SUMMARY
279+
echo "- **GitHub Container Registry:** \`ghcr.io/${REPO_OWNER}/prtip:VERSION\`" >> $GITHUB_STEP_SUMMARY

CHANGELOG.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,89 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [1.0.0] - 2025-01-25
11+
12+
### Executive Summary
13+
14+
**ProRT-IP WarScan v1.0.0** - First stable release marking production readiness. This release represents 8 phases of development delivering a modern, high-performance network scanner that combines Masscan's speed (10M+ pps) with Nmap's detection depth (85-90% accuracy). Comprehensive documentation, packaging, security audit, and performance validation complete the v1.0 milestone.
15+
16+
### Highlights
17+
18+
- **2,557 Tests** with 51.40% code coverage
19+
- **8 Scan Types:** TCP SYN, Connect, UDP, FIN, NULL, Xmas, ACK, Idle
20+
- **85-90% Service Detection** using 187 Nmap probes
21+
- **2,600+ OS Fingerprints** with 16-probe fingerprinting
22+
- **Full IPv6 Support** across all scanner types
23+
- **Production TUI** with 60 FPS, 4-tab dashboard, 11 widgets
24+
- **Plugin System** with Lua sandboxing and capability-based security
25+
- **Cross-Platform:** Linux, Windows (Npcap), macOS (BPF)
26+
27+
### Added
28+
29+
- **Phase 7 Documentation & Packaging**
30+
- Complete User Manual (`docs/USER-MANUAL.md`) - 800+ lines
31+
- Developer Guide (`docs/DEVELOPER-GUIDE.md`) - 900+ lines
32+
- Security Audit Report (`docs/SECURITY-AUDIT-v1.0.md`)
33+
- Performance Validation Report (`docs/PERFORMANCE-VALIDATION-v1.0.md`)
34+
- Man pages: `prtip.1` (command reference)
35+
- Docker support with multi-arch images (amd64, arm64)
36+
- Debian package (.deb) with postinst capabilities
37+
- GitHub Actions packaging workflow (`packages.yml`)
38+
39+
### Performance
40+
41+
- **Common Ports (6):** 5.1ms (29x faster than nmap)
42+
- **Top 100 Ports:** 5.9ms
43+
- **Full 65K Ports:** 259ms (146x faster than Phase 3)
44+
- **Service Detection:** 2-3s/port with 85-90% accuracy
45+
- **TUI Frame Rate:** 60 FPS with 10K+ events/sec throughput
46+
- **Memory:** <50MB peak for full scans
47+
- **Rate Limiting:** -1.8% overhead (actually improves efficiency)
48+
49+
### Security
50+
51+
- **Cargo Audit:** No known vulnerabilities (2 unmaintained transitive deps documented)
52+
- **License Compliance:** All OSI-approved (MIT, Apache-2.0, BSD, GPL-3.0, etc.)
53+
- **Fuzz Testing:** 230M+ executions across 5 targets, 0 crashes
54+
- **Privilege Management:** Capability-based (CAP_NET_RAW, CAP_NET_ADMIN)
55+
- **Input Validation:** Comprehensive at all boundaries
56+
- **Plugin Sandboxing:** Lua with restricted environment
57+
58+
### Platform Support
59+
60+
| Platform | Status | Notes |
61+
|----------|--------|-------|
62+
| Linux 4.15+ | Full Support | Capabilities, raw sockets |
63+
| Windows 10+ | Full Support | Npcap required |
64+
| macOS 11.0+ | Full Support | ChmodBPF or root |
65+
| Docker | Full Support | NET_RAW capability |
66+
67+
### Breaking Changes
68+
69+
None. This is the first stable release.
70+
71+
### Migration from v0.5.x
72+
73+
No breaking changes. Simply update to v1.0.0.
74+
75+
### Known Issues
76+
77+
- 4 SYN discovery tests fail on Windows loopback (expected, documented behavior)
78+
- 6 doctest failures (cosmetic, zero production impact)
79+
- Idle scan requires suitable zombie host with predictable IP ID
80+
81+
### Contributors
82+
83+
Thanks to all contributors who helped make v1.0.0 possible.
84+
85+
### Links
86+
87+
- **Documentation:** https://github.com/doublegate/ProRT-IP/tree/main/docs
88+
- **Docker Hub:** doublegate/prtip:1.0.0
89+
- **GitHub Container Registry:** ghcr.io/doublegate/prtip:1.0.0
90+
91+
---
92+
1093
## [0.5.9] - 2025-11-28
1194

1295
### Executive Summary

0 commit comments

Comments
 (0)