From 226b17bfa055fb960b722c6a17d1c81bb8970f2c Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 6 May 2004 22:29:24 +0000 Subject: add option to change the restart command in apache exports --- bin/apache.export | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'bin') diff --git a/bin/apache.export b/bin/apache.export index f0a6beefc..47863a9d5 100755 --- a/bin/apache.export +++ b/bin/apache.export @@ -51,7 +51,9 @@ foreach my $export ( @exports ) { } ) or die "rsync to $machine failed: ". join(" / ", $rsync->err); # warn $rsync->out; - ssh("root\@$machine", 'apachectl graceful'); + my $restart = $export->option('restart') || 'apachectl graceful'; + + ssh("root\@$machine", $restart); } -- cgit v1.2.1 From 24653b038976803a9d328eb7b5a73b78a3bd5c3a Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 10 May 2004 09:38:52 +0000 Subject: ach 5.005 --- bin/sendmail.import | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bin') diff --git a/bin/sendmail.import b/bin/sendmail.import index 8a9de9fd3..c6ed434cd 100644 --- a/bin/sendmail.import +++ b/bin/sendmail.import @@ -28,7 +28,7 @@ $forward_svcpart = 4; use vars qw($spooldir); $spooldir = "/usr/local/etc/freeside/export.". datasrc. "/sendmail"; -mkdir $spooldir unless -d $spooldir; +mkdir($spooldir, 0755) unless -d $spooldir; print "\n\n", < Date: Mon, 10 May 2004 09:40:38 +0000 Subject: 5.005! --- bin/sendmail.import | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'bin') diff --git a/bin/sendmail.import b/bin/sendmail.import index c6ed434cd..a55616dc3 100644 --- a/bin/sendmail.import +++ b/bin/sendmail.import @@ -39,7 +39,7 @@ my($aliases)=&getvalue(":"); use vars qw($aliases_machine $aliases_prefix); $aliases_machine = (split(/:/, $aliases))[0]; $aliases_prefix = "$spooldir/$aliases_machine"; -mkdir $aliases_prefix unless -d $aliases_prefix; +mkdir($aliases_prefix, 0755) unless -d $aliases_prefix; #iscp("root\@$aliases","$aliases_prefix/aliases.import"); iscp("ivan\@$aliases","$aliases_prefix/aliases.import"); @@ -53,8 +53,8 @@ my($virtusertable)=&getvalue(":"); use vars qw($virtusertable_machine $virtusertable_prefix); $virtusertable_machine = (split(/:/, $virtusertable))[0]; $virtusertable_prefix = "$spooldir/$virtusertable_machine"; -mkdir $virtusertable_prefix unless -d $virtusertable_prefix; -mkdir "$virtusertable_prefix/virtusertable.import" +mkdir($virtusertable_prefix, 0755) unless -d $virtusertable_prefix; +mkdir("$virtusertable_prefix/virtusertable.import", 0755) unless -d "$virtusertable_prefix/virtusertable.import"; #iscp("root\@$virtusertable/*","$aliases_prefix/virtusertable.import/"); -- cgit v1.2.1 From cd7e487f34c2de4768670aef01f096d8530fb057 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 10 May 2004 09:59:06 +0000 Subject: allow for multiple svc_acct svcparts --- bin/sendmail.import | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'bin') diff --git a/bin/sendmail.import b/bin/sendmail.import index a55616dc3..b137433d9 100644 --- a/bin/sendmail.import +++ b/bin/sendmail.import @@ -20,11 +20,11 @@ adminsuidsetup $user; #$FS::domain_record::noserial_hack = 1; use vars qw($defaultdomain); -$defaultdomain = 'surferz.net'; +$defaultdomain = '295.ca'; -use vars qw($svcpart $forward_svcpart); -$svcpart = 2; -$forward_svcpart = 4; +use vars qw(@svcpart $forward_svcpart); +@svcpart = qw( 2 4 ); +$forward_svcpart = 7; use vars qw($spooldir); $spooldir = "/usr/local/etc/freeside/export.". datasrc. "/sendmail"; @@ -144,7 +144,7 @@ sub svcnum_or_literal { my $svc_domain = qsearchs('svc_domain', { 'domain' => $domain } ); my $domsvc = $svc_domain ? $svc_domain->svcnum : ''; - my @svc_acct = grep { $_->cust_svc->svcpart == $svcpart } + my @svc_acct = grep { grep { $_->cust_svc->svcpart == $_ } @svcpart } qsearch('svc_acct', { 'username' => $username, 'domsvc' => $domsvc, -- cgit v1.2.1 From 38606efd583311cff2703090d7c9e3de550522b1 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 10 May 2004 10:01:38 +0000 Subject: properly nested greps --- bin/sendmail.import | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'bin') diff --git a/bin/sendmail.import b/bin/sendmail.import index b137433d9..ef745fc46 100644 --- a/bin/sendmail.import +++ b/bin/sendmail.import @@ -144,7 +144,9 @@ sub svcnum_or_literal { my $svc_domain = qsearchs('svc_domain', { 'domain' => $domain } ); my $domsvc = $svc_domain ? $svc_domain->svcnum : ''; - my @svc_acct = grep { grep { $_->cust_svc->svcpart == $_ } @svcpart } + my @svc_acct = grep { my $svc_acct = $_; + grep { $svc_acct->cust_svc->svcpart == $_ } @svcpart + } qsearch('svc_acct', { 'username' => $username, 'domsvc' => $domsvc, -- cgit v1.2.1 From 4121477dde8c9400bf81023bea3e0d980b34bf91 Mon Sep 17 00:00:00 2001 From: ivan Date: Mon, 10 May 2004 11:10:58 +0000 Subject: make postfix export commands configrable --- bin/postfix.export | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'bin') diff --git a/bin/postfix.export b/bin/postfix.export index 64d973837..dbb08ceb9 100755 --- a/bin/postfix.export +++ b/bin/postfix.export @@ -99,7 +99,7 @@ foreach my $export ( @exports ) { } ) or die "rsync to $machine failed: ". join(" / ", $rsync->err); # warn $rsync->out; - ssh("$user\@$machine", "newaliases"); + ssh("$user\@$machine", $export->option('newaliases') || 'newaliases'); # ssh("$user\@$machine", "postfix reload"); $rsync->exec( { @@ -107,8 +107,9 @@ foreach my $export ( @exports ) { dest => "$user\@$machine:". $export->option('virtual'), } ) or die "rsync to $machine failed: ". join(" / ", $rsync->err); # warn $rsync->out; - ssh("$user\@$machine", "postmap hash:/etc/postfix/virtual"); - ssh("$user\@$machine", "postfix reload"); + ssh("$user\@$machine", $export->option('postmap') + || 'postmap hash:/etc/postfix/virtual'); + ssh("$user\@$machine", $export->option('reload') || 'postfix reload'); } -- cgit v1.2.1 From e43ee0863e66d8d3e3a4453690561638ed4a92dd Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 12 May 2004 18:03:47 +0000 Subject: adding --- bin/freeside.import | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++ bin/sequences.reset | 28 ++++++++++ 2 files changed, 174 insertions(+) create mode 100644 bin/freeside.import create mode 100644 bin/sequences.reset (limited to 'bin') diff --git a/bin/freeside.import b/bin/freeside.import new file mode 100644 index 000000000..fdfcc083e --- /dev/null +++ b/bin/freeside.import @@ -0,0 +1,146 @@ +#!/usr/bin/perl -w + +use strict; +use DBI; + +my $s_datasrc = 'DBI:mysql:host=ns1.enetonline.net;port=3307;user=ivan;dbname=freeside'; +my $s_dbuser = 'ivan'; +my $s_dbpass = ''; + +my $d_datasrc = 'DBI:Pg:dbname=freeside'; +my $d_dbuser = 'freeside'; +my $d_dbpass = ''; + +#my @tables = qw( +#addr_block +#agent +#agent_type +#cust_bill +#cust_bill_event +#cust_bill_pay +#cust_bill_pkg +#cust_bill_pkg_detail +#cust_credit +#cust_credit_bill +#cust_credit_refund +#cust_main +#cust_main_county +#cust_main_invoice +#cust_pay +#cust_pay_batch +#cust_pkg +#cust_refund +#cust_svc +#cust_tax_exempt +#domain_record +#export_svc +#h_addr_block +#h_agent +#h_agent_type +#h_cust_bill +#h_cust_bill_event +#h_cust_bill_pay +#h_cust_bill_pkg +#h_cust_bill_pkg_detail +#h_cust_credit +#h_cust_credit_bill +#h_cust_credit_refund +#h_cust_main +#h_cust_main_county +#h_cust_main_invoice +#h_cust_pay +#h_cust_pay_batch +#h_cust_pkg +#h_cust_refund +#h_cust_svc +#h_cust_tax_exempt +#h_domain_record +#h_export_svc +#h_msgcat +#h_nas +#h_part_bill_event +#h_part_export +#h_part_export_option +#h_part_pkg +#h_part_pop_local +#h_part_referral +#h_part_svc +#h_part_svc_column +#h_part_svc_router +#h_pkg_svc +#h_port +#h_prepay_credit +#h_queue +#h_queue_arg +#h_queue_depend +#h_radius_usergroup +#h_router +#h_router_field +#h_sb_field +#h_session +#h_svc_acct +#h_svc_acct_pop +#h_svc_broadband +#h_svc_domain +#h_svc_forward +#h_svc_www +#h_type_pkgs +#msgcat +#nas +#part_bill_event +#part_export +#part_export_option +#part_pkg + +my @tables = qw( +part_pop_local +part_referral +part_router_field +part_sb_field +part_svc +part_svc_column +part_svc_router +pkg_svc +port +prepay_credit +queue +queue_arg +queue_depend +radius_usergroup +router +router_field +sb_field +session +svc_acct +svc_acct_pop +svc_broadband +svc_domain +svc_forward +svc_www +type_pkgs +); + +my $s_dbh = DBI->connect($s_datasrc, $s_dbuser, $s_dbpass) or die $DBI::errstr; +my $d_dbh = DBI->connect($d_datasrc, $d_dbuser, $d_dbpass) or die $DBI::errstr; + +foreach my $table ( @tables ) { + $d_dbh->do("delete from $table"); + + my $s_sth = $s_dbh->prepare("select * from $table"); + $s_sth->execute or die $s_sth->errstr; + + my $row; + while ( $row = $s_sth->fetchrow_arrayref ) { + my $d_sth = $d_dbh->prepare( + "insert into $table ( ". + join(', ', @{$s_sth->{NAME}} ). + ' ) VALUES ( '. + join(', ', map { '?' } @{$s_sth->{NAME}} ). + ' )' + ) or die $d_dbh->errstr; + + $d_sth->execute(@$row) or die $d_sth->errstr; + + } +} + diff --git a/bin/sequences.reset b/bin/sequences.reset new file mode 100644 index 000000000..f0fc4b7f2 --- /dev/null +++ b/bin/sequences.reset @@ -0,0 +1,28 @@ +#!/usr/bin/perl + +use FS::UID qw(adminsuidsetup); +use FS::Record qw(dbdef dbh); + +my $user = shift; +adminsuidsetup $user or die; + +foreach my $table ( dbdef->tables ) { + my $primary_key = dbdef->table($table)->primary_key; + next unless $primary_key; + #my $local = dbdef->table($table)->column($primary_key)->local; + ##next unless $default =~ /nextval/; + #print "$local\n"; + + my $statement = "select setval('${table}_${primary_key}_seq', ( select max($primary_key) from $table ) )\n"; + my $sth = dbh->prepare($statement) or do { + warn dbh->errstr. " preparing $statement\n"; + next; + }; + $sth->execute or do { + warn dbh->errstr. " executing $statement\n"; + dbh->commit; + next; + } + +} + -- cgit v1.2.1 From aa2daf29c5bb13a3728b434159afc4065367af91 Mon Sep 17 00:00:00 2001 From: ivan Date: Wed, 12 May 2004 18:07:41 +0000 Subject: easier this way --- bin/sequences.reset | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'bin') diff --git a/bin/sequences.reset b/bin/sequences.reset index f0fc4b7f2..2dc1d3bb2 100644 --- a/bin/sequences.reset +++ b/bin/sequences.reset @@ -13,7 +13,11 @@ foreach my $table ( dbdef->tables ) { ##next unless $default =~ /nextval/; #print "$local\n"; - my $statement = "select setval('${table}_${primary_key}_seq', ( select max($primary_key) from $table ) )\n"; + my $statement = "select setval('${table}_${primary_key}_seq', ( select max($primary_key) from $table ) )"; + + print "$statement;\n"; + next; + my $sth = dbh->prepare($statement) or do { warn dbh->errstr. " preparing $statement\n"; next; -- cgit v1.2.1 From 535811854078c1720ab5250f1a1669306796df95 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 27 May 2004 09:14:50 +0000 Subject: adding sqlradius.import --- bin/sqlradius.import | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 bin/sqlradius.import (limited to 'bin') diff --git a/bin/sqlradius.import b/bin/sqlradius.import new file mode 100644 index 000000000..9cb518e7f --- /dev/null +++ b/bin/sqlradius.import @@ -0,0 +1,144 @@ +#!/usr/bin/perl -Tw + +use strict; +use vars qw(%part_svc %domain_part_svc); +#use Date::Parse; +use DBI; +use Term::Query qw(query); +use FS::UID qw(adminsuidsetup); #datasrc +use FS::Record qw(qsearch qsearchs); +use FS::svc_acct; +use FS::part_svc; +use FS::svc_domain; + +my $user = shift or die &usage; +adminsuidsetup $user; + +#push @FS::svc_acct::shells, qw(/bin/sync /sbin/shutdown /bin/halt /sbin/halt); #others? + +$FS::svc_Common::noexport_hack = 1; + +### + +%part_svc=map { $_->svcpart, $_ } qsearch('part_svc',{'svcdb'=>'svc_acct'}); + +die "No services with svcdb svc_acct!\n" unless %part_svc; + +print "\n\n", &menu_svc, "\n", <svcpart, $_ } + qsearch('part_svc', { 'svcdb' => 'svc_domain'} ); + +die "No services with svcdb svc_domain!\n" unless %domain_part_svc; + +print "\n\n", &menu_svc, "\n", <connect( $datasrc, $db_user, $db_pass ) + or die $DBI::errstr; + +my $sth = $dbh->prepare('SELECT DISTINCT UserName, Realm FROM radcheck') + or die $dbh->errstr; +$sth->execute or die $sth->errstr; + +my $row; +while ( $row = $sth->fetchrow_arrayref ) { + my( $r_username, $realm ) = @$row; + + my( $username, $domain ); + if ( $r_username =~ s/([^@]+)\@([^@]+)$// ) { + $username = $1; + $domain = $2; + } else { + $username = $r_username; + $domain = $realm; + } + my %svc_domain = ( 'svcpart' => $domain_svcpart, + 'domain' => $domain, ); + my $svc_domain = qsearchs('svc_domain', \%svc_domain ) + || new FS::svc_domain \%svc_domain; + unless ( $svc_domain->domsvc ) { + my $error = $svc_domain->insert; + if ( $error ) { + die "can't insert domain $domain: $error\n"; + } + } + + my( $password, $finger, $group ) = ( '', '', '' ); + + my $rc_sth = $dbh->prepare( + 'SELECT Attribute, Value, Name, GroupName'. + ' FROM radcheck'. + ' WHERE UserName = ? and Realm = ?' + ) or die $dbh->errstr; + $rc_sth->execute($r_username, $realm) or die $rc_sth->errstr; + + foreach my $rc_row ( @{$rc_sth->fetchall_arrayref} ) { + my($attribute, $value, $name, $groupname) = @$row; + if ( $attribute =~ /^(Crypt-)?Password$/ ) { + $password = $value; + $finger = $name; + $group = $groupname; + } else { + #handle other params! + } + } + + my $svc_acct = new FS::svc_acct ( + 'svcpart' => $sqlradius_svcpart, + 'username' => $username, + 'domsvc' => $svc_domain->domsvc, + '_password' => $password, + 'finger' => $finger, + ); + + my($error); + #$error = $svc_acct->insert; + $error = $svc_acct->check; + if ( $error ) { + if ( $error =~ /duplicate/i ) { + warn "$r_username: $error"; + } else { + die "$r_username: $error"; + } + } + +} + +sub usage { + die "Usage:\n\n sqlradius.import user\n"; +} + -- cgit v1.2.1