рд╣реИрдм рдХреЗ рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреЛ рдирдорд╕реНрдХрд╛рд░ред
PHP рд╕реАрдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореБрдЭреЗ PHP рдореЗрдВ рдХреБрдЫ рдмреЙрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛, рдмрд┐рдирд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдПред
рд╡рд┐рдХрд▓реНрдк рдмреЙрдЯ рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛, рдЬреЛ рдбреЛрдореЗрди (рд╣реВрдЗрд╕) рдХреЗ рдЬреАрд╡рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рдлрд┐рд░ рд╡рд╣рд╛рдВ рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХреА рддрд╛рд░реАрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕ рдбреЛрдореЗрди рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ (mysql) рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдпрдХрд╛рд░реА рдФрд░ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рд╕рд╛рдеред
рдЧреАрддрд╛ рдкрд░
рдореЗрд░реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдбред
рдореИрдВ
рдПрдорд╡реАрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬреЛ рдХрд┐
рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕рд╣реА рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рджреЗрдЦрдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдерд╛ рдФрд░ рдЗрд╕реЗ рдЕрдм рдкреАрд╡реАрд╕реА рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдУрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ ...
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рдВрд░рдЪрдирд╛
рдХрдВрдЯреНрд░реЛрд▓рд░ - рдПрдХ рд▓рд┐рдВрдХ рдЬреЛ рдореЙрдбрд▓ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдореЙрдбрд▓ - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ "рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ" рдХреА рдлрд╛рдЗрд▓реЗрдВ (рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдкреВрд░реЗ рдПрд╕рдХреНрдпреВрдПрд▓ рдХреЛ "рдХреНрд░реИрдо" рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА)ред
рдХреЛрд░ - рдЕрдиреБрдкреНрд░рдпреЛрдЧ "рдХреЛрд░" рдлрд╝рд╛рдЗрд▓реЗрдВред
рдкреБрд╕реНрддрдХрд╛рд▓рдп - рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдиреЗ рдбреЛрдореЗрди рдирд╛рдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рдорд╛рд░реНрдЧ
рд░реВрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ (path.php)
рдХреЛрд░ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред
2 рдкрддреЗ рдЖрд╡реЗрджрди рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╣реИрдВ:
/ bot -
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЗрд╕ рдкрддреЗ рдкрд░
рдЬрд╛рддрд╛ рд╣реИ (рдЖрдкрдХреЛ рдЗрд╕ uri / bot рдкрддреЗ рдкрд░
webhook рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)ред
/ рдЬрд╛рдВрдЪ - рдЗрд╕ рдкрддреЗ рдкрд░, рдХреНрд░реЛрди 1 рдкреНрд░рддрд┐ рджрд┐рди (12 рдмрдЬреЗ) рдХреЗ рд╕рд╛рде
рд╡рд┐рдШрдЯрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ , рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХред
BotController
рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рд╣реЛрдиреЗ рдкрд░, рд╣рдореЗрдВ
POST рдЕрдиреБрд░реЛрдз рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рд╕реЗ рдорд╛рди рдорд┐рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
json_decode(file_get_contents('php://input'), JSON_OBJECT_AS_ARRAY);
php: // input - POST рдЕрдиреБрд░реЛрдз рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
CheckerController
рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рд╣реЛрдиреЗ рдкрд░, рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЬреЛ рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЛрдореЗрди рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХрд░рддреА рд╣реИ:
- рд╡рд░реНрддрдорд╛рди рддрд┐рдерд┐
- 2 рджрд┐рди
- 7 рджрд┐рди
- 30 рджрд┐рди
рдФрд░ рдбреЛрдореЗрди рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреА рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕реВрдЪрдирд╛рдПрдВ рднреЗрдЬрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝рдирд╛
рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ webhook рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╣рдорд╛рд░реА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ, рддрдм рд╣рдореЗрдВ json рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╣рдо
рд╕рдВрджреЗрд╢ рд╕рд░рдгреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ
редрд╕рд░рдгреА
рд╕рдВрджреЗрд╢ ['рдЪреИрдЯ'] рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ :
id ,
first_nameрдЬрд╣рд╛рдВ:
рдЖрдИрдбреА - рдЪреИрдЯ
рдЖрдИрдбреАfirst_name - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо
рдФрд░
рд╕рдВрджреЗрд╢ ['рдкрд╛рда'] рд╕рд░рдгреА рд╕реЗ, рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдЖрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИред
рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд╛рддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╡рд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдмрдирд╛рдПрдВ
рдбреЛрдореЗрди рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рдЬреЛрдбрд╝рдирд╛
рдЬрдм
/ addDomain url рдХрдорд╛рдВрдб рдХреЛ рдмреЙрдЯ рдореЗрдВ рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХрдорд╛рдВрдб рд╕реЗ рдбреЛрдореЗрди рдпреВрдЖрд░рдПрд▓ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░
рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЛрдореЗрди рдкрдВрдЬреАрдХрд░рдг рдбреЗрдЯрд╛ рдорд┐рд▓рддрд╛ рд╣реИред
рдбреЛрдореЗрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╣рдореЗрдВ рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЙрддреНрддрд░ рдорд┐рд▓рддрд╛ рд╣реИ:
рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рддреЗ рд╣реБрдП , рд╣рдо рдЗрд╕реЗ рд╕реЗ рдбреЛрдореЗрди рдкрдВрдЬреАрдХрд░рдг рдХреА рддрд╛рд░реАрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
preg_match('/Registry\sExpiry\sDate:\s(.*)\\r/', $date, $matches); if (!$matches[1]){ preg_match('/paid-till:\s*(.*)\\n/', $date, $matches); } $matches[1] = $this->formatDate($matches[1]); return $matches[1];
рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдореИрдВрдиреЗ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП
рдУрдкрдирдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
$getDomainSSL = shell_exec("echo | openssl s_client -servername $url -connect $url:443 2>/dev/null | openssl x509 -noout -dates"); preg_match('~notAfter=(\w+)\s(\d+)\s.+\s(\d+)~', $getDomainSSL, $matches); $date = $matches[2].$matches[1].$matches[3]; $date = date("Ymd", strtotime($date)); $date = str_replace('.','-',$date); return $date;
рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
echo | openssl s_client -servername google.com -connect google.com:443 2>/dev/null | openssl x509 -noout -dates notBefore=Jan 7 15:47:12 2020 GMT notAfter=Mar 31 15:47:12 2020 GMT
рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ
preg_match('~notAfter=(\w+)\s(\d+)\s.+\s(\d+)~', $getDomainSSL, $matches);

рдпрд╣ рдХреЗрд╡рд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред
$sql = 'INSERT INTO domains (domain_name, date_start, date_end, date_end_ssl) VALUES (:domain_name, :date_start, :date_end, :date_end_ssl)'; $insert = $db->prepare($sql); $insert->execute([':domain_name' => $url, ':date_end' => $exp, ':date_end_ssl' => $ssl_date]);
рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдбреЛрдореЗрди рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рдХреЛ рдмрд╛рдВрдзрддреЗ рд╣реИрдВ
рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЛ рдХреЗрд╡рд▓
рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбреЛрдореЗрди рдХреЛ "рдЧреБрдгрд╛" рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
$sql = 'INSERT INTO domain_users (user_id, domain_id) VALUES (:user_id, :domain_id)'; $insert = $db->prepare($sql); $insert->execute([':user_id' => $user_id, ':domain_id' => $domain_id]);
рдбреЛрдореЗрди рдХреА рдЕрдВрддрд┐рдо рддрд┐рдерд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
рдЬрдм wget / check address рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕рдорд╛рдкреНрддрд┐ рддрд┐рдерд┐ рдХреЗ рд╕рд╛рде рд╕рднреА рдбреЛрдореЗрди рдФрд░ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЪреБрдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рд╣реЛ, рддреЛ рдпрд╣ рдПрдХ рдЪреИрдЯ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдбреЛрдореЗрди рдмрд╛рдзреНрдп рд╣реЛрддрд╛ рд╣реИред
$db = $this->db; $sql= " SELECT user_name, chat_id, domain_name, date_end FROM domain_users JOIN users USING (user_id) JOIN domains USING (domain_id) WHERE ( domains.date_end = CURDATE() OR domains.date_end = CURDATE() + INTERVAL 2 DAY OR domains.date_end = CURDATE() + INTERVAL 7 DAY OR domains.date_end = CURDATE() + INTERVAL 30 DAY ) "; $stmt = $db->prepare($sql); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
рдХреНрд░реЙрди
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ
рдореБрдХреБрдЯ рдХреЛ рд╣рд░ рджрд┐рди 12 рдмрдЬреЗ, рдкрддрд╛ / рдЪреЗрдХ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
crontab -e 0 12 * * * wget url/check
рддреЛрд░ рдЫрдВрдж
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рджреЗрд╢ (рд░реВрд╕) рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рд╡реЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреА рдПрдкреАрдЖрдИ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред
рдореБрдЭреЗ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдореЗрд░реА рдкрд╕рдВрдж
рдЯреЛрд░ рдкреНрд░реЙрдХреНрд╕реА (рдЕрдВрддрд┐рдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рдж рд╕реЗ) рдкрд░ рдЧрд┐рд░ рдЧрдИред
рдЗрд╕реЗ рдмрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
sudo apt-get install tor
рддрдм рдкреЛрд░реНрдЯ 9050 рдкрд░ рдкреНрд░реЙрдХреНрд╕реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреАред
curl_setopt($myCurl, CURLOPT_PROXYTYPE, 7); curl_setopt($myCurl, CURLOPT_PROXY, "127.0.0.1:9050");
рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж!
рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рд▓реЗрдЦ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдЦреНрддреА рд╕реЗ рдиреНрдпрд╛рдп рди рдХрд░реЗрдВ :)
рдЗрд╕ рдкреЛрд╕реНрдЯ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ, рдореИрдВ рдХрд┐рд╕реА рднреА рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рд╕рд╣рд░реНрд╖ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реВрдВрдЧрд╛ред
рдореЗрд░реЗ рдЧрд┐рдереВрдм рднрдВрдбрд╛рд░ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб :)