httpd: exclude untested proxies from results
Filter out entries with proto IS NULL from /proxies and /proxies/count endpoints. These are proxies added to the database but never validated, leaking into results with null proto, asn, and zero latency.
This commit is contained in:
12
httpd.py
12
httpd.py
@@ -967,7 +967,7 @@ class ProxyAPIHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||
stats = {}
|
||||
|
||||
# Total counts
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist WHERE failed=0').fetchone()
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist WHERE failed=0 AND proto IS NOT NULL').fetchone()
|
||||
stats['working'] = row[0] if row else 0
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist').fetchone()
|
||||
stats['total'] = row[0] if row else 0
|
||||
@@ -1076,7 +1076,7 @@ class ProxyAPIHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||
asn = params.get('asn', '')
|
||||
fmt = params.get('format', 'json')
|
||||
|
||||
sql = 'SELECT ip, port, proto, country, asn, avg_latency FROM proxylist WHERE failed=0'
|
||||
sql = 'SELECT ip, port, proto, country, asn, avg_latency FROM proxylist WHERE failed=0 AND proto IS NOT NULL'
|
||||
args = []
|
||||
|
||||
if proto:
|
||||
@@ -1110,7 +1110,7 @@ class ProxyAPIHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||
def handle_count(self):
|
||||
try:
|
||||
db = mysqlite.mysqlite(self.database, str)
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist WHERE failed=0').fetchone()
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist WHERE failed=0 AND proto IS NOT NULL').fetchone()
|
||||
self.send_json({'count': row[0] if row else 0})
|
||||
except Exception as e:
|
||||
self.send_json({'error': str(e)}, 500)
|
||||
@@ -1398,7 +1398,7 @@ class ProxyAPIServer(threading.Thread):
|
||||
asn = query_params.get('asn', '')
|
||||
fmt = query_params.get('format', 'json')
|
||||
|
||||
sql = 'SELECT ip, port, proto, country, asn, avg_latency FROM proxylist WHERE failed=0'
|
||||
sql = 'SELECT ip, port, proto, country, asn, avg_latency FROM proxylist WHERE failed=0 AND proto IS NOT NULL'
|
||||
args = []
|
||||
if proto:
|
||||
sql += ' AND proto=?'
|
||||
@@ -1424,7 +1424,7 @@ class ProxyAPIServer(threading.Thread):
|
||||
elif path == '/proxies/count':
|
||||
try:
|
||||
db = mysqlite.mysqlite(self.database, str)
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist WHERE failed=0').fetchone()
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist WHERE failed=0 AND proto IS NOT NULL').fetchone()
|
||||
return json.dumps({'count': row[0] if row else 0}), 'application/json', 200
|
||||
except Exception as e:
|
||||
return json.dumps({'error': str(e)}), 'application/json', 500
|
||||
@@ -1556,7 +1556,7 @@ class ProxyAPIServer(threading.Thread):
|
||||
stats['top_countries'] = [{'code': r[0], 'count': r[1]} for r in rows]
|
||||
|
||||
# Total counts
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist WHERE failed=0').fetchone()
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist WHERE failed=0 AND proto IS NOT NULL').fetchone()
|
||||
stats['working'] = row[0] if row else 0
|
||||
row = db.execute('SELECT COUNT(*) FROM proxylist').fetchone()
|
||||
stats['total'] = row[0] if row else 0
|
||||
|
||||
Reference in New Issue
Block a user