レゴキチ/SSTPをCGIから送信する
の編集
./?%E3%83%AC%E3%82%B4%E3%82%AD%E3%83%81/SSTP%E3%82%92CGI%E3%81%8B%E3%82%89%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
殊海夕音/FINE/template
*毒電波をびびび [#za0fcd9f] 自分のWebサイトから毒電波をびびびっと送信したいぜ!な方用。~ SSTPの仕様についてはこちらをどうぞ~ -[[伺か - SSTPプロトコル:http://futaba.sora-iro.net/sstp.html]] -[[非公式 SSTP/1.x プロトコル仕様書:http://www.ooyashima.net/db/sstp.html]] **Perl編 [#ab1fff6c] +このコードをメモ帳にコピペしてSSTP.cgiとか名前つけてサーバーに上げる。 +パーミッションはたぶん701くらいで動くと思う。 +このCGIにブラウザでアクセスする。 ++受信側のルータの9801or9821ポートが開放されていて ++受信側のファイヤーウォールのポートも開放されていて ++受信側のSSPなどのSSTPクライアントが起動していて ++受信側のそのSSPなどのSSTPクライアントの設定が合っていて ++尚且つ、このCGIスクリプトがエラーを500エラーを吐かなければ +SSTPが送信される。ハズ。 #!/usr/bin/perl # !/usr/local/bin/perlの場合もあるよ! # 送信内容 $request = 'COMMUNICATE SSTP/1.1' ."\r\n" .'Sender: カードキャプター' ."\r\n" .'Sentence: 今日は寒いなー。' ."\r\n" .'Option: substitute' ."\r\n" .'Charset: Shift_JIS' ."\r\n" ."\r\n"; # かなり泥臭い設定。joinしろよと(ry print "Content-type: text/plain\n\n"; # 「何か」の存在チェック&SSTP-Scriptデータの送信 $port_number = '9801'; $check_nanika = &sstp_send($request,$port_number); if (!$check_nanika) { $port_number = '9821'; $check_nanika = &sstp_send($request,$port_number); } exit; # ---------------------------------------- # ■以下、サブルーチン # ▼TCPポート処理 (C)黒衣氏 # 戻り値:SSTPサーバーからのリザルト # $send='送信内容' $port='出力port' # $addr='送出先アドレス' $proto='使用プロトコル' $ent='ネットワークアドレス' sub sstp_send { use Socket; my ($send, $port, $addr, $proto, $ent, $result) = @_; # タイムアウト予約 $SIG{'ALRM'} = sub {$resp='408 Request Timeout'."\r\n"."\r\n";}; alarm 1; # 送信先IPアドレスの取得 $addr = $ENV{'HTTP_X_FORWARDED_FOR'}; if (index($addr,'.') == -1 ) { $addr = $ENV{'REMOTE_ADDR'}; } print 'IP: '.$addr."\r\n"; print 'Port: '.$port."\r\n"; print "\r\n"; # プロトコル名の取得 $proto = getprotobyname('tcp'); # ポートに接続 if (! socket(S, &PF_INET, &SOCK_STREAM, $proto)) { # $resp = 'TCPポート処理','指定されたソケットがOPENできません'."\r\n"; } # ネットワークアドレスの取得 $ent = sockaddr_in($port, inet_aton($addr)); # print 'NetworkAddress: '.$ent."\r\n"; # 接続開始 if (connect(S, $ent)) { select(S); $| = 1; select(STDOUT); # SSTP送信 print S $send; $result = <S>; close(S); }else{ # $resp = ''."\r\n"; } print '===== send ====='."\r\n"; print $send; # タイムアウト初期化 alarm 0; $resp ||= $result; print '===== response ====='."\r\n"; print $resp; return($result); } *コメント場所 [#q4cea355] - 何か一言どうぞ。 -- [[レゴキチ]] &new{2010-04-04 (日) 23:53:29}; - レンタルサーバーだとポート開けてくれないのよね。デモページとか見たいかも。 -- [[Don]] &new{2010-04-05 (月) 00:04:46}; - 口調とかが変わるのが最大の問題かな?プロパティみたいなの送ってゴースト側で反応できたら面白いかも -- [[Wiz★]] &new{2010-04-05 (月) 05:16:59}; -送信側はポートの設定いらない気がするけど。 -- [[レゴキチ]] &new{2010-04-05 (月) 10:44:41}; - COMMUNICATE SSTP/1.1ならコミュ呼びかけなので口調の心配することもないよ! -- [[レゴキチ]] &new{2010-04-05 (月) 10:48:00}; - デモページは5月までお待ちください、というのも現在うちの鯖が電源落ちていて、物理的に離れた場所にあるので。 -- [[レゴキチ]] &new{2010-04-05 (月) 19:55:53}; - おお、いいなこれ。COMMUNICATEって書いてあった。こみゅにするのもいいけど、独自イベントみたいになげてもいいかもしれませんね。何のサイトか、拾ってゴーストが説明できるとか。 -- [[Wiz★]] &new{2010-04-10 (土) 17:55:49}; #comment
タイムスタンプを変更しない
*毒電波をびびび [#za0fcd9f] 自分のWebサイトから毒電波をびびびっと送信したいぜ!な方用。~ SSTPの仕様についてはこちらをどうぞ~ -[[伺か - SSTPプロトコル:http://futaba.sora-iro.net/sstp.html]] -[[非公式 SSTP/1.x プロトコル仕様書:http://www.ooyashima.net/db/sstp.html]] **Perl編 [#ab1fff6c] +このコードをメモ帳にコピペしてSSTP.cgiとか名前つけてサーバーに上げる。 +パーミッションはたぶん701くらいで動くと思う。 +このCGIにブラウザでアクセスする。 ++受信側のルータの9801or9821ポートが開放されていて ++受信側のファイヤーウォールのポートも開放されていて ++受信側のSSPなどのSSTPクライアントが起動していて ++受信側のそのSSPなどのSSTPクライアントの設定が合っていて ++尚且つ、このCGIスクリプトがエラーを500エラーを吐かなければ +SSTPが送信される。ハズ。 #!/usr/bin/perl # !/usr/local/bin/perlの場合もあるよ! # 送信内容 $request = 'COMMUNICATE SSTP/1.1' ."\r\n" .'Sender: カードキャプター' ."\r\n" .'Sentence: 今日は寒いなー。' ."\r\n" .'Option: substitute' ."\r\n" .'Charset: Shift_JIS' ."\r\n" ."\r\n"; # かなり泥臭い設定。joinしろよと(ry print "Content-type: text/plain\n\n"; # 「何か」の存在チェック&SSTP-Scriptデータの送信 $port_number = '9801'; $check_nanika = &sstp_send($request,$port_number); if (!$check_nanika) { $port_number = '9821'; $check_nanika = &sstp_send($request,$port_number); } exit; # ---------------------------------------- # ■以下、サブルーチン # ▼TCPポート処理 (C)黒衣氏 # 戻り値:SSTPサーバーからのリザルト # $send='送信内容' $port='出力port' # $addr='送出先アドレス' $proto='使用プロトコル' $ent='ネットワークアドレス' sub sstp_send { use Socket; my ($send, $port, $addr, $proto, $ent, $result) = @_; # タイムアウト予約 $SIG{'ALRM'} = sub {$resp='408 Request Timeout'."\r\n"."\r\n";}; alarm 1; # 送信先IPアドレスの取得 $addr = $ENV{'HTTP_X_FORWARDED_FOR'}; if (index($addr,'.') == -1 ) { $addr = $ENV{'REMOTE_ADDR'}; } print 'IP: '.$addr."\r\n"; print 'Port: '.$port."\r\n"; print "\r\n"; # プロトコル名の取得 $proto = getprotobyname('tcp'); # ポートに接続 if (! socket(S, &PF_INET, &SOCK_STREAM, $proto)) { # $resp = 'TCPポート処理','指定されたソケットがOPENできません'."\r\n"; } # ネットワークアドレスの取得 $ent = sockaddr_in($port, inet_aton($addr)); # print 'NetworkAddress: '.$ent."\r\n"; # 接続開始 if (connect(S, $ent)) { select(S); $| = 1; select(STDOUT); # SSTP送信 print S $send; $result = <S>; close(S); }else{ # $resp = ''."\r\n"; } print '===== send ====='."\r\n"; print $send; # タイムアウト初期化 alarm 0; $resp ||= $result; print '===== response ====='."\r\n"; print $resp; return($result); } *コメント場所 [#q4cea355] - 何か一言どうぞ。 -- [[レゴキチ]] &new{2010-04-04 (日) 23:53:29}; - レンタルサーバーだとポート開けてくれないのよね。デモページとか見たいかも。 -- [[Don]] &new{2010-04-05 (月) 00:04:46}; - 口調とかが変わるのが最大の問題かな?プロパティみたいなの送ってゴースト側で反応できたら面白いかも -- [[Wiz★]] &new{2010-04-05 (月) 05:16:59}; -送信側はポートの設定いらない気がするけど。 -- [[レゴキチ]] &new{2010-04-05 (月) 10:44:41}; - COMMUNICATE SSTP/1.1ならコミュ呼びかけなので口調の心配することもないよ! -- [[レゴキチ]] &new{2010-04-05 (月) 10:48:00}; - デモページは5月までお待ちください、というのも現在うちの鯖が電源落ちていて、物理的に離れた場所にあるので。 -- [[レゴキチ]] &new{2010-04-05 (月) 19:55:53}; - おお、いいなこれ。COMMUNICATEって書いてあった。こみゅにするのもいいけど、独自イベントみたいになげてもいいかもしれませんね。何のサイトか、拾ってゴーストが説明できるとか。 -- [[Wiz★]] &new{2010-04-10 (土) 17:55:49}; #comment
テキスト整形のルールを表示する