108 lines
2.4 KiB
Python
108 lines
2.4 KiB
Python
import json, sys
|
|
|
|
from os import environ
|
|
|
|
from izzylib import izzylog
|
|
from izzylib_http_async import Template
|
|
from urllib.parse import quote
|
|
|
|
from . import __software__, __version__
|
|
|
|
|
|
default_config_dir = Path(GLib.get_user_config_dir()).join('barkshark/web')
|
|
|
|
# Setup some often-used variables
|
|
scriptpath = Path(__file__).parent
|
|
datapath = Path(environ.get('CONFIG', default_config_dir))
|
|
proxy_resolver = Gio.ProxyResolver.get_default()
|
|
proxies = proxy_resolver.lookup('https://www.barkshark.xyz', None)[0]
|
|
|
|
for arg in sys.argv:
|
|
if arg.startswith('--profile'):
|
|
profilepath = datapath.join(arg.split('=', 1)[1])
|
|
|
|
else:
|
|
profilepath = datapath.join('DEFAULT')
|
|
|
|
if 'direct://' in proxies or proxies == None:
|
|
proxy = None
|
|
|
|
else:
|
|
url = Url(proxies[0])
|
|
proxy = DotDict(
|
|
scheme = url.proto,
|
|
host = url.domain,
|
|
port = url.port
|
|
)
|
|
|
|
|
|
dirs = DotDict(
|
|
script = scriptpath,
|
|
data = datapath,
|
|
profile = profilepath,
|
|
themes = profilepath.join('themes'),
|
|
localweb = scriptpath.join('localweb'),
|
|
resources = scriptpath.join('resources'),
|
|
storage = profilepath.join('storage'),
|
|
backup = profilepath.join('backup'),
|
|
cache = profilepath.join('cache'),
|
|
favicon = profilepath.join('storage/favicon'),
|
|
avatars = profilepath.join('cache/avatar'),
|
|
emojis = profilepath.join('cache/emoji'),
|
|
extensions = profilepath.join('extensions'),
|
|
userscripts = profilepath.join('userscripts'),
|
|
downloads = Path('~/Downloads')
|
|
)
|
|
|
|
files = DotDict(
|
|
database = dirs.profile.join('database.sqlite3'),
|
|
cookies = dirs.profile.join('cookies.sqlite3')
|
|
)
|
|
|
|
var = DotDict(
|
|
loglevel = environ.get('LOG_LEVEL', 'INFO').upper(),
|
|
local_proto = 'pyweb',
|
|
dbversion = 20210905,
|
|
template = Template(
|
|
autoescape = False,
|
|
search = [
|
|
dirs.localweb,
|
|
dirs.resources
|
|
]
|
|
),
|
|
proxy = proxy
|
|
)
|
|
|
|
var.local = var.local_proto + '://'
|
|
|
|
var.template.update_env({
|
|
'len': len,
|
|
'str': str,
|
|
'dirs': dirs,
|
|
'files': files,
|
|
'var': var,
|
|
'version': __version__,
|
|
'swname': __software__,
|
|
'quote': quote
|
|
})
|
|
|
|
logging.set_config('level', var.loglevel)
|
|
|
|
sys.path.insert(-1, dirs.extensions)
|
|
|
|
if dirs.data.join('database.sqlite3').exists():
|
|
dirs.profile.mkdir()
|
|
|
|
for item in dirs.data.listdir(recursive=False):
|
|
if item.name != 'DEFAULT':
|
|
item.move(dirs.profile.join(item.name))
|
|
|
|
## create necessary data dirs
|
|
for name, directory in dirs.items():
|
|
if not directory:
|
|
logging.debug('missing dir:', name)
|
|
continue
|
|
|
|
if not directory.exists():
|
|
directory.mkdir()
|