opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

by 堀田 海月 -
Number of replies: 8

しのさんに指摘されて気が付きましたが、JOGにつなぐハイパーグリッドのSimのバイナリが公式0.9.0.1Releaseの場合、プロフィールがうまく表示されない問題が出ていました。暫定ですが解決できましたので投稿します。

現状残ってるバグは、ハイパーグリッドのSim上では、表示はできるけど、編集と保存はできないことです。

 

  1. JOGのモジュールのソースをダウンロードしてProfileモジュールをビルド、binフォルダに出来た「OpenSimProfile.Modules.dll」をSimのbinフォルダに入れます。(この投稿に同じものを添付しておきます ※ウィルスチェック済み)
  2. 同じbinフォルダ内のOpenSim.iniを変更します。
    • [UserProfiles]の項目を[UserProfiles]も含めて全てコメントアウトします(先頭に半角のセミコロン;を付ける)。
    • 一番下に[Profile]を追加します(JOGで配布されてるバイナリを参考にしてOpenSim.iniを編集済みの場合、すでに書き込まれていると思います)。
    • そのすぐ下に以下の記述を加えます。
      Module = "OpenSimProfileModule"
      ProfileURL = "http://www.jogrid.net/wi/blocks/modlos/helper/profile.php" 
    • JOGバイナリに沿ってiniを書き換えてる場合、ProfileURL =...はすでに書き込んであるかもしれませんので、Module =...の行を追加して下さい。
  3. binフォルダのさらに先のconfig-includeフォルダにある、GridHypergrid.iniを変更します。
    • 一番最後に以下の記述を書き加えます。
      [Profile]
          Module = "OpenSimProfileModule"
      

※添付したOpenSimProfile.Modules.dllは安全のため圧縮フォルダに入れています。WindowsならそのままExplorerで開けます。LinuxやBSDの場合はunzipコマンドで解凍して下さい。

In reply to 堀田 海月

Re: opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

by Shinobar Martinek -

おつかれさまです。しかし、私の環境では再現できません。

添付いただいたOpenSimProfile.Modules.dllを bin に入れ、 OpenSim.ini, GridHypergrid.ini  を変更したところ、次に始まるエラーで止まります。

14:19:42 - [OSPROFILE]: OpenSimProfile module is activated
14:19:42 - [OSPROFILE]: Initialising DB
14:19:42 - Fatal error: System.Exception: [OSPROFILES DATA]: Error initialising MySql Database: System.ArgumentException: Keyword not supported.
Parameter name: uri
  at MySql.Data.MySqlClient.MySqlConnectionStringBuilder.GetOption (System.String key) [0x00014] in <0004ab8b375b422f9000ac25a68089d9>:0

うちの環境が MySQLを使わないからでしょう。しかし、OpenSim側が MySQLを使っているかどうかがProfileを使う条件になるのは不思議です。

本家公式配布の opensim-0.9.0.1 Release バイナリをベースに、JOG配布 0.9.0Devバイナリに同梱のOpenSimProfile.Modules.dllを bin に入れ、 OpenSim.ini,GridHypergrid.iniなどもJOG 0.9.0Devとおなじものでも アバターのプロファイルは表示されます。プロファイルを編集できないことは同じです。Shinobar Annexが現在その状態です。

ちなみに実験は Ubuntu 18.04  mono 5.14.0 上、および Puppy Linux  tahr(Ubuntu 14.04相当) mono 3.2.8上の2つの環境で行いました。MySQLは使っておりません。

In reply to Shinobar Martinek

Re: opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

by 堀田 海月 -

お疲れ様です。

気になって、今回ビルドしたJOGが配布してるモジュールのソースの0.9.0版のソースと0.9.1版のソースを見比べてみました所、0.9.1の方には、プロフィール画面で日本語が通るべき部分を表す各変数にConvert.ToBase64String(Enc.GetBytes([テキスト]))関数が挟み込まれていましたが、0.9.0のソースにはそれがありませんでした。(それ以外のソースコードは全く同一)そこでためにし0.9.1のソースをビルドして、佐久島のOpenSimProfile.Modules.dllと入れ替えた所、表示及び編集もできるようになりました。

ここからはあくまで想像ですが、Convert.ToBase64String(Enc.GetBytes([テキスト]))によるBase64変換がないために、JOGでBase64に変換されてたSQL文を処理できず(SQLiteにしろMySQLにしろ、SQL命令の構文は基本同じ)エラーになってた可能性があります。こちらでエラーが出なかった理由がちょっとわかりませんが。

 

一応今回ビルドしたOpenSimProfile.Modules.dllもこの投稿に添付しておきます。

 

In reply to 堀田 海月

Re: opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

by 堀田 海月 -

自身の勉強も兼ねて、C#における文字列のBase64へのエンコード及びデコードの実装方法を解説したサイトを見つけたのでリンクを張って置きます。

「Base64形式の文字列に変換する、Base64形式の文字列を復元する」

https://dobon.net/vb/dotnet/string/base64.html

In reply to 堀田 海月

Re: opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

by Shinobar Martinek -

おめでとうございます。でも、うちではやはりエラーとなります。

JOGのProfileモジュールのソースを見ると、v0.8.1に無かった MySQLOpenSimProfilesData.cs なるものが v0.9.0 以降に追加されています。DBはMySQL決め打ちになっていて、これがうちの SQLite環境でエラーとなる原因のようです。

DBの初期化処理はv0.8.1にもあるので必要なのでしょう。しかし v0.9.0以降なぜ MySQL決め打ちなのか疑問です。

In reply to Shinobar Martinek

Re: opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

by 堀田 海月 -

0.9.1のソースコードを見てると、MySQLOpenSimProfilesData.csで定義された、OpenSim.Data.MySQLクラスのオブジェクトが呼び出されて、MySQLサーバーとの接続を試みてますが、このあとこのオブジェクトが使われている形跡が全くありません。

そこで、関連部分を全てコメントアウトした上でビルドしましたら、1ワーニング(OpenSim.Data.MySQLクラスが値を保存しているだけの変数。関連コードをコメント化したので使われないまま残ってしまった。)を除いてノーエラーでビルドできました。

ただしこちらではすぐには検証できないのと、本当にこれで正しいのかわからないのと、コメント化したコードはそれほどないにもかかわらずバイナリが1/3にも減ってるのでちょっと怖いのですが、添付しますので人柱お願いします(ωV_vω)ペコ

0.8系のソースも見ましたが名前定義とかで大幅に変わっているのでそのままでは動かない可能性があります。

In reply to 堀田 海月

Re: opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

by Shinobar Martinek -

やってくれちゃうじゃないですか、えくすさん。

opensim-0.9.0.1 Release に JOG OpenSim-0.9.0Dev からJOG独自モジュールを入れた環境で、えくすさんの OpenSimProfile.Modules_not_MySQL_test.zip を解凍したものを binに入れて OpenSimProfile.Module.dll を入れ替え。GridHypergrid.ini にはすでに[Profile]のセクションがあったので、その部分(54-55行目)を書き換え。

[Profile]
    Module = "OpenProfileModule"

[Profile]
    Module = "OpenSimProfileModule"

OpenSim.iniはJOG 0.9.0Devのまま。(最後のほう)

[Profile]
    ; Change it to your own HTTP server to have the Profile server work
    ProfileURL = http://www.jogrid.net/wi/blocks/modlos/helper/profile.php

結果は...大成功!heart

アバターのプロファイルは正しく表示され、編集、追記もできました。日本語もOKです。

DBの初期化処理というのは、新しくアバターを作ったときなのでしょうか。その点はテストできてませんが、ほぼ完璧と言えましょう。

お疲れ様です。ありがとうございました。パッチ公開してくださいね。

In reply to Shinobar Martinek

Re: opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

by 堀田 海月 -

おめでとうございます^^

ヨーダさんがフォーラムを読んでくれてて、インワで話したのですが、ふみさんがMySQLでなにかやろうとしてて、初期化まで入れたけど、忙しくてそのまま放置してるのでは?って結論に達しました(^_^;)

ビルド時にまだワーニングが出る状態なので、そこも直した上でパッチ公開したいと思います。

In reply to 堀田 海月

Re: opensim0.9.0.1releaseのプロフィールの問題解決(暫定)

by Iseki Fumikazu -

どうも代わりにソースを読んでくださってありがとうございます.m(__)m

もう結構いろいろと忘れているので助かります.

最近さぼり気味でしたが,0.9.0.1 のバイナリーもこれから UPします.

よろしくお願いします.