summaryrefslogtreecommitdiffstats
path: root/src/pattern-help.html
blob: 890d842c13af229dcea166c261c9eb7a55383ce8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <title>FoxyProxy Pattern Help</title>
    <link rel="icon" type="image/png" href="/images/icon.svg">
    <link rel="stylesheet" href="styles/fontawesome-4.6.3.css">
    <link rel="stylesheet" href="styles/app.css">
    <style>
      td { font-size: 0.9em; }
      td:not(:first-of-type) { font-family: monospace; }
    </style>
  </head>
  <body>

    <!-- header -->
    <div class="prime header">Pattern Help</div>
    
    <!-- main -->
    <div class="prime">    

      <div style="text-align: right;">
        
        <div class="tooltip">
          <span data-i18n="patternCheatSheet" class="fp-orange"></span>
          <i class="fa fa-info-circle"></i>
          <div class="tooltiptext bottom table">
            <div class="tooltiptable">
              <div class="monospace">*</div>
              <div>all domains</div>
              <div class="monospace">*.bbc.co.uk</div>
              <div>exact domain and all subdomains</div>
              <div class="monospace">**.bbc.co.uk</div>
              <div>subdomains only (not bbc.co.uk)</div>
              <div class="monospace">bbc.co.uk</div>
              <div>exact domain only</div>
            </div>
            <hr>
            <div class="tooltiptablefooter">
              <div>Black patterns take precedence over white patterns. For example, a black pattern of <span class="monospace">*</span> means nothing will match, regardless of any white patterns.</div>
            </div>
          </div>
        </div>
        |
        <a href="/pattern-tester.html" target="_blank"><span data-i18n="patternTester"></span> <i class="fa fa-flask"></i></a>
      </div>
      
      <p><h3 style="display: inline-block;">TL;DR</h3>: <a href="#examples">show me the examples</a></p>
      
      <h3>What are they?</h3>
      <p>Patterns are a way to specify groups of URLs: a pattern matches a specific set of URLs. If a white pattern matches a URL the browser wants to load, the proxy for that white pattern is used to load the URL <strong class="prime tiny warning">unless a black pattern also matches!</strong> Black patterns take precendence over white patterns and are always checked first. If both white and black patterns (in the same proxy) match a URL, that proxy is <strong>not</strong> used to load that URL.</p>
      <div class="prime small warning">Patterns are <strong>ignored</strong> unless FoxyProxy is set to <i>Use Enabled Proxies By Patterns and Priority</i>.</div>
      
      <h3>Ordering</h3>
      <p>Every URL is compared with the patterns for each proxy. The white/black patterns for the top-most (first) proxy are checked first, then the next set of white/black patterns are checked, and on down the list of proxies until there is a match. If there is no match, Firefox's native proxy settings are used to load the URL. Older versions of FoxyProxy had a <i>Default</i> proxy that acted as a catch-all to matches all URLs. You may still have <i>Default</i> in FoxyProxy if you upgraded from a previous version.
			<p>You can re-order the proxies using the arrow buttons as you like, but <strong>the white/black patterns for the top-most (first) proxy are checked first.</strong></p>
      <p>If a black pattern matches, the proxy is not used for that URL <i>even if a white pattern also matches</i>. The black pattern takes priority. The URL may, however, load through another proxy you've defined if that proxy has a matching whitelist pattern and no matching blacklist pattern.</p>
      <p>The order of white patterns and black patterns within a proxy do not matter.</p>
      
      <h3>Wildcards</h3>
      <div class="prime alert">
        Because of <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1337001">Firefox limitations</a>, only URL domains, subdomains, and ports are recognized in patterns. Do not use paths or query parameters in patterns. Example: <strong>*.foxyproxy.com:30053</strong> is OK but not <strong>*.foxyproxy.com:30053/help/*</strong>
      </div>
      
      <h4 id="examples">Examples</h4>
      <table>
        <thead><tr><th>Pattern</th><th>Example Matches</th><th>Example Non-Matches</th></thead>
        <tbody>
          <tr>
            <td><strong>*.foxyproxy.com</strong><br>Match URLs at foxyproxy.com and all subdomains</td>
            <td>foxyproxy.com/order.html<br>help.foxyproxy.com/index.html<br>foo.bar.foxyproxy.com<br>twostep.foxyproxy.com</td>
            <td>mozilla.com</td>
          </tr>
          <tr>
            <td><strong>.foxyproxy.com</strong><br>Match URLs at foxyproxy.com and all subdomains<br>(same as pattern above)</td>
            <td>foxyproxy.com/order.html<br>help.foxyproxy.com/index.html<br>foo.bar.foxyproxy.com<br>twostep.foxyproxy.com</td>
            <td>mozilla.com</td>
          </tr>
          <tr>
            <td><strong>**.foxyproxy.com</strong><br>Match URLs <strong>only at subdomains</strong> of foxyproxy.com</td>
            <td>help.foxyproxy.com<br>help.foxyproxy.com/index.html<br>foo.bar.foxyproxy.com</td>
            <td>foxyproxy.com</td>
          </tr>
          <tr>
            <td><strong>foxyproxy.com</strong><br>Match all URLs at foxyproxy.com but not subdomains</td>
            <td>foxyproxy.com<br>foxyproxy.com/index.html</td>
            <td>help.foxyproxy.com</td>
          </tr>
          <tr>
            <td><strong>*foo*</strong><br>Match all URLs with a domain containing the letters foo</td>
            <td>foo.com<br>foodle.com<br>one.befoo.org</td>
            <td>bar.com</td>
          </tr>
          <tr>
            <td><strong>*foo*.com</strong></td>
            <td>foo.com<br>foodle.com<br>food.com</td>
            <td>one.befoo.org<br>food.org</td>
          </tr>
          <tr>
            <td><strong>g?ogle.*</strong><br>? matches any single character</td>
            <td>google.com<br>grogle.org<br>google.com/maps</td>
            <td>goog.com</td>
          </tr>
          <tr>
            <td><strong>.catsinsinks.com:8080</strong><br>Port matching!</td>
            <td>catsinsinks.com:8080<br>www.catsinsinks.com:8080<br>www.catsinsinks.com:8080/privacy</td>
            <td>catinsinks.net</td>
          </tr>
        </tbody>
      </table>
      
      <h4>Notes</h4>
      <p>If a wildcard pattern begins with <strong>.</strong> or <strong>*.</strong> then it matches the main domain and all subdomains in a URL.</p>
      <p>To match <strong>only</strong> subdomains, use <strong>**</strong> instead of <strong>*</strong> in the beginning. Example: <strong>**.foxyproxy.com</strong> will match <strong>help.foxyproxy.com</strong> but will not match <strong>foxyproxy.com</strong>.</p>

    </div>
  <script src="scripts/pattern-tester.js"></script>
  </body>
</html>