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 = {}
|
stats = {}
|
||||||
|
|
||||||
# Total counts
|
# 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
|
stats['working'] = row[0] if row else 0
|
||||||
row = db.execute('SELECT COUNT(*) FROM proxylist').fetchone()
|
row = db.execute('SELECT COUNT(*) FROM proxylist').fetchone()
|
||||||
stats['total'] = row[0] if row else 0
|
stats['total'] = row[0] if row else 0
|
||||||
@@ -1076,7 +1076,7 @@ class ProxyAPIHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
|||||||
asn = params.get('asn', '')
|
asn = params.get('asn', '')
|
||||||
fmt = params.get('format', 'json')
|
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 = []
|
args = []
|
||||||
|
|
||||||
if proto:
|
if proto:
|
||||||
@@ -1110,7 +1110,7 @@ class ProxyAPIHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
|||||||
def handle_count(self):
|
def handle_count(self):
|
||||||
try:
|
try:
|
||||||
db = mysqlite.mysqlite(self.database, str)
|
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})
|
self.send_json({'count': row[0] if row else 0})
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.send_json({'error': str(e)}, 500)
|
self.send_json({'error': str(e)}, 500)
|
||||||
@@ -1398,7 +1398,7 @@ class ProxyAPIServer(threading.Thread):
|
|||||||
asn = query_params.get('asn', '')
|
asn = query_params.get('asn', '')
|
||||||
fmt = query_params.get('format', 'json')
|
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 = []
|
args = []
|
||||||
if proto:
|
if proto:
|
||||||
sql += ' AND proto=?'
|
sql += ' AND proto=?'
|
||||||
@@ -1424,7 +1424,7 @@ class ProxyAPIServer(threading.Thread):
|
|||||||
elif path == '/proxies/count':
|
elif path == '/proxies/count':
|
||||||
try:
|
try:
|
||||||
db = mysqlite.mysqlite(self.database, str)
|
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
|
return json.dumps({'count': row[0] if row else 0}), 'application/json', 200
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return json.dumps({'error': str(e)}), 'application/json', 500
|
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]
|
stats['top_countries'] = [{'code': r[0], 'count': r[1]} for r in rows]
|
||||||
|
|
||||||
# Total counts
|
# 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
|
stats['working'] = row[0] if row else 0
|
||||||
row = db.execute('SELECT COUNT(*) FROM proxylist').fetchone()
|
row = db.execute('SELECT COUNT(*) FROM proxylist').fetchone()
|
||||||
stats['total'] = row[0] if row else 0
|
stats['total'] = row[0] if row else 0
|
||||||
|
|||||||
Reference in New Issue
Block a user