レゴキチ/SSTPをCGIから送信する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
*毒電波をびびび [#za0fcd9f]
自分のWebサイトから毒電波をびびびっと送信したいぜ!な方用...
SSTPの仕様についてはこちらをどうぞ~
-[[伺か - SSTPプロトコル:http://futaba.sora-iro.net/sstp....
-[[非公式 SSTP/1.x プロトコル仕様書:http://www.ooyashima....
**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"....
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でき...
}
# ネットワークアドレスの取得
$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 (日) 2...
- レンタルサーバーだとポート開けてくれないのよね。デモペ...
- 口調とかが変わるのが最大の問題かな?プロパティみたいな...
-送信側はポートの設定いらない気がするけど。 -- [[レゴキチ...
- COMMUNICATE SSTP/1.1ならコミュ呼びかけなので口調の心配...
- デモページは5月までお待ちください、というのも現在うちの...
- おお、いいなこれ。COMMUNICATEって書いてあった。こみゅに...
#comment
終了行:
*毒電波をびびび [#za0fcd9f]
自分のWebサイトから毒電波をびびびっと送信したいぜ!な方用...
SSTPの仕様についてはこちらをどうぞ~
-[[伺か - SSTPプロトコル:http://futaba.sora-iro.net/sstp....
-[[非公式 SSTP/1.x プロトコル仕様書:http://www.ooyashima....
**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"....
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でき...
}
# ネットワークアドレスの取得
$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 (日) 2...
- レンタルサーバーだとポート開けてくれないのよね。デモペ...
- 口調とかが変わるのが最大の問題かな?プロパティみたいな...
-送信側はポートの設定いらない気がするけど。 -- [[レゴキチ...
- COMMUNICATE SSTP/1.1ならコミュ呼びかけなので口調の心配...
- デモページは5月までお待ちください、というのも現在うちの...
- おお、いいなこれ。COMMUNICATEって書いてあった。こみゅに...
#comment
ページ名: