We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 26012
    • 324 Posts
    soushiさん、dainitiさん こんにちは
    Quote from: soushi at Jan 30, 2009, 03:40 PM

    共有SSLは少しsslSwitcherの改造が必要ですが、なんとかなりそうな気がしています。
    こちらは検証できたら報告します smiley
    sslSwitcherのパラメータでSSLサーバのURLを指定できるようにして、WayFinderやDittoのテンプレートで
    PHxを使って分岐させるか、スニペット化して判断してやればそれで終わり?

    WayFinderやDittoのテンプレート処理イメージ)
    if (strpos([+sslSwitcher+],’SwitchHTTP to HTTPS’) !== False) {
    $rtnstr = ’<li[+wf.classes+]><a href="[~s[+wf.docid+]~]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>’ ;
    } else {
    $rtnstr = ’<li[+wf.classes+]><a href="[[+wf.docid+]~]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>’ ;
    }

    SSL化したいドキュメントのテンプレート変数(UseHTTPS)をチェックすれば終わり?(すいません、上記はsslSwitcherの中でやってる処理でした)。

    これならコアに一切手を入れずにいけるんで、まさに汎用的な解です。

    http://modxcms.com/forums/index.php/topic,32384.msg197267.html#msg197267  で、
    sslSwitcherの機能をろくに検証もせず軽はずみなレスをしてしまったことが、結果的にdainitiさんを混乱させてしまったこと、
    大変、反省してます。
      • 28073
      • 164 Posts
      dainitiさんすいません、テンプレートの話が唐突でしたね :’(
      対象としたのは[チャンク]mh.InnerRowTplです。
      Wayfinderの動的に表示されるサブドキュメント一覧部分のテンプレートです。

      あとsslSwitcherにちょっとバグがありました。
      dainitiさんのsslSwitcherが動かないのはそのせいかもしれません :’(
      それでそのバグと共有SSLに対応したバージョンを作ってみました。
      このレスに添付しています。

      使い方は従来どおりで共有SSLを使いたい場合はプラグインの設定欄に以下の文字を入力します。

      &httpDomain=http domain;string;
      &httpsDomain=https(SSL) domain;string;
      


      するとhttpの時のドメイン、https(SSL)の時のドメインを入力するテキストボックスが表示されるので、それぞれドメインを入力します。
      これでリダイレクトする際、URLを生成する際にこのドメインを使って生成してくれるようになります。
      僕のほうで検証したページです↓

      http://tst.ayd.jp/modx/v0963/index.php?id=15
      ※新しいsslSwitcherを入れてます。
      ※[チャンク]mh.InnerRowTplを前回投稿した内容のとおりに変更しています。
      ※[チャンク]mh.RowTplも同様に修正しています。
      ※サンプルサイトのAjax(docid=16)ページだけ[SwitchHTTP to HTTPS]と[UseHTTPS]ともにonにしています。

      画面のAjaxへのリンクをクリックするとSSLページにリダイレクトされます。
      また、WayfinderのFeaturesにマウス乗せて現れるリンクでは最初からhttpsドメインのURLに変わっています。
      (Wayfinderから出されるリンクはhttpとhttpsのページを自由に行き来していると思います)
      問題なさそうでしたら1.03としてリリースします smiley

      あとsslSwitcherってちょっとややこしいですよね。
      自分でもどう説明していいかわかってないので、readmeもわけのわからない事になってますorz
      [SwitchHTTP to HTTPS]は対象ドキュメントにアクセスしした際に、強制的にhttpsページに切り替える機能です。
      [UseHTTPS]は[~s数字~]を使ってURLを生成する際の挙動を制御します。
      ※[~s数字~]はsslSwitcher独自の機能です。
      [~数字~]と違い、SSL、非SSLページを考慮したURL作成を行います。
        • 6350
        • 421 Posts
        Quote from: soushi at Jan 31, 2009, 12:36 AM

        dainitiさんのsslSwitcherが動かないのはそのせいかもしれません :’(
        それでそのバグと共有SSLに対応したバージョンを作ってみました。
        このレスに添付しています。
        動きました laugh 今回は専用SSL のみでの確認です。

        Quote from: soushi at Jan 31, 2009, 12:36 AM

        http://tst.ayd.jp/modx/v0963/index.php?id=15
        ※新しいsslSwitcherを入れてます。
        ※[チャンク]mh.InnerRowTplを前回投稿した内容のとおりに変更しています。
        ※[チャンク]mh.RowTplも同様に修正しています。
        ※サンプルサイトのAjax(docid=16)ページだけ[SwitchHTTP to HTTPS]と[UseHTTPS]ともにonにしています。
        [チャンク]mh.RowTpl の内容も教えてください。[チャンク]mh.InnerRowTpl と同じもの入れたらリンク先がおかしいです。それに Wayfinder のメニュー自体が消えてしまいリンク位置の確認が手探りでの状態です。

        確認中にサーバーがダウンしてしまいました。Joesってボロ・・しばらく確認できなさそうです。

        Quote from: soushi at Jan 31, 2009, 12:36 AM

        画面のAjaxへのリンクをクリックするとSSLページにリダイレクトされます。
        また、WayfinderのFeaturesにマウス乗せて現れるリンクでは最初からhttpsドメインのURLに変わっています。
        (Wayfinderから出されるリンクはhttpとhttpsのページを自由に行き来していると思います)
        問題なさそうでしたら1.03としてリリースします smiley
        こちらは、正常にリンクされています。

        Quote from: soushi at Jan 31, 2009, 12:36 AM

        あとsslSwitcherってちょっとややこしいですよね。
        自分でもどう説明していいかわかってないので、readmeもわけのわからない事になってますorz
        [SwitchHTTP to HTTPS]は対象ドキュメントにアクセスしした際に、強制的にhttpsページに切り替える機能です。
        [UseHTTPS]は[~s数字~]を使ってURLを生成する際の挙動を制御します。
        ※[~s数字~]はsslSwitcher独自の機能です。
        [~数字~]と違い、SSL、非SSLページを考慮したURL作成を行います。
        ようやく理解できました。でも [SwitchHTTP to HTTPS] をみて切り替えてもよさそうとか・・思ってしまいます。
          • 6350
          • 421 Posts
          Quote from: soushi at Jan 31, 2009, 12:36 AM

          使い方は従来どおりで共有SSLを使いたい場合はプラグインの設定欄に以下の文字を入力します。
          &httpDomain=http domain;string;
          &httpsDomain=https(SSL) domain;string;
          

          するとhttpの時のドメイン、https(SSL)の時のドメインを入力するテキストボックスが表示されるので、それぞれドメインを入力します。
          これでリダイレクトする際、URLを生成する際にこのドメインを使って生成してくれるようになります。
          僕のほうで検証したページです↓

          http://tst.ayd.jp/modx/v0963/index.php?id=15
          共有SSL のアドレス ss1.coressl.jp/xxx.s78.coreserver.jp
          ドメインのアドレス  xxx.s78.coreserver.jp

          上記のように設定してトップ画面より [~s6~] へリンクで確認しました。
          リンク先のアドレスは正常に https://ss1.coressl.jp/xxx.s78.coreserver.jp/modx/contact-us.html と表示されますがリンク先をクリックすると「自動転送がリンクしています」となりタイムアウトします。

          coreserver では HTTPS が取れないので HTTP_VIA での代用になるようです。

             if( !(isset($_SERVER[’HTTPS’]) && $_SERVER[’HTTPS’] != ’off’)
               && strpos($tv[’sslSwitcher’],’SwitchHTTP to HTTPS’) !== False ){
               $arg= ’’;

          このあたりを

             if(( !(isset($_SERVER[’HTTPS’]) && $_SERVER[’HTTPS’] != ’off’) || (!isset($SERVER[’HTTP_VIA’]))
               && strpos($tv[’sslSwitcher’],’SwitchHTTP to HTTPS’) !== False ){
               $arg= ’’;

          とかまで、対応してもらうのは難しいでしょうか :’(
            • 6350
            • 421 Posts
            専用SSL サーバー復旧しました。
            先ほどリンクがおかしいといっていたのはプラグインに設定する http のアドレスを間違っておりました。正常にリンクしています。

            共有SSL の coreserver の場合ですが
              if( !(isset($_SERVER[’HTTPS’]) && $_SERVER[’HTTPS’] != ’off’)  を
              if( !(isset($_SERVER[’HTTP_VIA’]) に置換すれば済む話なのでこちらで修正できます。

             でも、HTTPS が動作せず「自動転送がループしています」の原因がわからず長い時間を無駄にしてきました。
             HTTP_VIA の存在を ZeRo さんに教えてもらえわなければ永久に解決できなかった重要な内容です。
             たぶん、このあたりがネックでプラグインの利用を断念している人はかなり多いのではと思っています。
             自分もそうでしたから =^_^=

             また、現在のテンプレートでは coreserver の場合に wayfinder のリンク先が正常に設定されないのは今までどうりです。
             共有SSL のアドレスが ss1.coressl.jp/xxx.s78.coreserver.jp と / で区切られているのでこの部分でいままで苦労してき部分です。 現在のテンプレート方式ではhttp://ss1.coressl.jp/modx/ のようなリンクしか取れないようです。

             まあ、この部分は自分で考えた方法で対応できそうなので wayfinder.inc.php の変更で対応することにします。

             mh.RowTpl の書き方わかりました。専用SSLでは問題ないようです。
              • 6350
              • 421 Posts
              すんません。HTTP_VIA の書き換えを2箇所目間違えて
                 if( isset($_SERVER[’HTTPS’]) && $_SERVER[’HTTPS’] != ’off’){
                   ↓
                 if( !isset($_SERVER[’HTTP_VIA’){
              になってました。

              そのため Wayfinder のリンクがおかしくなっていたようです。
              ただし、現在のページが SSL の場合だけ SSL ページへのリンクが http://ss1.coressl.jp/modx/ となってしまうようです。

              どこを直せばいいのか教えてもらえると確認できます。

              わかりました62行目を下のように書き換えたところ正常にリンクできるようになりました。
                foreach( $ssldoc as $key => $val){
              if( isset( $modx->aliasListing[$key]) ){
                if( $sslon == $val ){
                  $url = $modx->makeUrl($key);
                                ↓
                  $url = ’https://’.$httpsDomain . $modx->makeUrl($key);

              専用SSL サーバがまたダウンしているのでそちらでは今、確認できません。
                • 6350
                • 421 Posts
                foreach( $ssldoc as $key => $val){
                if( isset( $modx->aliasListing[$key]) ){
                if( $sslon == $val ){
                if ($httpsDomain != ’’) {
                $url = ’https://’.$httpsDomain . $modx->makeUrl($key);
                } else {
                $url = $modx->makeUrl($key);
                }

                }else{

                これであってますか? Joes のボロサーバまだ復旧しません。 :’(
                  • 6350
                  • 421 Posts
                  最終確認、62行目変更・・これでいけるはずです。

                    foreach( $ssldoc as $key => $val){
                      if( isset( $modx->aliasListing[$key]) ){
                        if( $sslon == $val ){
                      $url = $modx->makeUrl($key);
                                                      ↓
                      $url = $modx->makeUrl($key,’’,’’,’full’);

                        }else{

                  現在に至っても coreserver での確認しかできない状態です。
                  joes はどうも 10月に予定していた PHP5 への以降準備を突然始めたのか、本当にダウンしているのかわからん :’(
                  土曜日の夕方から日曜日にかけて常識ではふつうはやらんと思うが。。
                    • 28073
                    • 164 Posts
                    こんにちわ。


                    [チャンク]mh.RowTpl の内容も教えてください。[チャンク]mh.InnerRowTpl と同じもの入れたらリンク先がおかしいです。それに Wayfinder のメニュー自体が消えてしまいリンク位置の確認が手探りでの状態です。

                    失礼しました。
                    もう解決されてるみたいですが、一応[チャンク]mh.InnerRowTplの内容を載せておきます。

                    <li class="category [+wf.classnames+]"><a href="[~s[+wf.docid+]~]" title="[+wf.title+]">[+wf.linktext+]</a>[+wf.wrapper+]</li>
                    


                    Quote from: dainiti at Jan 31, 2009, 02:36 AM

                    coreserver では HTTPS が取れないので HTTP_VIA での代用になるようです。

                    そうですかぁ、coreserver はapache側でSSL処理は行わず上位にSSLアクセラレータでも設置してるのかも知れないですね :’(
                    とういわけで$_SERVERの設定をプラグインの設定で行えるようにsslSwitcher-1.03rc2を用意してみました。
                    この投稿に添付しています。
                    プラグインの設定は以下のようにします。

                    &httpDomain=http domain;string;
                    &httpsDomain=https(SSL) domain;string;
                    &envVal=$_SERVER;string;HTTPS
                    


                    $_SERVERのデフォルトは「HTTPS」にしているので、coreserver の場合は「HTTP_VIA」 にすればいいと思います。

                    Quote from: dainiti at Jan 31, 2009, 07:36 AM

                    そのため Wayfinder のリンクがおかしくなっていたようです。
                    ただし、現在のページが SSL の場合だけ SSL ページへのリンクが http://ss1.coressl.jp/modx/ となってしまうようです。

                    [~s数字~]の挙動はSSL専用の処理を除けば[~数字~]とほぼ同じ挙動をするように設計されています。
                    そのため、SSLのページからSSLのページへのリンクの場合はドメインは追加されず、BASEタグの影響を受けてしまいます。
                    もしBASEタグや[(site_url)]の表示をいじっていたらうまく動かないかもしれません。

                    dainitiさんの修正のように毎回ドメイン付きのフルパスで出力する方法でBASEタグに影響されずURLを生成する事もできますが、個人的には基本は[~数字~]と同じようにBASEタグの挙動にしたがって動くほうがいいかなぁと思っています grin
                    必要であればプラグインのオプションで選択できるようにします。

                    Quote from: dainiti at Jan 31, 2009, 05:44 PM

                    現在に至っても coreserver での確認しかできない状態です。
                    joes はどうも 10月に予定していた PHP5 への以降準備を突然始めたのか、本当にダウンしているのかわからん :’(
                    土曜日の夕方から日曜日にかけて常識ではふつうはやらんと思うが。。

                    通常でしたら事前アナウンスありますよね :’(
                    障害だった場合も速報で「対応中」みたいなアナウンスがあっても言いと思うのですが、、、なんなんでしょうね?
                      • 6350
                      • 421 Posts
                      今回も説明不足で大変ご迷惑をおかけしてお詫びを申し上げます。

                      HTTP_VIA で取得できる内容は以下のようなものです。→ 1.1 ss1.coressl.jp:3128 (squid/2.5.STABLE14)

                      HTTPS とちがって "on" "off" で判断できません。

                      したがって、せっかくつくっていただいた rc2 はむだな事に時間をかけていただき大変恐縮しているしだいです。
                      web で検索すると HTTP_VIA の内容にポート番号も含まれているということが書かれた HPもありますが coreserver に関してはたぶん 3128 の部分がそのポート番号にあたると思われますが HTTPS および SERVER_PORT とちがってプログラム中で書き換えても動作には反映されないはずです。

                      HTTP_VIA は https:// でアクセスした場合のみセットされ http:// でのアクセスでは無効となります。その上 modx のモジュールから実行しても内容が取得できないという厄介な存在です。したがって簡略化のためプログラムでの判断は isset($_SERVER(HTTP_VIA)) となり内容の確認までの必要はないはずです。

                      もちろん SERVER_PORTは常に80でこの情報も利用できません。
                      したがって今回の rc2 は葬ってもらい次回の分を rc2 としていただくようにお願いいたします。

                      文章が長くなって見通しが悪くなりそうなので次の投稿で検証結果を報告します。内容は rc1 を使った結果となります。