8-800 рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд╣рдорд▓рд╛ рдХрд░рддреЗ рд╕рдордп рддрд╛рд░рд╛рдВрдХрди рд╕реБрд░рдХреНрд╖рд╛

рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж , рдореБрдЭреЗ рднрдп рдХреЗ рд╕рд╛рде рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣рдорд▓реЗ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рдереЗред рдФрд░ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рдПрдХ рджрд┐рди рдореЗрдВ 10-20 рд╣рдЬрд╛рд░ рд░реВрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рдд рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдШреБрдЯрдиреЗ рдкрд░ рдПрдХ рд╕реБрд░рдХреНрд╖рд╛рддреНрдордХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлреЗрдВрдХреА - рд╢рд╛рдпрдж рдХреЛрдИ рдХрд╛рдо рдЖрдПрдЧрд╛ ...

рд╕рд┐рд╕реНрдЯрдо рдХреА рддреИрдпрд╛рд░реА
рд╕реНрдХреНрд░рд┐рдкреНрдЯ php рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд╣реИ рдФрд░ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП sqlite3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ php-cli рдФрд░ php5-sqlite3 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдХреЛ ubunt рдкрд░ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП

sudo apt-get install php5-cli php5-sqlite 


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реАред
рдХрд╛рдо рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛ рдлреЛрди рдирдВрдмрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рдХрд┐рддрдиреА рдмрд╛рд░ рдкрд╣рд▓реЗ рд╣реА рдХреЙрд▓ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ (рд╡реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕реЗрдЯ рд╣реИрдВ)ред рдпрджрд┐ рд╕реАрдорд╛ рдкрд╛рд░ рд╣реЛ рдЬрд╛рддреА рд╣реИ - рд╢рдмреНрдж 'рд╕реНрдЯреЙрдк' рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд░рд┐рдЯрд░реНрди 'рдЬрд╛рд░реА' рд░рд╣рддрд╛ рд╣реИ

 <?php $rules = array( 60 => 2, //   2    ( 60  ) 3600 => 10 //   10    ( 3600  ) ); if (!$argv[1] ) die("please use: '" . $argv[0] . " phone_number' \nfor example: ".$argv[0]." 88121234567\n"); //     $db = new SQLite3('/tmp/sqlite.db'); $db->exec('CREATE TABLE IF NOT EXISTS logs (phone bigint(12), datetime int(12))'); //        $phone = preg_replace('/[^0-9]/','', $argv[1]); $db->exec("INSERT INTO logs (phone, datetime) VALUES ( '".$phone."','".time()."' )"); foreach( $rules as $secs => $limit ) { $res = $db->query( "SELECT count(*) as `c` FROM logs WHERE `phone` = '".$phone."' AND `datetime` >= " .( time() - $secs ) ); $row = $res->fetchArray(); //    if ( $row['c'] > $limit ) { die('stop'); //  stop     } } //   -   ,     $max_period = max(array_keys($rules) ); $db->exec("DELETE FROM logs WHERE `datetime` < " .( time() - $max_period )); //  continue die('continue'); ?> 


рддрд╛рд░рд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди
рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ - рдЙрддреНрддрд░ () рдХрдорд╛рдВрдб рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЬреЛ "рд░рд┐рдореВрд╡реНрд╕" рд▓рд╛рдЗрди рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИред

 exten => 8800XXXXXXX,1,Set(resp=${SHELL(php /home/scripts/antiddos.php ${CALLERID(num)})}); exten => 8800XXXXXXX,2,Gosubif($[${resp}==stop]?${EXTEN},${MATH(${PRIORITY}+1),int}:${EXTEN},${MATH(${PRIORITY}+2),int}); exten => 8800XXXXXXX,3,HangUp(); exten => 8800XXXXXXX,4,Answer(); ... 


рдЪрд▓реЛ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбрд╛рдпрд▓рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ:
1) рд╕реЗрдЯ (рд╕рдореНрдорд╛рди = $ {SHELL (php /home/scripts/antiddos.php $ {CALLERID (num)})));
рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡реИрд▓реНрдпреВ рдХреЛ рд╕рд╛рдВрддреНрд╡рдирд╛ рдХреЗ рд▓рд┐рдП рдореБрджреНрд░рд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддреЗ рд╣реИрдВ
2) рдЧреЛрд╕реБрдмреАрдл ($ [$ {resp} == stop]? $ {EXTEN}, $ {MATH ($ {PRIORITY} +1), int}: $ {EXTEN}, $ {MATH ($ PRIORITY} +2) ), рдЗрдВрдЯ});
рдпрджрд┐ рдорд╛рди 'рд╕реНрдЯреЙрдк' рд╣реИ, рддреЛ рд╡рд░реНрддрдорд╛рди рдбрд╛рдпрд▓рдкреИрди рдХреЗ рдЕрдЧрд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдкрд░ рдЬрд╛рдПрдВ, рдЬрд╣рд╛рдВ HangUp () рдЯреАрдо рд╣рдорд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддреА рд╣реИ
рдЕрдиреНрдпрдерд╛, рд╣рдо рд▓рд╛рдЗрди рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ рдФрд░ рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рдЖрдЦрд┐рд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
рдпрджрд┐ рд╕реАрдорд╛ рдкрд╛рд░ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрд╕рдЖрдИрдкреА рд╕рддреНрд░ рдорд┐рд▓реЗрдЧрд╛:
 sip provider me invite => <= trying <= OK ack => 

рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдЪрд╛рд░реНрдЬрд┐рдВрдЧ рд╢реБрд░реВ рд╣реЛ рдЧрдИ рд╣реИ

рдпрджрд┐ рд╣рдо рд╣реИрдВрдбрдЕрдк () рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдПрд╕рдЖрдИрдкреА рд╕рддреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
 sip provider me invite => <= trying <= DECLINE ack => 


рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЙрд▓ рдХрд┐рдП рдЧрдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред рдмрд┐рд▓рд┐рдВрдЧ рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рд╣реБрдИ рдФрд░ рд╕рддреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ред

рдпреБрдкреАрдбреА:
рдЕрдирд╛рдо рдирдВрдмрд░реЛрдВ рд╕реЗ рд╣рдорд▓рд╛ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдВрдЯреА-рдПрдУрдПрди рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдХрд┐рдП рдЧрдП рдирдВрдмрд░реЛрдВ рдкрд░ рдПрдХ рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...

Source: https://habr.com/ru/post/In144039/


All Articles