これは、ASP(Active Server Pages) & WSH などで利用できる COM相互運用コンポーネントです

多分...


はじめに
GeoIP では、COM からもアクセスできましたが、2019年現在、GeoIP はサービス提供は終了し、次の GeoIP2 では COM からアクセスできるようなライブラリは提供されていません。
よって、.NET Frameworkのライブラリ(MaxMind.Db.dll)を COM(ASP/WSH/ActiveScript) からアクセスできるようにしたライブラリを作ってみました。

これは、VisualBASIC.NET + .NET Framework4.0 で作成しました。

JSON形式のデータ処理のためにNewtonsoft.Json.dllを使用しています。 GeoIP2 アクセスのためにMaxMind.Db.dllを使用しています。
使用方法
  1. .NET Framework4.0 の実行環境が必要です
  2. ファイル(sGeoIP2Com.lzh)をダウンロードします。
  3. ダウンロードしたファイルを解凍しします。
    (LHA は、吉崎栄泰氏が、著作権を所有)
  4. sGeoIP2Com.dll,Newtonsoft.Json.dll,MaxMind.Db.dll を任意のディレクトリにコピー。
  5. デーダースの最新版を「GeoIP2 Downloadable Databases」からダウンロードして、解凍して、任意のディレクトリにコピー
    開発環境では無償版の GeoIP2-Lite の GeoLite2-City.mmdb を使った。
  6. コピーされたディレクトリで、UACな管理者権限で RegAsm.exe を実行して sGeoIP2Com.dll をレジストリに登録。
    1. C:\Windows\Microsoft.NET\Framework\v4.≪細かいバージョン≫\RegAsm.exe ≪フルパス≫sGeoIP2Com.dll /tlb /codebase
    2. C:\Windows\Microsoft.NET\Framework64\v4.≪細かいバージョン≫\RegAsm.exe ≪フルパス≫sGeoIP2Com.dll /tlb /codebase
  7. 以上で、
    VBScript,JScript,VisualBASIC などの ActiveX テクノロジで、この COM相互運用コンポーネントを利用可能。



使い方(VBScript を例にして...)
基本的には
  1. オブジェクトを生成{CreateObject()}
  2. ≪オブジェクト変数≫.DBFilePath プロパティでデータベースファイル(GeoLite2-City.mmdb)を指定
  3. ≪オブジェクト変数≫.Execute(≪IPアドレスの文字列≫) でJSON全体が返る
  4. 一度、Executeすれば・・・
  5. ≪オブジェクト変数≫.ToString() で簡易表現が返る
  6. または、≪オブジェクト変数≫.GetProperty(≪jPath≫) で上記の JSON の特定のプロパティだけ返る
  7. Executeする前に、≪オブジェクト変数≫.lang プロパティで、出力言語を指定する事も可能(既定は「jp」)
  8. オブジェクトを解放{Nothing キーワード}

ってな感じです。


CreateObject に渡す文字列
sGeoIP2Com.sGeoIP



アンインストール方法
RegAsm.exe コマンドでアンレジスト(/unregister)して、当該ファイルを削除するだけです。


免責など
修正BSDライセンスで配布します。


DownLoad(sGeoIP2Com.lzh as 224,358byte) (sGeoIP2Com.lzh.base64)


変更履歴



COM メソッド一覧


DBFilePath As String
内容 データベース(GeoLite2-City.mmdb)のファイルパスを指定する。開発は無料版の GeoIP2-Lite で行った。


lang As String
内容 レスポンスの言語。既定は「jp」


response As Newtonsoft.Json.Linq.JToken
内容 レスポンス。Execute() 関数を実行すると実体ができる


Execute(str As String) As String
内容 引数も IPアドレスでデータベースを検索し、地域を推定する
その後、response プロパティにも結果を格納する
引数 文字列の IPアドレス
戻り値 JSON 形式の文字列


ToString() As String
内容 結果を簡易的に返す


GetProperty(Path As String) As String
内容 Me.response から、引数の jPath に応じた値を返す
引数 JSON Path
戻り値 JSON形式の Me.response の jpath のカラムの値



mail to active@window.goukaku.com