This commit is contained in:
Mateusz Gruszczyński committed 2026-10-06 15:12:59 +02:00
1 parent 464ff42cfd
commit f07429c267
53 files changed
+1049 -283

No files matched your search

+71 -29
View File
@@ -808,42 +808,84 @@
maxlength="64" pattern="[A-Za-z0-9_-]{1,64}" required /></label>
<label><span data-i18n="aclProfileName">Display name</span><input id="acl-profile-name"
maxlength="96" required /></label>
<label class="check"><input id="acl-profile-ip-enabled" type="checkbox" /><span
data-i18n="aclProfileIpEnabled">Enable IP ACL</span></label>
<label><span data-i18n="aclDefault">Default action</span><select
id="acl-profile-default">
<option data-i18n="deny" value="deny">Deny</option>
<option data-i18n="allow" value="allow">Allow</option>
</select></label>
<label><span data-i18n="vhCountryMode">Country access</span><select
id="acl-profile-country-mode">
<option data-i18n="vhOff" value="off">Off</option>
<option data-i18n="vhCountryBlock" value="block">Block listed countries</option>
<option data-i18n="vhCountryAllow" value="allow">Allow only listed countries
</option>
</select></label>
</div>
<div class="acl-profile-rules-editor">
<div class="acl-profile-rules-heading"><span data-i18n="aclProfileRuleBuilder">IP
rules</span><button class="quiet" data-i18n="aclAdd" id="acl-profile-rule-add"
type="button">Add IP rule</button></div>
<section class="acl-policy-builder" aria-labelledby="acl-policy-mode-label">
<div class="acl-policy-step-head">
<div><span class="acl-policy-step">1</span><div><strong id="acl-policy-mode-label"
data-i18n="aclProfilePolicyMode">Choose the base policy</strong><p
class="fine" data-i18n="aclProfilePolicyModeHelp">Start with a simple
allow-list or block-list. Use custom mode only when you need mixed
allow and deny rules.</p></div></div>
</div>
<div class="acl-policy-modes" id="acl-profile-mode-options">
<label class="acl-policy-mode-card"><input checked name="acl-profile-mode"
type="radio" value="allow_exceptions" /><span><b
data-i18n="aclProfileModeAllowExceptions">Block by default</b><small
data-i18n="aclProfileModeAllowExceptionsHelp">Allow selected countries
OR selected IP/CIDR ranges.</small></span></label>
<label class="acl-policy-mode-card"><input name="acl-profile-mode" type="radio"
value="block_exceptions" /><span><b
data-i18n="aclProfileModeBlockExceptions">Allow by default</b><small
data-i18n="aclProfileModeBlockExceptionsHelp">Block selected countries
OR selected IP/CIDR ranges.</small></span></label>
<label class="acl-policy-mode-card acl-policy-mode-custom"><input
name="acl-profile-mode" type="radio" value="custom" /><span><b
data-i18n="aclProfileModeCustom">Custom</b><small
data-i18n="aclProfileModeCustomHelp">Control default, country mode and
every IP action manually.</small></span></label>
</div>
<div class="acl-policy-custom-controls" id="acl-profile-custom-controls" hidden>
<label><span data-i18n="aclDefault">Default action</span><select
id="acl-profile-default">
<option data-i18n="deny" value="deny">Deny</option>
<option data-i18n="allow" value="allow">Allow</option>
</select></label>
<label><span data-i18n="vhCountryMode">Country access</span><select
id="acl-profile-country-mode">
<option data-i18n="vhOff" value="off">Off</option>
<option data-i18n="vhCountryBlock" value="block">Block listed countries</option>
<option data-i18n="vhCountryAllow" value="allow">Allow only listed countries</option>
</select></label>
</div>
</section>
<section class="acl-policy-builder">
<div class="acl-policy-step-head"><div><span class="acl-policy-step">2</span><div><strong
data-i18n="aclProfileCountryExceptions">Country exceptions</strong><p
class="fine" id="acl-profile-country-help"></p></div></div><label
class="acl-policy-switch"><input id="acl-profile-country-enabled"
type="checkbox" /><span data-i18n="aclProfileUseCountries">Use countries</span></label></div>
<label class="acl-policy-country-list" id="acl-profile-country-field"><span
id="acl-profile-country-label" data-i18n="vhCountryList">Countries</span><textarea
id="acl-profile-countries" rows="4" maxlength="1024" spellcheck="false"
placeholder="CN&#10;PL"></textarea></label>
</section>
<section class="acl-policy-builder">
<div class="acl-policy-step-head"><div><span class="acl-policy-step">3</span><div><strong
data-i18n="aclProfileIpExceptions">IP / CIDR exceptions</strong><p
class="fine" id="acl-profile-ip-help"></p></div></div><button class="quiet"
data-i18n="aclProfileAddIpException" id="acl-profile-rule-add" type="button">Add
IP exception</button></div>
<div class="acl-profile-rule-rows" id="acl-profile-rule-rows"></div>
<details class="acl-profile-bulk">
<details class="acl-profile-bulk" id="acl-profile-bulk">
<summary data-i18n="aclProfileBulkRules">Paste / import rules</summary>
<label><span data-i18n="aclProfileRules">IP rules — one “allow|deny CIDR” per
line</span><textarea id="acl-profile-rules" rows="6" spellcheck="false"
placeholder="allow 10.0.0.0/8&#10;deny 10.21.0.0/16"></textarea></label>
placeholder="allow 10.0.0.0/8&#10;allow 203.0.113.5/32"></textarea></label>
<p class="fine" data-i18n="aclProfileBulkHelp">Whitespace and invisible Unicode
separators are normalized during import.</p>
<button class="quiet" data-i18n="aclProfileImportRules"
id="acl-profile-import-rules" type="button">Import rules</button>
</details>
</div>
<label><span data-i18n="vhCountryList">Countries</span><textarea id="acl-profile-countries"
rows="4" maxlength="1024" spellcheck="false"
placeholder="PL&#10;DE"></textarea></label>
<p class="fine" data-i18n="aclProfileCombineHelp">Profile and vhost rules are restrictive: a
request must pass both policies.</p>
</section>
<section class="acl-policy-preview" aria-live="polite">
<div class="acl-policy-preview-head"><span data-i18n="aclProfilePreview">Effective policy</span><b
id="acl-profile-preview-default"></b></div>
<div class="acl-policy-preview-flow" id="acl-profile-preview-flow"></div>
<p class="fine" id="acl-profile-preview-note"></p>
</section>
<p class="fine" data-i18n="aclProfileCombineHelp">Country and IP exceptions use OR inside
this profile. Explicit deny rules and blocked countries win; attached profile, vhost and
location policies must still all pass.</p>
<div class="form-actions"><button class="primary" data-i18n="apply" type="submit">Validate,
save and apply</button><button class="quiet" data-i18n="clear"
id="acl-profile-reset" type="button">Clear</button></div>
@@ -1877,7 +1919,7 @@
<option data-i18n="serverCustom" value="custom">Replace / add custom value</option>
</select>
<label data-i18n="serverValue" for="server-value">Custom Server value</label><input
id="server-value" maxlength="256" placeholder="RustProxy/v0.26.5"
id="server-value" maxlength="256" placeholder="RustProxy/v0.26.6"
spellcheck="false" />
<h3 class="subheading" data-i18n="diagnosticHeaders">Diagnostic headers</h3>
<div class="switch-grid">
@@ -2676,7 +2718,7 @@
</section>
</div>
</section>
<footer class="page-footer"><span>RustProxy <b>0.26.5</b></span><span id="footer-status">API - /
<footer class="page-footer"><span>RustProxy <b>0.26.6</b></span><span id="footer-status">API - /
dropped: 0</span></footer>
</div>
</main>
@@ -3387,7 +3429,7 @@ max_execution_time = 30</code></pre>
<article class="card about-card">
<div class="about-product">
<span aria-hidden="true" class="brand-mark">r<span>/</span>p</span>
<div><span class="small-label">RustProxy</span><strong>0.26.5</strong></div>
<div><span class="small-label">RustProxy</span><strong>0.26.6</strong></div>
</div>
<dl class="about-meta">
<div>