use lib 'lib';
use H1::ZTEDSLAM;
+use H1::ZTEMSAN;
+
+my $variant = $ARGV[0] || 'ZTEDSLAM';
+warn "variant: $variant\n";
my $driver = Gearman::Driver->new(
server => 'localhost:4730',
my $worker = $w1->new();
-my $crm = $worker->do( 'CRM_search' => "TIP_UREDJAJA:ZTEDSLAM" );
+my $crm = $worker->do( 'CRM_search' => "TIP_UREDJAJA:$variant" );
my $poll;
foreach my $ip ( keys %$poll ) {
- my $method = "ZTEDSLAM_$ip";
+ my $method = $variant . '_' . $ip;
- my $zte = H1::ZTEDSLAM->new( ip => $ip );
+ my $module = 'H1::' . $variant;
+ my $zte = $module->new( ip => $ip );
$driver->add_job({
max_processes => 1, # FIXME increase?
my $redis = Redis->new;
if ( $@ ) {
- $redis->sadd("ZTEDSLAM.error" => $@);
+ $redis->sadd("$variant.error" => $@);
return { error => $@ };
} else {
- $redis->sadd("ZTEDSLAM.ok" => $crm->{USERNAME});
+ $redis->sadd("$variant.ok" => $crm->{USERNAME});
}
$self->do_background_json( 'Store_insert', {
max_processes => 1,
min_processes => 1,
worker => $worker,
- name => 'poll_ZTEDSLAM',
+ name => "poll_$variant",
methods => [ {
- name => 'poll_ZTEDSLAM',
+ name => "poll_$variant",
body => sub {
my ( $self, $job, $workload ) = @_;
- my $crm = $self->do( 'CRM_search' => "TIP_UREDJAJA:ZTEDSLAM" );
+ my $crm = $self->do( 'CRM_search' => "TIP_UREDJAJA:$variant" );
warn "# crm $crm";
my $seen;
my $redis = Redis->new;
- $redis->del( $_ ) foreach $redis->keys("ZTEDSLAM.*");
+ $redis->del( $_ ) foreach $redis->keys("$variant.*");
- $redis->set( "ZTEDSLAM.start" => $self->datetime_now );
+ $redis->set( "$variant.start" => $self->datetime_now );
foreach my $user ( @$crm ) {
my $ip = $user->{IP_UREDAJA};
my $port = $user->{SHELF_SLOT_PORT};
if ( $ip !~ /$RE{net}{IPv4}/ ) {
- $redis->sadd("ZTEDSLAM.invalid.IP_UREDAJA" => $ip);
+ $redis->sadd("$variant.invalid.IP_UREDAJA" => $ip);
next;
} elsif ( $port !~ m{\d+(/\d+)+} ) {
- $redis->sadd("ZTEDSLAM.invalid.PORT" => $port);
+ $redis->sadd("$variant.invalid.PORT" => $port);
next;
} elsif ( $seen->{ $ip }->{ $port }++ ) {
- $redis->sadd("ZTEDSLAM.invalid.duplicate" => "$ip $port");
+ $redis->sadd("$variant.invalid.duplicate" => "$ip $port");
next;
}
- $redis->sadd("ZTEDSLAM.queued" => "$ip $port");
- $redis->incr("ZTEDSLAM.ip.$ip");
+ $redis->sadd("$variant.queued" => "$ip $port");
+ $redis->incr("$variant.ip.$ip");
- my $name = 'ZTEDSLAM_' . $ip;
+ my $name = $variant . '_' . $ip;
$taskset->add_task( $name, $self->e_json( $user ), {
- on_complete => sub { $redis->sadd("ZTEDSLAM.complete", "$ip $port") },
- on_fail => sub { $redis->sadd("ZTEDSLAM.fail", "$ip $port") },
+ on_complete => sub { $redis->sadd("$variant.complete", "$ip $port") },
+ on_fail => sub { $redis->sadd("$variant.fail", "$ip $port") },
} )
}
warn "# queue logouts";
foreach my $ip ( keys %$seen ) {
- $taskset->add_task( "ZTEDSLAM_$ip", $self->e_json( { logout => 1 } ) );
+ $taskset->add_task( $variant . '_' . $ip, $self->e_json( { logout => 1 } ) );
}
warn "# wait";
$taskset->wait;
- $redis->set( "ZTEDSLAM.finish" => $self->datetime_now );
+ $redis->set( "$variant.finish" => $self->datetime_now );
warn "# seen ", dump($seen);
my $ips = scalar keys %$seen;