/SchoolComputerSecurity

Yea, It's for Teachers :)

Primary LanguageHTMLMIT LicenseMIT

School Computer Security

School Computer Security (장곡중학교 학급 내 정보화기기 관리 페이지 및 프로그램 서비스, 이하 "서비스")은 다음의 목적을 가진다

  • 학급 내 교육용 정보화기기 및 설비의 유지와 관리의 목적
  • 교칙 위반사항의 대한 담당선생님의 통제 권한 부여의 목적
  • 메세지 서비스를 사용하여 학급-교무실 간 빠른 의사소통의 목적

목차

이 문서는 개발자를 위하여 작성되었습니다

개발전 초기 설치

Node.js ^12.13.1을 필요로 합니다

이 레포지트리를 다운받습니다:

git clone https://github.com/SoftWareAndGuider/SchoolComputerSecurity.git

다운받은 레포지트리 경로로 이동후, 필수 모듈을 설치합니다:

npm i 혹은 yarn

개발용 실행

파일을 직접 실행합니다:

node index

혹은 패키지 메니저를 사용할 수 있습니다:

npm start 혹은 yarn start

디버깅

로깅 규칙

디버깅 중 로깅의 규칙은 다음과 같습니다

[(접두사)(작업)] (상세)


접두사는 다음의 종류가 있습니다

  • web : 웹 페이지 관련
  • img : 화면 이미지 관련
  • uid : 세션 ID 관련
  • mac : MAC 주소 관련
  • mgr : 관리도구 관련
  • msg : 메세지 서비스 관련
  • raw : 디버깅 관련

작업은 다음의 종류가 있습니다

  • Get : 데이터 읽기 및 수신(파란색)
  • Put : 데이터 쓰기 및 송신(초록색)

다음은 접두사가 uid인 경우만 가능한 작업입니다

  • Req : 세션 UUID 발급 요청 (마젠타색)
  • Gen : 세션 UUID 생성 (시안색)
  • Neg : 세션 UUID 발급 거부 (빨간색)

상세는 다음의 종류가 있습니다

  • by (ip)
  • by (ip) to (id)
  • by (ip) from (id)
  • by (ip) from (id) to (newid)
  • by (ip) at (data)
  • (학년-반) by (ip)
  • (학년-반) by (ip)

Rest API

Rest API의 대한 레퍼런스입니다, 다음을 확인해 주십시오

  • 모든 통신은 HTTP/1.1를 사용합니다
  • GET과 PUT 메소드 만을 사용합니다
  • 기타 메소드의 대하여 500을 반환합니다
  • 접근 권한이 없는경우 403을 반환합니다
  • 접근하고자 하는 API의 경로가 잘못되었거나 없을 경우 404를 반환합니다
  • 경로의 따라 Content-Type가 달라지므로 참고하시기 바랍니다

Sec1: 웹페이지

GET /

/view로 리다이렉트

GET /view

웹 페이지를 전송합니다

  • Content-Type: text/html
GET /grade(학년)/room(반)/(UUID)

UUID를 검사한후 학년, 반에 맞는 뷰어를 전송합니다

  • Content-Type: text/html

Sec2: 로그인 및 인증

GET /api/auth/genUUID/(학년)/(반)/(비밀번호)

학년, 반에 맞는 비밀번호인지 확인한 후 UUID를 생성한 뒤 JSON Object를 반환합니다

// 비밀번호가 틀렸을 경우
{
  "correct": false
}

// 비밀번호가 맞았을 경우
{
  "correct": true,
  "path": "/grade(학년)/room(반)/(UUID)"
}
GET /api/auth/changePW/(학년)/(반)/(이전비밀번호)/(신규비밀번호)

학년, 반에 맞는 이전 비밀번호인지 확인한 후 신규 비밀번호로 비밀번호를 수정한 뒤 JSON Object를 반환합니다

// 정상적으로 처리된 경우
{
  "proc": 0
}

// 존재하지 않는 학년, 반 일경우
{
  "proc": 3
}

// 비밀번호가 틀렸을경우 
{
  "proc": 4
}

그 외의 규칙은 quickLogin/AccountBase를 따릅니다

  • Content-Type: application/json

Sec3: 맥주소 저장

GET /api/macJson/(맥주소)

DB에 맥주소가 저장되어 있는지 없는지 확인한 후 다음을 따릅니다

  • 맥주소가 DB에 없는경우 Fail 문자열을 반환합니다

  • 맥주소가 DB에 있는경우 /api/imgJson/(학년)/(반);/api/mgrJson/(학년)/(반);/api/msgJson/(학년)/(반) 문자열을 반환합니다

  • Content-Type: text/plain

GET /api/macJson/(학년)/(반)/(맥주소)

DB에 맥주소가 저장되어 있는지 없는지 확인한 후 다음을 따릅니다

  • 맥주소가 DB에 없는경우 학년, 반, 맥주소를 DB에 작성하고 200을 반환합니다
  • 맥주소가 DB에 있는 경우 아무 작업 없이 200을 반환합니다

Sec4: 화면 켑쳐 데이터

GET /api/imgJson/(학년)/(반)

학년, 반에 맞는 화면 켑쳐 데이터를 다음의 형식으로 전송합니다:

(모니터1-base64);(모니터2-base64);(모니터3-base64)...
  • Content-Type text/plain
PUT /api/imgJson/(학년)/(반)

body로 text/plain을 받습니다, body는 다음의 형식이여야 합니다:

(모니터1-base64);(모니터2-base64);(모니터3-base64)...

최소 하나 이상의 모니터 켑쳐 정보가 base64로 담겨저있어야 합니다

Sec5: 시스템 관리 데이터

GET /api/mgrJson/(학년)/(반)

학년, 반에 맞는 관리 데이터를 JSON Array로 전송한 후 초기화 합니다

// 형식
// [종료, 재시작, 절전, 메세지 유무, 메세지 내용, 명령프롬포트 허가 유무, 작업관리자 허가 유무, 소리 켜짐 유무]

// 초기값
[false, false, false, false, "", false, false, false]

// 예시) 종료를 요청했을 경우
[true, false, false, false, "", true|false, true|false, true|false]

// 예시) 메세지가 있을경우
[false, false, false true, "메세지 내용", true|false, true|false, true|false]
  • Content-Type: application/json
PUT /api/mgrJson/(학년)/(반)

학년, 반에 맞는 관리 데이터를 다음의 형식으로 받습니다:

(명령프롬포트 허가 유무);(작업관리자 허가 유무)
GET /api/mgrJson/(학년)/(반)/(명령)

몇 학년 몇 반에 명령을 내린후 200을 반환합니다, 명령은 다음을 사용할 수 있습니다:

  • shutdown : 종료
  • restart : 재시작
  • powerSave : 절전
  • soundOn : 소리 켜짐
  • soundOff : 소리 꺼짐

Sec6: 메세지 송신

메세지 수신은 /api/mgrJson을 사용하면됩니다

GET /api/msgJson/(학년)/(반)/(메세지)

몇 학년, 몇 반에 메세지를 전송한후 200을 반환합니다

Sec7: API 디버깅

GET /raw/(데이터이름)

변수들의 값을 변환 과정 없이 전송합니다, 데이터 이름은 다음을 사용할 수 있습니다:

  • auths : 발급된 UUID가 모이는 배열입니다
  • imgData : 화면 켑쳐 데이터가 저장된 배열입니다
  • mgrData : 시스템 관리 데이터가 저장된 배열입니다
  • macData : 맥주소가 담기는 객체입니다

기여

PR의 규칙은 딱히 존제하진 않습니다, 하지만 최소한 다음을 따라주시기 바랍니다:

  • eslint를 통하여 Standard.js를 준수해 주십시오 (세미콜론 없음, 작은 따옴표 사용)
  • package-lock.json을 생성하지 말아주십시오, 생성되었다면 삭제해 주십시오
  • 커밋이름은 업데이트 내용과 관련있어야 합니다

저작권 및 유의사항

Copyright 2019~2020. 장곡중학교(칠곡) - Software And Guiders, MIT Licensed.

모든 저작권은 (칠곡) 장곡중학교와 Software And Guiders(SWAG, 장곡중 소프트웨어 동아리)에 있으며, 무단 복제 및 2차 배포를 금합니다

이 소프트웨어 및 웹페이지, 서버는 장곡중학교(칠곡) 교사님들의 의견을 반영하여 제작되었습니다