mirror of
https://github.com/HelloZeroNet/ZeroNet.git
synced 2023-12-14 04:33:03 +01:00
90 lines
No EOL
2.3 KiB
Python
90 lines
No EOL
2.3 KiB
Python
import json, logging, time, re, os
|
|
import gevent
|
|
from Plugin import PluginManager
|
|
|
|
TRACKERS = [
|
|
("udp", "open.demonii.com", 1337),
|
|
("udp", "sugoi.pomf.se", 2710),
|
|
#("udp", "tracker.coppersurfer.tk", 80),
|
|
("udp", "tracker.leechers-paradise.org", 6969),
|
|
("udp", "9.rarbg.com", 2710),
|
|
("udp", "www.eddie4.nl", 6969),
|
|
#("udp", "trackr.sytes.net", 80), #Backup trackers
|
|
#("udp", "tracker4.piratux.com", 6969)
|
|
]
|
|
|
|
|
|
@PluginManager.acceptPlugins
|
|
class SiteManager(object):
|
|
def __init__(self):
|
|
self.sites = None
|
|
|
|
# Load all sites from data/sites.json
|
|
def load(self):
|
|
from Site import Site
|
|
if not self.sites: self.sites = {}
|
|
address_found = []
|
|
added = 0
|
|
# Load new adresses
|
|
for address in json.load(open("data/sites.json")):
|
|
if address not in self.sites and os.path.isfile("data/%s/content.json" % address):
|
|
self.sites[address] = Site(address)
|
|
added += 1
|
|
address_found.append(address)
|
|
|
|
# Remove deleted adresses
|
|
for address in self.sites.keys():
|
|
if address not in address_found:
|
|
del(self.sites[address])
|
|
logging.debug("Removed site: %s" % address)
|
|
|
|
if added: logging.debug("SiteManager added %s sites" % added)
|
|
|
|
|
|
# Checks if its a valid address
|
|
def isAddress(self, address):
|
|
return re.match("^[A-Za-z0-9]{26,35}$", address)
|
|
|
|
|
|
# Return: Site object or None if not found
|
|
def get(self, address):
|
|
if self.sites == None: # Not loaded yet
|
|
self.load()
|
|
return self.sites.get(address)
|
|
|
|
|
|
# Return or create site and start download site files
|
|
def need(self, address, all_file=True):
|
|
from Site import Site
|
|
new = False
|
|
site = self.get(address)
|
|
if not site: # Site not exits yet
|
|
if not self.isAddress(address): return False # Not address: %s % address
|
|
logging.debug("Added new site: %s" % address)
|
|
site = Site(address)
|
|
self.sites[address] = site
|
|
if not site.settings["serving"]: # Maybe it was deleted before
|
|
site.settings["serving"] = True
|
|
site.saveSettings()
|
|
new = True
|
|
|
|
if all_file: site.download()
|
|
return site
|
|
|
|
|
|
def delete(self, address):
|
|
logging.debug("SiteManager deleted site: %s" % address)
|
|
del(self.sites[address])
|
|
|
|
|
|
# Lazy load sites
|
|
def list(self):
|
|
if self.sites == None: # Not loaded yet
|
|
self.load()
|
|
return self.sites
|
|
|
|
|
|
|
|
site_manager = SiteManager() # Singletone
|
|
|
|
peer_blacklist = [] # Dont download from this peers |