In SquidGuard within pfSense 2.3.1 in the Groups ACL screen there are two columns in the Target Rules List Target Categories and Target Categories for off-time.  Each value in the row has the values allow, deny, whitelist and ---.Why are there two columns and what do they mean?
In pfSense what is the meaning of the Target Categories and Target Categories for off-time columns in the Groups ACL Screen?
acl;squid;pfsense
Figured it out.  After looking at the code that is generated and referencing the Squid Guardian website for some examples, it became clear to me that the Target Categories column contains the blacklist / whitelist rules that are applied when the acl is within the specified time period, and the Target Categories for off-time are the blacklist / whitelist rules that are applied when the acl is outside the time period specified.Target Rules SyntaxCopying the Target Rules text tells all (provided you've already saved it, it isn't updated automatically when changing the values...)It usually looks like this:<black-lists applied inside time frame> all|deny [ <black-lists applied outside time frame> all|deny ]The syntax works like this, Anything outside of the brackets is what is applied inside the time frame.<black-lists applied inside time frame>Anything inside the brackets is what is applied outside the time frame.<black-lists applied inside time frame>The all or deny at the end states that after the rest of the lists have been run through without a hit (left to right), do you want to allow all the other sites to be accessed, or do you want all the other sites to be denied?Prefixes:Applies to all specified black lists! = Deny  = allow^ = whitelistExampleNow I imagine that I'm over complicating this a bit (there must be a less verbose syntax), and that if I learned more about the allow as opposed to whitelist syntax there would be some way to use the defaults, but I haven't looked into that yet, so here is what I understand:Suppose that when you want things set outside of the time range you want the following blacklists to be in effect and any other sites are free game:blk_BL_adv blk_BL_aggressive blk_BL_dating blk_BL_drugs blk_BL_gamble blk_BL_hacking blk_BL_movies blk_BL_news blk_BL_politics blk_BL_porn blk_BL_radiotv blk_BL_socialnet blk_BL_spyware blk_BL_warez...and you want anything else to be accessible...then you'd put all at the end.To see this in action you would have everything between the brackets:[ !blk_BL_adv !blk_BL_aggressive !blk_BL_dating !blk_BL_drugs !blk_BL_gamble !blk_BL_hacking !blk_BL_movies !blk_BL_news !blk_BL_politics !blk_BL_porn !blk_BL_radiotv !blk_BL_socialnet !blk_BL_spyware !blk_BL_warez all ] Note that there are only ! (deny) and no  (allow) and no ^ (whitelist)Now suppose that during the time period we would like to allow access to the following, but still keep our off-time blacklist rules in play:blk_BL_moviesblk_BL_newsblk_BL_politicsblk_BL_socialnetThen we copy the values from our off-time list and replace the ! (deny) with ^ (whitelist) on only the entries listed above.  The rest of them remain ! deny.The list outside the brackets then becomes!blk_BL_adv !blk_BL_aggressive !blk_BL_dating !blk_BL_drugs !blk_BL_gamble !blk_BL_hacking ^blk_BL_movies ^blk_BL_news ^blk_BL_politics !blk_BL_porn !blk_BL_radiotv ^blk_BL_socialnet !blk_BL_spyware !blk_BL_warez all...and also there is an all at the end to of the list to allow the rest of the sites.So when we throw it all together we have: !blk_BL_adv !blk_BL_aggressive !blk_BL_dating !blk_BL_drugs !blk_BL_gamble !blk_BL_hacking ^blk_BL_movies ^blk_BL_news ^blk_BL_politics !blk_BL_porn !blk_BL_radiotv ^blk_BL_socialnet !blk_BL_spyware !blk_BL_warez all [ !blk_BL_adv !blk_BL_aggressive !blk_BL_dating !blk_BL_drugs !blk_BL_gamble !blk_BL_hacking !blk_BL_movies !blk_BL_news !blk_BL_politics !blk_BL_porn !blk_BL_radiotv !blk_BL_socialnet !blk_BL_spyware !blk_BL_warez all ] and that's what gets stored as the value of the Target Rules box.When I was trying to figure this out, I unknowingly found myself in vim replicating the same two lists that make up the GUI by taking the value of Target Rules, splitting it into the lists inside and outside the brackets, and taking each of the flat lists and placing them vertically beside one another, then I realized what was going on.