도서관에 도서 요청

도서관에 책을 등록하는 프로그램 입니다. 기존에 JAVA로 만들어진 모듈을 nodejs로 변경 하였습니다.
JAVA 소스의 경우 selenium을 설치하고 설정해야하는 부분이 많았는데 puppeteer를 이용하면 간단하게 최소한의 설정으로 처리가 가능하다.

프로그램 설계

부천 시립 도서관에서 한달에 요청 할 수 있는 도서는 다음과 같다.

  • 상동, 심곡, 꿈빛, 책마루, 송내도서관 : 1인당 월 5권
  • 원미, 북부, 한울빛, 꿈여울도서관 : 1인당 월 20권

이에 도서 목록을 다음과 같이 TXT 파일로 작성하연 자동으로 등록 하도록 한다.

도서목록 파일 내용 샘플

도서관코드|도서명
AA|즐거운하루
AB|자동책등록프로그램

도서관 코드

2019년 부터 상동, 심곡, 꿈빛, 책마루, 송내, 동화도서관: 1인당 월 5권 으로 변경 되었습니다.

아래 내용은 2017년 기준 내용입니다.

도서관코드 도서관명 비고
AA 상동 월5권
AB 원미 월20권
AC 삼곡 월5권
AD 북부 월20권
AE 꿈빛 월5권
AF 책마루 월5권
AG 한울빛 월20권
AH 꿈여울 월20권
AI 송내 월5권
AK 도당 월20권

프로세스 순서도

프로세스 순서도

Notice

  • nodejs 필요
  • _env 를 .env 로 파일명 변경
  • .env 에 ID/PW 작성

실행 방법

# 모듈 설치
npm install

# 실행
npm run start

License

희망 도서 자동 등록 프로그램은 open source 프로그램으로 MIT 라이선스를 따릅니다.

This Request book apply is free and open source software, distributed under the MIT License. So feel free to use this program on your project without linking back to me or including a disclaimer.

Posted by lahuman

Reactjs 초기 프로젝트 구성하기

Reactjs 초기 프로젝트를 구성하려는 방법 중 가장 쉽고 널리 알려진 것은 Create React App를 이용하는 방법이다. 아래와 같이 실행하면 바로 프로젝트 구성이 완료된다.

npx create-react-app my-app
cd my-app
npm start

아쉬운 점은 무엇이 설치 되었는지 내가 알지 못하고, 또한 컴파일에 오랜 시간이 걸린다.

npm run eject를 이용해서 묶음을 풀어 보면 너무 많은 것들이 설치 되어 있다.

그래서 방법을 찾아 보던 중 @babel/preset-env와 plugins이라는 유튜브를 보고 한땀씩 진행을 해보았다.

우선 나에게 필요한 기본 모듈은 다음과 같다.

기본 모듈

  • react
  • react-dom
  • react
  • react-router-dom
  • dotenv
  • axois

이들을 모두 설치하고 기본 테스트까지 된 프로젝트를 만들어 보았다.

진행하면서 수정사항이 바로 바로 반영되는 React Hot Loader도 알게되어 추가 하였다.

또한 컴파일을 위해 웹팩 설정을 하고 한땀 한땀 진행해보았다.

어려운듯 쉬운듯 꽤 많은 시간이 소비 하고야 내가 원하는 결과를 확인 할 수 있었다.

ReactJS-Start

많이 삽질하면서 많이 배운 시간이었다.

참고자료

Posted by lahuman

vim upgrade or 업그레이드 내역 확인 하기!

Vim과 Neovim 편집기에서 OS 명령어 실행 취약점 발견 2019.06.13

  • 보안 연구원 Armin Razmjou는 최근 리눅스에서 가장 인기 있는 커맨드라인 텍스트 편집 유틸리티인 Vim과 Neovim에서 심각도 높은 임의 OS 명령 실행 취약점(CVE-2019-12735)을 발견
    • Vim 편집기 : 사용자들이 리눅스에서 텍스트, 스크립트, 문서를 포함한 파일을 생성하고, 열람하거나 수정할 수 있는 프로그램
      • Neovim 편집기 : 플러그인, GUI 등이 개선된 Vim 확장 버전 프로그램
  • 이 취약점은 “modlines”를 처리하는 과정에서 발견됨
    + modelines : 문서의 시작과 마지막 라인 근처에 파일의 제작자가 언급한 커스텀 설정 세트를 자동으로 찾아 적용하는 기능으로 기본으로
                          활성화되어 있음
  • 비록 보안상의 이유로 modelines의 서브셋만을 허용하고 샌드박스 보호를 사용할지라도 “:source!” 명령어를 사용하면 샌드박스를
    우회할 수 있음

  • 따라서, Vim이나 Neovim을 사용해 특별히 제작된 파일을 열람하는 것만으로도 공격자가 피해자의 리눅스 시스템에서 명령을 실행하고
    제어권을 탈취할 수 있음

  • Vim(8.1.1365)과 Neovim(v0.3.6)은 해당 취약점 문제 해결을 위해 최근 업데이트를 발표

  • 해결 방안

    • modelines 기능 비활성화
    • modelines의 수식을 비활성화 하기 위한 “modelineexpr” 비활성화
    • Vim modelines의 대한인 “securemodelines plugin” 사용

시사점

  • 리눅스 및 Vim과 Neovim 에디터를 최신 버전으로 업데이트하고, 주기적인 권한 탈취 여부 확인

vim 확인 하기

vim upgrade 하기

sudo apt-get upgrade vim 명령어를 이용해서 업그레이드를 할 수 있다.

만약 업그레이드를 할 내용이 없으면 다음과 같은 결과가 확이 된다.

$> sudo apt-get upgrade vim
Reading package lists... Done
Building dependency tree
Reading state information... Done
vim is already the newest version (2:8.0.1453-1ubuntu1.1).
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
  linux-aws-headers-4.15.0-1035
Use 'sudo apt autoremove' to remove it.
The following packages have been kept back:
  linux-aws linux-headers-aws linux-image-aws
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

vim 최신 버젼으로 강제 업데이트 하기

PPA를 이용해서 최신 버젼으로 업데이트를 한다.

$> sudo add-apt-repository ppa:jonathonf/vim
$> sudo apt update
$> sudo apt install vim

vim upgrade 내역 확인 하기

changelog를 확인하면 업데이트 기록이 확인 된다. 다음과 같인 로그가 있다면, CVE-2019-12735.patch에 대한 패치가 되어 있는 것이다.

$> apt changelog vim
vim (2:8.0.1453-1ubuntu1.1) bionic-security; urgency=medium

  * SECURITY UPDATE: Arbitrary code execution
    - debian/patches/CVE-2019-12735.patch: disallow
      sourcing a file in the sandbox in src/getchar.c
    - CVE-2019-12735

 -- Leonidas S. Barbosa <leo.barbosa@canonical.com>  Thu, 06 Jun 2019 14:31:41 -0300

대부분 서비스를 확인하니 이미 패치가 되어 있었다.

참고자료

Posted by lahuman