UniFi - 개별 사용자 이름과 패스워드의 커스텀 포탈

download at 2017-08-22T19:36:40Z origin

warning_25x25.png 주의: 이 문서는 아직 기초 작업중인 문서이며 포탈의 외부 기능을 사용합니다. Ubiquiti는 이 코드를 직접 지원하지 않고 있으며, 이 문서도 계속 업데이트 하지 않을 것입니다. 지원팀은 이 문서와 관련된 이슈에 도움을 드릴 수 없습니다. 이 곳의 환경설정과 동일한 설정을 포함한다면 새로운 펌웨어 버전에서도 동일하게 동작하는지 테스트가 필요합니다.

Overview


이 문서는 UniFi 포탈을 커스터마이지 하여 각 게스트마다 고유의 사용자 이름과 패스워드로 데이터 베이스를 조회하여 로그인 할 수 있도록 하는 방법을 서술합니다.

커스텀 포탈은 제대로 기능을 갖추지 못했습니다. HTML, PHP로 작성하였고, Ubuntu 12.04 x64 서버를 기준으로 환경설정을 구성하였습니다. 예제를 구동하기 위해서 웹서버 (Apache2), PHP5, curl 패키지와 MySQL 패키지가 필요합니다.

첨부 파일은 다음과 같습니다:

  • .htaccess - index.* 파일들의 순서를 명시합니다.
  • auth.php - 이 파일에는 각 기능들의 중요 시작 기능이 있습니다. 입력을 초기화하고, config.php.inc에 있는 기능들을 호출합니다.
  • config.php.inc - 인증 기능이 저장되어 있는 파일입니다. auth_user 함수는 MysQL에 사용자 존재 유무, 패스워드 체크, (선택적으로) 이메일 확인 등의 작업을 질의합니다. sendAuthorization 함수는 UniFi에 사용자를 인증할 수 있는지 아닌지 여부를 auth_user의 리턴값에 따라서 판단합니다.
  • index.php - 사용자 이름, 패스워드, 이메일을 입력받는 HTML 폼입니다.
  • hotspot.sql - simple ID, username, password, email 컬럼이 있는 MySQL 스키마 입니다. 스키마와 코드는 이미 작성되어 있으며, 패스워드는 일반 평문으로 저장합니다. 보안적인 이슈가 발생할 수 있으니 이부분은 해시함수 등을 사용하여 수정하십시오.

코드 곳곳에 의미를 파악하기 쉽도록 주석을 첨부하였습니다 코드를 이해하는 것에 도움이 될 것입니다:

image1

config.php.inc 파일의 주요 함수는 auth_usersendAuthorization 입니다. 원하는 방향으로 수정이 가능합니다.

우분투나 데비안 계열에 이 포탈을 설치한다면:

  1. 필요한 패키지를 인스톨합니다. (MySQL Server, Apache2, PHP5, curl, php5-curl 등)
  2. mkdir -p /var/www/guest/s/default/
  3. cd /var/www/guest/s/default
  4. 첨부한 파일을 이 경로에 복사합니다.
  5. 모든 .zip 파일의 압축을 해제합니다. 다음 명령어를 수행합니다. `unzip -xvf MySQL\ Custom\ PortalExample.zip`
  6. Import hotspot.sql
  7. hotspot 데이터베이스에 사용자 권한을 생성, 부여합니다.
  8. 적절한 인증 인가로 config.php.inc를 수정합니다.

설치 과정은 이 곳 에 자세히 기술되어 있습니다.

IP 주소와 같은 외부 포탈 옵션은 해당 폴더에 포함할 수 없습니다. 여러분은 Apache2의 기본 index.html 파일만 수정하거나 적절한 경로로 리다이렉션 하거나 심볼릭 링크를 통하여 guest/s/default/index.php 파일로 연결해야합니다.

마지막으로 포탈서버의 IP를 UniFi에서 설정합니다. 이 사이트를 MySQL 데이터베이스에 가짜 게정을 입력하여 테스트 해볼 수 있습니다.

Optional: MySQL에 친숙하지 않다면, 데이터베이스를 다루기 위한 프론트엔드인 phpmyadmin 같은 패키지 설치를 고려해 보십시오. 이러한 패키지는 사용자 생성 삭제 수정 등에 도움을 줄 수있습니다. 부가적으로 PHP 페이지를 직접 생성하여 사용자 정보를 수정할 수도 있습니다.

이 예제를 확장하지 않으면 값어치가 반감될 수 있습니다. 예를 들어, 로그인 인증, 사용자 MAC 주소, 마지막 인증 시간 등 MySQL에 컬럼을 추가하고 PHP 코드를 추가하여 입맛에 맞도록 변경할 수 있습니다.