BQN 문서
닫기 아이콘

RADIUS 및 REST 외에도 사용자 데이터는 지원되는 여러 청구 시스템에서 검색할 수 있습니다.

청구 통합은 달리 명시되지 않는 한 IPv4 주소만 지원합니다.

아라디알

Aradial은 RADIUS를 사용합니다. RADIUS 인터페이스 장을 참조하세요.

아조텔

BQN은 고객 버킷 데이터를 검색하고 이 데이터에서 적용할 속도 제한(업로드 속도 및 다운로드 속도) 을 가져옵니다.

Azotel을 활성화하려면 BQN GUI에서 구성->RADIUS/REST/청구->청구 시스템으로 이동하여 Azotel을 선택한 후 스위치를 활성화합니다.

Azotel에 REST/JSON 액세스하려면 사용자 및 비밀번호도 필요합니다. 해당 사용자/비밀번호는 BQN IP 주소에서 액세스가 허용된 Azotel 시스템에서 생성해야 합니다. 여기에서 Azotel 설명서를 참조하세요.

BQN은 아조텔 쿼리에 관리 주소를 사용하지만, BQN이 인터넷을 통해 아조텔에 도달하면 아조텔은 공용 IP 주소를 보게 되며, 이 주소는 아조텔 시스템의 승인이 필요한 주소라는 점에 유의하세요.

BQN GUI에서 Azotel 시스템 IP 주소 또는 서버 이름과 포트 번호(기본값 443)도 구성합니다.

"현재" 이외의 상태인 아조텔 고객은 차단됩니다(유효한 구독이 없는 것으로 간주됨). 비활성/미결제 차단 스위치( 사용자 )를 비활성화하여 이 동작을 차단하지 않도록 변경할 수 있습니다.

정책 요금은 고객의 버킷 필드 업로드 속도와 다운로드 속도에서 가져옵니다.

사용자 그룹 정보가 활성화되어 있고 해당 정보가 Azotel 데이터베이스에서 사용 가능한 경우, 고객 CPE의 모체(예: AP)의 닉네임은 사용자 그룹으로 사용되며 접두사 "L1-"이 붙습니다. 또한 부모가 위치한 사이트 이름은 "L2-" 접두사가 붙은 사용자 그룹이 됩니다. 따라서 AP 사용자 그룹(L1)으로 구성된 첫 번째 레벨과 하나 이상의 AP를 포함할 수 있는 사이트(L2)가 있는 두 번째 레벨이 있습니다.

Gaiia

깃허브에서 오픈 소스 플러그인을 사용할 수 있습니다. 커뮤니티에서 지원됩니다(공식 지원은 없음). BQN REST API 챕터를 사용합니다. 리포지토리에 있는 README 지침을 따르세요.

Gestfy

Gestfy는 BQN REST API를 사용합니다. REST API 챕터를 참조하세요.

ISPCube

ISPCube는 BQN REST API를 사용합니다. REST API 챕터를 참조하십시오.

ISPCube 청구 측면의 구성 지침을 참조하세요 (페이지 하단의 Bequant 탭으로 이동하세요).

ISPSolution

ISPSolution은 BQN REST API를 사용합니다. REST API 챕터를 참조하십시오.

IXC

깃허브에서 오픈 소스 플러그인을 사용할 수 있습니다. 커뮤니티에서 지원됩니다(공식 지원은 없음). BQN REST API 챕터를 사용합니다. 리포지토리에 있는 README 지침을 따르세요.

Microwisp

Microwip은 RADIUS를 사용합니다. RADIUS 인터페이스 장을 참조하십시오.

파워코드

BQN GUI에서 Powercode를 활성화하려면 구성->RADIUS/REST/청구->청구 시스템으로 이동하여 Powercode를 선택한 후 스위치를 활성화합니다.

파워코드 시스템 IP 주소 또는 서버 이름과 해당 SSH 포트 번호(기본값 22)를 입력합니다.

BQN 서버는 유닉스 사용자/비밀번호를 사용하여 파워코드 서버에 SSH로 액세스해야 합니다.

파워코드 시스템에서는 MySQL 사용자 및 비밀번호가 필요합니다. MySQL 사용자/비밀번호가 유닉스 사용자/비밀번호와 다른 경우, BQN GUI의 MySQL 자격 증명에 지정해야 합니다. MySQL 사용자는 파워코드 MySQL 데이터베이스의 다음 표에 대한 읽기 권한이 있어야 합니다:

  • 서비스
  • 인터넷 정보
  • 장비
  • 고객
  • 고객 서비스
  • 주소 범위

"활성" 이외의 상태인 파워코드 고객은 차단됩니다(유효한 구독이 없는 것으로 간주됨). 비활성/미결제 차단 스위치( 사용자 )를 비활성화하여 이 동작을 차단하지 않도록 변경할 수 있습니다.

정책 요금은 고객 서비스 인터넷 정보(최대 입력, 최대 출력, 버스트 입력, 버스트 출력 및 버스트 벅트 시간)에서 가져옵니다.

사용자 그룹 정보가 활성화되어 있고 Powercode 데이터베이스에서 정보를 사용할 수 있는 경우, 고객 CPE 장비의 LocationID는 "L1-"가 접두사로 붙은 사용자 그룹으로 사용됩니다.

REST API 파워코드

파워코드 청구는 REST API를 초당 세 번의 요청으로 제한합니다. 따라서 이전 섹션에서 설명한 MySQL 액세스를 사용하는 통합이 선호됩니다. MySQL을 사용할 수 없고 사용자 수가 적을 때(1,000개 이하) REST API를 사용할 수 있습니다.

BQN은 특정 카테고리(기본값 1)의 CPE 장비를 검색합니다. 해당 카테고리의 장비가 있는 사용자 의 경우 해당 인터넷 서비스("internetInfo")의 요금 한도를 검색합니다.

파워코드를 활성화하려면 구성->외부 사용자 데이터->청구 시스템으로 이동하여 파워코드 활성화 스위치를 선택합니다.

API 키도 필요합니다. API 키는 파워코드 시스템에서 생성해야 하며, BQN IP 주소에서 액세스할 수 있어야 합니다(파워코드 쿼리에는 관리 주소가 사용됩니다).

파워코드 시스템 IP 주소 또는 서버 이름과 포트 번호(기본값 444)도 입력합니다.

Powercode 데이터베이스의 CPE 장비 카테고리가 1이 아닌 경우 변경합니다. 카테고리 번호를 공백으로 구분하여 두 개 이상의 카테고리를 지정할 수 있습니다(예: 카테고리 10, 11 및 12의 경우 "10 11 12").

사용자 그룹 정보를 검색할 수 없으므로 대신 SQL 기반 옵션을 사용하세요.

소나

Sonar v2가 지원됩니다(GraphQL API가 있는 버전).

BQN은 고객 관세와 적용할 속도 제한을 검색합니다.

Sonar 통합을 활성화하려면 BQN GUI에서 구성->RADIUS/REST/청구->청구 시스템으로 이동하여 Sonar를 선택한 후 스위치를 활성화하세요.

API 키가 필요합니다. 소나 시스템에서 생성해야 합니다. 자세한 내용은 여기에서 소나 설명서를 참조하세요.

마지막으로, BQN GUI의 구성->RADIUS/REST/청구->청구 시스템에서 Sonar를 선택하고 활성화한 상태에서 Sonar 시스템 IP 주소 또는 서버 이름 및 포트 번호(기본값 443)를 구성합니다.

기본적으로 계정_상태->이름 필드에 "활성" 이외의 값이 있는 Sonar 고객은 차단됩니다(유효한 구독이 없는 것으로 간주됨). "활성" 외에 다른 상태를 추가하여 차단되지 않도록 할 수 있습니다( 직원 상태를 추가한 이전 예제 참조). 비활성/미결제 차단( 사용자 ) 스위치를 비활성화하여 계정 상태와 관련하여 BQN 동작을 차단하지 않도록 변경할 수 있습니다.

Sonar 청구의 다음 필드를 사용자 ID의 소스로 사용할 수 있습니다:

  • Customer-ID(Sonar의 계정 ID 필드).
  • 이름(Sonar의 계정 이름).

속도 제한은 데이터 서비스 세부 정보 필드에서 가져옵니다:

  • 다운로드_속도_킬로비트_당_초당
  • 업로드 속도_킬로비트_초당

기본적으로 요금 정책의 이름은 BQN에서 내부적으로 생성합니다. 또는 Sonar 서비스 이름에서 정책 이름 전환을 활성화하면 고유 식별자를 갖기 위해 Sonar 서비스 이름에 서비스 ID를 추가하여 정책 이름이 지정됩니다(Sonar 서비스 이름만으로는 고유성을 보장할 수 없음).

사용자 그룹 정보가 활성화되어 있고 Sonar 데이터베이스에서 해당 정보를 사용할 수 있는 경우, 사용자의 인벤토리 항목의 상위 인벤토리 항목 설명을 기반으로 "L1-"이 접두사로 붙은 사용자 그룹이 생성됩니다.

듀얼 스택이 지원됩니다. IPv4 및 IPv6 주소가 모두 있는 각 계정에 대해 공동 요금 정책이 적용됩니다. 이는 해당 주소를 멤버로 하는 사용자 그룹을 만들어 구현됩니다. 듀얼 스택을 사용하려면 IPv6 듀얼 스택 그룹 이름 필드에서 그룹 이름을 선택합니다. 그룹 이름 앞에는 "DS-" 접두사가 붙습니다. 듀얼 스택 그룹 생성은 기본적으로 비활성화되어 있습니다( IPv6 듀얼 스택 그룹 이름 비어 있음). 사용자 라우터 주소 외에 사용자 모듈 IP 주소도 계정 IP 할당에 나열되어 있으면 이 주소도 그룹에 추가됩니다.

 

스플렁크

BQN은 버스트 임계값 및 버스트 기간과 함께 고객 관세, 적용할 속도 제한 및 버스트 요금을 검색합니다.

BQN GUI에서 Splynx를 활성화하려면 구성->RADIUS/REST/청구->청구 시스템으로 이동하여 Splynx를 선택한 후 스위치를 활성화합니다.

API 키와 비밀 번호가 필요합니다. 이 키와 비밀번호는 다음 설정으로 Splynx 시스템에서 생성해야 합니다:

  • 이 키에 대해 기본 인증을 사용하도록 설정합니다.
  • IP에 대한 허용 목록을 비워두거나 BQN IP 주소를 포함합니다. BQN은 Splynx 쿼리에 관리 주소를 사용하지만, BQN이 인터넷을 통해 Splynx에 도달하는 경우 Splynx는 공용 IP 주소를 보게 되며, 이 주소는 Splynx 시스템의 승인이 필요한 주소라는 점에 유의하세요.
  • 데이터베이스 항목 요금제 -> 인터넷 및 고객 -> 온라인 고객에 대한 보기 권한을 추가합니다.

다음 스크린샷은 API 키와 액세스 권한을 보여줍니다:

BQN GUI에서 Splynx 시스템 IP 주소 또는 서버 이름과 포트 번호(기본값 443)도 구성합니다.

차단된 필드에 "1"이 있는 Splynx 고객은 차단됩니다(유효한 구독이 없는 것으로 간주). 비활성/미결제 차단 스위치( 사용자 )를 비활성화하여 이 동작을 차단하지 않도록 변경할 수 있습니다.

Splynx 청구의 다음 필드를 사용자 ID의 소스로 사용할 수 있습니다:

  • customer_id
  • 로그인
  • 사용자 이름_실제

요금 정책 속도 제한은 인터넷 요금 담당자로부터 온라인 고객에게 전달됩니다:

  • 시드 다운로드
  • 속도 업로드

청구 시스템에는 해당 정보가 포함된 표준 필드가 없으므로 사용자 그룹 정보를 검색할 수 없습니다.

듀얼 스택이 지원됩니다. IPv4 및 IPv6 주소가 모두 있는 각 계정에 대해 공동 요금 정책이 적용됩니다. 이는 해당 주소를 구성원으로 하는 사용자 그룹을 만들어 구현됩니다. 이중 스택을 사용하려면 IPv6 이중 스택 그룹 이름 필드에서 그룹 이름을 선택합니다. 그룹 이름 앞에는 "DS-" 접두사가 붙습니다. 듀얼 스택 그룹 생성은 기본적으로 비활성화되어 있습니다( IPv6 듀얼 스택 그룹 이름 비어 있음).

UISP

깃허브에서 오픈 소스 플러그인을 사용할 수 있습니다. 커뮤니티에서 지원됩니다(공식 지원은 없음). BQN REST API를 사용합니다.

설치

전제 조건

  1. 리눅스-R3.0.13-2-20231130 이상 및 bqn-R4.18.8 이상 패키지가 포함된 BQN.
  2. REST API가 활성화된 BQN(https://www.bequant.com/docs/rest#rest-configuration 참조).
  3. REST API가 활성화되어 있고 NMS와 CRM 모두에 액세스할 수 있는 UISP. 두 가지 유형의 액세스를 위한 공통 API KEY를 만들어야 합니다.

단계

1. 코드 리포지토리로 이동하여 코드 ZIP 파일을 다운로드합니다(리포지토리 홈 페이지에서 코드->ZIP 다운로드).

2. 코드 zip 파일의 압축을 풉니다. 예를 들어 압축 해제 명령을 사용합니다:


unzip uisp-main.zip

그러면 uisp-main이라는 하위 디렉터리가 생성됩니다.

3. 3. BQN 서버 루트 계정에 uisp 디렉터리를 생성합니다:


ssh root@
mkdir uisp
exit

Where <BQN-OAM-IP> is the management IP address of the BQN server.

4. sync-uisp-bqn.sh 파일을 편집하여 매개변수를 환경 값으로 설정합니다. 예시:


. . .
# BQN management IP address
BQN_OAM_IP=192.168.0.121
# Name of the REST user in the BQN server
BQN_REST_USER=myuser
# Password of the REST user in the BQN server
BQN_REST_PW=mypassword
# IP address or domain of the UISP server
UISP_SERVER=myserver.uisp.com
# REST API KEY of the UISP server
UISP_KEY=5a15d248-376b-1324-cd15-24ad3a37be31
. . .

5. scp를 사용하여 다음 파일을 PC에서 BQN 서버로 전송합니다:


scp ./uisp-main/BillingSync.py  ./uisp-main/sync-uisp-bqn./uisp-main/sync-uisp-bqn.sh root@:uisp

6. 다음 파일이 BQN에서 실행 가능한지 확인합니다:


ssh root@
chmod a+x ./uisp/sync-uisp-bqn
chnod a+x ./uisp/sync-uisp-bqn.sh
exit

7. BQN에서 sync-uisp-bqn.sh를 crontab 디렉터리에 복사하여 5분마다 실행되도록 합니다:


ssh root@
cp uisp/sync-uisp-bqn.sh /bqn/root/etc/cron.5

8. DNS가 필요한 경우(BQN 서버 또는 UISP가 도메인 이름을 사용하는 경우), BQN에 DNS가 구성되어 있는지 확인합니다( 구성->인터페이스->관리 참조).

스크립트는 5분마다 UISP에 액세스하고 그에 따라 BQN을 업데이트합니다. BQN에서 스크립트 로그를 확인할 수 있습니다:


ssh root@
less /tmp/sync-uisp-bqn.log
2024-01-08 12:42:02.430413 synchronization script starts (v1.6)
2024-01-08 12:42:12.478919 synchronization of 15 policies and 327 subscribers
2024-01-08 12:42:12.479752 synchronization script ends

BQN 서버에서 생성된 정책 및 사용자 을 확인하려면 https://www 의 "REST API 확인" 섹션을 참조하세요.bequant.com/docs/rest#rest-configuration.

업데이트

동기화 스크립트를 업데이트하려면 다음과 같이 하세요:

1. 코드 리포지토리로 이동하여 코드 ZIP 파일을 다운로드합니다(리포지토리 홈 페이지에서 코드->ZIP 다운로드).

2. 코드 zip 파일의 압축을 풉니다. 예를 들어 압축 해제 명령을 사용합니다:


unzip uisp-main.zip

그러면 uisp-main이라는 하위 디렉터리가 생성됩니다.

3. scp를 사용하여 다음 파일을 PC에서 BQN 서버로 전송합니다:


scp ./uisp-main/BillingSync.py ./uisp-main/sync-uisp-bqn root@:uisp

Where <BQN-OAM-IP> is the management IP address of the BQN server. NOTE that the sync-uisp-bqn.sh MUST NOT be updated.

4. 4. 다음 업데이트된 파일이 실행 가능한 상태로 유지되는지 확인합니다:


ssh root@
chmod a+x ./uisp/sync-uisp-bqn
exit

알려진 제한 사항

  • 처음 실행할 때는 몇 분 정도 걸릴 수 있습니다. 다음 실행은 클라이언트 변경 사항만 BQN으로 전송하므로 더 빨라집니다.
  •  동기화에 실패하면 다음 예약된 작업까지 재시도가 시도되지 않습니다.

Visp.net

BQN은 고객 요금을 검색하여 적용할 속도 제한과 버스트 요금, 임계값 및 기간을 가져옵니다.

Visp를 활성화하려면 구성->RADIUS/REST/청구->청구 시스템으로 이동하여 Visp를 선택한 후 스위치를 활성화하세요.

임시 API 토큰을 요청하려면 유효한 클라이언트 ID와 비밀 번호, 사용자 이름과 비밀번호를 BQN에 제공해야 합니다. 클라이언트 ID는 Visp 설치마다 고유합니다. 사용자는 해당 클라이언트에서 시스템에 액세스할 수 있는 유효한 사용자 계정입니다.

The provided IP address or server name will be used, along with the port (443 by default), to requests API tokens (https://<server>:<port>/token) and also to send API queries (https://<server>:<port>/graphql).  

다음 화면은 Visp 구성의 예를 보여줍니다:

패키지 상태 및 서비스 인스턴스 상태가 ACTIVE가 아닌 Visp 고객은 차단됩니다. 비활성/미결제 구독자 차단 스위치를 비활성화하여 이 동작을 차단하지 않도록 변경할 수 있습니다.

비활성/미결제 차단 ( 사용자 ) 스위치를 활성화하면 BQN은 두 가지 기준에 따라 사용자 을 차단합니다:

  • 서비스 인스턴스 및 패키지 상태(기본값). 둘 다 "활성" 상태가 아닌 경우 사용자 이 차단됩니다.
  • 사용자 계정의 상태. 이 옵션을 선택하면 일시 중단, 최대 절전 모드 및 비활성 상태(각각 상태 코드 8, 9 및 10)의 사용자 계정이 차단됩니다.

Visp 청구의 다음 필드를 사용자 ID의 소스로 사용할 수 있습니다:

  • 고객 ID
  • 이름 + 성
  • 사용자 이름

정책 요금은 고객의 서비스 인스턴스 up_speed 및 down_speed에서 가져옵니다. 버스트 속도 up_burst 및 down_burst도 가져옵니다.

사용자 그룹 정보를 사용하도록 설정하면 Visp 데이터베이스에서 정보를 사용할 수 있는 경우 "L1-" 접두사가 있는 사용자 의 CPE에 연결된 액세스 포인트 식별자가 사용자 그룹의 이름이 됩니다.

WISPControl

WISPControl은 RADIUS를 사용합니다. RADIUS 인터페이스 장을 참조하십시오.

Wisphub

와이즈허브는 BQN REST API를 사용하여 BQN과의 통합을 개발했습니다. 여기에서 Wisphub 제품 설명서를 참조하세요.

Wispro

BQN은 고객과 계약을 검색하고 속도 제한을 적용하기 위한 계획을 수립합니다.

Visp를 활성화하려면 구성->RADIUS/REST/청구->청구 시스템으로 이동하여 Wispro를 선택한 후 스위치를 활성화하세요.

유효한 API 키를 제공해야 합니다. API 키는 Wispro 시스템에서 생성해야 합니다. 여기에서 지침을 참조하세요.

The provided IP address or server name will be used, along with the port (443 by default), to send API queries to Wispro (https://<server>:<port>/api/v1).  

다음 화면은 Wispro 구성의 예를 보여줍니다:

비활성화 상태의 계약이 있는 와이즈프로 클라이언트만 차단됩니다. 비활성/미결제 차단 스위치( 사용자 )를 비활성화하여 이 동작을 차단하지 않도록 변경할 수 있습니다.

와이즈프로 청구의 다음 필드는 사용자 ID의 소스로 사용할 수 있습니다:

  • 구독자ID(Wispro 클라이언트의 "public_id").
  • 이름.
  • MAC 주소.
  • 로그인(Wispro 클라이언트의 "이메일" 필드).

정책 요금은 고객 계약의 요금제에서 가져옵니다. 요금제 ceil_down_kbps 및 ceil_up_kbps 매개 변수가 속도 제한으로 사용됩니다.

와이즈프로 클라이언트에 둘 이상의 계약이 있는 경우, 각 IP 주소에는 해당 계약의 속도 제한이 할당됩니다. IP 주소가 두 개의 클라이언트 계약에서 반복되는 경우(이는 청구 데이터베이스에서 발생하지 않아야 하는 불일치입니다), 마지막으로 획득한 연락처의 제한이 선택됩니다.

사용자 그룹 정보를 활성화하면 노드 이름이 사용자 그룹으로 사용됩니다. 즉, Wispro 데이터베이스에서 해당 정보를 사용할 수 있는 경우 계약의 노드 이름 뒤에 사용자 이 사용자 그룹에 연결됩니다.

일반적인 청구 고려 사항

사용자 ID 소스

청구 시스템은 BQN 사용자 ID의 출처가 될 수 있습니다. ID 소스의 선택은 청구 시스템에 따라 다릅니다(자세한 내용은 각 청구 섹션 참조).

REST API를 사용하여 통합된 청구 시스템의 경우, 청구 시스템은 사용자 을 생성하거나 편집할 때 명시적으로 정의할 수 있는 사용자 ID를 완전히 제어합니다.

비활성/미결제 차단 사용자

기본적으로 BQN은 미지급 사용자 을 차단합니다. 미결제 사용자 는 청구 시스템에 따라 다릅니다(자세한 내용은 각 특정 청구 섹션 참조). BQN이 미결제 사용자 를 차단하지 못하도록 하려면 비활성/미결제 차단 사용자 스위치를 비활성화합니다.

REST API를 사용하여 통합된 청구 시스템의 경우 청구 시스템이 속도 제한 정의를 완전히 제어할 수 있으며, 속도 제한 속도가 0인 정책에 할당하여 사용자 을 차단할 수 있습니다.

요금 스케일링 계수

기본적으로 BQN은 청구 시스템에 지정된 대로 요금 한도를 적용합니다. 요금 제한 스케일링 필드를 사용하여 이러한 제한에 스케일링 계수를 적용할 수 있습니다.

청구서에 명시된 속도 제한보다 낮은 속도 제한을 적용하려면 100%보다 낮은 계수를 사용합니다. 예를 들어, 계수가 90%인 200Mbps의 청구 제한은 180Mbps가 됩니다.

청구서보다 높은 속도를 적용하려면 100%에서 최대 200%(가능한 최대 계수)까지 더 큰 계수를 사용하세요. 예를 들어, 150%의 계수가 적용된 청구서에서 200Mbps의 속도는 300Mbps가 됩니다.

REST API를 사용하여 통합된 청구 시스템의 경우, 청구 시스템은 요금 한도 정의를 완전히 제어할 수 있으며 BQN으로 전송되는 한도에 적용되는 요인이 있다면 이를 결정할 수 있습니다.

문서 스타일링 태그
[.p-highlight] 로렘 입섬... [.p-highlight]

로렘 입섬 도르 시트 아멧, 콘섹테투르 아디피싱 엘리트. 에로스 엘리멘툼 트리스티크에 서스펜디스 바리우스 에님. 듀이스 커서스, 마이 퀴스 비베라 오르나레, 에로스 도르 인터둠 널라, 우트 코모도 디암 리베로 비타 에랏. 아이네안 포시 부스 니브 et 저주 커서스 아이디 루트룸 로렘 임페디트. Nunc ut sem vitae risus tristique posuere.

[.p-highlight-blue] Lorem ipsum... [.p-highlight-blue]]

로렘 입섬 도르 시트 아멧, 콘섹테투르 아디피싱 엘리트. 에로스 엘리멘툼 트리스티크에 서스펜디스 바리우스 에님. 듀이스 커서스, 마이 퀴스 비베라 오르나레, 에로스 도르 인터둠 널라, 우트 코모도 디암 리베로 비타 에랏. 아이네안 포시 부스 니브 et 저주 커서스 아이디 루트룸 로렘 임페디트. Nunc ut sem vitae risus tristique posuere.

[.p-highlight-red] Lorem ipsum... [.p-highlight-red]

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

단일 [.c-highlight]단어 한 칸 띄어쓰기 [.c-highlight] 스타일링에 대한 미리보기입니다.
싱글 미리보기 word mono-spaced 스타일링.
이전
다음