configure.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/python
  2. import sys
  3. import pwd
  4. import os
  5. import json
  6. import re
  7. import base64
  8. import argparse
  9. import subprocess as sp
  10. b64id = base64.b64encode(os.urandom(9))
  11. parser = argparse.ArgumentParser()
  12. parser.add_argument('src', nargs=1)
  13. parser.add_argument('dst', nargs=1)
  14. parser.add_argument('-programs', dest='programspath')
  15. parser.add_argument('-receivers', dest='receivers', type=int)
  16. parser.add_argument('-api-secret', dest='api_secret')
  17. parser.add_argument('-box-id', dest='box_id')
  18. arg = parser.parse_args()
  19. theid = arg.box_id
  20. infile = arg.src
  21. outfile = arg.dst
  22. with open(infile[0], 'rb') as fpin:
  23. data = json.loads(fpin.read())
  24. data['device_id'] = theid
  25. data['installDir'] = arg.programspath
  26. data['receivers_count'] = arg.receivers
  27. data['apiSecret'] = arg.api_secret
  28. with open(outfile[0], 'w') as fpout:
  29. fpout.write(json.dumps(data, indent=4))
  30. print(theid)
  31. user = pwd.getpwnam('fourier')
  32. src_fourier_path = '/media/datadrive/fourier'
  33. fourier_path = '/var/fourier'
  34. box_path = os.path.join(fourier_path, theid)
  35. db_path = os.path.join(box_path, 'files.db')
  36. p = sp.Popen(['sudo', 'fdisk', '/dev/sdb'],
  37. stdin=sp.PIPE)
  38. p.communicate('n\np\n1\n\n\nw\n')
  39. sp.call(['sudo', 'mkfs', '-t', 'ext4', '/dev/sdb1'])
  40. if not os.path.isdir(src_fourier_path):
  41. os.mkdir(src_fourier_path)
  42. os.chown(src_fourier_path, user.pw_uid, user.pw_gid)
  43. if not os.path.islink(fourier_path):
  44. os.symlink(src_fourier_path, fourier_path)
  45. if not os.path.isdir(box_path):
  46. print('** Creating Box ID folder')
  47. os.mkdir(box_path)
  48. os.chown(box_path, user.pw_uid, user.pw_gid)
  49. if not os.path.isfile(db_path):
  50. print('** Preparing local database')
  51. sp.call(['fourier', 'db', 'setup'])
  52. print('** Applying migrations')
  53. sp.call(['fourier', 'db', 'migrate'])
  54. print('** Creating database')