wgetでintra-martのテナント管理のライセンス数の設定を行う

# 概要

[wgetでintra-martのテナントの初期設定を実施する]に引き続き、intra-martの初期設定をwgetでやろう第2弾です。

テナントの初期設定に続き、ライセンス数の設定もwgetでやってみたいと思います。
このライセンス設定画面の無制限のチェックボックスをチェックするのをwgetで対応したいと思います。

![ライセンス設定.PNG](https://qiita-image-store.s3.amazonaws.com/0/124612/d5cd50e8-8a70-0119-3f57-af06f6ac8ea7.png)

# 前提

以下の環境で動作確認した内容です。
環境としては、テナントの初期設定まで実施済みのものとします。

|application|version |
|-----------|--------|
|OS         |CentOS7 |
|JDK(Oracle)|8u91    |
|Resin      |4.0.48  |
|intra-mart |8.0.11  |
|Oracle　　 |12.1.0.2|


# nkfのインストール

本記事で紹介しているスクリプトを実行するには別途「nkf」のインストールが必要です。
URLエンコード用にnkfを利用しています。
nkfは以下のコマンドでCentOS6のリポジトリからインストールできるようです。
[CentOS7にnkfをインストールする方法]


```bash
yum localinstall -y http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm
```

なぜか私の環境では`mirror.ceonts.org`が解決できなかったので...

```bash:IP直で...
yum localinstall -y http://213.184.126.230/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm
```



# wgetでシステム管理者のセッションを作成する

まず、ログイン前にログインページを表示してim_secure_tokenとim_admin_login_infoを取得します。
取得したログインページンのHTMLをgrepして2項目の値を取得して、nkfでURLエンコードをかましています。

```bash:
  wget \
     --keep-session-cookies \
     --save-cookies cookies.txt \
     http://localhost:8080/${CONTEXT_PATH}/system/login
  
  IM_SECURE_TOKEN=`grep "im_secure_token" login | sed 's/.*value="\(.*\)".*/\1/g' | nkf -WwMQ | tr = %`
  IM_ADMIN_LOGIN_INFO=`grep "im_admin_login_info" login | sed 's/.*value="\(.*\)".*/\1/g' | nkf -WwMQ | tr = %`
```  

続いて、システム管理者でログインします。
ログインのpost送信時に、先ほど取得したim_secure_tokenとim_admin_login_infoが必要です。

```bash
  wget \
     --keep-session-cookies \
     --load-cookies cookies.txt \
     --save-cookies cookies.txt \
     --post-data "im_user=${SYSTEM_MANAGER_CD}&im_password=${SYSTEM_MANAGER_PASSWORD}&im_admin_login_info=${IM_ADMIN_LOGIN_INFO}&im_page_key=&im_secure_token=${IM_SECURE_TOKEN}" \
     http://localhost:8080/${CONTEXT_PATH}/system/certification
```

# wgetでライセンス数登録

ログイン時に取得したcookie情報を利用してライセンス数の登録を行います。

```bash
  wget \
     --load-cookies cookies.txt \
     --post-data "accountLicenseInfinity=infinity&applicationId=XXXXX&tenantLicenseInfinityXXXXX=infinity&applicationId=YYYYY&tenantLicenseInfinityYYYYY=infinity" \
     http://localhost:8080/${CONTEXT_PATH}/system/settings/tenant/license/edit
```

無制限にチェックを入れたい場合は以下のようなPOSTデータを送信すればよいようです。

```bash:アカウントライセンス
"accountLicenseInfinity=infinity"
```

```bash:アプリケーションのライセンス
# XXXXX、YYYYYにはアプリケーションごとのIDを指定します。
"applicationId=XXXXX&tenantLicenseInfinityXXXXX=infinity&applicationId=YYYYY&tenantLicenseInfinityYYYYY=infinity"
```

# まとめると

これで画面を開かずにライセンス数の設定ができます。

```bash:まとめ
#!/bin/bash

# システム管理者のユーザID
SYSTEM_MANAGER_CD="system"
# システム管理者のパスワード
SYSTEM_MANAGER_PASSWORD="manager"

CONTEXT_PATH="imart"

rm -f login

wget \
    --keep-session-cookies \
    --save-cookies cookies.txt \
    http://localhost:8080/${CONTEXT_PATH}/system/login

IM_SECURE_TOKEN=`grep "im_secure_token" login | sed 's/.*value="\(.*\)".*/\1/g' | nkf -WwMQ | tr = %` 
IM_ADMIN_LOGIN_INFO=`grep "im_admin_login_info" login | sed 's/.*value="\(.*\)".*/\1/g' | nkf -WwMQ | tr = %`

echo ${IM_SECURE_TOKEN}
echo ${IM_ADMIN_LOGIN_INFO}

LOGIN_POST_DATA="im_user=${SYSTEM_MANAGER_CD}&im_password=${SYSTEM_MANAGER_PASSWORD}&im_admin_login_info=${IM_ADMIN_LOGIN_INFO}&im_page_key=&im_secure_token=${IM_SECURE_TOKEN}"

echo ${LOGIN_POST_DATA}

wget \
    --keep-session-cookies \
    --load-cookies cookies.txt \
    --save-cookies cookies.txt \
    --post-data "${LOGIN_POST_DATA}" \
    http://localhost:8080/${CONTEXT_PATH}/system/certification

wget \
    --load-cookies cookies.txt \
    --post-data "accountLicenseInfinity=infinity&applicationId=XXXXX&tenantLicenseInfinityXXXXX=infinity&applicationId=YYYYY&tenantLicenseInfinityYYYYY=infinity" \
    http://localhost:8080/${CONTEXT_PATH}/system/settings/tenant/license/edit
```


[wgetでintra-martのテナントの初期設定を実施する]:http://qiita.com/myyasuda/items/40932c605446b2d76ff5
[CentOS7にnkfをインストールする方法]:http://createfield.com/CentOS7%E3%81%ABnkf%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95