Metadata-Version: 2.4
Name: knw-license
Version: 0.1.1
Summary: IP-based access guard for Python apps
Project-URL: Homepage, https://github.com/your-org/knw-license
License: Proprietary
Keywords: access-control,guard,ip,license
Requires-Python: >=3.9
Requires-Dist: requests>=2.28
Description-Content-Type: text/markdown

# knw-license

IP 기반으로 Python 앱의 실행 환경을 제한하는 라이브러리입니다.

## 설치

```bash
pip install knw-license
```

## 사용법

### 함수형

```python
import knw_license

# 공인 IP 검사 (기본)
knw_license.check()

# 내부 IP 검사
knw_license.check(mode="local")

# 공인 + 내부 중 하나라도 허용 목록에 있으면 통과
knw_license.check(mode="both")
```

### 데코레이터형

```python
from knw_license import guard

@guard
def main():
    print("허용된 환경에서 실행 중")

@guard(mode="both")
def main():
    print("허용된 환경에서 실행 중")
```

### 예외 처리

```python
from knw_license.exceptions import AccessDeniedError, IPResolutionError

try:
    knw_license.check()
except AccessDeniedError as e:
    print(f"차단된 IP: {e.ip}")
    print(f"검사 모드: {e.mode}")
except IPResolutionError as e:
    print(f"IP 조회 실패: {e}")
```

## IP 목록 관리

`knw_license/_allowlist.py` 의 `ALLOWED_CIDRS` 리스트를 수정합니다.

```python
ALLOWED_CIDRS: list[str] = [
    "203.0.113.5/32",   # 단일 공인 IP
    "192.168.1.0/24",   # 사무실 내부망
    "10.0.0.0/8",       # VPN 대역
]
```

변경 후 버전을 올려 재배포합니다.

```bash
# pyproject.toml 버전 수정 후
python -m build
twine upload dist/*
```
