OpenPNE Issue Tracking System: チケット
http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2017-02-16T07:02:03Z
OpenPNE Issue Tracking System
Redmine
opRankingPlugin - Bug(バグ) #4152 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態でアクセス数ランキング画面を表示するとエラー
http://redmine.openpne.jp/issues/4152
2017-02-16T07:02:03Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>MySQL 5.7 の Strict Mode が有効な状態での動作確認 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): MySQLのStrict Modeを有効にした場合に生じる問題を調査 (Accepted(着手))" href="http://redmine.openpne.jp/issues/4033">#4033</a>) を行った際に発生した。</p>
<p>アクセス数ランキング画面を開くと下記のエラーが発生する:</p>
<pre>
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.a.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="sql syntaxhl"><span class="CodeRay"><span class="class">SELECT</span> a.id <span class="keyword">AS</span> a__id, a.member_id_to <span class="keyword">AS</span> a__member_id_to, <span class="predefined">COUNT</span>(*) <span class="keyword">AS</span> a__0
<span class="keyword">FROM</span> ashiato a
<span class="keyword">WHERE</span> (a.created_at >= <span class="string"><span class="delimiter">'</span><span class="content">2017-02-15</span><span class="delimiter">'</span></span> <span class="keyword">AND</span> a.created_at < <span class="string"><span class="delimiter">'</span><span class="content">2017-02-16</span><span class="delimiter">'</span></span>)
<span class="keyword">GROUP</span> <span class="keyword">BY</span> a.member_id_to
<span class="keyword">ORDER</span> <span class="keyword">BY</span> <span class="predefined">COUNT</span>(*) <span class="directive">DESC</span>
LIMIT <span class="integer">10</span>
</span></code></pre>
<p>上記のクエリで、<code>a.id</code> が GROUP BY に含まれていないためエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opDiaryPlugin - Bug(バグ) #4151 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態で「日記コメント記入履歴」ガジェットを表示するとエラー
http://redmine.openpne.jp/issues/4151
2017-02-16T06:44:32Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>MySQL 5.7 の Strict Mode が有効な状態での動作確認 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): MySQLのStrict Modeを有効にした場合に生じる問題を調査 (Accepted(着手))" href="http://redmine.openpne.jp/issues/4033">#4033</a>) を行った際に発生した。</p>
<p>「日記コメント記入履歴」ガジェットを追加した状態でホーム画面を開くと下記のエラーが発生する:</p>
<pre>
SQLSTATE[HY000]: General error: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column 'openpne.d3.last_comment_time' which is not in SELECT list; this is incompatible with DISTINCT
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="sql syntaxhl"><span class="CodeRay"><span class="class">SELECT</span> <span class="keyword">DISTINCT</span> d3.diary_id
<span class="keyword">FROM</span> diary_comment_update d3
<span class="keyword">INNER</span> <span class="keyword">JOIN</span> diary d4 <span class="keyword">ON</span> d3.diary_id = d4.id
<span class="keyword">LEFT</span> <span class="keyword">JOIN</span> member m3 <span class="keyword">ON</span> d4.member_id = m3.id
<span class="keyword">LEFT</span> <span class="keyword">JOIN</span> member_relationship m4 <span class="keyword">ON</span> m3.id = m4.member_id_to <span class="keyword">AND</span> (m4.member_id_from = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>)
<span class="keyword">WHERE</span> d3.member_id = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span>
<span class="keyword">AND</span> (
d4.public_flag = <span class="string"><span class="delimiter">'</span><span class="content">4</span><span class="delimiter">'</span></span> <span class="keyword">OR</span>
d4.public_flag = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span> <span class="keyword">OR</span>
(d4.public_flag = <span class="string"><span class="delimiter">'</span><span class="content">2</span><span class="delimiter">'</span></span> <span class="keyword">AND</span> m4.is_friend = <span class="integer">1</span>)
)
<span class="keyword">AND</span> (m3.is_active = <span class="string"><span class="delimiter">'</span><span class="content">1</span><span class="delimiter">'</span></span> <span class="keyword">OR</span> m3.is_active <span class="keyword">IS</span> <span class="predefined-constant">NULL</span>)
<span class="keyword">ORDER</span> <span class="keyword">BY</span> d3.last_comment_time <span class="directive">DESC</span>
LIMIT <span class="integer">5</span>
</span></code></pre>
<p>上記のクエリで、ORDER BY で使用するカラムが DISTINCT の対象に含まれていないためにエラーが発生している。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
opAshiatoPlugin - Bug(バグ) #4150 (New(新規)): MySQLのONLY_FULL_GROUP_BYが有効な状態であしあとページを開くとエラーが発生する
http://redmine.openpne.jp/issues/4150
2017-02-16T05:09:58Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>MySQL 5.7 の Strict Mode が有効な状態 (<a class="issue tracker-5 status-2 priority-4 priority-default parent" title="Task(タスク): MySQLのStrict Modeを有効にした場合に生じる問題を調査 (Accepted(着手))" href="http://redmine.openpne.jp/issues/4033">#4033</a>) であしあとページを開くと下記のエラーが発生する:</p>
<pre>
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'openpne.a.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<pre><code class="sql syntaxhl"><span class="CodeRay"><span class="class">SELECT</span> a.id <span class="keyword">AS</span> a__id, a.r_date <span class="keyword">AS</span> a__r_date <span class="keyword">FROM</span> ashiato a <span class="keyword">WHERE</span> (a.member_id_to = <span class="error">?</span>) <span class="keyword">GROUP</span> <span class="keyword">BY</span> a.r_date <span class="directive">DESC</span> LIMIT <span class="integer">30</span>
</span></code></pre>
<p>実行される上記のクエリについて、GROUP BY で指定されていない <code>a.id</code> が SELECT リストで参照されていることが原因。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Task(タスク) #4040 (New(新規)): #3083の修正コミットがstable-3.8.xのみに存在し、masterブランチに対するチケット及びPull R...
http://redmine.openpne.jp/issues/4040
2016-11-14T07:59:10Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> はトラッカーが Bug のチケットであるが、その修正コミットである <a class="changeset" title="(fixes #3083) fixed not to occur Exception when channel server was not registered" href="http://redmine.openpne.jp/projects/op3/repository/revisions/41db124efa99201060a2d17cecac966045b8c611">41db124e</a> は stable-3.8.x に取り込まれている。<br />そのため <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> の役割は実質 Backport のチケットであるが、一方で <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> の修正を master ブランチで行うチケットが存在していない。</p>
<p>内容が酷似した <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3011">#3011</a>, <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport(バックポート): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3012">#3012</a> のチケットも存在するが、これらは <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> 以前に master ブランチで修正および stable-3.8.x へのバックポートが既に行われている。<br /><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3083">#3083</a> は、一度 <a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3011">#3011</a>, <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport(バックポート): --internetオプション付けないでインストールした場合、プラグイン設定ページにアクセスできない (Fixed(完了))" href="http://redmine.openpne.jp/issues/3012">#3012</a> で修正した問題について再び修正を試みたチケットであるように読み取れる。</p>
<a name="対応方法"></a>
<h3 >対応方法<a href="#対応方法" class="wiki-anchor">¶</a></h3>
<p>stable-3.8.x ブランチにしか存在しない <a class="changeset" title="(fixes #3083) fixed not to occur Exception when channel server was not registered" href="http://redmine.openpne.jp/projects/op3/repository/revisions/41db124efa99201060a2d17cecac966045b8c611">41db124e</a> の修正を master ブランチに cherry-pick するためのチケットおよび Pull Request を作成する</p>
OpenPNE 3 - Enhancement(機能追加・改善) #4014 (New(新規)): member_configに格納しているメールアドレスを独立したテーブルに分離する
http://redmine.openpne.jp/issues/4014
2016-09-29T05:15:11Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>OpenPNE3 では SNS メンバーのメールアドレスを member_config テーブルに格納しており、下記の name を割り当てている。<br />(「設定が完了していない」状態とは <a class="issue tracker-2 status-12 priority-5 priority-high3 closed" title="Enhancement(機能追加・改善): member_configのpc_address_preを複数の目的で使用すべきではない (Invalid(無効))" href="http://redmine.openpne.jp/issues/3829#note-3">#3829-3</a> で指摘しているような「所有者確認が済んでいないメールアドレス」を指す)</p>
<ul>
<li>pc_address
<ul>
<li>PCメールアドレス</li>
</ul>
</li>
<li>mobile_address
<ul>
<li>携帯メールアドレス</li>
</ul>
</li>
<li>pc_address_pre
<ul>
<li>設定が完了していないPCメールアドレス</li>
</ul>
</li>
<li>mobile_address_pre
<ul>
<li>設定が完了していない携帯メールアドレス</li>
</ul></li>
</ul>
<p>これらのメールアドレスに関する設定は下記のような問題点を抱えている。</p>
<a name="問題点1-ユニーク制約を設定できないテーブル構造"></a>
<h4 >問題点1: ユニーク制約を設定できないテーブル構造<a href="#問題点1-ユニーク制約を設定できないテーブル構造" class="wiki-anchor">¶</a></h4>
<p>メールアドレスは SNS メンバーのログインおよびパスワード再発行にも使用される重要な役割を担っている。また、その用途から自明なとおり 1 つのメールアドレスに対応する SNS メンバーが 2 人以上存在してはならない。<br />しかし、メールアドレスを格納している member_config テーブルに同じメールアドレスが複数含まれないようにユニーク制約を設定することはできない。member_config はメールアドレス以外にも様々な設定を扱っており、value に対してユニーク制約を設定してしまうと他のメンバーと設定が重複しうる別の設定項目にも影響してしまうためである。</p>
<p>そのため現在に至るまで pc_address, mobile_address には DB スキーマ上のユニーク制約を設けることができないまま、アプリケーション側でメールアドレスの重複が生じないように対処し続けてきた。<br />しかし <a class="issue tracker-1 status-5 priority-5 priority-high3 closed" title="Bug(バグ): 管理画面 招待メール送信 を利用すると同じメールアドレスを重複登録できる (Fixed(完了))" href="http://redmine.openpne.jp/issues/1816">#1816</a> のように一度でも重複チェックに漏れが生じると member_config テーブルには重複したメールアドレスが残り続けてしまう。その後の修正も <a class="issue tracker-1 status-5 priority-5 priority-high3 closed" title="Bug(バグ): 管理画面 招待メール送信 を利用すると同じメールアドレスを重複登録できる (Fixed(完了))" href="http://redmine.openpne.jp/issues/1816">#1816</a> 自体の修正だけでは足らず、 <a class="issue tracker-1 status-5 priority-5 priority-high3 closed" title="Bug(バグ): 重複登録しないように修正する前の環境で送信した招待メールでは重複登録が可能になってしまっている (Fixed(完了))" href="http://redmine.openpne.jp/issues/2340">#2340</a> のように既に重複したメールアドレスが存在していても正しく動作させるためにレコードの更新日時をチェックするといった修正も行われることになる。<br />もしユニーク制約が設定できる設計であったならば、仮に <a class="issue tracker-1 status-5 priority-5 priority-high3 closed" title="Bug(バグ): 管理画面 招待メール送信 を利用すると同じメールアドレスを重複登録できる (Fixed(完了))" href="http://redmine.openpne.jp/issues/1816">#1816</a> のような不具合が発生しても DB にレコードが追加される前に異常終了するため、その不具合のみ修正されれば十分だったはずである。</p>
<a name="問題点2-pc_address-と-mobile_address-の区別"></a>
<h4 >問題点2: pc_address と mobile_address の区別<a href="#問題点2-pc_address-と-mobile_address-の区別" class="wiki-anchor">¶</a></h4>
<p>PCメールアドレスと携帯メールアドレスの違いは <code>opToolkit::isMobileEmailAddress()</code> によって携帯メールアドレスと判断されるか否かの違いであり、いわゆる <a href="https://ja.wikipedia.org/wiki/%E3%82%AD%E3%83%A3%E3%83%AA%E3%82%A2%E3%83%A1%E3%83%BC%E3%83%AB" class="external">キャリアメール</a> が携帯メールアドレスとして扱われている。PCメールアドレスと携帯メールアドレスは利用できる機能にも下記のような違いがある。</p>
<ul>
<li>「メール投稿」関連の機能は携帯メールアドレスからのみ利用できる</li>
<li>ログイン用メールアドレスに「PCメールアドレスと携帯メールアドレスのどちらか一方を受け付ける」を設定しているSNSでは、PCメールアドレスではPC版のみ、携帯メールアドレスでは携帯版のみにログインできる
<ul>
<li>この設定は後にデフォルトではなくなった (master, 3.6.x および 3.8.x の最新バージョン)</li>
</ul></li>
</ul>
<p>スマートフォンから OpenPNE を利用する場合は携帯 IP アドレス帯域制限により mobile_frontend は使用できないが、そのような携帯端末でも新規登録にキャリアメールを使用すると mobile_address として登録されるためログインできなくなるという問題も過去に生じていた (<a class="issue tracker-1 status-13 priority-4 priority-default closed" title="Bug(バグ): スマートフォンで携帯メールアドレスを利用することができない (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3155">#3155</a>)。<br />また、Gmail などとキャリアメールの双方を扱える携帯端末が増えたことで pc_address, mobile_address の区別が形骸化しつつあり、携帯 (スマートフォン) で Gmail を使用しているユーザーが「携帯メールアドレス」の設定画面に <code>@gmail.com</code> のメールアドレスを入力するとエラーになるといった不親切な状態も招いている。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<p>これらの問題点を解決するために、下記のような email_address テーブルを新たに追加する。</p>
<pre><code class="yaml syntaxhl"><span class="CodeRay"><span class="key">Member</span>:
<span class="key">actAs</span>: <span class="string"><span class="content">[Timestampable, opActivateBehavior]</span></span>
<span class="key">columns</span>:
<span class="key">id</span>: <span class="string"><span class="content">{ type: integer(4), primary: true, autoincrement: true }</span></span>
<span class="key">name</span>: <span class="string"><span class="content">{ type: string(64), default: "", notnull: true }</span></span>
<span class="key">invite_member_id</span>: <span class="string"><span class="content">{ type: integer(4) }</span></span>
<span class="key">is_login_rejected</span>: <span class="string"><span class="content">{ type: boolean, notnull: true, default: false }</span></span>
<span class="key">primary_email_address_id</span>: <span class="string"><span class="content">{ type: integer(4) }</span></span> <span class="comment"># 追加</span>
<span class="key">relations</span>:
<span class="key">Member</span>: <span class="string"><span class="content">{ local: invite_member_id, foreign: id, onDelete: set null }</span></span>
<span class="key">PrimaryEmailAddress</span>: <span class="string"><span class="content">{ class: EmailAddress, local: primary_email_id, onDelete: set null }</span></span> <span class="comment"># 追加</span>
<span class="comment"># 新規テーブル</span>
<span class="key">EmailAddress</span>:
<span class="key">columns</span>:
<span class="key">id</span>: <span class="string"><span class="content">{ type: integer(4), primary: true, autoincrement: true }</span></span>
<span class="key">email_address</span>: <span class="string"><span class="content">{ type: string(255), notnull: true }</span></span>
<span class="key">member_id</span>: <span class="string"><span class="content">{ type: integer(4), notnull: true }</span></span>
<span class="key">verified</span>: <span class="string"><span class="content">{ type: boolean, notnull: true }</span></span>
<span class="key">relations</span>:
<span class="key">Member</span>: <span class="string"><span class="content">{ onDelete: cascade }</span></span>
<span class="key">indexes</span>:
<span class="key">email_address_UNIQUE</span>:
<span class="key">fields</span>: <span class="string"><span class="content">[email_address]</span></span>
<span class="key">type</span>: <span class="string"><span class="content">unique</span></span>
</span></code></pre>
<a name="DB-スキーマの詳細"></a>
<h4 >DB スキーマの詳細<a href="#DB-スキーマの詳細" class="wiki-anchor">¶</a></h4>
<ul>
<li>メンバーは 0 個以上のメールアドレスを持つことができる
<ul>
<li>0 個を許容するのは OpenID や LDAP などメールアドレスを用いない認証方式を考慮するため</li>
<li>2 個以上を許容するのは既に pc_address, mobile_address の両方にメールアドレスを設定しているメンバーを考慮するため</li>
</ul>
</li>
<li>メールアドレスに紐付くメンバーは常に 1 人のみ存在する</li>
<li>メールアドレスは pc, mobile の区別を行わずに格納する</li>
<li>メールアドレス変更や新規登録などにおける、所有者確認が済んでいないメールアドレスは <code>email_address.verified = 0</code> で表す
<ul>
<li><code>{pc,mobile}_address_pre</code> に相当する</li>
<li><a class="issue tracker-1 status-5 priority-4 priority-default closed parent" title="Bug(バグ): メールアドレス設定から意図的に他のメンバーと同じメールアドレスを設定できる (Fixed(完了))" href="http://redmine.openpne.jp/issues/4012">#4012</a> における対応と異なり、これらのメールアドレスについても一切の重複を認めない</li>
</ul>
</li>
<li>メンバーは自ら設定しているメールアドレスのうち 1 つを <code>member.primary_email_address_id</code> に設定できる</li>
</ul>
<a name="互換性に関する考慮"></a>
<h4 >互換性に関する考慮<a href="#互換性に関する考慮" class="wiki-anchor">¶</a></h4>
<ul>
<li>メールテンプレートなど pc, mobile の区別が必要な場面ではその都度 <code>opToolkit::isMobileEmailAddress()</code> を使用して判別する</li>
<li>member_config テーブルの pc_address, mobile_address は引き続き参照できる状態にする
<ul>
<li>pc_address, mobile_address を直接参照しているプラグインとの互換性を保つため</li>
<li>メンバーの PrimaryEmailAddress が変更されると、設定されたメールアドレスが pc_address, mobile_address のいずれか一方にも設定される</li>
<li>PrimaryEmailAddress のメールアドレスが pc_address に設定された場合、mobile_address のレコードが存在すれば削除される (常にどちらか一方のみ存在する状態になる)</li>
</ul></li>
</ul>
OpenPNE 3 - Backport(バックポート) #3971 (New(新規)): #3968で削除したテストコードを動作する状態にして再び追加する
http://redmine.openpne.jp/issues/3971
2016-07-19T02:30:58Z
Youichi Kimura
kim.upsilon@bucyou.net
<p><a class="issue tracker-4 status-8 priority-4 priority-default" title="Backport(バックポート): 壊れたテストコードを削除する (Rejected(差し戻し))" href="http://redmine.openpne.jp/issues/3968">#3968</a> で削除したテストコードを動作する状態に修正した上で再び追加します。</p>
<a name="Functional-Test"></a>
<h4 >Functional Test<a href="#Functional-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>pc_backend
<ul>
<li>POST /community/categoryEdit/id/1 (CSRF)</li>
<li>POST /community/addDefaultCommunity/id/1 (CSRF)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/1 (CSRF)</li>
<li>POST /default/login (CSRF)</li>
<li>POST /design/gadget?type=gadget (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=sideBanner (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=mobile (sfTesterDoctrine::check)</li>
<li>POST /design (CSRF)</li>
<li>POST /design/gadget (CSRF)</li>
<li>POST /design/customCss (CSRF)</li>
<li>POST /navigation/edit?app=pc (CSRF)</li>
<li>POST /navigation/edit?app=mobile (CSRF)</li>
<li>POST /navigation/edit?app=backend (CSRF)</li>
<li>POST /plugin/list?type=application (CSRF)</li>
<li>POST /plugin/list?type=auth (CSRF)</li>
<li>POST /plugin/list?type=skin (CSRF)</li>
<li>POST /profile/editOption (CSRF)</li>
<li>GET /sns/config?category=general (sfTestFunctionalBase::click)</li>
<li>POST /sns/richTextarea (CSRF)</li>
<li>POST /sns/changeRichTextareaButtonOrder (CSRF)</li>
</ul>
</li>
<li>pc_frontend
<ul>
<li><del>POST /community/quit?id=1 (CSRF)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li><del>POST /community/join?id=1 (CSRF)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li><del>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li><del>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li><del>GET /community/1055 (XSS)</del>
<ul>
<li>stable-3.8.x にのみ存在しないテスト</li>
</ul>
</li>
<li>「コミュニティリスト」ガジェットの画像部分のリンク先に対するリクエスト</li>
<li>「コミュニティリスト」ガジェットのテキスト部分のリンク先に対するリクエスト</li>
<li>POST /confirmation/community_admin_request/5 (CSRF)</li>
<li>POST /confirmation/community_sub_admin_request/8 (CSRF)</li>
<li>GET /connection/1055 (XSS)</li>
<li>GET /connection/list (XSS)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/2/delete (CSRF)</li>
<li>POST /connection/2 (CSRF)</li>
<li>POST /connection/revoke/2 (CSRF)</li>
<li>POST /leave (CSRF)</li>
<li>POST /member/config?category=language (CSRF)</li>
<li>GET / (XSS, RSSガジェット部分)</li>
</ul>
</li>
<li>api
<ul>
<li><a href="https://houou.github.io/api.php/" class="external">JSON API</a> に対するテスト</li>
</ul></li>
</ul>
<a name="Unit-Test"></a>
<h4 >Unit Test<a href="#Unit-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>Doctrine_Record::getListener() (opApplicationLevelCascadingListener)</li>
<li>ActivityDataTable::getPublicFlags()</li>
<li>CommunityCategoryTable::getAllChildren()</li>
<li>CommunityCategory::getChildren()</li>
<li>CommunityMemberTable::join()</li>
<li>CommunityMemberTable::quit()</li>
<li>CommunityMemberTable::requestChangeAdmin()</li>
<li>CommunityMemberTable::requestSubAdmin()</li>
<li>CommunityMemberTable::getMemberIdsByCommunityId()</li>
<li>CommunityTable::getCommunityMemberListPager()</li>
<li>CommunityTable::getDefaultCommunities()</li>
<li>Community::countCommunityMembers()</li>
<li>Community::getNameAndCount()</li>
<li>File::delete()</li>
<li>MemberProfileTable::searchMemberIds()</li>
<li>MemberRelationshipTable::retrievesByMemberIdFrom()</li>
<li>MemberRelationshipTable::getFriendListPager()</li>
<li>MemberRelationshipTable::getFriendMemberIds()</li>
<li>MemberTable::searchMemberIds()</li>
<li>Member::getProfiles()</li>
<li>Member::countFriends()</li>
<li>Member::getNameAndCount()</li>
<li>Member::delete()</li>
<li>OAuthConsumerInformationTable::getListPager()</li>
<li>OAuthConsumerInformation::getAPICaptions()</li>
<li>ProfileOptionTable::getMaxSortOrder()</li>
<li>ProfileTable::getMaxSortOrder()</li>
<li>Profile::getOptionsArray()</li>
<li>opToolkit::loadXmlString()</li>
</ul>
OpenPNE 3 - Backport(バックポート) #3970 (New(新規)): #3967で削除したテストコードを動作する状態にして再び追加する
http://redmine.openpne.jp/issues/3970
2016-07-19T02:30:46Z
Youichi Kimura
kim.upsilon@bucyou.net
<p><a class="issue tracker-4 status-13 priority-4 priority-default closed" title="Backport(バックポート): 壊れたテストコードを削除する (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3967">#3967</a> で削除したテストコードを動作する状態に修正した上で再び追加します。</p>
<a name="Functional-Test"></a>
<h4 >Functional Test<a href="#Functional-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>pc_backend
<ul>
<li>POST /community/categoryEdit/id/1 (CSRF)</li>
<li>POST /community/addDefaultCommunity/id/1 (CSRF)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/1 (CSRF)</li>
<li>POST /default/login (CSRF)</li>
<li>POST /design/gadget?type=gadget (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=sideBanner (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=mobile (sfTesterDoctrine::check)</li>
<li>POST /design (CSRF)</li>
<li>POST /design/gadget (CSRF)</li>
<li>POST /design/customCss (CSRF)</li>
<li>POST /mail (CSRF)
<ul>
<li>stable-3.6.x にのみ存在するテスト</li>
</ul>
</li>
<li>POST /mail/edit (CSRF)
<ul>
<li>stable-3.6.x にのみ存在するテスト</li>
</ul>
</li>
<li>POST /navigation/edit?app=pc (CSRF)</li>
<li>POST /navigation/edit?app=mobile (CSRF)</li>
<li>POST /navigation/edit?app=backend (CSRF)</li>
<li>POST /plugin/list?type=application (CSRF)</li>
<li>POST /plugin/list?type=auth (CSRF)</li>
<li>POST /plugin/list?type=skin (CSRF)</li>
<li>POST /profile/editOption (CSRF)</li>
<li>GET /sns/config?category=general (sfTestFunctionalBase::click)</li>
<li>POST /sns/richTextarea (CSRF)</li>
<li>POST /sns/changeRichTextareaButtonOrder (CSRF)</li>
</ul>
</li>
<li>pc_frontend
<ul>
<li>GET /OpenID/list (XSS)
<ul>
<li>stable-3.6.x にのみ存在するテスト</li>
</ul>
</li>
<li>/OpenID/unsetPermission?id=2 (CSRF)
<ul>
<li>stable-3.6.x にのみ存在するテスト</li>
</ul>
</li>
<li>POST /community/quit?id=1 (CSRF)</li>
<li>POST /community/join?id=1 (CSRF)</li>
<li>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</li>
<li>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</li>
<li>GET /community/1055 (XSS)</li>
<li>「コミュニティリスト」ガジェットの画像部分のリンク先に対するリクエスト</li>
<li>「コミュニティリスト」ガジェットのテキスト部分のリンク先に対するリクエスト</li>
<li>POST /confirmation/community_admin_request/5 (CSRF)</li>
<li>POST /confirmation/community_sub_admin_request/8 (CSRF)</li>
<li>GET /connection/1055 (XSS)</li>
<li>GET /connection/list (XSS)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/2/delete (CSRF)</li>
<li>POST /connection/2 (CSRF)</li>
<li>POST /connection/revoke/2 (CSRF)</li>
<li>POST /leave (CSRF)</li>
<li>POST /member/config?category=language (CSRF)</li>
<li>GET / (XSS, RSSガジェット部分)</li>
</ul>
</li>
<li>api
<ul>
<li><del><a href="https://houou.github.io/api.php/" class="external">JSON API</a> に対するテスト</del>
<ul>
<li>stable-3.6.x にのみ存在しないテスト</li>
</ul></li>
</ul></li>
</ul>
<a name="Unit-Test"></a>
<h4 >Unit Test<a href="#Unit-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>Doctrine_Record::getListener() (opApplicationLevelCascadingListener)</li>
<li>ActivityDataTable::getPublicFlags()</li>
<li>CommunityCategoryTable::getAllChildren()</li>
<li>CommunityCategory::getChildren()</li>
<li>CommunityMemberTable::join()</li>
<li>CommunityMemberTable::quit()</li>
<li>CommunityMemberTable::requestChangeAdmin()</li>
<li>CommunityMemberTable::requestSubAdmin()</li>
<li>CommunityMemberTable::getMemberIdsByCommunityId()</li>
<li>CommunityTable::getCommunityMemberListPager()</li>
<li>CommunityTable::getDefaultCommunities()</li>
<li>Community::countCommunityMembers()</li>
<li>Community::getNameAndCount()</li>
<li>File::delete()</li>
<li>MemberProfileTable::searchMemberIds()</li>
<li>MemberRelationshipTable::retrievesByMemberIdFrom()</li>
<li>MemberRelationshipTable::getFriendListPager()</li>
<li>MemberRelationshipTable::getFriendMemberIds()</li>
<li>MemberTable::searchMemberIds()</li>
<li>Member::getProfiles()</li>
<li>Member::countFriends()</li>
<li>Member::getNameAndCount()</li>
<li>Member::delete()</li>
<li>OAuthConsumerInformationTable::getListPager()</li>
<li>OAuthConsumerInformation::getAPICaptions()</li>
<li>ProfileOptionTable::getMaxSortOrder()</li>
<li>ProfileTable::getMaxSortOrder()</li>
<li>Profile::getOptionsArray()</li>
<li>opToolkit::loadXmlString()</li>
</ul>
OpenPNE 3 - Enhancement(機能追加・改善) #3969 (New(新規)): #3962で削除したテストコードを動作する状態にして再び追加する
http://redmine.openpne.jp/issues/3969
2016-07-19T02:30:37Z
Youichi Kimura
kim.upsilon@bucyou.net
<p><a class="issue tracker-2 status-10 priority-4 priority-default parent" title="Enhancement(機能追加・改善): 壊れたテストコードを削除する (Pending Testing(テスト待ち))" href="http://redmine.openpne.jp/issues/3962">#3962</a> で削除したテストコードを動作する状態に修正した上で再び追加します。</p>
<a name="Functional-Test"></a>
<h4 >Functional Test<a href="#Functional-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>pc_backend
<ul>
<li>POST /community/categoryEdit/id/1 (CSRF)</li>
<li>POST /community/addDefaultCommunity/id/1 (CSRF)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/1 (CSRF)</li>
<li>POST /default/login (CSRF)</li>
<li>POST /design/gadget?type=gadget (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=sideBanner (sfTesterDoctrine::check)</li>
<li>POST /design/gadget?type=mobile (sfTesterDoctrine::check)</li>
<li>POST /design (CSRF)</li>
<li>POST /design/banner (CSRF)</li>
<li>POST /design/banneradd (CSRF)</li>
<li>POST /design/gadget (CSRF)</li>
<li>POST /design/customCss (CSRF)</li>
<li>GET /member/delete/id/1055 (XSS)</li>
<li>POST /monitoring/editImage (CSRF)</li>
<li>POST /navigation/edit?app=pc (CSRF)</li>
<li>POST /navigation/edit?app=mobile (CSRF)</li>
<li>POST /navigation/edit?app=backend (CSRF)</li>
<li>POST /plugin/list?type=application (CSRF)</li>
<li>POST /plugin/list?type=auth (CSRF)</li>
<li>POST /plugin/list?type=skin (CSRF)</li>
<li>POST /profile/edit (CSRF)</li>
<li>POST /profile/editOption (CSRF)</li>
<li>GET /sns/config?category=general (sfTestFunctionalBase::click)</li>
<li>POST /sns/richTextarea (CSRF)</li>
<li>POST /sns/changeRichTextareaButtonOrder (CSRF)</li>
</ul>
</li>
<li>pc_frontend
<ul>
<li>POST /community/quit?id=1 (CSRF)</li>
<li>POST /community/join?id=1 (CSRF)</li>
<li>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</li>
<li>GET /community/changeAdminRequest?id=1055&member_id=1056 (XSS)</li>
<li>GET /community/1055 (XSS)</li>
<li>「コミュニティリスト」ガジェットの画像部分のリンク先に対するリクエスト</li>
<li>「コミュニティリスト」ガジェットのテキスト部分のリンク先に対するリクエスト</li>
<li>POST /confirmation/community_admin_request/5 (CSRF)</li>
<li>POST /confirmation/community_sub_admin_request/8 (CSRF)</li>
<li>GET /connection/1055 (XSS)</li>
<li>GET /connection/list (XSS)</li>
<li>POST /connection (CSRF)</li>
<li>POST /connection/2/delete (CSRF)</li>
<li>POST /connection/2 (CSRF)</li>
<li>POST /connection/revoke/2 (CSRF)</li>
<li>POST /leave (CSRF)</li>
<li>POST /member/config?category=accessBlock (CSRF)</li>
<li>POST /member/config?category=language (CSRF)</li>
<li>GET / (XSS, RSSガジェット部分)</li>
</ul>
</li>
<li>api
<ul>
<li><a href="https://houou.github.io/api.php/" class="external">JSON API</a> に対するテスト</li>
</ul></li>
</ul>
<a name="Unit-Test"></a>
<h4 >Unit Test<a href="#Unit-Test" class="wiki-anchor">¶</a></h4>
<ul>
<li>Doctrine_Record::getListener() (opApplicationLevelCascadingListener)</li>
<li>ActivityDataTable::getPublicFlags()</li>
<li>CommunityCategoryTable::getAllChildren()</li>
<li>CommunityCategory::getChildren()</li>
<li>CommunityMemberTable::join()</li>
<li>CommunityMemberTable::quit()</li>
<li>CommunityMemberTable::requestChangeAdmin()</li>
<li>CommunityMemberTable::requestSubAdmin()</li>
<li>CommunityMemberTable::getMemberIdsByCommunityId()</li>
<li>CommunityTable::getCommunityMemberListPager()</li>
<li>CommunityTable::getDefaultCommunities()</li>
<li>Community::countCommunityMembers()</li>
<li>Community::getNameAndCount()</li>
<li>File::delete()</li>
<li>MemberProfileTable::searchMemberIds()</li>
<li>MemberRelationshipTable::retrievesByMemberIdFrom()</li>
<li>MemberRelationshipTable::getFriendListPager()</li>
<li>MemberRelationshipTable::getFriendMemberIds()</li>
<li>MemberTable::searchMemberIds()</li>
<li>Member::getProfiles()</li>
<li>Member::countFriends()</li>
<li>Member::getNameAndCount()</li>
<li>Member::delete()</li>
<li>OAuthConsumerInformationTable::getListPager()</li>
<li>OAuthConsumerInformation::getAPICaptions()</li>
<li>ProfileOptionTable::getMaxSortOrder()</li>
<li>ProfileTable::getMaxSortOrder()</li>
<li>Profile::getOptionsArray()</li>
<li>opToolkit::loadXmlString()</li>
</ul>
OpenPNE 3 - Bug(バグ) #3934 (New(新規)): :80, :443 以外のポートでアクセスするSNSでOAuth署名の検証に失敗する
http://redmine.openpne.jp/issues/3934
2016-04-25T09:47:24Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p><a class="external" href="http://sns.example.com:8080/">http://sns.example.com:8080/</a> のように :80, :443 以外のポートに設置された SNS で、opWebAPIPlugin などが提供する API に OAuth を使用してアクセスしようとすると OAuth 署名の検証に失敗してエラーとなる。</p>
<p>その際に、Apache の error_log には下記のようなエラーが記録される:</p>
<pre>
[Mon Apr 25 09:08:16.854133 2016] [fcgid:warn] [pid 27166:tid 139768981554944] [client 10.0.2.2:60103] mod_fcgid: stderr: Invalid signature
</pre>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p><a class="source" href="http://redmine.openpne.jp/projects/op3/repository/revisions/43190aa1/entry/lib/vendor/OAuth/OAuth.php#L190">source:lib/vendor/OAuth/OAuth.php@43190aa1#L190</a></p>
<pre><code class="php syntaxhl"><span class="CodeRay"> <span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">function</span> <span class="function">from_request</span>(<span class="local-variable">$http_method</span>=<span class="predefined-constant">NULL</span>, <span class="local-variable">$http_url</span>=<span class="predefined-constant">NULL</span>, <span class="local-variable">$parameters</span>=<span class="predefined-constant">NULL</span>) {
<span class="local-variable">$scheme</span> = (!<span class="predefined">isset</span>(<span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">HTTPS</span><span class="delimiter">'</span></span>]) || <span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">HTTPS</span><span class="delimiter">'</span></span>] != <span class="string"><span class="delimiter">"</span><span class="content">on</span><span class="delimiter">"</span></span>)
? <span class="string"><span class="delimiter">'</span><span class="content">http</span><span class="delimiter">'</span></span>
: <span class="string"><span class="delimiter">'</span><span class="content">https</span><span class="delimiter">'</span></span>;
<span class="exception">@</span><span class="local-variable">$http_url</span> <span class="keyword">or</span> <span class="local-variable">$http_url</span> = <span class="local-variable">$scheme</span> .
<span class="string"><span class="delimiter">'</span><span class="content">://</span><span class="delimiter">'</span></span> . <span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">HTTP_HOST</span><span class="delimiter">'</span></span>] .
<span class="string"><span class="delimiter">'</span><span class="content">:</span><span class="delimiter">'</span></span> .
<span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">SERVER_PORT</span><span class="delimiter">'</span></span>] .
<span class="predefined">$_SERVER</span>[<span class="string"><span class="delimiter">'</span><span class="content">REQUEST_URI</span><span class="delimiter">'</span></span>];
</span></code></pre>
<p>上記のコードは <code>OAuthRequest::from_request()</code> メソッドの冒頭部分であるが、例えば <code>http://sns.example.com:8080/</code> のような URL にアクセスがあった場合は上記の <code>$_SERVER['HTTP_HOST']</code> には <code>sns.example.com:8080</code> の文字列が入る。<br />つまり、この場合の <code>$http_url</code> は <code>http://sns.example.com:8080:8080/</code> という文字列が生成されてしまう。<br />この <code>$http_url</code> は <code>oauth_signature</code> の検証にも使用される文字列であるため、最終的には署名の検証に失敗し不正なリクエストとして扱われることになる。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>この不具合は <code>lib/vendor/OAuth/OAuth.php</code> の問題であるが、 <a class="external" href="https://code.google.com/archive/p/oauth/issues/170">https://code.google.com/archive/p/oauth/issues/170</a> の通り既に報告がされており修正も済んでいる。<br />そのため、<code>lib/vendor/OAuth/OAuth.php</code> を最新の <a class="external" href="https://oauth.googlecode.com/svn/code/php/OAuth.php">https://oauth.googlecode.com/svn/code/php/OAuth.php</a> に置き換えることで当チケットの不具合は解決する。</p>
OpenPNE 3 - Task(タスク) #3394 (New(新規)): JSON APIドキュメントのアクティビティ関連のページに画像投稿・取得のサンプルを追加する
http://redmine.openpne.jp/issues/3394
2013-09-09T09:32:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="概要"></a>
<h3 >概要<a href="#概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-2 status-13 priority-4 priority-default closed" title="Enhancement(機能追加・改善): activity/post.json の画像投稿対応 (Won't fix(対応せず))" href="http://redmine.openpne.jp/issues/3064">#3064</a> によりアクティビティ関連の API で画像投稿や画像取得が行えるような実装となったため、これに合わせて「OpenPNE3 JSON API ドキュメント」(<a class="external" href="http://houou.github.io/api.php/">http://houou.github.io/api.php/</a>) に画像投稿・取得を行うサンプルを追加する。</p>
OpenPNE 3 - Bug(バグ) #3357 (New(新規)): ./symfony cc を実行しても web/cache/ ディレクトリ以下に生成されたキャッシュが削除されない
http://redmine.openpne.jp/issues/3357
2013-06-06T06:40:54Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>ブラウザ等でメンバー画像 (no_image ではない) などユーザーが投稿した画像のサムネイルを表示すると web/cache/ ディレクトリ以下にサムネイル画像のキャッシュが生成されるが、ここに生成された画像が ./symfony cc コマンドによって削除されない状態となっている。</p>
<a name="原因"></a>
<h3 >原因<a href="#原因" class="wiki-anchor">¶</a></h3>
<p>web/cache/ ディレクトリのキャッシュ削除は opApplicationConfiguration::clearWebCache() メソッドによって行われていた。このメソッドは task.cache.clear イベントの発生によって駆動するよう設計されているが、現状 task.cache.clear イベントは下記の理由により発生する事がないため、結果として一部のキャッシュが削除されない現象が発生している。</p>
<p>task.cache.clear イベントは ./symfony cc コマンド (sfCacheClearTask クラス) 実行時に <strong>アプリケーション毎に</strong> (pc_frontend, pc_backend, mobile_frontend など) 複数回呼び出されるイベントである。その仕組みは、symfony標準のディレクトリ階層の</p>
<ul>
<li>cache/
<ul>
<li>pc_frontend/
<ul>
<li>prod/</li>
<li>dev/</li>
</ul>
</li>
<li>pc_backend/
<ul>
<li>...</li>
</ul></li>
</ul></li>
</ul>
<p>に基づいて、 <strong>cache/ ディレクトリ直下</strong> に存在するアプリケーション名 (この場合、pc_frontend と pc_backend が存在する) ごとに task.cache.clear イベントを発生させるものとなっている。<br />しかし現状のOpenPNEでは、 <a class="issue tracker-1 status-5 priority-5 priority-high3 closed" title="Bug(バグ): Can't execute openpne:execute-mail-action bacause of permisson of cache/cli directory (Fixed(完了))" href="http://redmine.openpne.jp/issues/957">#957</a> の修正によって cache/ ディレクトリの階層構造がUNIXユーザー単位で分離されるようになり</p>
<ul>
<li>cache/
<ul>
<li>www-data/
<ul>
<li>pc_frontend/
<ul>
<li>dev/</li>
<li>prod/</li>
</ul>
</li>
</ul>
</li>
<li>john/
<ul>
<li>pc_frontend/
<ul>
<li>dev/</li>
<li>prod/</li>
</ul></li>
</ul></li>
</ul></li>
</ul>
<p>となっているため、www-data や john といったアプリケーションは存在しないといった判断され task.cache.clear イベントが実行されない。</p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Bug(バグ) #3196 (New(新規)): cacheディレクトリのパーミッションが適切でない
http://redmine.openpne.jp/issues/3196
2012-09-11T06:55:03Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="現象"></a>
<h3 >現象<a href="#現象" class="wiki-anchor">¶</a></h3>
<p>現状の実装では、cache ディレクトリ内のファイルは 0666 (rw-rw-rw-)、ディレクトリは 0777 (rwxrwxrwx) と過大な権限が設定されている。この実装については、</p>
<p><a class="external" href="http://trac.openpne.jp/ticket/3246#comment:7">http://trac.openpne.jp/ticket/3246#comment:7</a></p>
<blockquote>
<p>r10242, r10244, r10245 で修正しました。</p>
<p>基本的には symfony 側もしくは OpenPNE 側で作成するディレクトリに関しては 0777 、ファイルに関しては 0666 というパーミッションになるように修正をおこなっています。</p>
<p>この修正は正当なユーザ以外のファイル・ディレクトリに関する操作を許してしまうので、セキュリティ面では弱くなってしまいます。これはあくまでより多くの環境で使用していただくための措置であり、決して恒久的な対処であってはならないことを念頭に置かねばなりません。</p>
</blockquote>
<p>と書かれており、適切なパーミッションへの修正が必要である。</p>
<a name="修正内容"></a>
<h3 >修正内容<a href="#修正内容" class="wiki-anchor">¶</a></h3>
<p>修正内容を記入</p>
OpenPNE 3 - Enhancement(機能追加・改善) #2045 (New(新規)): #1482 の新パスワード仕様の使用可否を設定できるようにする
http://redmine.openpne.jp/issues/2045
2011-05-02T17:11:17Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p><a class="issue tracker-2 status-1 priority-5 priority-high3 overdue parent" title="Enhancement(機能追加・改善): Enhancement for Password (パスワードの仕様変更) (New(新規))" href="http://redmine.openpne.jp/issues/1482">#1482</a> の新パスワード仕様を無効にする設定を追加</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<p>OpenPNE.yml に password_through_phpass (デフォルト: true) を追加</p>
opWikifyPlugin - Enhancement(機能追加・改善) #1888 (New(新規)): interwiki.ymlで1つのprefixに対してPC向けとmobile向けでU...
http://redmine.openpne.jp/issues/1888
2011-01-24T11:14:57Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-概要"></a>
<h3 >Overview (概要)<a href="#Overview-概要" class="wiki-anchor">¶</a></h3>
<p>interwiki.ymlでリンク先の設定をpc_frontendとmobile_frontendで書き分けられない。<br />例えば、Wikipediaへのリンクを設定する場合に「pc_frontendからは <a class="external" href="http://ja.wikipedia.org/wiki/%s">http://ja.wikipedia.org/wiki/%s</a> へのリンクに変換し、mobile_frontendからは <a class="external" href="http://ja.m.wikipedia.org/wiki/%s">http://ja.m.wikipedia.org/wiki/%s</a> へのリンクへ変換する」といった設定をすることができない。</p>
<a name="Spec-仕様"></a>
<h3 >Spec (仕様)<a href="#Spec-仕様" class="wiki-anchor">¶</a></h3>
<pre>
- wp:
url: 'http://ja.wikipedia.org/wiki/%s'
enable_pc: true
enable_mobile: false
- wp:
url: 'http://ja.m.wikipedia.org/wiki/%s'
enable_pc: false
enable_mobile: true
</pre><br />納得の行く書き方が思いつかない。思いついたら着手する。
OpenPNE 3 - Bug(バグ) #1855 (New(新規)): cache以下のディレクトリがユーザ毎に完全に分離できていない
http://redmine.openpne.jp/issues/1855
2010-12-17T07:01:26Z
Youichi Kimura
kim.upsilon@bucyou.net
<a name="Overview-現象"></a>
<h3 >Overview (現象)<a href="#Overview-現象" class="wiki-anchor">¶</a></h3>
<p>symfony コマンドを使用してタスクを実行すると、キャッシュディレクトリにユーザ毎に生成されるディレクトリを無視して ./cache/config/OpenPNE.yml.php や ./cache/project_autoload.cache のようなファイルが生成されてしまいます。</p>
<a name="Causes-原因"></a>
<h3 >Causes (原因)<a href="#Causes-原因" class="wiki-anchor">¶</a></h3>
<p>ユーザ毎の sf_cache_dir の変更は opApplicationConfiguration::setCacheDir() で行われていますが、symfony コマンドでのタスクの実行ではタスクが実行されるまでの初期化中に opApplicationConfiguration が使われていません。そのため、sf_cache_dir への変更が行われないままキャッシュが生成されてます。</p>
<a name="Way-to-fix-修正内容"></a>
<h3 >Way to fix (修正内容)<a href="#Way-to-fix-修正内容" class="wiki-anchor">¶</a></h3>
<p>opApplicationConfiguration::setCacheDir() メソッドを opProjectConfiguration クラスに移動する</p>