()
| 1431 | |
| 1432 | @app.route("/browser/settings", methods=["GET", "POST"]) |
| 1433 | def browser_settings(): |
| 1434 | prefs = browser_prefs() |
| 1435 | if request.method == "POST": |
| 1436 | prefs["engine"] = request.form.get("engine", "google") if request.form.get("engine") in SEARCH_ENGINES else "google" |
| 1437 | prefs["country"] = request.form.get("country", "US") if request.form.get("country") in COUNTRIES else "US" |
| 1438 | prefs["mode"] = request.form.get("mode", "smart") if request.form.get("mode") in {"strict", "smart", "direct"} else "smart" |
| 1439 | prefs["adblock"] = bool(request.form.get("adblock")) |
| 1440 | prefs["lite"] = bool(request.form.get("lite")) |
| 1441 | prefs["block_images"] = bool(request.form.get("block_images")) |
| 1442 | prefs["vpn_enabled"] = bool(request.form.get("vpn_enabled")) |
| 1443 | prefs["tor_enabled"] = bool(request.form.get("tor_enabled")) |
| 1444 | save_browser_prefs(prefs) |
| 1445 | if prefs["tor_enabled"]: |
| 1446 | ok, msg = start_tor() |
| 1447 | flash(msg) |
| 1448 | else: |
| 1449 | stop_tor() |
| 1450 | flash("Browser settings saved.") |
| 1451 | return redirect(url_for("browser_settings")) |
| 1452 | proxy_pool_size = len(fetch_proxy_pool(prefs.get("country", "US"))) if prefs.get("vpn_enabled") else 0 |
| 1453 | body = render_template_string( |
| 1454 | """ |
| 1455 | <section class="hero stack"> |
| 1456 | <div> |
| 1457 | <div class="muted small">Settings</div> |
| 1458 | <h1>Keep it simple.</h1> |
| 1459 | <div class="muted">VPN starts off by default. Enable only what you want, then save.</div> |
| 1460 | </div> |
| 1461 | |
| 1462 | <form method="post" class="stack"> |
| 1463 | <div class="grid3"> |
| 1464 | <div><label>Search engine</label><select name="engine">{% for k,v in engines.items() %}<option value="{{ k }}" {% if prefs.engine == k %}selected{% endif %}>{{ v[0] }}</option>{% endfor %}</select></div> |
| 1465 | <div><label>Proxy country</label><select name="country">{% for k,v in countries.items() %}<option value="{{ k }}" {% if prefs.country == k %}selected{% endif %}>{{ v }}</option>{% endfor %}</select></div> |
| 1466 | <div><label>VPN mode</label><select name="mode"><option value="smart" {% if prefs.mode=='smart' %}selected{% endif %}>Smart</option><option value="strict" {% if prefs.mode=='strict' %}selected{% endif %}>Strict proxy</option><option value="direct" {% if prefs.mode=='direct' %}selected{% endif %}>Direct only</option></select></div> |
| 1467 | </div> |
| 1468 | |
| 1469 | <div class="grid2 toggleRow"> |
| 1470 | <label><input type="checkbox" name="vpn_enabled" {% if prefs.vpn_enabled %}checked{% endif %}><span><b>Enable VPN routing</b><br><span class="muted small">Use proxies when routing is enabled.</span></span></label> |
| 1471 | <label><input type="checkbox" name="tor_enabled" {% if prefs.tor_enabled %}checked{% endif %}><span><b>Enable Tor routing</b><br><span class="muted small">Tor installs and starts automatically when enabled.</span></span></label> |
| 1472 | <label><input type="checkbox" name="adblock" {% if prefs.adblock %}checked{% endif %}><span><b>Enable ad blocker</b><br><span class="muted small">Block common ad and tracker requests.</span></span></label> |
| 1473 | <label><input type="checkbox" name="lite" {% if prefs.lite %}checked{% endif %}><span><b>Enable lite mode</b><br><span class="muted small">Remove heavier page parts when possible.</span></span></label> |
| 1474 | <label><input type="checkbox" name="block_images" {% if prefs.block_images %}checked{% endif %}><span><b>Block images</b><br><span class="muted small">Useful when speed or data matters more.</span></span></label> |
| 1475 | </div> |
| 1476 | |
| 1477 | <div class="card stack"> |
| 1478 | <div class="pillRow"> |
| 1479 | <span class="badge">{{ 'VPN enabled' if prefs.vpn_enabled else 'VPN off' }}</span> |
| 1480 | <span class="badge">{{ 'Tor running' if tor_on else 'Tor off' }}</span> |
| 1481 | <span class="badge">{{ proxy_pool_size }} cached proxies</span> |
| 1482 | </div> |
| 1483 | <div class="row"> |
| 1484 | <a class="btn" href="{{ url_for('browser_proxy_refresh') }}">Refresh proxies</a> |
| 1485 | <a class="btn" href="{{ url_for('browser_update_tools') }}">Update browser tools</a> |
| 1486 | <a class="btn danger" href="{{ url_for('browser_clear') }}">Clear browser data</a> |
| 1487 | {% if tor_on %}<a class="btn danger" href="{{ url_for('browser_tor_stop') }}">Stop Tor</a>{% endif %} |
| 1488 | </div> |
| 1489 | </div> |
| 1490 |
nothing calls this directly
no test coverage detected