/usr/share/pyshared/jsb/lib/datadir.py is in jsonbot 0.84.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | # jsb/datadir.py
#
#
""" the data directory of the bot. """
## jsb imports
from jsb.utils.source import getsource
## basic imports
import re
import os
import shutil
import logging
import os.path
import getpass
## the global datadir
try: homedir = os.path.abspath(os.path.expanduser("~"))
except: homedir = os.getcwd()
isgae = False
try:
import waveapi
logging.info("datadir - skipping makedirs") ; datadir = "data" ; isgae = True
except ImportError:
logging.info("datadir - shell detected") ; datadir = homedir + os.sep + ".jsb"
## helper functions
def touch(fname):
""" touch a file. """
fd = os.open(fname, os.O_WRONLY | os.O_CREAT)
os.close(fd)
def doit(ddir, mod, target=None):
source = getsource(mod)
if not source: raise Exception("can't find %s package" % mod)
shutil.copytree(source, ddir + os.sep + (target or mod.replace(".", os.sep)))
## makedir function
def makedirs(ddir=None):
""" make subdirs in datadir. """
#if os.path.exists("/home/jsb/.jsb") and getpass.getuser() == 'jsb': ddir = "/home/jsb/.jsb"
global datadir
datadir = ddir or getdatadir()
logging.warn("datadir - set to %s" % datadir)
if isgae: return
if not os.path.isdir(ddir):
try: os.mkdir(ddir)
except:
raise Exception("can't make %s dir" % ddir)
logging.info("making dirs in %s" % ddir)
try: os.chmod(ddir, 0700)
except: pass
if ddir: setdatadir(ddir)
last = datadir.split(os.sep)[-1]
#if not os.path.isdir(ddir): doit(ddir, "jsb.data")
try: doit(ddir, "jsb.plugs.myplugs")
except: pass
try: doit(ddir, "jsb.data.examples")
except: pass
try: doit(ddir, "jsb.data.static", "static")
except: pass
try: doit(ddir, "jsb.data.templates", "templates")
except: pass
try: touch(ddir + os.sep + "__init__.py")
except: pass
if not os.path.isdir(ddir + os.sep + "config"): os.mkdir(ddir + os.sep + "config")
if not os.path.isfile(ddir + os.sep + 'config' + os.sep + "mainconfig"):
source = getsource("jsb.data.examples")
if not source: raise Exception("can't find jsb.data.examples package")
try: shutil.copy(source + os.sep + 'mainconfig.example', ddir + os.sep + 'config' + os.sep + 'mainconfig')
except (OSError, IOError), ex: logging.error("datadir - failed to copy jsb.data.config.mainconfig: %s" % str(ex))
if not os.path.isfile(ddir + os.sep + 'config' + os.sep + "credentials.py"):
source = getsource("jsb.data.examples")
if not source: raise Exception("can't find jsb.data.examples package")
try: shutil.copy(source + os.sep + 'credentials.py.example', ddir + os.sep + 'config' + os.sep + 'credentials.py')
except (OSError, IOError), ex: logging.error("datadir - failed to copy jsb.data.config: %s" % str(ex))
try: touch(ddir + os.sep + "config" + os.sep + "__init__.py")
except: pass
# myplugs
initsource = getsource("jsb.plugs.myplugs")
if not initsource: raise Exception("can't find jsb.plugs.myplugs package")
initsource = initsource + os.sep + "__init__.py"
if not os.path.isdir(ddir + os.sep + 'myplugs'): os.mkdir(ddir + os.sep + 'myplugs')
if not os.path.isfile(ddir + os.sep + 'myplugs' + os.sep + "__init__.py"):
try:
shutil.copy(initsource, os.path.join(ddir, 'myplugs', '__init__.py'))
except (OSError, IOError), ex: logging.error("datadir - failed to copy myplugs/__init__.py: %s" % str(ex))
# myplugs.common
if not os.path.isdir(os.path.join(ddir, 'myplugs', 'common')): os.mkdir(os.path.join(ddir, 'myplugs', 'common'))
if not os.path.isfile(os.path.join(ddir, 'myplugs', "common", "__init__.py")):
try:
shutil.copy(initsource, os.path.join(ddir, 'myplugs', 'common', '__init__.py'))
except (OSError, IOError), ex: logging.error("datadir - failed to copy myplugs/common/__init__.py: %s" % str(ex))
# myplugs.gae
if not os.path.isdir(os.path.join(ddir, 'myplugs', 'gae')): os.mkdir(os.path.join(ddir, 'myplugs', 'gae'))
if not os.path.isfile(os.path.join(ddir, 'myplugs', "gae", "__init__.py")):
try:
shutil.copy(initsource, os.path.join(ddir, 'myplugs', 'gae', '__init__.py'))
except (OSError, IOError), ex: logging.error("datadir - failed to copy myplugs/gae/__init__.py: %s" % str(ex))
# myplugs.socket
if not os.path.isdir(os.path.join(ddir, 'myplugs', 'socket')): os.mkdir(os.path.join(ddir, 'myplugs', 'socket'))
if not os.path.isfile(os.path.join(ddir, 'myplugs', 'socket', "__init__.py")):
try:
shutil.copy(initsource, os.path.join(ddir, 'myplugs', 'socket', '__init__.py'))
except (OSError, IOError), ex: logging.error("datadir - failed to copy myplugs/socket/__init__.py: %s" % str(ex))
if not os.path.isdir(ddir + os.sep +'botlogs'): os.mkdir(ddir + os.sep + 'botlogs')
if not os.path.isdir(ddir + '/run/'): os.mkdir(ddir + '/run/')
if not os.path.isdir(ddir + '/users/'): os.mkdir(ddir + '/users/')
if not os.path.isdir(ddir + '/channels/'): os.mkdir(ddir + '/channels/')
if not os.path.isdir(ddir + '/fleet/'): os.mkdir(ddir + '/fleet/')
if not os.path.isdir(ddir + '/pgp/'): os.mkdir(ddir + '/pgp/')
if not os.path.isdir(ddir + '/plugs/'): os.mkdir(ddir + '/plugs/')
if not os.path.isdir(ddir + '/old/'): os.mkdir(ddir + '/old/')
if not os.path.isdir(ddir + '/containers/'): os.mkdir(ddir + '/containers/')
if not os.path.isdir(ddir + '/chatlogs/'): os.mkdir(ddir + '/chatlogs/')
if not os.path.isdir(ddir + '/botlogs/'): os.mkdir(ddir + '/botlogs/')
if not os.path.isdir(ddir + '/spider/'): os.mkdir(ddir + '/spider/')
if not os.path.isdir(ddir + '/spider/data/'): os.mkdir(ddir + '/spider/data')
if os.path.isfile(ddir + '/globals'):
try: os.rename(ddir + '/globals', ddir + '/globals.old')
except: pass
if not os.path.isdir(ddir + '/globals/'): os.mkdir(ddir + '/globals/')
def getdatadir():
global datadir
return datadir
def setdatadir(ddir):
global datadir
datadir = ddir
|