#!/usr/bin/python import sys import pwd import os import json import re import base64 import argparse import subprocess as sp b64id = base64.b64encode(os.urandom(9)) parser = argparse.ArgumentParser() parser.add_argument('src', nargs=1) parser.add_argument('dst', nargs=1) parser.add_argument('-programs', dest='programspath') parser.add_argument('-receivers', dest='receivers', type=int) parser.add_argument('-api-secret', dest='api_secret') parser.add_argument('-box-id', dest='box_id') arg = parser.parse_args() theid = arg.box_id infile = arg.src outfile = arg.dst with open(infile[0], 'rb') as fpin: data = json.loads(fpin.read()) data['device_id'] = theid data['installDir'] = arg.programspath data['receivers_count'] = arg.receivers data['apiSecret'] = arg.api_secret with open(outfile[0], 'w') as fpout: fpout.write(json.dumps(data, indent=4)) print(theid) user = pwd.getpwnam('fourier') src_fourier_path = '/media/datadrive/fourier' fourier_path = '/var/fourier' box_path = os.path.join(fourier_path, theid) db_path = os.path.join(box_path, 'files.db') p = sp.Popen(['fdisk', '/dev/sdb'], stdin=sp.PIPE) p.communicate('n\np\n1\n\n\nw\n') sp.call(['mkfs', '-t', 'ext4', '/dev/sdb1']) ret = sp.call(['findmnt', '/media/datadrive']) if ret == 1: os.system(('echo "/dev/sdb1 /media/datadrive ' 'ext4 defaults,auto,nofail 0 2" ' '>> /etc/fstab' )) if not os.path.isdir('/media/datadrive'): os.mkdir('/media/datadrive') sp.call(['mount', '-a']) if not os.path.isdir(src_fourier_path): os.mkdir(src_fourier_path) os.chown(src_fourier_path, user.pw_uid, user.pw_gid) if not os.path.islink(fourier_path): os.symlink(src_fourier_path, fourier_path) if not os.path.isdir(box_path): print('** Creating Box ID folder') os.mkdir(box_path) os.chown(box_path, user.pw_uid, user.pw_gid) if not os.path.isfile(db_path): print('** Preparing local database') sp.call(['fourier', 'db', 'setup']) os.chown(db_path, user.pw_uid, user.pw_gid) print('** Applying migrations') sp.call(['fourier', 'db', 'migrate']) print('** Creating database')