最近の更新

2013-03-31
2013-01-11
2009-09-08
2009-07-19
2009-07-18

Latest File Release

Genkidama テスト版 (0.3.4)2009-06-27 05:57

サイドバー

集計サーバ

目的

以下の目的の為、GenkidamaのDHTネットワークとは関係のない所に集計サーバを置きたい。

バージョン管理

新しいバージョンの通知、古すぎるバージョンの拒否などが管理出来るようにしたい。

グローバルIPを取得

UPnPが使えなかった場合、Genkidamaから自力でグローバルIPを取得する手段がないため。

Genkidamaの初期ノードを動的に取得

  • IP&ポート番号の登録
  • 登録されているIP&ポート番号の取得

Genkidama 0.2ではid:syuuのサーバで立ち上げたGenkidamaが決めうちで初期ノードになってるから、そのノード1つがこけるとGenkidamaネットワーク全体が使えなくなる。

そんなのナンセンスだと思うので、改善したい。 Winnyのような初期ノードリストという手段を取るには協力者が足りないので、この際Genkidamaユーザ=初期ノード掲載者にしてしまえ。

利用動向の把握

  • 現在のオンラインユーザ数
  • オンラインユーザ数の推移
  • 動画のアクセス履歴
  • キャッシュのアクセス履歴

いろんな人に利用動向がどうなっているか聞かれるが、現状ではそれを知る術がない。

それではあまりに勿体ないよね、っていう話。

こういう情報が取れればそれをGenkidamaへフィードバックしていったり新たなサービスを作ったりも出来ると思うので、出来るだけ詳しくログを取りたい。

が、ユーザのプライパシーにも配慮しなきゃならない。

取り敢えず、アクセス履歴ではIPアドレス&ポートをハッシュ関数で処理して直接特定出来なくしてから記録すれば良いのではないか。

実現方法

sourceforge.jpのWebホスティングへ置いたCGIでXMLRPCサーバを立てる。

データストアは同じくsourceforge.jpのMySQLを使用する。

使用言語はRuby。

API

version.checkバージョンチェック
tcpPort.check(port)ポート解放チェック
onlineUsers.fetch(version)オンラインユーザのリストを取得
onlineUsers.register(port, version)オンラインユーザ登録
onlineUsers.unregister(port, version)オンラインユーザ登録解除
onlineData.register(port, version, key)オンラインデータ登録
onlineData.unregister(port, version, key)オンラインデータ登録解除
globalIp.probeグローバルIPを取得
nicoVideoAccessLog.append(port, version, videoId, accessMode, cacheUrl)ニコニコ動画のアクセス履歴を記録

DB

online_users

id主キー
datetime日時
addressIPアドレス
portポート番号
versionバージョン番号

online_data

id主キー
datetime日時
hashSHA1(IPアドレス:ポート番号)
versionバージョン番号
keyキー

user_log

id主キー
datetime日時
hashSHA1(IPアドレス:ポート番号)
versionバージョン番号
statusログイン、ログアウト

data_log

id主キー
datetime日時
hashSHA1(IPアドレス:ポート番号)
versionバージョン番号
keyキー
statusadd、remove

nico_video_accesss_log

id主キー
datetime日時
node_hashSHA1(IPアドレス:ポート番号)
versionバージョン番号
video_idビデオID
access_modeアクセス種別(ローカル、DHT、本家)
cache_url_hashSHA1(キャッシュURL)