1月 28

緊急リリース

最近OpenPNEを使って構築されたSNS内でメッセージを利用したスパムが横行しているようで方々から悲鳴が上がっています、主にオープン型で運営されているSNSでの話しだとは思いますが、招待制であっても一旦もぐり込まれ複アカで自分を召還し始めると厄介かもしれませんね、いずれはコアチームが対応してくれるとは思いますが、(PNE3のこともあって忙しそうなので)取り急ぎ簡単なスパムフィルター(ブロッカー?)の実装方法を説明します。
最低限シンプルに書いていますので気の利いた設定などはありません、ある程度PHPが理解できる方であれば色々と応用も利くと思います(もちろんこのままでも動作します)。

スパム対策(業者対策)内容

マイフレンド以外へのメッセージの連続攻撃をブロックします。
※マイフレンドはスパムしないでしょうから。笑

スクリプト修正方法

webapp/modules/pc/do/f_message_send_insert_c_message.php
41行目(PNE2.12.7)へ以下のコードを追加して下さい。

//-----------------------
if ( !db_friend_is_friend($c_member_id_to, $u ) ) {
  $sql = "SELECT r_datetime FROM c_message WHERE c_member_id_from=? ORDER BY c_message_id DESC";
  $unxLast = strtotime(db_get_one($sql,array($u)));
  $difMinute = (time()-$unxLast)/60;
  if ( $difMinute < 10 ) { //10分
    $msg1 = "メッセージはビジー状態です、暫くお待ち下さい。";
  }
}
//-----------------------

何故41行目かと言いますと、この判定は$msg1の初期化後でないと利かないので、
$msg1 = “”;
$msg2 = “”;
の直後が良いと思います。
スパムブロック
※上記のソースは10分以上のインタバルを空けなければ送れない設定です。

注意

このまま利用する場合は十分な検証を行った上で使用して下さい。
マイフレンドからのスパム、一通一通時間を置いて根気よく送られてくるスパムには全く効果はありません。

追記

OpenPNE 2.6.11 での動作確認がとれました、ただしスクリプトの挿入位置が少し違いますので、コメントを参考にして下さい。

Tagged with:
1月 21

Google Analytics的なグラフを装備してみました。
Access Graph(MyNETS)
※画像は、MyNETS1.2です。
とりあえずの所、当月のみの表示ですが、真面目にやれば時間帯表示や年間表示、Google Analyticsのように期間を指定しての表示もできるでしょうし、MyNETSのログにはPC/モバイルのフラグも記録されているので、それぞれ色分けして透過レイヤ表示も可能ですね。

Tagged with:
1月 15

あしあとページって結構スカスカなので、こんなテンプレートを作ってみました。

Windows版Safariでの表示
iPhoneでの表示
画像は、MyNETS1.2へ組み込んだ場合のイメージです、MyFriendマーク:マイフレンドマーク、モバイルアクセスマーク:モバイルアクセスマークの採用で、訪問者の状態がよりわかりやすくなりました。(OpenPNEではモバイルアクセスマークは使えません)

2008/01/19
配色に関する仕様を変更しました、管理画面の「カスタムCSS追加」に以下の4行を追加することで配色の制御が可能になりました。

div.ashiato-cell{
  border: 1px #a5a5a5 solid;
  background-color: #f5f5f5;
}

Download
※OpenPNE2版、MyNETS1.2.0版がセットになっています。

Tagged with:
1月 13

PNE Stationの仕様を決定する為には、使用するAPIの仕様を決めなければならない、OpenPNE公式プロジェクトでも考えてはいるとのことですが、リソース不足ということで中々進まないようですし、PNE3もベータ2まで来て最も忙しい時期なのかもしれません。
というわけで、独自にAPIの仕様を考え中なのです。。。
まぁ今のところ読み出しオンリーで書き込みメソッドは考えていないので気は楽ですが。笑

システムメソッド

system.listMethods
機 能 サポートするメソッド名の配列を取得。
パラメーター なし
戻り値 Array 実装されているメソッド名のString
system.methodHelp
機 能 メソッドの解説を取得。
パラメーター String methodName
戻り値 String メソッドの説明

SNSメソッド

sns.getSiteInfo
機 能 サイト情報を取得。
パラメーター なし
戻り値 String SNS名称

sns.getUserInfo
機 能 ユーザ情報を取得。
パラメーター String userName、String userPassword
戻り値 構造体 :

type element summary
i4 id c_member_id
String nickName ニックネーム
i4 sex 性別(1:Male 2:Female 0:unknown)
ISO.8601 lastAccess 最終ログイン日時
備 考  

sns.getVisitList
機 能 ラストアクセス以降の訪問者情報を取得。
パラメーター String userName、String userPassword
戻り値 次の構造体の配列 :

type element summary
i4 id c_ashiato_id
i4 userId 訪問者のid
String nickName 訪問者のニックネーム
ISO.8601 datetime 訪問日時
String url 訪問者のHOMEを示すURL
備 考  

sns.getMessageList
機 能 未読メッセージの情報を取得。
パラメーター String userName、String userPassword
戻り値 次の構造体の配列 :

type element summary
i4 id c_message_id
String subject メッセージサブジェクト
String nickName 送信者
ISO.8601 datetime 送信日時
String url メッセージのURL
備 考  

sns.getCountVisitor
機 能 訪問者の総数を取得。
パラメーター String userName、String userPassword
戻り値 i4 件数

sns.getCountDiaryNewComment
機 能 ダイアリーの未読コメント数を取得。
パラメーター String userName、String userPassword
戻り値 i4 件数

sns.getScheduleSoon
機 能 スケジュールを取得。
パラメーター String userName、String userPassword、i4 minute
戻り値 次の構造体の配列 :

type element summary
i4 id c_message_id
String title 名称
ISO.8601 start 作成日時
ISO.8601 end 更新日時
i4 flag 1:開始時刻は有効、2:終了時刻は有効、3:開始終了有効
備 考 取得したいスケジュールの期限をminuteに指定。

sns.getManagementCommunityInfo
機 能 管理しているコミュニティの情報を取得。
パラメーター String userName、String userPassword
戻り値 次の構造体の配列 :

type element summary
i4 id c_community_id
String name 名称
i4 memberCount メンバー数
i4 topicCount トピック数
ISO.8601 created 作成日時
ISO.8601 update 更新日時
備 考  

FAULTコード

Code Error message
401 Services are disabled.
402 You can not access this method.
403 Bad login/pass combination.
404 No such data.

typeの説明

Type Summaly
i4, int 4バイト符号付き整数値
boolean 真儀
string 文字列
double 実数値
dateTime.iso8601 日付時刻 (SNSのTimeZoneに基づきます)
base64 BASE64エンコードデータ
array 配列
struct 構造体

問題点、改善点、要望

  • SNSオーナーの管理機能として、メソッド単位に使用可能不可能を設定する管理機能が必要と思われる。
  • SNSオーナーの等の特権ユーザからのみ使える管理者向けメソッドの追加。
  • クライアントを特定する仕組み(特定クライアント以外からのリクエストをシャットアウトする等)。
  • テストツール

    XML-RPC test client
    平行してテスト用のツールも作成中、Windowsアプリの制作(特にWin32API)もブランクがあるので中々大変なのですが徐々に思い出して来たところです、ここまで来たらスクリプトを内蔵させようとか、いっそのことSNSクライアントとしてコンポーネント化してしまおうか?とか色々と思いつくのだけど、これ以上風呂敷を広げると収拾がつかなくなるので考えるのはヤメましょう。。。

    ps.
    そういえばmixiアプリ(OpenSocial)の開発案内が始まりました~!
    mixiデベロッパーセンター

    Tagged with:
    1月 01

    今年の目標。(笑

    • 拡張モジュールの整理。
    • 未公開モジュールの整理公開
      • チャットモジュール(mixiエコークローン)
      • MyNETSのテーブルプレフィクス対応
      • スケジューラー
      • リモートAPI
      • 携帯電話への積極的な対応
    • OpenPNE3ソーシャルアプリケーションの理解と作成。
    • Symfony、CodeIgniter、Cocoa、フレームワークの理解と作成。
    • Dashcode、iPhone App、Adobe AIR、Chumbyアプリの作成。
    • OpenPNE、MyNETSのカスタマイズやモジュールの作成方法をマトメル(解説?)。
    • OpenPNE用DataBaseユーティリティの作成

    因みにGoogle検索を使ってここへ訪れた方の検索キーワードで最も多かったのが、”iPhone OpenPNE” の組合せで、他に”天気予報”、”今日の運勢”、”OpenPNE エコー”、”OpenPNE チャット”、などなど。。。

    さてどれだけ達成できるかな。。。
    そんなわけで、みなさま本年もヨロシクお願いします。

    富士山

    preload preload preload