Poproszono mnie o zablokowanie dostępu do Facebooka od 8:00 do 15:00 dla prawie wszystkich użytkowników, ale oni korzystają alternatywne adresy URL Facebooka i tak uzyskać dostęp do sieci społecznościowej. To pochłania dużo naszej niskiej przepustowości i nie możemy nawet pracować. Zdecydowałem się zaprojektować wyrażenie regularne (regex) do analizowania tych adresów URL i blokowania ich . Nie chcę blokować wszystkich adresów URL na Facebooku, ale tylko alternatywy. Alternatywne adresy URL Facebooka zawierają głównie słowa szturchać lub iPhone . Kolejne to alternatywne adresy URL Facebooka zarejestrowane przez nasz serwer proxy:
m.iphone.touch.prod.facebook.com
m.iphone.haid.prod.facebook.com:443
m.ct.prod.facebook.com
m.vi-vn.prod.facebook.com
Zaprojektowane wyrażenie regularne: /((?=.*\biphone\b)|(?=.*\bprod\b)).*\.facebook\.com(\:|\d|)/
Przetestowałem ten regex na https://regex101.com/ i https://www.regextester.com . Wyrażenie regularne to pasujący dla:
m.iphone.touch.prod.facebook.com
m.iphone.haid.prod.facebook.com:443
m.ct.prod.facebook.com
m.vi-vn.prod.facebook.com
I jest nie pasuje dla:
www.facebook.com
m.facebook.com
mqtt.facebook.com (for purple-facebook)
graph.facebook.com
connect.facebook.com
3-edge-chat.facebook.com
Do tej pory chciałem, aby alternatywne adresy URL były blokowane, a zwykłe adresy URL na Facebooku były dozwolone. Mój regex wygląda dobrze do użycia w kałamarnicy .
Następnym krokiem jest zmodyfikowanie pliku /etc/squid3/squid.conf przez dodanie nowego acl wskazującego plik zawierający wyrażenie regularne:
acl facebook dstdom_regex "/etc/squid3/acl/facebook" //The file contains the regex
http_access deny pass facebook
Kiedy uciekam squid3 -k parse w celu sprawdzenia pliku konfiguracyjnego otrzymuję błędy:
2017/09/22 11:12:26| Processing: acl facebook dstdom_regex "/etc/squid3/acl/facebook"
2017/09/22 11:12:26| squid.conf line 78: acl facebook dstdom_regex "/etc/squid3/acl/facebook"
2017/09/22 11:12:26| aclParseRegexList: Invalid regular expression '((?=.*\biphone\b)|(?=.*\bprod\b)).*\.facebook\.com(\:|\d|)': Invalid preceding regular expression
2017/09/22 12:39:33| Warning: empty ACL: acl facebook dstdom_regex "/etc/squid3/acl/facebook"
Oczywiście parser squid3 taguje mój acl jako źle , ale już testowałem online i dobrze było z niego korzystać. Również mówi, że acl jest pusty. Co to znaczy? Acl został zadeklarowany z nazwą Facebook . Jestem bardzo zdezorientowany tym.