|
|
ru.nethack- RU.NETHACK ------------------------------------------------------------------- From : Alexey V. Vissarionov 2:5020/545 16 Apr 2004 12:43:05 To : Yury V. Reshetov Subject : UDP через HTTP(S)-прокси -------------------------------------------------------------------------------- 16 Apr 04 12:21:52 Yury V. Reshetov -> Alexey V. Vissarionov: AV>>>> Если есть CONNECT - можно установить TCP-соединение, а в него AV>>>> завернуть PPP. YVR>>> Hафига РРР, когда нужно UDP? YVR>>> Даже если такой фокус удастся, pазвоpачивать кто на том конце YVR>>> будет? AV>> man pppd YVR> Самый умный выискался? Да, умный. Сейчас продемонстрирую: 1. Учим SSH работать через HTTP-proxy с методом CONNECT (могу реализовать на заказ за отдельные деньги). 2. Берем вот этот скрипт: ==== хрум ==== #!/usr/bin/perl # Start an ssh connection and a pppd running on top of it. # Usage: ssh-ppp [-l user] [-c command] [-b seconds] host # Connect to "host" using the user name "user" and run "command" on the # remote end. (Default is "root" and "/usr/sbin/pppd") # by Olaf Titz, July 1996 require "getopts.pl"; require "sys/syscall.ph"; # Customize if necessary $ssh="/usr/bin/ssh"; $pppd="/usr/sbin/pppd 10.0.2.1:10.0.2.2"; # defaults $opt_l="root"; $opt_c="/usr/sbin/pppd 10.0.2.2:10.0.2.1"; &Getopts("l:c:b:"); ($host=shift) || die "usage: $0 [-l user] [-c command] host"; foreach $maj ("p".."s") { # adjust this to the ptys you have foreach $min ("0".."9", "a".."f") { &tryopen("$maj$min"); } } die "Couldn't alloc master pty\n"; sub tryopen { local($d)=@_; $master=sprintf("/dev/pty%s", $d); $slave=sprintf("/dev/tty%s", $d); if (open(PTY, "+>$master")) { $pid=fork; defined($pid) || die "can't fork"; if (!$pid) { close PTY; (syscall(&SYS_setsid)>0) || die "setsid: $!"; open(STDIN, "+>$slave") || die "open slave: $!"; open(STDOUT, ">&STDIN"); open(STDERR, ">&STDIN"); print STDOUT "\n"; exec $pppd; die "exec $pppd: $!"; } open(STDIN, "<&PTY") || die "reopen stdin"; open(STDOUT, ">&PTY") || die "reopen stout"; close PTY; $opt_l="-l$opt_l"; &bugdaemon($opt_b) if ($opt_b); print STDERR "running on $master; ssh=$$, pppd=$pid\n"; exec $ssh, "-t", $opt_l, $host, $opt_c; die "exec $ssh: $!"; } } sub bugdaemon # This cures a "hang" of the local ssh process { local($secs)=@_; local($p)=fork; if (!defined($p)) { warn "can't fork, no bug daemon"; return; } return if (!$p); # returning the child avoids a zombie sleep $secs; kill "STOP", $p; sleep 1; kill "CONT", $p; exit 0; } ==== тьфу ==== 3. Используем этот скрипт по назначению. YVR> Я ведь покpуче могу послать на RFC 1171. Думаешь, я увижу там что-то новое? Alexey V. Vissarionov aka Gremlin from Kremlin (gremlin ПРИ gremlin ТЧК ru) [DRBL] [OWL] [SRT] ... У меня стоит UN*X, а у вас висит W*ndows --- /bin/vi * Origin: http://openwall.com/Owl/ru/ (2:5020/545) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.nethack/2294007fa024.html, оценка из 5, голосов 10
|