Help us understand the problem. What is going on with this article?

CVSSv3 用の node.js モジュールを作ってみた

More than 3 years have passed since last update.

とりあえず基本評価基準(Base Metrics)のみ実装。続きは後日。

インストールと実行

cvss3 の中身は単純なロジックのみなので特に依存パッケージはない。

C:>npm install cvss3
cvss3@0.0.1 node_modules\cvss3

動作確認用のコードはこんな感じ。

app.js
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 以外の環境ではまだ試していない。最低でもブラウザでクライアント側でちゃんと動作するかは確認する予定。

テストを書く

mochashould でテスト・コードが書けるようだ。

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 で記述できるライセンスは以下が参考になる。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした