[w3m-dev 03639] Re: smb.cgi

* Bonus/2ch.cgi: change password handling
* Bonus/README: update
* Bonus/README.eng: ditto
This commit is contained in:
Fumitoshi UKAI
2003-01-15 15:51:29 +00:00
parent 3310092fb4
commit 04d2ffae3e
4 changed files with 86 additions and 22 deletions

View File

@@ -15,9 +15,14 @@ smb.cgi
SMB <20>˥<EFBFBD><CBA5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> local CGI <20>Ǥ<EFBFBD><C7A4><EFBFBD>
nmblookup,smbclient <20><><EFBFBD>Ȥ<EFBFBD><C8A4>Τ<EFBFBD> sabma <20><><EFBFBD><EFBFBD><EFBFBD>󥹥ȡ<F3A5B9A5><C8A1><EFBFBD><EBA4B5><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD>
ɬ<>פ<EFBFBD><D7A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ޤ<EFBFBD><DEA4><EFBFBD>
<20>ѥ<EFBFBD><D1A5><EFBFBD>ɤϡ<C9A4>smbclient <20><> -A <20><><EFBFBD>ץ<EFBFBD><D7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD>ʤ顢
smbclient -A ~/.w3m/smb <20>Ȥ<EFBFBD><EFBFBD>ơ<EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD>ʤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ~/.w3m/smb <EFBFBD><EFBFBD>
<EFBFBD>ɤ<EFBFBD><EFBFBD>ǴĶ<EFBFBD><EFBFBD>ѿ<EFBFBD> PASSWD <EFBFBD><EFBFBD><EFBFBD>Ϥ<EFBFBD><EFBFBD>ޤ<EFBFBD><EFBFBD><EFBFBD>
<20>ѥ<EFBFBD><D1A5><EFBFBD>ɤϡ<C9A4>
1) ~/.w3m/smb <20>˥ѥ<EFBFBD><EFBFBD><EFBFBD>ɤ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><EFBFBD>
smbclient <20><> -A <20><><EFBFBD>ץ<EFBFBD><D7A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʤ<EFBFBD>
smbclient -A ~/.w3m/smb <20>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD>Ϥ<EFBFBD><CFA4>ޤ<EFBFBD><DEA4><EFBFBD>
2) <20>Ķ<EFBFBD><C4B6>ѿ<EFBFBD> PASSWD_FILE (<28>ѥ<EFBFBD><D1A5><EFBFBD>ɤΤߤΥե<CEA5><D5A5><EFBFBD><EFBFBD><EFBFBD>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD><CFA1>Ķ<EFBFBD><C4B6>ѿ<EFBFBD> PASSWD_FILE <20><><EFBFBD>Ȥ<EFBFBD><C8A4>ޤ<EFBFBD><DEA4><EFBFBD>
3) ~/.w3m/smb <20>˥ѥ<CBA5><D1A5><EFBFBD>ɤ<EFBFBD><C9A4><EFBFBD><EFBFBD><EFBFBD><EAA4B5><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>С<EFBFBD>
<20>Ķ<EFBFBD><C4B6>ѿ<EFBFBD> PASSWD_FD <20><><EFBFBD>Ȥä<C8A4>ɸ<EFBFBD><C9B8><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD>ͳ<EFBFBD><CDB3><EFBFBD>Ϥ<EFBFBD><CFA4>ޤ<EFBFBD><DEA4><EFBFBD>
<20>ɤ<EFBFBD><C9A4><EFBFBD><EFBFBD>ˤ<EFBFBD><CBA4><EFBFBD><E8A1A2><EFBFBD>ޤ<EFBFBD><DEA4>ɤ<EFBFBD><C9A4><EFBFBD><EFBFBD>ǤϤʤ<CFA4><CAA4>Τ<EFBFBD> SMB(CIFS)<29>ץ<EFBFBD><D7A5>ȥ<EFBFBD><C8A5><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD>Ǥ<EFBFBD><C7A4><EFBFBD>˾<EFBFBD><CBBE>

View File

@@ -5,19 +5,22 @@
w3m file:/cgi-bin/2ch.cgi?http://pc.2ch.net/test/read.cgi/unix/1035755937/
it uses wget -c
dat is recorded under ~/w3m2ch/
You can post
It uses wget -c.
`dat' files are recorded under ~/w3m2ch/.
You can not post.
smb.cgi
[w3m-dev 03634] smb.cgi
localcgi to access SMB.
Since it uses nmblookup, smbclient, you should install samba.
Password can be configured in ~/.w3m/smb:
when -A option available smbclient -A ~/.w3m/smb
otherwise, environment variable PASSWD
that is set by contents of ~/.w3m/smb
Password can be passed to smbclient:
1) When the password is set by contents of ~/.w3m/smb and
-A option available, `smbclient -A ~/.w3m/smb' is used.
2) When the environment variable PASSWD_FILE, it is used.
3) When the password is set by contents of ~/.w3m/smb,
the password is passed via standrad I/O using
the environment variable PASSWD_FD.
google.cgi

View File

@@ -9,9 +9,17 @@
#
# ----- ~/.w3m/smb -----
# workgroup = <workgroup>
# username = <username>
# password = <password>
# [ username = <username> ]
# [ password = <password> ]
# [ password_file = <password_file> ]
# ----------------------
# --- <password_file> ---
# <password>
# -----------------------
# default:
# <username> = $USER
# <password> = $PASSWD (Don't use!)
# <password_file> = $PASSWD_FILE
$DEBUG = 1;
@@ -22,18 +30,35 @@ $AUTH_FILE =~ s@^~/@$ENV{"HOME"}/@;
$WORKGROUP = "-";
$USER = $ENV{"USER"};
$PASSWD = $ENV{"PASSWD"};
$PASSWD_FILE = $ENV{"PASSWD_FILE"};
&load_auth_file($AUTH_FILE);
$NMBLOOKUP = "nmblookup";
$SMBCLIENT = "smbclient";
@NMBLOOKUP_OPT = ("-T");
@SMBCLIENT_OPT = ("-N");
$USE_OPT_A = &check_opt_a();
$USE_OPT_A = defined($PASSWD) && (-f $AUTH_FILE) && &check_opt_a();
if ($USE_OPT_A) {
undef $USER;
undef $PASSWD;
push(@SMBCLIENT_OPT, "-A", $AUTH_FILE);
} elsif (-f $PASSWD_FILE) {
$USE_PASSWD_FILE = 1;
} elsif (defined($PASSWD)) {
$USE_PASSWD_FD = 1;
$PASSWD_FD = 0;
}
if (defined($PASSWD)) {
$passwd = "*" x 8;
}
$DEBUG && print <<EOF;
DEBUG: NMBLOOKUP=$NMBLOOKUP @NMBLOOKUP_OPT
DEBUG: SMBCLIENT=$SMBCLIENT @SMBCLIENT_OPT
DEBUG: WORKGROUP=$WORKGROUP
DEBUG: USER=$USER
DEBUG: PASSWD=$passwd
DEBUG: PASSWD_FILE=$PASSWD_FILE
DEBUG: PASSWD_FD=$PASSWD_FD
EOF
$PAGER = "cat";
$FILE = "F000";
@@ -44,6 +69,10 @@ $_ = &file_decode($QUERY);
$DEBUG && print "DEBUG: QUERY_STRING=\"$_\"\n";
if (s@^//([^/]+)@@) {
$server = $1;
# if (!$USE_OPT_A && !defined($PASSWD)) {
# &print_form("//$server$_");
# exit;
# }
if (s@^/([^/]+)@@) {
&file_list("//$server/$1", &cleanup($_));
} else {
@@ -250,9 +279,11 @@ sub get_list {
@cmd = ($SMBCLIENT, @SMBCLIENT_OPT, "-L", $server);
$F = &open_pipe($passwd, @cmd);
while (<$F>) {
/^\s*$header/ && last;
}
if (/^\s*$header/) {
$DEBUG && print "DEBUG: $_";
last;
}
}
while (<$F>) {
/^\s*$/ && last;
$DEBUG && print "DEBUG: $_";
@@ -277,9 +308,18 @@ sub exec_cmd {
local($passwd, @cmd) = @_;
$ENV{"LC_ALL"} = "C";
if (!$USE_OPT_A && $passwd) {
$ENV{"USER"} = $USER if $USER;
$ENV{"PASSWD"} = $PASSWD if $PASSWD;
$ENV{"USER"} = $USER;
if ($passwd && !$USE_OPT_A) {
if ($USE_PASSWD_FILE) {
$ENV{"PASSWD_FILE"} = $PASSWD_FILE;
} elsif ($USE_PASSWD_FD) {
$ENV{"PASSWD_FD"} = $PASSWD_FD;
if (open(W, "|-")) {
print W $PASSWD;
close(W);
exit;
}
}
}
open(STDERR, ">/dev/null");
exec @cmd;
@@ -287,8 +327,15 @@ sub exec_cmd {
}
sub print_form {
local($_) = @_;
local($q) = &html_quote($_);
$_ = &file_encode($_);
print <<EOF;
<form action="$CGI" method=POST>
Content-Type: text/html
<h1>$q</h1>
<form action="$CGI?$_" method=POST>
<table>
<tr><td>Workgroup <td>User <td>Password
<tr><td><input type=text size=8 name=group value="$WORKGROUP">
@@ -315,6 +362,8 @@ sub load_auth_file {
$USER = $_;
} elsif (s/^passw(or)?d\s*=\s*//i) {
$PASSWD = $_;
} elsif (s/^passw(or)?d_file\s*=\s*//i) {
$PASSWD_FILE = $_;
}
}
close(F);