とりあえず基本評価基準(Base Metrics)のみ実装。続きは後日。
インストールと実行
cvss3 の中身は単純なロジックのみなので特に依存パッケージはない。
C:>npm install cvss3
cvss3@0.0.1 node_modules\cvss3
動作確認用のコードはこんな感じ。
var cvss3 = require('cvss3');
var vector_cve_2013_1937 = "AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N";
var base = (new cvss3.BaseMetrics()).importVector(vector_cve_2013_1937);
console.log('CVE-2013-1937 : Vector : '+base.getVector());
console.log(' Score : '+base.getScore());
これを実行してこんな感じの結果が出れば OK。
C:>node app.js
CVE-2013-1937 : Vector : AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Score : 6.1
参考にしたもの
いやぁ, node.js は他人様のを利用するばっかりで自分で書くことはほとんどないので,けっこう時間がかかってしまった。
以下,参考にしたもの。
行儀のよいコード?
モジュールの書き方には色々作法があるようで,今回は上記リンクの記事を参考にした。ただし, node.js 以外の環境ではまだ試していない。最低でもブラウザでクライアント側でちゃんと動作するかは確認する予定。
テストを書く
mocha と should でテスト・コードが書けるようだ。
mocha では色々なことができるみたいだが,今回はロジックしかないのでごく簡単な機能のみ使っている。
C:>npm install -g mocha
C:\Users\username\AppData\Roaming\npm\_mocha -> C:\Users\username\AppData\Roaming\npm\node_modules\mocha\bin\_mocha
C:\Users\username\AppData\Roaming\npm\mocha -> C:\Users\username\AppData\Roaming\npm\node_modules\mocha\bin\mocha
mocha@2.2.5 C:\Users\username\AppData\Roaming\npm\node_modules\mocha
├── escape-string-regexp@1.0.2
├── growl@1.8.1
├── commander@2.3.0
├── supports-color@1.2.1
├── diff@1.4.0
├── jade@0.26.3 (commander@0.6.1, mkdirp@0.3.0)
├── debug@2.0.0 (ms@0.6.2)
├── mkdirp@0.5.0 (minimist@0.0.8)
└── glob@3.2.3 (inherits@2.0.1, graceful-fs@2.0.3, minimatch@0.2.14)
C:>npm install should --save-dev
should@7.0.2 node_modules\should
├── should-type@0.2.0
├── should-equal@0.5.0
└── should-format@0.3.0
C:>mocha --reporter list
Travis CI と組み合わせるには以下のページが参考になる。まぁ package.json
さえちゃんと書いておけば特にハマるところはない。
npm に publish する
npm に publish には npm のアカウントを作る必要がある。アカウントを作ったら npm
コマンドでアカウント情報を登録する。
C:>npm adduser
Username: username
Password:
Email: (this IS public) username@example.com
以後の作業は以下のページを参考にした。
まぁ package.json
さえちゃんと書いておけば...
ライセンス
そうそう,ライセンスだけど,例によって CC0 にした(最近書いてるコードはほぼ CC0 で公開している)。 CVSS のロジックをどうやって実装するか,その実証コードみたいなものなので,権利は特に主張しません。利用したいという奇特な方がいらっしゃるならご自由にどうぞ。
package.json
で記述できるライセンスは以下が参考になる。