File: /var/www/ilya/data/www/povoleni.ru/modules/services/check.php
<?
function check_application($code,$type,$year,$zov) {
/* {
"identification" : "OAM-21080/DP-2023",
"state" : "INPROGRESS"
}
{
"timestamp" : "2023-08-05T13:22:27.126823",
"status" : 400,
"code" : "NO_CODE",
"path" : "POST /api/ip/external/proceedings/state/cj/zov?idCj=21080&database=DP&year=2023&zov=",
"message" : "reCaptcha was not successfully validated"
} */
$proxy_data = mysqli_fetch_array(query("SELECT * FROM `proxy_list` ORDER BY RAND() LIMIT 1"));
$proxy = $proxy_data['host'];
$proxyauth = $proxy_data['auth'];
require(__DIR__ . '/../../includes/bestcaptchasolver.php'); // load API library
$ACCESS_TOKEN = '4D0FF5D715954021868C12C09DB89552';
$PAGE_URL = 'https://frs.gov.cz/informace-o-stavu-rizeni/?';
$SITE_KEY = '6LfDkwskAAAAAJkuXNNbQPBcNfD4V7nQHbg68ptU';
$bcs = new BestCaptchaSolver($ACCESS_TOKEN); // get token from https://bestcaptchasolver.com/account
// check account balance
$balance = $bcs->account_balance(); // get balance
//echo "Balance: $balance";
//echo ' Submitting recaptcha...';
$p = array();
$p['page_url'] = $PAGE_URL;
$p['site_key'] = $SITE_KEY;
// other parameters
// ----------------------------------------------------------------------
// reCAPTCHA type(s) - optional, defaults to 1
// ---------------------------------------------
// 1 - v2
// 2 - invisible
// 3 - v3
// 4 - enterprise v2
// 5 - enterprise v3
//
$p["type"] = "3";
//
$p["v3_action"] = "proceedings"; // action used when solving v3 reCaptcha, optional
//$p["v3_min_score"] = "0.3"; // min score to target when solving v3, optional
//$p['domain'] = "www.google.com"; // used in loading reCAPTCHA, in some cases it works better with - recaptcha.net
//$p["data_s"] = "recaptcha data-s parameter used in loading reCAPTCHA"; // optional
//$p["cookie_input"] = "a=b;c=d"; // used in solving of reCAPTCHA, optional
//$p['user_agent'] = 'user agent here'; // optional
$p["proxy"] = $proxyauth.'@'.$proxy; // proxy with/out authentication, optional
//$p["affiliate_id"] = "affiliate_id"; // get it from /account, optional
$id = $bcs->submit_recaptcha($p);
// get response now that we have the ID
$gresponse = NULL;
while($gresponse === NULL) {
$gresponse = $bcs->retrieve($id)['gresponse']; // get the image text (if completed)
$proxy_status = $bcs->retrieve($id)['proxy_status'];
sleep(5); // retry every 5 seconds
}
// completed at this point
echo " Recaptcha response: $gresponse";
$proxy_status = $bcs->retrieve($id)['proxy_status'];
// $bcs->set_captcha_bad($id); // set bad captcha for specific id
$url = 'https://frs.gov.cz/api/ip/external/proceedings/state/cj/zov?idCj='.$code.'&database='.$type.'&year='.$year.'&zov='.$zov;
print "Key: ".$gresponse."\nProxy: ".$proxy_status."\n";
$data = '{ "captcha": "'.$gresponse.'" }';
$additional_headers = array(
'Accept: application/json',
'Content-Type: application/json'
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $additional_headers);
curl_setopt ($ch, CURLOPT_PROXY, $proxy);
curl_setopt ($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
$server_output = curl_exec ($ch);
echo "<b>".$server_output."</b>";
curl_close($ch);
$parsed_output = json_decode($server_output);
if(array_key_exists('message',$parsed_output))
if($parsed_output->{'message'}=='reCaptcha was not successfully validated') {
print "Achtung! Problem with reCaptcha!";
//$bcs->set_captcha_bad($id);
query("UPDATE `proxy_list` SET `last_used`=NOW(), `attempts_failed`=`attempts_failed`+1 WHERE `id`='".$proxy_data['id']."' LIMIT 1;");
die($parsed_output->{'message'});
}
else {
print "ReCaptcha is OK.";
}
query("UPDATE `proxy_list` SET `last_used`=NOW(), `attempts_success`=`attempts_success`+1 WHERE `id`='".$proxy_data['id']."' LIMIT 1;");
return $parsed_output;
}
function mail2telegram($text) { // Remove header and footer from email to send via telegram
$text = substr($text,strpos($text,"\n\n"));
$text = substr($text,0,strrpos($text,"\n\n"));
return trim($text);
}
function get_mail_check_positive($data) {
global $global_vars;
$mail = array();
$mail['subject'] = $global_vars['translation'][$data['language']]['index_check_email_positive_subject']." ".get_application_number($data);
$mail['subject'] = '=?UTF-8?B?'.base64_encode($mail['subject']).'?=';
if($data['zov']!='') {
$mail['text'] = $global_vars['translation'][$data['language']]['index_check_email_positive_text_1']." ".get_application_number($data)."! ".$global_vars['translation'][$data['language']]['index_check_email_positive_text_zov'];
}
else {
$mail['text'] = $global_vars['translation'][$data['language']]['index_check_email_positive_text_1']." ".get_application_number($data)."! ".$global_vars['translation'][$data['language']]['index_check_email_positive_text_dp'];
}
$mail['headers'] = "From: ".$global_vars['translation'][$data['language']]['site_name']." <no-reply@povoleni.ru>\r\nReply-To: info@povoleni.ru\r\nMIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n";
return $mail;
}
function get_mail_check_negative($data) {
global $global_vars;
$mail = array();
$mail['subject'] = $global_vars['translation'][$data['language']]['index_check_email_negative_subject']." ".get_application_number($data);
$mail['subject'] = '=?UTF-8?B?'.base64_encode($mail['subject']).'?=';
if($data['zov']!='') {
$mail['text'] = $global_vars['translation'][$data['language']]['index_check_email_negative_text_1']." ".get_application_number($data).". ".$global_vars['translation'][$data['language']]['index_check_email_negative_text_zov'];
}
else {
$mail['text'] = $global_vars['translation'][$data['language']]['index_check_email_negative_text_1']." ".get_application_number($data).". ".$global_vars['translation'][$data['language']]['index_check_email_negative_text_dp'];
}
$mail['headers'] = "From: ".$global_vars['translation'][$data['language']]['site_name']." <no-reply@povoleni.ru>\r\nReply-To: info@povoleni.ru\r\nMIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n";
return $mail;
}
function get_mail_check_not_found($data) {
global $global_vars;
$mail = array();
$mail['subject'] = $global_vars['translation'][$data['language']]['index_check_email_not_found_subject']." ".get_application_number($data);
$mail['subject'] = '=?UTF-8?B?'.base64_encode($mail['subject']).'?=';
$mail['text'] = $global_vars['translation'][$data['language']]['index_check_email_not_found_text_1']." ".get_application_number($data).$global_vars['translation'][$data['language']]['index_check_email_not_found_text_2'];
$mail['headers'] = "From: ".$global_vars['translation'][$data['language']]['site_name']." <no-reply@povoleni.ru>\r\nReply-To: info@povoleni.ru\r\nMIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n";
return $mail;
}
$result = query("SELECT * FROM `entries` WHERE `status`=2 AND (DATE_ADD(`updated`, INTERVAL 12 HOUR)<NOW() OR `updated` IS NULL) ORDER BY `updated` ASC LIMIT 1;");
//$result = query("SELECT * FROM `entries` WHERE `id`=16649 LIMIT 1;");
//$result = query("SELECT * FROM `entries` WHERE `id`=10482");
if(mysql_num_rows($result)>0) {
while($data = mysql_fetch_array($result)) {
if(strpos($data['code'],"-"))
$data['code'] = substr($data['code'],0,strpos($data['code'],"-"));
while($data['code'][0]=="0") {
$data['code'] = substr($data['code'],1);
}
if($data['zov']!='') {
$frs_result = check_application('','','',$data['zov']);
}
else {
$frs_result = check_application($data['code'],$data['type'],$data['year'],'');
}
$is_sent = FALSE;
print $result->{'identification'}.': '.$result->{'state'};
if(array_key_exists('state',$frs_result))
if(($frs_result->{'state'}=='DECLINED') || ($frs_result->{'state'}=='APPROVED')) {
print "<strong>".get_application_number($data).": Ready (".$frs_result->{'state'}.")!</strong><br />";
if($frs_result->{'state'}=='DECLINED')
$mail = get_mail_check_negative($data);
elseif($frs_result->{'state'}=='APPROVED')
$mail = get_mail_check_positive($data);
if($data['email']!='') {
$mailer = new PHPMailer(); // create a new object
$mailer->CharSet = "UTF-8";
$mailer->IsSMTP(); // enable SMTP
$mailer->SMTPDebug = false; // debugging: 1 = errors and messages, 2 = messages only
$mailer->SMTPAuth = true; // authentication enabled
$mailer->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for Gmail
$mailer->Host = "smtp.gmail.com";
$mailer->Port = 587; // or 587
$mailer->IsHTML(false);
$mailer->Username = SITE_EMAIL_USERNAME;
$mailer->Password = SITE_EMAIL_PASSWORD;
$mailer->SetFrom(SITE_EMAIL,$global_vars['translation'][$data['language']]['site_name']);
$mailer->AddReplyTo(SITE_EMAIL_REPLYTO,$global_vars['translation'][$data['language']]['site_name']);
$mailer->Subject = $mail['subject'];
$mailer->Body = $mail['text'];
$mailer->AddAddress($data['email']);
if($mailer->Send())
$is_sent = TRUE;
}
elseif($data['telegram_id']!='') {
send_telegram($data['telegram_id'],mail2telegram($mail['text']));
$is_sent = TRUE;
}
if($is_sent) {
query("UPDATE `entries` SET `updated`=NOW(), `comment`='".$frs_result->{'state'}."', `status`=3 WHERE `id`=".$data['id']);
}
}
else {
if($frs_result->{'status'}=='404') {
$mail = get_mail_check_not_found($data);
if($data['email']!='') {
$mailer = new PHPMailer(); // create a new object
$mailer->CharSet = "UTF-8";
$mailer->IsSMTP(); // enable SMTP
$mailer->SMTPDebug = false; // debugging: 1 = errors and messages, 2 = messages only
$mailer->SMTPAuth = true; // authentication enabled
$mailer->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for Gmail
$mailer->Host = "smtp.gmail.com";
$mailer->Port = 587; // or 587
$mailer->IsHTML(false);
$mailer->Username = SITE_EMAIL_USERNAME;
$mailer->Password = SITE_EMAIL_PASSWORD;
$mailer->SetFrom(SITE_EMAIL,$global_vars['translation'][$data['language']]['site_name']);
$mailer->AddReplyTo(SITE_EMAIL_REPLYTO,$global_vars['translation'][$data['language']]['site_name']);
$mailer->Subject = $mail['subject'];
$mailer->Body = $mail['text'];
$mailer->AddAddress($data['email']);
if($mailer->Send()) {
$is_sent = TRUE;
}
}
elseif($data['telegram_id']!='') {
send_telegram($data['telegram_id'],mail2telegram($mail['text']));
$is_sent = TRUE;
}
if($is_sent) {
query("UPDATE `entries` SET `status`='5' WHERE `id`='".$data['id']."';");
}
}
query("UPDATE `entries` SET `updated`=NOW(), `comment`='".$frs_result->{'state'}."' WHERE `id`=".$data['id']);
print get_application_number($data).": Not yet<br />";
}
}
}
/////////////////////////////////////////////////////////////////////////////////////
function get_mail_outdate($data) {
global $global_vars;
$mail = array();
$mail['subject'] = $global_vars['translation'][$data['language']]['index_get_table_email_subject_1']." ".get_application_number($data)." ".$global_vars['translation'][$data['language']]['index_get_table_email_subject_2'];
$mail['subject'] = '=?UTF-8?B?'.base64_encode($mail['subject']).'?=';
$mail['text'] = $global_vars['translation'][$data['language']]['index_get_table_email_text_1']." ".get_application_number($data)." ".$global_vars['translation'][$data['language']]['index_get_table_email_text_2'];
$mail['headers'] = "From: ".$global_vars['translation'][$data['language']]['site_name']." <no-reply@povoleni.ru>\r\nReply-To: info@povoleni.ru\r\nMIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n";
return $mail;
}
$result = query("SELECT * FROM `entries` WHERE (DATE_ADD(`updated`, INTERVAL 2 DAY)<NOW()) AND (`status`=2);");
if(mysql_num_rows($result)>0) {
$result2 = query("SELECT * FROM `entries` WHERE (DATE_ADD(`updated`, INTERVAL 1 HOUR)>NOW()) AND (`status`=2);");
if(mysql_num_rows($result2)==0) {
mail("mailbox@rudomilov.com","Problem with povoleni.ru", "Возникла задержка в обработке очереди.");
}
}
$result = query("SELECT * FROM `entries` WHERE ((DATE_ADD(`added`, INTERVAL 2 YEAR)<NOW()) OR (`year`<YEAR(DATE_SUB(NOW(), INTERVAL 2 YEAR)))) AND `status`=2 LIMIT 1;");
if(mysql_num_rows($result)>0) {
$is_sent = FALSE;
while($data = mysql_fetch_array($result)) {
$mail = get_mail_outdate($data);
//mail($data['email'],$mail['subject'],$mail['text'],$mail['headers']);
if($data['email']!='') {
$mailer = new PHPMailer(); // create a new object
$mailer->CharSet = "UTF-8";
$mailer->IsSMTP(); // enable SMTP
$mailer->SMTPDebug = false; // debugging: 1 = errors and messages, 2 = messages only
$mailer->SMTPAuth = true; // authentication enabled
$mailer->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for Gmail
$mailer->Host = "smtp.gmail.com";
$mailer->Port = 587; // or 587
$mailer->IsHTML(false);
$mailer->Username = SITE_EMAIL_USERNAME;
$mailer->Password = SITE_EMAIL_PASSWORD;
$mailer->SetFrom(SITE_EMAIL,$global_vars['translation'][$data['language']]['site_name']);
$mailer->AddReplyTo(SITE_EMAIL_REPLYTO,$global_vars['translation'][$data['language']]['site_name']);
$mailer->Subject = $mail['subject'];
$mailer->Body = $mail['text'];
$mailer->AddAddress($data['email']);
if($mailer->Send())
$is_sent = TRUE;
}
elseif($data['telegram_id']!='') {
send_telegram($data['telegram_id'],mail2telegram($mail['text']));
$is_sent = TRUE;
}
if($is_sent)
query("UPDATE `entries` SET `status`=4 WHERE `id`='".$data['id']."';");
}
}
?>