From: ivan Date: Mon, 13 Jul 1998 19:32:18 +0000 (+0000) Subject: Initial revision X-Git-Tag: freeside_1_2_0~290 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=0adf9a70939b9999f7a871557e621aa22a714ea9 Initial revision --- diff --git a/htdocs/edit/svc_acct.cgi b/htdocs/edit/svc_acct.cgi new file mode 100755 index 000000000..61d0fdc28 --- /dev/null +++ b/htdocs/edit/svc_acct.cgi @@ -0,0 +1,191 @@ +#!/usr/bin/perl -Tw +# +# svc_acct.cgi: Add/edit account (output form) +# +# Usage: svc_acct.cgi {svcnum} | pkgnum{pkgnum}-svcpart{svcpart} +# http://server.name/path/svc_acct.cgi? {svcnum} | pkgnum{pkgnum}-svcpart{svcpart} +# +# Note: Should be run setuid freeside as user nobody +# +# ivan@voicenet.com 96-dec-18 +# +# rewrite ivan@sisd.com 98-mar-8 +# +# Changes to allow page to work at a relative position in server +# Changed 'password' to '_password' because Pg6.3 reserves the password word +# bmccane@maxbaud.net 98-apr-3 +# +# use conf/shells and dbdef username length ivan@sisd.com 98-jul-13 + +use strict; +use CGI::Base qw(:DEFAULT :CGI); +use FS::UID qw(cgisuidsetup getotaker); +use FS::Record qw(qsearch qsearchs); +use FS::svc_acct qw(fields); + +my($shells)="/var/spool/freeside/conf/shells"; +open(SHELLS,$shells) or die "Can't open $shells: $!"; +my(@shells)=map { + /^([\/\w]*)$/ or die "Illegal shell in conf/shells!"; + $1; +} grep $_ !~ /^#/, ; + +my($cgi) = new CGI::Base; +$cgi->get; +&cgisuidsetup($cgi); + +my($action,$svcnum,$svc_acct,$pkgnum,$svcpart,$part_svc); + +if ( $QUERY_STRING =~ /^(\d+)$/ ) { #editing + + $svcnum=$1; + $svc_acct=qsearchs('svc_acct',{'svcnum'=>$svcnum}) + or die "Unknown (svc_acct) svcnum!"; + + my($cust_svc)=qsearchs('cust_svc',{'svcnum'=>$svcnum}) + or die "Unknown (cust_svc) svcnum!"; + + $pkgnum=$cust_svc->pkgnum; + $svcpart=$cust_svc->svcpart; + + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + + $action="Edit"; + +} else { #adding + + $svc_acct=create FS::svc_acct({}); + + foreach $_ (split(/-/,$QUERY_STRING)) { + $pkgnum=$1 if /^pkgnum(\d+)$/; + $svcpart=$1 if /^svcpart(\d+)$/; + } + $part_svc=qsearchs('part_svc',{'svcpart'=>$svcpart}); + die "No part_svc entry!" unless $part_svc; + + $svcnum=''; + + #set gecos + my($cust_pkg)=qsearchs('cust_pkg',{'pkgnum'=>$pkgnum}); + if ($cust_pkg) { + my($cust_main)=qsearchs('cust_main',{'custnum'=> $cust_pkg->custnum } ); + $svc_acct->setfield('finger', + $cust_main->getfield('first') . " " . $cust_main->getfield('last') + ) ; + } + + #set fixed and default fields from part_svc + my($field); + foreach $field ( fields('svc_acct') ) { + if ( $part_svc->getfield('svc_acct__'. $field. '_flag') ne '' ) { + $svc_acct->setfield($field,$part_svc->getfield('svc_acct__'. $field) ); + } + } + + $action="Add"; + +} + +my($svc)=$part_svc->getfield('svc'); + +my($otaker)=getotaker; + +my($username,$password)=( + $svc_acct->username, + $svc_acct->_password ? "*HIDDEN*" : '', +); + +my($ulen)=$svc_acct->dbdef_table->column('username')->length; +my($ulen2)=$ulen+2; + +SendHeaders(); +print < + + $action $svc account + + +
+

$action $svc account

+

+
+ + + +Username: + +
Password: + +(blank to generate) +END + +#pop +my($popnum)=$svc_acct->popnum || 0; +if ( $part_svc->svc_acct__popnum_flag eq "F" ) { + print qq!!; +} else { + print qq!
POP: "; +} + +my($uid,$gid,$finger,$dir)=( + $svc_acct->uid, + $svc_acct->gid, + $svc_acct->finger, + $svc_acct->dir, +); + +print < + +
GECOS: + +END + +my($shell)=$svc_acct->shell; +if ( $part_svc->svc_acct__shell_flag eq "F" ) { + print qq!!; +} else { + print qq!
Shell: "; +} + +my($quota,$slipip)=( + $svc_acct->quota, + $svc_acct->slipip, +); + +print qq!!; + +if ( $part_svc->svc_acct__slipip_flag eq "F" ) { + print qq!!; +} else { + print qq!
IP: !; +} + +#submit +print qq!

!; + +print < + + +END + +