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: OpenPNE2 • SPAM対策
1月 21
Google Analytics的なグラフを装備してみました。

※画像は、MyNETS1.2です。
とりあえずの所、当月のみの表示ですが、真面目にやれば時間帯表示や年間表示、Google Analyticsのように期間を指定しての表示もできるでしょうし、MyNETSのログにはPC/モバイルのフラグも記録されているので、それぞれ色分けして透過レイヤ表示も可能ですね。
Tagged with: FLASH • OpenPNE2
1月 15
あしあとページって結構スカスカなので、こんなテンプレートを作ってみました。
画像は、MyNETS1.2へ組み込んだ場合のイメージです、

:マイフレンドマーク、

:モバイルアクセスマークの採用で、訪問者の状態がよりわかりやすくなりました。(OpenPNEではモバイルアクセスマークは使えません)
2008/01/19
配色に関する仕様を変更しました、管理画面の「カスタムCSS追加」に以下の4行を追加することで配色の制御が可能になりました。
div.ashiato-cell{
border: 1px #a5a5a5 solid;
background-color: #f5f5f5;
}
Download
※OpenPNE2版、MyNETS1.2.0版がセットになっています。
Tagged with: OpenPNE2
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オーナーの等の特権ユーザからのみ使える管理者向けメソッドの追加。
- クライアントを特定する仕組み(特定クライアント以外からのリクエストをシャットアウトする等)。
テストツール

平行してテスト用のツールも作成中、Windowsアプリの制作(特にWin32API)もブランクがあるので中々大変なのですが徐々に思い出して来たところです、ここまで来たらスクリプトを内蔵させようとか、いっそのことSNSクライアントとしてコンポーネント化してしまおうか?とか色々と思いつくのだけど、これ以上風呂敷を広げると収拾がつかなくなるので考えるのはヤメましょう。。。
ps.
そういえばmixiアプリ(OpenSocial)の開発案内が始まりました~!
mixiデベロッパーセンター
Tagged with: OpenPNE2
1月 01
今年の目標。(笑
- 拡張モジュールの整理。
- 未公開モジュールの整理公開
- チャットモジュール(mixiエコークローン)
- MyNETSのテーブルプレフィクス対応
- スケジューラー
- リモートAPI
- 携帯電話への積極的な対応
- OpenPNE3ソーシャルアプリケーションの理解と作成。
- Symfony、CodeIgniter、Cocoa、フレームワークの理解と作成。
- Dashcode、iPhone App、Adobe AIR、Chumbyアプリの作成。
- OpenPNE、MyNETSのカスタマイズやモジュールの作成方法をマトメル(解説?)。
- OpenPNE用DataBaseユーティリティの作成
因みにGoogle検索を使ってここへ訪れた方の検索キーワードで最も多かったのが、”iPhone OpenPNE” の組合せで、他に”天気予報”、”今日の運勢”、”OpenPNE エコー”、”OpenPNE チャット”、などなど。。。
さてどれだけ達成できるかな。。。
そんなわけで、みなさま本年もヨロシクお願いします。
