# ライセンス

Sora はライセンスファイルを読み込ませることで起動します。

## ライセンスファイルのパス設定と配置

ライセンスファイルのパスは `sora.conf` の [license_file](SORA_CONF.html#77d4d5) で設定できます。
Sora を起動する前に設定し、ライセンスファイルを配置してください。

デフォルト設定のまま使う場合は、ライセンスファイルを
sora ディレクトリ以下の etc/license.json にコピーしてください。

```console
$ cp 123ABC-SRA-E001-202301-100.json sora/etc/license.json
```

## ライセンスの更新

ライセンスを更新する場合は `sora.conf` の [license_file](SORA_CONF.html#77d4d5) で指定しているファイルを
cp コマンドで上書きしてください。
デフォルト設定では sora ディレクトリ以下にある `etc/license.json` です。

```console
$ cp 123ABC-SRA-E002-201901-100.json sora/etc/license.json
```

その後、ライセンス更新 API である [UpdateLicense](API_LICENSE.html#9e2217) API を実行することで更新されます。
Sora の再起動は不要です。

192.0.2.1 の部分には実際に利用している IP アドレスかドメインを指定してください

```console
$ curl -sS \
    -X POST \
    http://192.0.2.1:3000/ \
    -H "x-sora-target: Sora_20171218.UpdateLicense" \
    | jq .
```

正常に反映されているかを [GetLicense](API_LICENSE.html#be3ee8) API を実行して `serial_code` を確認してください。

```console
$ curl -sS \
    -X POST \
    http://192.0.2.1:3000/ \
    -H "x-sora-target: Sora_20171218.GetLicense" \
    | jq .
```

### ライセンスの更新に失敗した場合

もし、誤って壊れているライセンスファイル等を使用して更新に失敗しても、既存のライセンス情報は上書きされません。

### ライセンスの更新時のライセンス適用について

ライセンスが更新される際に新しい接続が発生したとしても、
更新前または更新後のいずれかのライセンスが適用され、最大同時接続数の確認が行われます。

ライセンスの状態が一時的に空白になることはありません。

## 同時接続数制限を超えて接続しようとした場合

> **重要**
>
> 最大同時接続数を超過したとしても既に接続しているクライアントには影響がありません。

ライセンスファイルには最大同時接続数が定義してあり、その最大同時接続数を超えて接続することはできません。

### sora.jsonl への出力

既存の接続は継続されますが、新規接続ができなくなります。
`sora.jsonl` に `EXCEED-MAX-CONNECTIONS` というエラーログが出力します。

### クライアントへの通知

最大同時接続数を超えて接続ができなかったクライアントには、
`SERVICE-UNAVAILABLE` というエラーメッセージが通知されます。

### 同時接続数が +1 されるタイミング

認証が成功し、セッションへ参加し、その後 WebRTC での接続が確立したタイミングで初めて同時接続数が +1 されます。

認証が成功しただけでは同時接続数は増えません。

### 同時接続数が -1 されるタイミング

コネクションが切断したタイミングで同時接続数から -1 カウントします。

### エラーメッセージを通知するタイミング

シグナリング開始で WebSocket で `"type": "connect"` 送信後に、
最大同時接続数を超えた場合にエラーメッセージが通知され、シグナリングの WebSocket が切断されます。

## ライセンス期限が過ぎている場合

> **重要**
>
> ライセンスの期限が過ぎていても Sora を起動することはできます。

### sora.jsonl への出力

既存の接続は継続されますが、新規接続ができなくなります。
`sora.jsonl` に `EXPIRED-LICENSE` というエラーログが出力します。

### ライセンスの期限時刻

ライセンスの期限が `2022-01` の場合は UTC で 2022 年 2 月 1 日の 0 時から新規接続ができなくなります。

### クライアントへ通知するエラーメッセージについて

ライセンス期限が過ぎているため接続ができなかったクライアントには、
`SERVICE-UNAVAILABLE` というエラメッセージが通知されます。

## ライセンスファイルのパスの更新

ライセンスファイルのパスの更新は、一度 Sora を停止し、 `sora.conf` の [license_file](SORA_CONF.html#77d4d5) のパスを変更して Sora を起動する必要があります。


## 最大ノード数ライセンス

2022 年 6 月から `最大ノード数ライセンス` という形式のライセンスを提供しています。

通常の Sora のライセンスは Sora 1 起動 1 ライセンスと固定されており、
同一のライセンスを複数の Sora で利用することはできません。

`最大ノード数ライセンス` は、クラスター構築時に、あらかじめライセンスに定義されている最大ノード数までは同一のライセンスを利用できます。

> **危険**
>
> 最大ノード数に対応していないライセンスで複数の Sora を起動することはできません。

最大ノード数に対応したライセンスファイルの中身の例

```javascript
{
  "expired_at": "2013-03",
  "max_connections": 100,
  "max_nodes": 3,
  "product_name": "Sora",
  "serial_code": "DOC123-SRA-E002-201303-N3-100",
  "signature": "****",
  "type": "Experimental"
}
```

ファイルの中身に `"max_nodes": 3` と書かれているライセンスでは、クラスターを組む際に最大 3 ノードまで同一のライセンスが利用できます。

> **注釈**
>
> max_nodes 1 につき 1 ライセンス分の料金が必要になります。例えば max_nodes が 3 の場合は 3 ライセンス分の料金となります。

> **危険**
>
> 最大ノード数に対応しているライセンスを利用した場合に構築できるクラスターは 1 つのみです。複数のクラスターを構築することはできません。

`最大ノード数ライセンス` について不明な部分がある場合はサポートにお問い合わせください。

### 最大ノード数ライセンスの非クラスター利用について

> **注意**
>
> 契約済みの最大ノード数ライセンスを非クラスターで利用したい場合はサポートまでご連絡ください。

最大ノード数ライセンスはクラスターを利用しない場合は通常のライセンスと同じように利用できます。
ただし、 その場合は 1 ライセンスとして扱うため、1 ノードでしか利用できません。
もし `"max_nodes": 3` と記載されていても、クラスターを利用しない場合は 1 ノードでしか利用できません。

### 最大ノード数ライセンスへの切り替えについて

通常のライセンスから最大ノード数ライセンスへの切り替えができます。詳細はサポートまでご連絡ください。

### 最大ノード数ライセンスと通常ライセンスの混在について

最大ノード数ライセンスと通常ライセンスを混在して利用することはできません。

### 最大ノード数ライセンスでのみ利用できる機能

- [クラスターリレー機能](CLUSTER.html#4b3bf1)
- [クラスターリレー利用時のアフィニティ機能](CLUSTER.html#6f4bfb)
- [クラスター利用時のテンポラリーノード機能](CLUSTER.html#3cb6c8)
- [クラスター利用時のライセンスで決められた最大同時接続数の合計を維持する機能](CLUSTER.html#7bc873)

### 最大ノード数ライセンス利用時のノード数超過について

#### InitCluster API で新規に登録する場合のノード数超過

[InitCluster](API_CLUSTER.html#621990) API で新規に登録する場合、
`node_name_list` に指定したノード数が `"max_nodes"` で指定された最大ノード数を超える場合、
`EXCEED-MAX-NODES` というエラーメッセージが通知され、クラスターの初期化に失敗します。

#### RegisterClusterNode API で新規に登録する場合のノード数超過

[RegisterClusterNode](API_CLUSTER.html#09ed96) API で新規に登録する場合、
既にクラスターが最大ノード数ライセンスの `"max_nodes"` で指定された最大ノード数に達している場合、
`EXCEED-MAX-NODES` というエラーメッセージが通知され、ノードの登録に失敗します。

## ライセンスエラー時の動作確認用ライセンスの提供について

ライセンス期限が過ぎたり、最大同時接続数を超過した際の動作確認を行うためのライセンスを提供しています。
動作確認用ライセンスが必要なお客様はサポートまでご連絡ください。

ライセンスエラー時の動作確認用ライセンスはクラスターでも確認できるよう、最大ノード数ライセンスでの提供となります。
最大ノード数ライセンスはクラスターを利用しない場合は通常のライセンスと同じように利用できます。

### ライセンス期限が古く、最大同時接続数が 1 のライセンス

ライセンス期限が過ぎたテストにご利用ください。

### ライセンス期限が新しく、最大同時接続数が 0 のライセンス

同時接続数が超過したテストにご利用ください。
