Bug Fixes
This commit is contained in:
parent
36adb63f61
commit
c594e63512
15 changed files with 86 additions and 16 deletions
2
plugins
2
plugins
|
@ -1 +1 @@
|
||||||
Subproject commit 9cadd0c69f5af06739cc34cc79dc650053a9b4bd
|
Subproject commit a55d1b02488de996c32e515d3ecaf701dd515d46
|
|
@ -82,7 +82,7 @@ class ContentDb(Db):
|
||||||
return schema
|
return schema
|
||||||
|
|
||||||
def initSite(self, site):
|
def initSite(self, site):
|
||||||
self.getSites()[site.address] = site
|
self.sites[site.address] = site
|
||||||
|
|
||||||
def needSite(self, site):
|
def needSite(self, site):
|
||||||
if site.address not in self.site_ids:
|
if site.address not in self.site_ids:
|
||||||
|
@ -97,7 +97,7 @@ class ContentDb(Db):
|
||||||
if site_id:
|
if site_id:
|
||||||
self.execute("DELETE FROM site WHERE site_id = :site_id", {"site_id": site_id})
|
self.execute("DELETE FROM site WHERE site_id = :site_id", {"site_id": site_id})
|
||||||
del self.site_ids[site.address]
|
del self.site_ids[site.address]
|
||||||
del self.getSites()[site.address]
|
del self.sites[site.address]
|
||||||
|
|
||||||
def setContent(self, site, inner_path, content, size=0):
|
def setContent(self, site, inner_path, content, size=0):
|
||||||
self.insertOrUpdate("content", {
|
self.insertOrUpdate("content", {
|
||||||
|
|
|
@ -290,7 +290,7 @@ class Site(object):
|
||||||
if not SiteManager.site_manager.sites:
|
if not SiteManager.site_manager.sites:
|
||||||
SiteManager.site_manager.sites = {}
|
SiteManager.site_manager.sites = {}
|
||||||
if not SiteManager.site_manager.sites.get(self.address):
|
if not SiteManager.site_manager.sites.get(self.address):
|
||||||
SiteManager.site_manager.getSites()[self.address] = self
|
SiteManager.site_manager.sites[self.address] = self
|
||||||
SiteManager.site_manager.load(False)
|
SiteManager.site_manager.load(False)
|
||||||
SiteManager.site_manager.saveDelayed()
|
SiteManager.site_manager.saveDelayed()
|
||||||
|
|
||||||
|
|
|
@ -73,7 +73,7 @@ class SiteManager(object):
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
self.log.debug("Error loading site %s: %s" % (address, err))
|
self.log.debug("Error loading site %s: %s" % (address, err))
|
||||||
continue
|
continue
|
||||||
self.getSites()[address] = site
|
self.sites[address] = site
|
||||||
self.log.debug("Loaded site %s in %.3fs" % (address, time.time() - s))
|
self.log.debug("Loaded site %s in %.3fs" % (address, time.time() - s))
|
||||||
added += 1
|
added += 1
|
||||||
elif startup:
|
elif startup:
|
||||||
|
@ -88,7 +88,7 @@ class SiteManager(object):
|
||||||
if cleanup:
|
if cleanup:
|
||||||
for address in list(self.sites.keys()):
|
for address in list(self.sites.keys()):
|
||||||
if address not in address_found:
|
if address not in address_found:
|
||||||
del(self.getSites()[address])
|
del(self.sites[address])
|
||||||
self.log.debug("Removed site: %s" % address)
|
self.log.debug("Removed site: %s" % address)
|
||||||
|
|
||||||
# Remove orpan sites from contentdb
|
# Remove orpan sites from contentdb
|
||||||
|
@ -106,7 +106,7 @@ class SiteManager(object):
|
||||||
if address in content_db.site_ids:
|
if address in content_db.site_ids:
|
||||||
del content_db.site_ids[address]
|
del content_db.site_ids[address]
|
||||||
if address in content_db.sites:
|
if address in content_db.sites:
|
||||||
del content_db.getSites()[address]
|
del content_db.sites[address]
|
||||||
|
|
||||||
self.loaded = True
|
self.loaded = True
|
||||||
for address, settings in sites_need:
|
for address, settings in sites_need:
|
||||||
|
@ -203,7 +203,7 @@ class SiteManager(object):
|
||||||
self.log.debug("Added new site: %s" % address)
|
self.log.debug("Added new site: %s" % address)
|
||||||
config.loadTrackersFile()
|
config.loadTrackersFile()
|
||||||
site = Site(address, settings=settings)
|
site = Site(address, settings=settings)
|
||||||
self.getSites()[address] = site
|
self.sites[address] = site
|
||||||
if not site.settings["serving"]: # Maybe it was deleted before
|
if not site.settings["serving"]: # Maybe it was deleted before
|
||||||
site.settings["serving"] = True
|
site.settings["serving"] = True
|
||||||
site.saveSettings()
|
site.saveSettings()
|
||||||
|
@ -226,7 +226,7 @@ class SiteManager(object):
|
||||||
def delete(self, address):
|
def delete(self, address):
|
||||||
self.sites_changed = int(time.time())
|
self.sites_changed = int(time.time())
|
||||||
self.log.debug("Deleted site: %s" % address)
|
self.log.debug("Deleted site: %s" % address)
|
||||||
del(self.getSites()[address])
|
del(self.sites[address])
|
||||||
# Delete from sites.json
|
# Delete from sites.json
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
|
|
|
@ -219,7 +219,7 @@ def site(request):
|
||||||
site = Site("1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT") # Create new Site object to load content.json files
|
site = Site("1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT") # Create new Site object to load content.json files
|
||||||
if not SiteManager.site_manager.sites:
|
if not SiteManager.site_manager.sites:
|
||||||
SiteManager.site_manager.sites = {}
|
SiteManager.site_manager.sites = {}
|
||||||
SiteManager.site_manager.getSites()["1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT"] = site
|
SiteManager.site_manager.sites["1TeSTvb4w2PWE81S2rEELgmX2GCCExQGT"] = site
|
||||||
site.settings["serving"] = True
|
site.settings["serving"] = True
|
||||||
return site
|
return site
|
||||||
|
|
||||||
|
|
BIN
src/Test/testdata/chart.db-shm
vendored
Normal file
BIN
src/Test/testdata/chart.db-shm
vendored
Normal file
Binary file not shown.
BIN
src/Test/testdata/chart.db-wal
vendored
Normal file
BIN
src/Test/testdata/chart.db-wal
vendored
Normal file
Binary file not shown.
BIN
src/Test/testdata/content.db-shm
vendored
Normal file
BIN
src/Test/testdata/content.db-shm
vendored
Normal file
Binary file not shown.
BIN
src/Test/testdata/content.db-wal
vendored
Normal file
BIN
src/Test/testdata/content.db-wal
vendored
Normal file
Binary file not shown.
1
src/Test/testdata/filters.json
vendored
Normal file
1
src/Test/testdata/filters.json
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{}
|
58
src/Test/testdata/openssl.cnf
vendored
Normal file
58
src/Test/testdata/openssl.cnf
vendored
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
[ req ]
|
||||||
|
default_bits = 2048
|
||||||
|
default_keyfile = server-key.pem
|
||||||
|
distinguished_name = subject
|
||||||
|
req_extensions = req_ext
|
||||||
|
x509_extensions = x509_ext
|
||||||
|
string_mask = utf8only
|
||||||
|
|
||||||
|
# The Subject DN can be formed using X501 or RFC 4514 (see RFC 4519 for a description).
|
||||||
|
# Its sort of a mashup. For example, RFC 4514 does not provide emailAddress.
|
||||||
|
[ subject ]
|
||||||
|
countryName = US
|
||||||
|
stateOrProvinceName = NY
|
||||||
|
localityName = New York
|
||||||
|
organizationName = Example, LLC
|
||||||
|
|
||||||
|
# Use a friendly name here because its presented to the user. The server's DNS
|
||||||
|
# names are placed in Subject Alternate Names. Plus, DNS names here is deprecated
|
||||||
|
# by both IETF and CA/Browser Forums. If you place a DNS name here, then you
|
||||||
|
# must include the DNS name in the SAN too (otherwise, Chrome and others that
|
||||||
|
# strictly follow the CA/Browser Baseline Requirements will fail).
|
||||||
|
commonName = Example Company
|
||||||
|
|
||||||
|
emailAddress = test@example.com
|
||||||
|
|
||||||
|
# Section x509_ext is used when generating a self-signed certificate. I.e., openssl req -x509 ...
|
||||||
|
[ x509_ext ]
|
||||||
|
|
||||||
|
subjectKeyIdentifier = hash
|
||||||
|
authorityKeyIdentifier = keyid,issuer
|
||||||
|
|
||||||
|
basicConstraints = CA:FALSE
|
||||||
|
keyUsage = digitalSignature, keyEncipherment
|
||||||
|
extendedKeyUsage = clientAuth, serverAuth
|
||||||
|
subjectAltName = @alternate_names
|
||||||
|
|
||||||
|
# RFC 5280, Section 4.2.1.12 makes EKU optional
|
||||||
|
# CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
|
||||||
|
# extendedKeyUsage = serverAuth, clientAuth
|
||||||
|
|
||||||
|
# Section req_ext is used when generating a certificate signing request. I.e., openssl req ...
|
||||||
|
[ req_ext ]
|
||||||
|
|
||||||
|
subjectKeyIdentifier = hash
|
||||||
|
|
||||||
|
basicConstraints = CA:FALSE
|
||||||
|
keyUsage = digitalSignature, keyEncipherment
|
||||||
|
extendedKeyUsage = clientAuth, serverAuth
|
||||||
|
subjectAltName = @alternate_names
|
||||||
|
|
||||||
|
# RFC 5280, Section 4.2.1.12 makes EKU optional
|
||||||
|
# CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
|
||||||
|
# extendedKeyUsage = serverAuth, clientAuth
|
||||||
|
|
||||||
|
[ alternate_names ]
|
||||||
|
|
||||||
|
DNS.1 = nazwa.pl
|
||||||
|
DNS.2 = www.nazwa.pl
|
1
src/Test/testdata/sites.json
vendored
Normal file
1
src/Test/testdata/sites.json
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{}
|
1
src/Test/testdata/trackers.json
vendored
Normal file
1
src/Test/testdata/trackers.json
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{}
|
9
src/Test/testdata/users.json
vendored
Normal file
9
src/Test/testdata/users.json
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
{
|
||||||
|
"15E5rhcAUD69WbiYsYARh4YHJ4sLm2JEyc": {
|
||||||
|
"certs": {},
|
||||||
|
"master_seed": "024bceac1105483d66585d8a60eaf20aa8c3254b0f266e0d626ddb6114e2949a",
|
||||||
|
"sites": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -61,13 +61,13 @@ class User(object):
|
||||||
s = time.time()
|
s = time.time()
|
||||||
address_id = self.getAddressAuthIndex(address) # Convert site address to int
|
address_id = self.getAddressAuthIndex(address) # Convert site address to int
|
||||||
auth_privatekey = CryptBitcoin.hdPrivatekey(self.master_seed, address_id)
|
auth_privatekey = CryptBitcoin.hdPrivatekey(self.master_seed, address_id)
|
||||||
self.getSites()[address] = {
|
self.sites[address] = {
|
||||||
"auth_address": CryptBitcoin.privatekeyToAddress(auth_privatekey),
|
"auth_address": CryptBitcoin.privatekeyToAddress(auth_privatekey),
|
||||||
"auth_privatekey": auth_privatekey
|
"auth_privatekey": auth_privatekey
|
||||||
}
|
}
|
||||||
self.saveDelayed()
|
self.saveDelayed()
|
||||||
self.log.debug("Added new site: %s in %.3fs" % (address, time.time() - s))
|
self.log.debug("Added new site: %s in %.3fs" % (address, time.time() - s))
|
||||||
return self.getSites()[address]
|
return self.sites[address]
|
||||||
|
|
||||||
# Get user site data
|
# Get user site data
|
||||||
# Return: {"auth_address": "xxx", "auth_privatekey": "xxx"}
|
# Return: {"auth_address": "xxx", "auth_privatekey": "xxx"}
|
||||||
|
@ -76,11 +76,11 @@ class User(object):
|
||||||
if not create:
|
if not create:
|
||||||
return {"auth_address": None, "auth_privatekey": None} # Dont create user yet
|
return {"auth_address": None, "auth_privatekey": None} # Dont create user yet
|
||||||
self.generateAuthAddress(address)
|
self.generateAuthAddress(address)
|
||||||
return self.getSites()[address]
|
return self.sites[address]
|
||||||
|
|
||||||
def deleteSiteData(self, address):
|
def deleteSiteData(self, address):
|
||||||
if address in self.sites:
|
if address in self.sites:
|
||||||
del(self.getSites()[address])
|
del(self.sites[address])
|
||||||
self.saveDelayed()
|
self.saveDelayed()
|
||||||
self.log.debug("Deleted site: %s" % address)
|
self.log.debug("Deleted site: %s" % address)
|
||||||
|
|
||||||
|
@ -101,9 +101,9 @@ class User(object):
|
||||||
raise Exception("Random error: site exist!")
|
raise Exception("Random error: site exist!")
|
||||||
# Save to sites
|
# Save to sites
|
||||||
self.getSiteData(site_address)
|
self.getSiteData(site_address)
|
||||||
self.getSites()[site_address]["privatekey"] = site_privatekey
|
self.sites[site_address]["privatekey"] = site_privatekey
|
||||||
self.save()
|
self.save()
|
||||||
return site_address, bip32_index, self.getSites()[site_address]
|
return site_address, bip32_index, self.sites[site_address]
|
||||||
|
|
||||||
# Get BIP32 address from site address
|
# Get BIP32 address from site address
|
||||||
# Return: BIP32 auth address
|
# Return: BIP32 auth address
|
||||||
|
|
Loading…
Reference in a new issue