123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- <?php
- include ('api.1984tech.php');
- $tech = new OrwellWorld();
- $squidCA = ('-----BEGIN PRIVATE KEY-----
- MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAN/7Ghjf1XnBKh5N
- FR70eaGobv31/7a3ISl8WuxjuzMcxeH2CWcV57IbPltAM9w19Sw5cgw6pkosFTWO
- ScT19l2aTqBjyU0UuP0qIEMaD2S/wzN6d1iY1lBDrxLIir3fkLVxLrNw7YY5Du/T
- oyh2D92lAgqBHcppao1R2YGAlcrFAgMBAAECgYBj9kxqZ5N92HD0vxA7FX8nX+XR
- YDX1FPwu6LonoEcPA7tpIoaFxGf4vGHzFc9Pa6F1UFoPDSnkFpKMqWlRBzkhLVJs
- e8VzDQcv/0oZtbIki7+Aih2QXufw2AFYVeiKxgjNBEP9uNRXvNw2v+Z0qBkio4G9
- Xww5fFNK+gHFDNvcAQJBAPw+KUKwNf9og7av6XE7c0YZ1mYkYDOjX0r26BO/AoUu
- /a8ZFq5SSsCpsjOXmXIMZWLW8ANU7LV1gw8T1+rcB8UCQQDjUSx+3QqQJxe5zr7J
- cxPzuP4wVvmC8h95RgX4VKhhqKEtIGv1Sonj7aaeT3SGpT5LUfKm8S8Pj+ctrlP0
- S+cBAkEAtpUQLLN8AopWfNBMe6f6ws1FAd5mvDoPaiXayyBB5MGk4y+X2Uq7zUWI
- NgwQCBus76SBSwgX5ylOWoWUju4BuQJBAIJwA95QLE2HgR/HuMaT2DEUSBeo8Mfo
- 85J9UdOrkGtpfgMNBaXdPb6ikedppG3WyCYkQd71qpF9e6RE0jvuigECQQCO9nhL
- zxqabzkkwbsxaR+A7Ut1sqKmQeKpwu3unmvynhlpgsea1EoMp2D9HL1tI6alR0PR
- /Sy6XimligpwSNUc
- -----END PRIVATE KEY-----
- -----BEGIN CERTIFICATE-----
- MIICyDCCAjGgAwIBAgIJAP8TzwhQe9xfMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNV
- BAYTAlVBMRAwDgYDVQQIDAdVa3JhaW5lMREwDwYDVQQKDAgxOTg0VEVDSDERMA8G
- A1UECwwIMTk4NFRFQ0gxETAPBgNVBAMMCDE5ODR0ZWNoMSMwIQYJKoZIhvcNAQkB
- FhRhcHVfYWRtaW5AYXB1Lmdvdi51YTAeFw0xNzA1MjUxOTQzNTFaFw0yNzA1MjMx
- OTQzNTFaMH0xCzAJBgNVBAYTAlVBMRAwDgYDVQQIDAdVa3JhaW5lMREwDwYDVQQK
- DAgxOTg0VEVDSDERMA8GA1UECwwIMTk4NFRFQ0gxETAPBgNVBAMMCDE5ODR0ZWNo
- MSMwIQYJKoZIhvcNAQkBFhRhcHVfYWRtaW5AYXB1Lmdvdi51YTCBnzANBgkqhkiG
- 9w0BAQEFAAOBjQAwgYkCgYEA3/saGN/VecEqHk0VHvR5oahu/fX/trchKXxa7GO7
- MxzF4fYJZxXnshs+W0Az3DX1LDlyDDqmSiwVNY5JxPX2XZpOoGPJTRS4/SogQxoP
- ZL/DM3p3WJjWUEOvEsiKvd+QtXEus3DthjkO79OjKHYP3aUCCoEdymlqjVHZgYCV
- ysUCAwEAAaNQME4wHQYDVR0OBBYEFK6nt3LvFOZ6R+b8JxgV/mTs0sB1MB8GA1Ud
- IwQYMBaAFK6nt3LvFOZ6R+b8JxgV/mTs0sB1MAwGA1UdEwQFMAMBAf8wDQYJKoZI
- hvcNAQEFBQADgYEAHRXF1YQMtpLyEg/pmxyIN/n3GoaqUFKuP8oyCJRspYB5fPKD
- s00UOlyoH9Tvig4pnoCN/FiTdbQge7W6/2NTvSabF4Yf3XaQZUNqRbazJNXrOajg
- IIOr0nePEA8ur1vGUco5q7zKnjwAnWdOa1YuKlwchJ5ZboOAoHeF/rc/yLw=
- -----END CERTIFICATE-----
- ');
- $squid_config = ('#
- # Recommended minimum configuration:
- #
- acl SSL_ports port 443
- acl Safe_ports port 80 # http
- acl Safe_ports port 443 # https
- acl CONNECT method CONNECT
- acl 1984tech url_regex "' . $tech->SquidPath . '/1984tech.conf"
- http_access deny 1984tech
- deny_info ERR_1984TECH 1984tech
- #
- # Recommended minimum Access Permission configuration:
- #
- # Deny requests to certain unsafe ports
- http_access deny !Safe_ports
- # Deny CONNECT to other than secure SSL ports
- http_access deny CONNECT !SSL_ports
- # Only allow cachemgr access from localhost
- http_access allow localhost manager
- http_access allow ALL
- http_access deny manager
- http_access deny to_localhost
- # Squid normally listens to port 3128
- http_port 127.0.0.1:3128 intercept options=NO_SSLv3:NO_SSLv2
- # указываем HTTPS порт с нужными опциями
- https_port 127.0.0.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=' . $tech->SquidPath . '/squidCA.pem
- always_direct allow all
- sslproxy_cert_error allow all
- sslproxy_flags DONT_VERIFY_PEER
- #укажем правило со списком блокируемых ресурсов (в файле домены вида .domain.com)
- acl blocked ssl::server_name_regex "' . $tech->SquidPath . '/1984tech.conf"
- acl step1 at_step SslBump1
- ssl_bump peek step1
- #терминируем соединение, если клиент заходит на запрещенный ресурс
- ssl_bump terminate blocked
- ssl_bump splice all
- # Leave coredumps in the first cache dir
- coredump_dir /var/squid/cache
- ');
- $error_message = ('<!DOCTYPE html>
- <html lang="uk">
- <head>
- <meta charset="utf-8">
- <title>Халепа</title>
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <style>
- body
- {
- background-color:#000000;
- color: #FFFFFF;
- }
- .outer {
- display: table;
- position: absolute;
- height: 99%;
- width: 99%;
- }
- .middle {
- display: table-cell;
- vertical-align: middle;
- }
- .inner {
- margin-left: auto;
- margin-right: auto;
- width: 70%;
- opacity:.80;
- -moz-opacity:.80;
- filter:alpha(opacity=80);
- background-color:#000000;
- -moz-box-shadow: 3px 3px 4px #000;
- -webkit-box-shadow: 3px 3px 4px #000;
- box-shadow: 3px 3px 4px #000;
- /* For IE 8 */
- -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color="#000000")";
- /* For IE 5.5 - 7 */
- filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=135, Color="#000000");
- }
- }
- .centered {
- text-align: center;
- }
- a:link {
- color: rgb(61, 101, 148);
- font-family: Tahoma,Verdana,Helvetica,sans-serif;
- text-decoration: none;
- }
- a:active {
- color: rgb(61, 101, 148);
- font-family: Tahoma,Verdana,Helvetica,sans-serif;
- text-decoration: none;
- }
- a:visited {
- color: rgb(61, 101, 148);
- font-family: Tahoma,Verdana,Helvetica,sans-serif;
- text-decoration: none;
- }
- a:hover {
- color: rgb(45, 64, 102);
- font-family: Tahoma,Verdana,Helvetica,sans-serif;
- text-decoration: none;
- }
- </style>
- </head>
- <body>
- <div class="outer">
- <div class="middle">
- <div class="inner">
- <h1 class="centered">Шановний абонент.</h1>
- Набув чинності Указ Президента України №133/2017 "Про рішення Ради національної безпеки і оборони України від 28 квітня 2017 року "Про застосування
- персональних спеціальних економічних та інших обмежувальних заходів (санкцій)" .
- Відповідно до цього Указу інтернет провайдери повинні припинити надання послуг з доступу до ряду веб-ресурсів, зокрема соціальних мереж "Однокласник
- и", "Вконтакте", сервісів Yandex та mail.ru, а також деяких інших.
- Більш детально зі списком веб-ресурсів ви можете ознайомитись за наступним <a href="http://www.president.gov.ua/documents/1332017-21850">посиланням</a>.
- <br>
- Виконуючи вимоги зазначеного Указу проводяться технічні заходи з обмеження надання послуг доступу до зазначених веб-ресурсів, відповідно з нашими те
- хнічними можливостями.
- <br>
- <br>
- За додатковою інформацією ви можете звертатись за адресою: 01220, м. Київ, вул. Банкова, 11.<br>
- Або ж телефонувати за номером - (044) 255-73-33.
- </div>
- </div>
- </div>
- </body>
- </html>
- ');
- //need at least 1 command line argument
- if ($argc >= 2) {
- $allowedOptions = array(
- '--preview' => 'preview config file for Squid to stdout',
- '--list' => 'list loaded domains',
- '--print-pem' => 'Print SSL pem head data that need for Squid',
- '--generate' => 'generate comfig file on filesystem for Squid',
- '--help' => 'show small help'
- );
- $option = $argv[1];
- if (isset($allowedOptions[$option])) {
- switch ($option) {
- case '--preview':
- print($tech->getSquidConfig($squid_config));
- break;
- case '--list':
- print($tech->renderDomainsRaw());
- break;
- case '--print-pem':
- $cert = openssl_x509_read($squidCA);
- $parsedCert=openssl_x509_parse($cert);
- print ($parsedCert['name'] . PHP_EOL);
- break;
- case '--generate':
- $generationResult = $tech->saveSquid($squid_config, $squidCA, $error_message);
- if (!empty($generationResult)) {
- print('Squid config files:' . PHP_EOL . $generationResult . ' saved' . PHP_EOL);
- } else {
- print('Squid 1984tech.conf skipped because DNS_ZONES option empty' . PHP_EOL);
- }
- break;
- case '--help':
- print('Usage: php cli/squidgen --option' . PHP_EOL);
- print('Available options:' . PHP_EOL);
- if (!empty($allowedOptions)) {
- foreach ($allowedOptions as $optionName => $optionDesc) {
- print($optionName . ' - ' . $optionDesc . PHP_EOL);
- }
- }
- break;
- }
- } else {
- print('Unknown command line option: ' . $option . PHP_EOL);
- }
- } else {
- //option requirement notification
- print('At least one option required.' . PHP_EOL);
- print('Usage: php cli/squidgen --option' . PHP_EOL);
- print('For example: php cli/squidgen --help' . PHP_EOL);
- }
- ?>
|