GroupSession カスタマイズ

##概要
仕事のスケジュール管理で使っていたAipoCommunicationエディションがサポート終了になり、無料で移行先を探していたところ「GroupSession」にした。無償かつオンプレかつ国産で使えるものを、の条件に当てはまった唯一の製品だった(2019/04時点)
実務にあてはまるようにいくつかカスタマイズしたのでメモっておく。
基本的なセットアップは本家に書いてある通りなので書きません。

##Webメール機能のIMAP化
GroupSessionで実装されているものはIMAPに対応していないので、IMAPに対応した別プロダクトを埋め込むことにした。
選んだのは「Rainloop」、セットアップも簡単でおそらくデファクトスタンダード。
セットアップはこちらのサイトを参考にさせていただきました。ありがとうございました。

[リッチなUIのPHP製のWEBメーラー「RainLoop Webmail」をレンタルサーバーに入れてみた](https://qwerty.work/blog/2017/01/php-webmailer-rainloop-webmail.php)


連絡先のセットアップはサイトを参考にさせていただきました。ありがとうございました。

[RainLoopでアドレス帳を使えるようにする。](https://shochian2.com/archives/29970)

埋め込みは余白などを取って自然にしたiframeで行った。


```diff:/usr/local/java/apache-tomcat-8.5.42/webapps/gsession/WEB-INF/plugin/webmail/jsp/wml010.js
+<html>
+<body style="margin:1px 0 0 0; overflow-x:hidden;">
+<iframe id="inline-frame" src="https://xxxxxxx/rainloop/" style="width:100%; height:99%;" frameborder="0" sandbox="allow-same-origin allow-scripts allow-top-navigation">
+</iframe>
+</body>
+</html>
```
元の<html>～</html>の中身を書き換え
必要に応じてセキュリティを施す。

メイン画面のWebメール新着メッセージリンクが押されると元の画面が見えてしまうので表示されないように。

```diff:/usr/local/java/apache-tomcat-8.5.42/webapps/gsession/WEB-INF/plugin/main/jsp/man001_information.jsp

<logic:iterate id="msg" name="man001Form" property="infoMsgs" scope="request" indexId="idx">
+    <logic:notMatch name="msg" property="linkUrl" value="../webmail/wml010.do" location="start">
    <tr>
    <td class="td_type1">
      <logic:notEmpty name="msg" property="icon">
      <img src="<bean:write name="msg" property="icon" />" class="img_bottom" alt="<bean:write name="msg" property="message" />">
      </logic:notEmpty>

      <logic:equal name="msg" property="popupDsp" value="false">
      <logic:equal name="msg" property="htmlEscape" value="true">
      <a href="<bean:write name="msg" property="linkUrl" />"><span class="text_r2"><bean:write name="msg" property="message" /></span></a>
      </logic:equal>
      <logic:notEqual name="msg" property="htmlEscape" value="true">
      <a href="<bean:write name="msg" property="linkUrl" />"><span class="text_r2"><bean:write name="msg" property="message" filter="false" /></span></a>
      </logic:notEqual>
      </logic:equal>

      <logic:notEqual name="msg" property="popupDsp" value="false">
      <logic:equal name="msg" property="htmlEscape" value="true">
      <a href="javascript:void(0);" onClick="<bean:write name="msg" property="linkUrl" />"><span class="text_r2"><bean:write name="msg" property="message" /></span></a>      </logic:equal>
      <logic:notEqual name="msg" property="htmlEscape" value="true">
      <a href="javascript:void(0);" onClick="<bean:write name="msg" property="linkUrl" />"><span class="text_r2"><bean:write name="msg" property="message" filter="false" /></span></a>
      </logic:notEqual>
      </logic:notEqual>

    </td>
    </tr>
+    </logic:notMatch>
    </logic:iterate>
```

notMatchの判定でWebメール新着項目レンダリングをスキップさせる。

####注意点としてSafariからだとiframe内が真っ白で見えないのでおまじないを入れる。

```diff:/etc/nginx/nginx.conf
location ^~ /rainloop/ {    #"/gsession/"で前方一致する場合
    proxy_pass http://xxxxx:81/rainloop/;
+    proxy_hide_header Upgrade;
}
```

####Rainloopのdataフォルダ隠し
難しいことではないがネットに出てくる情報がApache2.4以前のものなので一応メモっておく。

nginx側

```diff:/etc/nginx/nginx.conf
+location ^~ /rainloop/data {
+   deny all;
+}
```

##ログイン画面にお知らせ
```diff:/usr/local/java/apache-tomcat-8.5.42/webapps/gsession/WEB-INF/plugin/common/jsp/cmn001.jsp
<div id="login_box"  style="top:80px !important;">
    <div style="border: solid 1px green; background:#90ee90; margin:10px; color:#343434; padding:10px; font-size:1rem;">
+      <span>・・・</span>
    </div>
    <div align="left">

```

上記でロゴマークの上に出せる。