| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #!/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'])
- print('** Applying migrations')
- sp.call(['fourier', 'db', 'migrate'])
- print('** Creating database')
- os.chown(db_path, user.pw_uid, user.pw_gid)
|