{"id":374,"date":"2017-01-20T00:23:02","date_gmt":"2017-01-19T22:23:02","guid":{"rendered":"http:\/\/www1.ngtech.co.il\/wpe\/?p=374"},"modified":"2017-01-20T00:31:12","modified_gmt":"2017-01-19T22:31:12","slug":"when-is-the-kid-considered-stable-squid-3-5-234-0-17","status":"publish","type":"post","link":"https:\/\/www1.ngtech.co.il\/wpe\/2017\/01\/20\/when-is-the-kid-considered-stable-squid-3-5-234-0-17\/","title":{"rendered":"When is the kid considered stable? &#8211; Squid 3.5.23+4.0.17"},"content":{"rendered":"<h1 style=\"text-align: center;\">When is the kid considered stable?<br \/>\nOr<br \/>\nWhen is the software stable enough?<\/h1>\n<h1 style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-383 aligncenter\" src=\"http:\/\/www1.ngtech.co.il\/wpe\/wp-content\/uploads\/2017\/01\/dessert_sushi_by_outlawxvega-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"https:\/\/www1.ngtech.co.il\/wpe\/wp-content\/uploads\/2017\/01\/dessert_sushi_by_outlawxvega-300x225.jpg 300w, https:\/\/www1.ngtech.co.il\/wpe\/wp-content\/uploads\/2017\/01\/dessert_sushi_by_outlawxvega-768x577.jpg 768w, https:\/\/www1.ngtech.co.il\/wpe\/wp-content\/uploads\/2017\/01\/dessert_sushi_by_outlawxvega.jpg 920w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/h1>\n<p style=\"text-align: justify;\">I am not developing software daily\u00a0but it seems that the inner debate on the stability of our different &#8220;kids&#8221; and fruits of work is always there. Every time when I consider something as stable enough for production some other voice adds a doubt on the stability of a software.<\/p>\n<p style=\"text-align: justify;\">Specifically, in the squid-cache and the open-source world the question is always on the board or the desktop. The source is open to everyone to find the next bug. Some are happy with what they have already while some expect the equivalent of a Ferrari.<\/p>\n<p style=\"text-align: justify;\">When I am writing a software, I am doing my best effort to write it with the main goal that human lives can be entrusted to this software. One of the reasons why I am trying to meet such a goal is that in real life I try to do the same. When someone asks me a question or turns to me with a request or a\u00a0word, I know that he asks for a reason. There is no chance in the world that the occasion is a result of only &#8220;A series of of unfortunate events&#8221;. I was asked in my past couple times &#8220;Why do you bother to answer?&#8221; and the answer is the simplest: the sanity of the other party is in my hands.<\/p>\n<p style=\"text-align: justify;\">Sometimes a REDIRECT is the right answer but never DROP or REJECT. These are the actions of &#8220;war&#8221; and when we are talking about HTTP in general there is a war out there. \u00a0I had the choice in the past to work in couple layers of the Internet from the hardware to the application and I choose to invest lots of time on layer 4 and above.<\/p>\n<p style=\"text-align: justify;\">There are many tools in this warzone and\u00a0every time that a new tool is in use it get&#8217;s it&#8217;s own life cycle. The issue is that it takes time for every tool to become mature enough to serve different purposes.<\/p>\n<p style=\"text-align: justify;\">Squid 3.5 is already in use by many users and admins for a while and is considered Stable for a very long time, but now aging start showing up. \u00a0There are different levels of maturity but the basic one is a period of 30 days uptime. We do expect more but a restart once every 30 days without any crash would be considered stable.<\/p>\n<p style=\"text-align: justify;\">For now I am\u00a0in the hunt for fatal bugs on the 3.5 series. The reason for this is to measure the maturity of the the branch!<\/p>\n<p style=\"text-align: justify;\">Lately I have been working on couple tools and one of them is a library for distributed rate blacklists querying and blocking. Using this library\u00a0I wrote\u00a0an external acl helper for squid that\u00a0can help many\u00a0admins to use OpenDNS and Symantech or other internal DNS Blacklists.<\/p>\n<p style=\"text-align: justify;\">The library sources can be found at:<br \/>\n<a href=\"https:\/\/github.com\/elico\/drbl-peer\" target=\"_blank\">https:\/\/github.com\/elico\/drbl-peer<\/a><\/p>\n<p style=\"text-align: justify;\">And in binaries package at:<br \/>\n<a href=\"http:\/\/moodle.ngtech.co.il\/drbl-extacl\/\" target=\"_blank\">http:\/\/moodle.ngtech.co.il\/drbl-extacl\/<\/a><\/p>\n<p style=\"text-align: justify;\">squid.conf example of usage:<\/p>\n<blockquote><p>external_acl_type dnsbl_check ipv4 concurrency=200 ttl=15 %DST %SRC %METHOD \/opt\/bin\/squid-external-acl-helper -peers-filename=\/opt\/bin\/peersfile.txt<br \/>\nacl dnsbl_check_acl external dnsbl_check<br \/>\ndeny_info http:\/\/ngtech.co.il\/block_page\/?url=%u&amp;domain=%H dnsbl_check_acl<\/p>\n<p>http_access deny dnsbl_check_acl<\/p><\/blockquote>\n<p>Example of peersfile.txt:<br \/>\n<a href=\"http:\/\/moodle.ngtech.co.il\/drbl-extacl\/peersfile.txt\" target=\"_blank\">http:\/\/moodle.ngtech.co.il\/drbl-extacl\/peersfile.txt<\/a><\/p>\n<p>The syntax of the above file is:<br \/>\ntype&lt;space&gt;address&lt;space&gt;path(for http services)&lt;space&gt;port&lt;space&gt;rate for the host(uint)&lt;space&gt;address which will indicate a blacklisted domain with spaces between them.<br \/>\nThe type options are:<\/p>\n<ul>\n<li>dns<\/li>\n<li>dnsrbl<\/li>\n<li>http<\/li>\n<li>https<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">The http and https destinatiosn are queried with a HEAD request to the host and path and\u00a0a match will be reflected in the response headers with &#8220;X-Vote&#8221;\u00a0value to be &#8220;BLOCK&#8221;.<br \/>\nThe dns and dnsrbl will be a match for one of the addresses\u00a0which are defined from the six value on the definition and on ie matches in\u00a0the line:<\/p>\n<blockquote><p>dns 208.67.220.123 \/ 53 128 146.112.61.104 146.112.61.105 146.112.61.106<\/p><\/blockquote>\n<p>would be the addresses:<br \/>\n146.112.61.104 or 146.112.61.105 or 146.112.61.106<\/p>\n<p style=\"text-align: justify;\">and the weight of a match is 128 and specifically the default match weight of the helper is 128 and this line would be a match and no more lookups will be done. In the case which one list is not a match each of the listed would be tested until either found or the timeout(default 30 seconds) is reached. If the timeout or the list of peers was not found as fully matching the weight, the request will be allowed.<\/p>\n<p style=\"text-align: justify;\">With this tool you can use regular DNS services on your system and on the proxy intercept the traffic and\u00a0get a decision using a &#8220;consultation&#8221; with an external system not compromising your clients with special block pages that the dns redirect towards.<\/p>\n<hr \/>\n<p style=\"text-align: justify;\">So we have both a proxy and a simple tool which can help us to prevent access to specific sites. The stability of\u00a0Squid for this release is considered &#8220;Very Stable&#8221; but yet to be tested on a larger scale then 400 users. If you are managing a system which runs squid for filtering or caching that have more than 400 users please send us some input from the squid manager info page so we would be able to rate the state of the software.<\/p>\n<p style=\"text-align: justify;\">I am planning to write a tiny tool\\script that will help to scrap the squid manager info page and send the Squid-Cache systems some\u00a0feedback. If you are a squid system administrator which are willing to\u00a0share some statistics on your system with the project, please contact me at: <a href=\"mailto:eliezer@ngtech.co.il\" target=\"_blank\">eliezer@ngtech.co.il<\/a><\/p>\n<p style=\"text-align: justify;\">I believe that\u00a0if we could gather enough statistics we would be able to declare\u00a0that the software passed the &#8220;masses&#8221; test compared to couple single systems.<\/p>\n<p style=\"text-align: justify;\">All The Bests,<br \/>\nEliezer Croitoru<\/p>\n<p>On the plate:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/elico\/ca-cert-test-page\" target=\"_blank\">CA\u00a0certificate test and installation html page<\/a>\u00a0(<a href=\"http:\/\/moodle.ngtech.co.il\/ca-test\/\" target=\"_blank\"><em><strong>example\u00a0page<\/strong><\/em><\/a>)<\/li>\n<li><a href=\"https:\/\/github.com\/elico\/windows-rootca-autodeploy-create\" target=\"_blank\">Windows Root CA installation script<\/a>\u00a0(<a href=\"http:\/\/ngtech.co.il\/myca\/\" target=\"_blank\"><em><strong>example page<\/strong><\/em><\/a>)<\/li>\n<li>Debian and Ubuntu Stable \u00a0and Beta versions repository(without ecap support).. takes time to prepare<\/li>\n<li><a href=\"http:\/\/moodle.ngtech.co.il\/drbl-icap-service\/\" target=\"_blank\">ICAP DRBL query service<br \/>\n<\/a><a href=\"http:\/\/moodle.ngtech.co.il\/drbl-icap-service\/\" target=\"_blank\">&#8211; Package of Binaries\u00a0Sources and scripts<\/a><br \/>\n&#8211;\u00a0<a href=\"https:\/\/github.com\/elico\/drbl-icap-service\" target=\"_blank\">Sources and startup scripts\u00a0on github<br \/>\n<\/a>&#8211;\u00a0I have hope to publish the tool in RPM and DEB format<\/li>\n<li>Squid 4.0.17\u00a0Basic functionality tests\u00a0.. takes time to prepare<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">References:<\/p>\n<ul>\n<li><a href=\"http:\/\/wiki.squid-cache.org\/KnowledgeBase\/CentOS#Squid-3.5\" target=\"_blank\">Squid-Cache CentOS repository details<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>When is the kid considered stable? Or When is the software stable enough? I am not developing software daily\u00a0but it seems that the inner debate on the stability of our different &#8220;kids&#8221; and fruits of work is always there. Every time when I consider something as stable enough for production some other voice adds a &hellip; <a href=\"https:\/\/www1.ngtech.co.il\/wpe\/2017\/01\/20\/when-is-the-kid-considered-stable-squid-3-5-234-0-17\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">When is the kid considered stable? &#8211; Squid 3.5.23+4.0.17<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":383,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,12,10],"tags":[],"class_list":["post-374","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-squid-3-5","category-squid-4-0","category-squid-release"],"_links":{"self":[{"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/posts\/374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/comments?post=374"}],"version-history":[{"count":18,"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/posts\/374\/revisions"}],"predecessor-version":[{"id":396,"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/posts\/374\/revisions\/396"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/media\/383"}],"wp:attachment":[{"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/media?parent=374"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/categories?post=374"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www1.ngtech.co.il\/wpe\/wp-json\/wp\/v2\/tags?post=374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}