2019/06/26 16:55 JST

Geeklog Japan Forums

Geeklog 2.2 を本家からインストールアップグレードしても問題ありませんか?


状態: オフライン

OMAL

Forum User
Active Member
登録日: 02/14/18
投稿数: 32
現在、日本語版ギークログ2.1.3を使用しています。

記事投稿で、セッションタイム20分が過ぎると、セーブボタンを押しても編集中だった内容が無くなってしまうバグが、バージョン2.1.3にあるようで、サイトに対し修正をかけようとしています。再現性を見てみましたが、ローカル環境などではセッション切れ後の再ログインセーブは機能しているようですが、プロダクションサイトでは再ログインでされているはずのセーブはされていませんでした。

本家のバージョン2.2ではバグフィックスがなされているらしいので、まずはそれをインストールしたいのですが、日本語版ギークログ2.1.3のシステムを本家2.2にアップグレードは可能でしょうか? 問題が少々深刻なので結構急いでいます。

何か注意事項がありましたら教えてください。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
一定時間をすぎてセーブボタンを押すと、再ログインを要求され、管理者アカウントでログインすると保存されているとおもいますが、そうならなかったでしょうか。
アドバンストエディターを利用する場合は保存されません。

lib-security.phpのSEC_checkToken() を開発期間に限って、無効にしてはいかがでしょうか。

PHP Formatted Code

function SEC_checkToken()
{
return true; <=== 追加
 


本家版へのアップデート問題ないとおもいます。

Geeklog 2.2はAssist dataBox userBox Custommenu Autotag すべてhiroronさんで2.2対応完了していますが、
IVYWE版へすべて取り込んでいません。今週中には取り込みます。

https://github.com/hirorongl/assist

custommenu:
https://github.com/ivywe/geeklog-ivywe/commits/Geeklog2.1.3

dataBox, userBox
https://github.com/hirorongl/box

状態: オフライン

OMAL

Forum User
Active Member
登録日: 02/14/18
投稿数: 32
記事投稿で、セッションタイム20分が過ぎると、セーブボタンを押しても編集中だった内容が無くなってしまうバグの件ですが、質問当時は結局、タイムアウトの時間を長くして対処しました。 で、このバグは質問当時はローカルでは再現性がなく問題なく、オンラインサーバーでのみのバグでしたが、最近ローカルで作業したらまた発生していました。バージョンは依然2.1です。 で、記事投稿の中のメニューの、記事をキャッシュするというオプションをあらかじめコンフィグで-1に設定したら、バグが出なくなりました。これまではデフォルトの0にしていました。 以上、参考までに。 この辺、v2.2で直っているといいのですが。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
lib-security.phpのSEC_checkToken()でエラーを返すところを、無効にしておいてください。SEC_checkToken()でチェックさせるのにこしたことはありませんが、実際には、常時エラーを返すなど、このチェックがあまり現実的でない場合があります。
PHP Formatted Code
function SEC_checkToken()
{
    global $_CONF, $LANG20, $LANG_ADMIN;
         return true;
....

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
書込みのテストです。

状態: オフライン

OMAL

Forum User
Active Member
登録日: 02/14/18
投稿数: 32
Quote by: Ivy

lib-security.phpのSEC_checkToken()でエラーを返すところを、無効にしておいてください。SEC_checkToken()でチェックさせるのにこしたことはありませんが、実際には、常時エラーを返すなど、このチェックがあまり現実的でない場合があります。


PHP Formatted Code
function SEC_checkToken()
{
    global $_CONF, $LANG20, $LANG_ADMIN;
         return true;
....



修正は、
PHP Formatted Code
function SEC_checkToken()
{
         return true;
}
 

にするということでよろしいでしょうか?
それと、これだとちょっとあれなので、この関数がセッション切れと判断したら管理者に通知させるという方法で様子を見ようかと思うのですが、その場合、どうしたらよいでしょうか?例えばメールで通知を考えていますが、その場合どういうコードを入れたらいいですか?
PHP Formatted Code

function SEC_checkToken()
{
    global $_CONF, $LANG20, $LANG_ADMIN;

    if (SECINT_checkToken()) {

        // if this was a recreated request, recreate $_FILES array, too
        SECINT_recreateFilesArray();

        return true;
    }

    // Token not valid (probably expired): Ask user to authenticate again
    // Note: Currently Only Works with User Accounts that do not remotely login
    if (!empty($_USER['remoteservice']) && (($_USER['remoteservice'] == 'openid') || (substr($_USER['remoteservice'],0,6) == 'oauth.'))) {
        $display = COM_showMessageText($LANG_ADMIN['token_expired_remote_user']);
    } else {
        $returnurl = COM_getCurrentUrl();
        $method = strtoupper($_SERVER['REQUEST_METHOD']);
        $postdata = serialize($_POST);
        $getdata = serialize($_GET);
        $files = '';
        if (!empty($_FILES)) {
            // rescue uploaded files
            foreach ($_FILES as $key => $f) {
                if (!empty($f['name'])) {
                    $filename = basename($f['tmp_name']);
                    move_uploaded_file($f['tmp_name'],
                        $_CONF['path_data'] . $filename);
                    $_FILES[$key]['tmp_name'] = $filename; // drop temp. dir
                }
            }
            $files = serialize($_FILES);
        }

        $display = COM_showMessageText($LANG_ADMIN['token_expired'])
            . SECINT_authform($returnurl, $method, $postdata, $getdata, $files);
    }
    $display = COM_createHTMLDocument($display, array('pagetitle' => $LANG20[1]));
    // ここに通知のプログラムを入れたい
 return true;
}
 


よろしくお願いします。

状態: オフライン

Ivy

Site Admin
Admin
登録日: 01/01/04
投稿数: 5907
場所:Tokyo
PHP Formatted Code
function SEC_checkToken()
{
         return true;
}


これで良いです。
token checkは、編集作業が必要な時だけ無効にして、運用モードでのみ有功にすれば十分です。
サイトで、コメント入力、掲示板入力、カード番号などの入力など、セキュリティを担保しなければならない場合には有功にしておくと良いです。
トークンエラーになったら再認証して保存すれば良いだけです。

エラー保存は良いのですが、エラーファイルが膨大に名てしまってディスクを圧迫するおそれもあるので常時エラー書込みはあまりおすすめしません。

状態: オフライン

OMAL

Forum User
Active Member
登録日: 02/14/18
投稿数: 32
token checkは、編集作業が必要な時だけ無効にして、運用モードでのみ有功にすれば十分です。 サイトで、コメント入力、掲示板入力、カード番号などの入力など、セキュリティを担保しなければならない場合には有功にしておくと良いです。 トークンエラーになったら再認証して保存すれば良いだけです。
token checkを無効にしても、セッションは設定した時間が来たら切れてくれるという理解でよろしいでしょうか? ログインから自動でセッションが切れるまでの時間は Geeklogの設定-その他-クッキーのセッションの有効期限の値で合っていますでしょうか?

時刻はすべて JST , 現在の時刻は 04:55 PM

  • 通常
  • 注目トピック
  • ロック済
  • 新着
  • 注目トピック 新着
  • ロック済トピック 新着
  •  ゲストユーザの投稿を見る
  •  ゲストユーザ投稿可能
  •  一部のHTMLを許可
  •  バッドワードをチェック