projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tyop
[freeside.git]
/
fs_passwd
/
fs_passwd_server
diff --git
a/fs_passwd/fs_passwd_server
b/fs_passwd/fs_passwd_server
index
cb0e693
..
a29b2c7
100755
(executable)
--- a/
fs_passwd/fs_passwd_server
+++ b/
fs_passwd/fs_passwd_server
@@
-11,8
+11,10
@@
# crypt-aware, s/password/_password/; ivan@sisd.com 98-aug-23
use strict;
# crypt-aware, s/password/_password/; ivan@sisd.com 98-aug-23
use strict;
+use vars qw($pid);
+use subs qw(killssh);
use IO::Handle;
use IO::Handle;
-use
FS
::SSH qw(sshopen2);
+use
Net
::SSH qw(sshopen2);
use FS::UID qw(adminsuidsetup);
use FS::Record qw(qsearchs);
use FS::svc_acct;
use FS::UID qw(adminsuidsetup);
use FS::Record qw(qsearchs);
use FS::svc_acct;
@@
-22,14
+24,23
@@
adminsuidsetup $user;
my($shellmachine)=shift or die &usage;
my($shellmachine)=shift or die &usage;
-$SIG{CHLD} = sub { wait() };
+#causing trouble for some folks
+#$SIG{CHLD} = sub { wait() };
+
+$SIG{HUP} = \&killssh;
+$SIG{INT} = \&killssh;
+$SIG{QUIT} = \&killssh;
+$SIG{TERM} = \&killssh;
+$SIG{PIPE} = \&killssh;
+
+sub killssh { kill 'TERM', $pid if $pid; exit; };
my($fs_passwdd)="/usr/local/sbin/fs_passwdd";
while (1) {
my($reader,$writer)=(new IO::Handle, new IO::Handle);
$writer->autoflush(1);
my($fs_passwdd)="/usr/local/sbin/fs_passwdd";
while (1) {
my($reader,$writer)=(new IO::Handle, new IO::Handle);
$writer->autoflush(1);
- sshopen2($shellmachine,$reader,$writer,$fs_passwdd);
+
$pid =
sshopen2($shellmachine,$reader,$writer,$fs_passwdd);
while (1) {
my($username,$old_password,$new_password,$new_gecos,$new_shell);
defined($username=<$reader>) or last;
while (1) {
my($username,$old_password,$new_password,$new_gecos,$new_shell);
defined($username=<$reader>) or last;