MCPcopy Index your code
hub / github.com/HelloZeroNet/ZeroNet / __init__

Method __init__

src/Site/Site.py:34–80  ·  view source on GitHub ↗
(self, address, allow_create=True, settings=None)

Source from the content-addressed store, hash-verified

32class Site(object):
33
34 def __init__(self, address, allow_create=True, settings=None):
35 self.address = str(re.sub("[^A-Za-z0-9]", "", address)) # Make sure its correct address
36 self.address_hash = hashlib.sha256(self.address.encode("ascii")).digest()
37 self.address_sha1 = hashlib.sha1(self.address.encode("ascii")).digest()
38 self.address_short = "%s..%s" % (self.address[:6], self.address[-4:]) # Short address for logging
39 self.log = logging.getLogger("Site:%s" % self.address_short)
40 self.addEventListeners()
41
42 self.content = None # Load content.json
43 self.peers = {} # Key: ip:port, Value: Peer.Peer
44 self.peers_recent = collections.deque(maxlen=100)
45 self.peer_blacklist = SiteManager.peer_blacklist # Ignore this peers (eg. myself)
46 self.worker_manager = WorkerManager(self) # Handle site download from other peers
47 self.bad_files = {} # SHA check failed files, need to redownload {"inner.content": 1} (key: file, value: failed accept)
48 self.content_updated = None # Content.js update time
49 self.notifications = [] # Pending notifications displayed once on page load [error|ok|info, message, timeout]
50 self.page_requested = False # Page viewed in browser
51 self.websockets = [] # Active site websocket connections
52
53 self.connection_server = None
54 self.loadSettings(settings) # Load settings from sites.json
55 self.storage = SiteStorage(self, allow_create=allow_create) # Save and load site files
56 self.content_manager = ContentManager(self)
57 self.content_manager.loadContents() # Load content.json files
58 if "main" in sys.modules: # import main has side-effects, breaks tests
59 import main
60 if "file_server" in dir(main): # Use global file server by default if possible
61 self.connection_server = main.file_server
62 else:
63 main.file_server = FileServer()
64 self.connection_server = main.file_server
65 else:
66 self.connection_server = FileServer()
67
68 self.announcer = SiteAnnouncer(self) # Announce and get peer list from other nodes
69
70 if not self.settings.get("auth_key"): # To auth user in site (Obsolete, will be removed)
71 self.settings["auth_key"] = CryptHash.random()
72 self.log.debug("New auth key: %s" % self.settings["auth_key"])
73
74 if not self.settings.get("wrapper_key"): # To auth websocket permissions
75 self.settings["wrapper_key"] = CryptHash.random()
76 self.log.debug("New wrapper key: %s" % self.settings["wrapper_key"])
77
78 if not self.settings.get("ajax_key"): # To auth websocket permissions
79 self.settings["ajax_key"] = CryptHash.random()
80 self.log.debug("New ajax key: %s" % self.settings["ajax_key"])
81
82 def __str__(self):
83 return "Site %s" % self.address_short

Callers

nothing calls this directly

Calls 10

addEventListenersMethod · 0.95
loadSettingsMethod · 0.95
WorkerManagerClass · 0.90
SiteStorageClass · 0.90
ContentManagerClass · 0.90
FileServerClass · 0.90
SiteAnnouncerClass · 0.90
loadContentsMethod · 0.80
digestMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected