#!/usr/bin/perl

use DBI;
use strict;
use POSIX;
use WWW::Curl::Easy;
use JSON;
use Config::Tiny;
use Data::Dumper;
use Cwd;
use URI;
use POSIX qw(strftime);
#use Dinstar;
use CGI qw/:standard/;


#  my $imei = changeIMEI( "10.0.66.104", 22, "admin:pepito20", "350448242406566" );
   my $imei = changeIMEI( "10.0.66.104", 22, "admin:pepito20", "350448243301774" );
   

# ------------
# changeIMEI
# ------------
sub changeIMEI {
	my $ip = $_[0];
	my $port = $_[1];
	my $auth = $_[2];
	my $imei = $_[3];

   my $url = "$ip/api/set_port_info";
   my $calculated = $imei;
#   my $content = "port=" . $port . "&action=imei" . "&imei=" . $calculated . "&param=" . $calculated; 
#  my $content = "port=" . $port. "&action=reset" . "&imei=" . $calculated  . "&param=" . $calculated; 
#  my $content = "action=reset" . "&param=" . $calculated . "&port=" . $port . "&imei=" . $calculated; 
#  my $content = "action=power&param=on&port=" . $port;
   my $content = "action=imei&param=" . $imei . "&port=" . $port;


   printf( "$url?%s\n", $content );
   my $curl = WWW::Curl::Easy->new;
   $curl->setopt( CURLOPT_HEADER,0);
   $curl->setopt( CURLOPT_URL, $url);
   $curl->setopt( CURLOPT_MAXREDIRS, 10 );                                                
   $curl->setopt( CURLOPT_POSTFIELDS, $content );
#  $curl->setopt( CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
   $curl->setopt( CURLOPT_HTTPAUTH, CURLAUTH_ANY ) ;
   $curl->setopt( CURLOPT_USERPWD, $auth );
   $curl->setopt( CURLOPT_POST, 1);
   $curl->setopt( CURLOPT_TIMEOUT, 0);
   $curl->setopt( CURLOPT_FOLLOWLOCATION, 1);
   $curl->setopt( CURLINFO_HEADER_OUT, 1 );

   my $response_body;
   $curl->setopt(CURLOPT_WRITEDATA,\$response_body);
   my $retcode = $curl->perform;
   my $error_text = "";

   printf( "retcode: %d\n", $retcode );
   if ($retcode == 0) {
		my $response_code = $curl->getinfo(CURLINFO_HTTP_CODE);
      printf( "response_code: %d\n", $response_code );
     	if( $response_code == 200 ) {
 	     	print "IMEI change succesful\n";
			return $calculated;
     	}
   }
   return "";
}
   
