$username_noperiod $username_uppercase
$shellmachine $useradd $usermod $userdel $mydomain
$cyrus_server $cyrus_admin_user $cyrus_admin_pass
+ $cp_server $cp_user $cp_pass $cp_workgroup
$dirhash
$icradius_dbh
@saltset @pw_set);
$cyrus_admin_user = '';
$cyrus_admin_pass = '';
}
+ if ( $conf->exists('cp_app') ) {
+ ($cp_server, $cp_user, $cp_pass, $cp_workgroup) =
+ $conf->config('cp_app');
+ eval "use Net::APP;"
+ } else {
+ $cp_server = '';
+ $cp_user = '';
+ $cp_pass = '';
+ $cp_workgroup = '';
+ }
if ( $conf->exists('icradiusmachines') ) {
if ( $conf->exists('icradius_secrets') ) {
#need some sort of late binding so it's only connected to when
return "queueing job (transaction rolled back): $error";
}
}
+
+ if ( $cp_server ) {
+ my $queue = new FS::queue { 'job' => 'FS::svc_acct::cp_insert' };
+ $error = $queue->insert($self->username, $self->_password);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "queueing job (transaction rolled back): $error";
+ }
+ }
+
if ( $icradius_dbh ) {
my $radcheck_queue =
1;
}
+sub cp_insert {
+ my( $username, $password ) = @_;
+
+ my $app = new Net::APP ( $cp_server,
+ User => $cp_user,
+ Password => $cp_pass,
+ Domain => $mydomain,
+ Timeout => 60,
+ #Debug => 1,
+ ) or die $@;
+
+ $app->create_mailbox(
+ Mailbox => $username,
+ Password => $password,
+ Workgroup => $cp_workgroup,
+ Domain => $mydomain,
+ );
+
+ die $app->message unless $app->ok;
+}
+
sub icradius_rc_insert {
my( $username, $password, %radcheck ) = @_;
return "queueing job (transaction rolled back): $error";
}
}
+
+ if ( $cp_server ) {
+ my $queue = new FS::queue { 'job' => 'FS::svc_acct::cp_delete' };
+ $error = $queue->insert($self->username);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "queueing job (transaction rolled back): $error";
+ }
+ }
+
if ( $icradius_dbh ) {
my $radcheck_queue =
1;
}
+sub cp_delete {
+ my( $username ) = @_;
+ my $app = new Net::APP ( $cp_server,
+ User => $cp_user,
+ Password => $cp_pass,
+ Domain => $mydomain,
+ Timeout => 60,
+ #Debug => 1,
+ ) or die $@;
+
+ $app->delete_mailbox(
+ Mailbox => $username,
+ Domain => $mydomain,
+ );
+
+ die $app->message unless $app->ok;
+}
+
sub icradius_rc_delete {
my $username = shift;
}
}
+ if ( $cp_server && $old->username ne $new->username ) {
+ my $queue = new FS::queue { 'job' => 'FS::svc_acct::cp_rename' };
+ $error = $queue->insert( $old->username, $new->username );
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "queueing job (transaction rolled back): $error";
+ }
+ }
+
+ if ( $cp_server && $old->_password ne $new->_password ) {
+ my $queue = new FS::queue { 'job' => 'FS::svc_acct::cp_change' };
+ $error = $queue->insert( $new->username, $new->_password );
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "queueing job (transaction rolled back): $error";
+ }
+ }
+
if ( $icradius_dbh ) {
my $queue = new FS::queue { 'job' => 'FS::svc_acct::icradius_rc_replace' };
$error = $queue->insert( $new->username,
1;
}
+sub cp_rename {
+ my ( $old_username, $new_username );
+
+ my $app = new Net::APP ( $cp_server,
+ User => $cp_user,
+ Password => $cp_pass,
+ Domain => $mydomain,
+ Timeout => 60,
+ #Debug => 1,
+ ) or die $@;
+
+ $app->rename_mailbox(
+ Domain => $mydomain,
+ Old_Mailbox => $old_username,
+ New_Mailbox => $new_username,
+ );
+
+ die $app->message unless $app->ok;
+
+}
+
+sub cp_change {
+ my ( $username, $password );
+
+ my $app = new Net::APP ( $cp_server,
+ User => $cp_user,
+ Password => $cp_pass,
+ Domain => $mydomain,
+ Timeout => 60,
+ #Debug => 1,
+ ) or die $@;
+
+ $app->change_mailbox(
+ Domain => $mydomain,
+ Mailbox => $username,
+ Password => $password,
+ );
+
+ die $app->message unless $app->ok;
+
+}
+
=item suspend
Suspends this account by prefixing *SUSPENDED* to the password. If there is an