{% extends "base.html" %} {% block title %}Settings — SignalOps{% endblock %} {% block extra_style %} .set-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start} @media (max-width:980px){.set-grid{grid-template-columns:1fr}} .key-group{margin-bottom:18px} .key-group:last-child{margin-bottom:0} .key-group-hdr{font-family:'Rajdhani',sans-serif;font-size:11px;font-weight:700;letter-spacing:2.5px; color:var(--tm);text-transform:uppercase;padding-bottom:8px;margin-bottom:6px;border-bottom:1px solid var(--b)} .key-row{display:grid;grid-template-columns:210px minmax(0,1fr) auto;gap:10px;align-items:center; padding:8px 0;border-bottom:1px solid rgba(255,255,255,0.03)} .key-row:last-child{border-bottom:none} @media (max-width:720px){.key-row{grid-template-columns:1fr}} .key-label{display:flex;align-items:center;gap:8px;min-width:0} .key-dot{width:8px;height:8px;border-radius:50%;background:var(--tm);flex-shrink:0} .key-dot.on{background:var(--g);box-shadow:0 0 8px var(--g)} .key-name{font-family:'Rajdhani',sans-serif;font-size:14px;font-weight:600;color:var(--t); white-space:nowrap;overflow:hidden;text-overflow:ellipsis} .key-name a{color:inherit;text-decoration:none} .key-name a:hover{color:var(--pl)} .key-src{font-size:9px;letter-spacing:1px;padding:1px 6px;border-radius:3px;flex-shrink:0} .key-input-wrap{position:relative;min-width:0} .key-input-wrap input.has-eye{padding-right:34px} .key-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none; color:var(--tm);cursor:pointer;font-size:13px;padding:4px} .key-eye:hover{color:var(--pl)} .key-actions{display:flex;gap:6px;justify-content:flex-end} .btn-sm{font-size:11px;padding:6px 10px;letter-spacing:1px} .btn:disabled{opacity:.6;cursor:default} .key-msg{grid-column:1/-1;font-size:11px;display:none} .key-msg.ok{color:var(--g)}.key-msg.err{color:var(--danger)}.key-msg.info{color:var(--td)} .sum-num{font-family:'Rajdhani',sans-serif;font-size:34px;font-weight:700;color:var(--g);line-height:1} .sum-sub{font-size:10px;color:var(--tm);letter-spacing:2px;text-transform:uppercase;margin-top:4px} .mono-box{font-size:11px;color:var(--td);line-height:1.9;font-family:'JetBrains Mono',monospace;word-break:break-all} details.env-tpl summary{cursor:pointer;font-family:'Rajdhani',sans-serif;font-size:12px;font-weight:700; letter-spacing:2px;color:var(--td);text-transform:uppercase;list-style:none} details.env-tpl summary::-webkit-details-marker{display:none} details.env-tpl summary::before{content:'▸ ';color:var(--p)} details.env-tpl[open] summary::before{content:'▾ '} /* sağlayıcı sağlığı rozeti */ .hl-badge{font-size:9px;letter-spacing:1px;padding:1px 6px;border-radius:3px;flex-shrink:0;cursor:help;font-weight:700} /* Network / OPSEC */ .net-modes{display:flex;flex-direction:column;gap:6px;margin-bottom:10px} .net-opt{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--b);border-radius:6px; cursor:pointer;font-family:'Rajdhani',sans-serif;font-size:13px;font-weight:600;color:var(--td);letter-spacing:.5px} .net-opt:hover{border-color:rgba(138, 122, 184,0.3)} .net-opt.on{border-color:rgba(116, 176, 149,0.35);color:var(--t);background:rgba(116, 176, 149,0.04)} .net-opt input{width:auto;margin:0;accent-color:var(--g)} .net-opt small{margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--tm);font-weight:400} .net-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px} .net-row .btn{flex:1;min-width:90px} .net-kv{font-size:11px;color:var(--td);line-height:1.8;font-family:'JetBrains Mono',monospace;word-break:break-all} .net-kv b{color:var(--t);font-weight:500} .net-msg{font-size:11px;margin-top:8px;line-height:1.6;display:none} .net-msg.ok{color:var(--g)}.net-msg.err{color:var(--danger)}.net-msg.info{color:var(--td)} .net-hint{font-size:10px;color:var(--tm);line-height:1.6;margin-top:10px} .net-warn{font-size:10.5px;color:var(--warn);line-height:1.6;margin-top:10px;padding:8px 10px; border:1px solid rgba(201, 161, 90,0.2);border-radius:6px;background:rgba(201, 161, 90,0.04)} .net-log{font-size:10px;color:var(--tm);font-family:'JetBrains Mono',monospace;line-height:1.5;margin-top:6px; max-height:70px;overflow:auto;white-space:pre-wrap;word-break:break-all} {% endblock %} {% block content %}
Configuration
API Keys
Anahtarlar bu bilgisayarda saklanır ve kaydettiğin anda devreye girer, yeniden başlatmaya gerek yok. Boş bıraktığın gizli alan değişmez. Kaynak: UI = buradan girildi · ENV = .env dosyasından.
Loading…
Status
—
Configured
—
Total
Stored in
—
Bu dosyayı paylaşma, git'e ekleme.
Network / OPSEC
Direct
Tor service
—
Some APIs block or rate-limit Tor exits (Shodan and Cloudflare-fronted services). Failing providers are paused automatically and the scan continues with the remaining sources. Tarayıcıdaki harita/kamera önizlemeleri proxy'den geçmez.
Startup
pip install -r requirements.txt
python3 app_v2.py
# → http://localhost:8080 (sadece bu bilgisayar)
.env alternative
İstersen anahtarları .env dosyasına da yazabilirsin. Burada girilen değer .env'dekinin önüne geçer.
{% endblock %} {% block scripts %} {% endblock %}