Skip to content

xryuseix/NEET_observer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python Node TypeScript Heroku

NEET observer - 自宅警備員システム

帰省中に使う家の監視カメラ

  • 動体検知して,人が入ってきた時のみ録画する
  • 録画データはバックグラウンドで Heroku 常にある API へアップロードする
  • Heroku 上の API は Google Drive へアップロードする

本スクリプトは Heroku の認証情報などを持たない PC で起動する.Heroku 上の API を一旦挟むことで,本 Python スクリプトや認証情報が攻撃者に盗まれたとしても,攻撃者は動画のアップロードのみしか行うことはできない (Google Drive や Heroku の保存可能領域を減らすことはできる).

これは,それぞれが以下の権限を持つためである

アクター 権限
攻撃者 (カメラ付き PC) Heroku の API へアップロード, ローカルのファイルを削除, スクリプトの停止
開発者 (攻撃者とは干渉しない) Heroku の API へのアクセス,Google Drive へのアクセス
Heroku 上の API Google Drive へのアクセス,アップロード,削除など

バージョン情報

ソフトウェア バージョン 備考
Python Python 3.8.10 conda: NEET_env
Node.js v14.17.1 yarn: package.json
TypeScript Version 4.3.5 yarn: package.json

起動

サーバ

以下の二つのスクリプトをそれぞれ起動する

tsc -w
npm run dev

監視カメラ

python main.py

認証情報

secret.json

API アクセスへの Basic 認証

{
  "heroku": {
    "username": "<USERNAME>",
    "password": "<PASSWORD>"
  }
}

WebAPI/credentials.json

Google Console で取得するGoogle APIの認証情報

WebAPI/token.json

Google APIトークン

WebAPI/folderID.json

Google Drive のフォルダ ID

{
  "folder_id": "<FOLDER ID>"
}

WebAPI/userList.json

アクセス可能ユーザデータベース

{
  "<USERNAME>": { "password": "<PASSWORD>" }
}