summaryrefslogtreecommitdiffstats
path: root/server/lib/shell.js
blob: 311af1d13daa04499e6bb1c56a52b9adadc6453c (plain) (blame)
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
/* global __appdir */
var path = require('path')
var shell = require('shelljs')
var ipxeGIT = 'git://git.ipxe.org/ipxe.git'

module.exports = {
  buildIPXE: function (req, res) {
    if (!shell.which('git')) {
      return res.status(500).send({ status: 'GIT_MISSING', error_message: 'Please install git on the server.' })
    }

    var gitclone = 'git clone ' + ipxeGIT
    shell.cd(path.join(__appdir, 'ipxe'))
    shell.exec(gitclone, function (code, stdout, stderr) {
      shell.cd(path.join(__appdir, 'ipxe', 'ipxe', 'src'))

      // Remove the general config and paste in the own one
      shell.rm(path.join(__appdir, 'ipxe', 'ipxe', 'src', 'config', 'general.h'))
      shell.cp(path.join(__appdir, 'ipxe', 'general.h'), path.join(__appdir, 'ipxe', 'ipxe', 'src', 'config'))
      shell.rm(path.join(__appdir, 'ipxe', 'ipxe', 'src', 'config', 'console.h'))
      shell.cp(path.join(__appdir, 'ipxe', 'console.h'), path.join(__appdir, 'ipxe', 'ipxe', 'src', 'config'))
      // var make = 'make EMBED=' + path.join(__appdir, 'ipxe', 'main.ipxe');
      var make = 'make EMBED=' + path.join(__appdir, 'ipxe', 'main.ipxe') + ' TRUST=' + path.join(__appdir, 'bin', 'fullchain.pem')
      // shell.env.PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin';
      shell.env.DEBUG = ''
      shell.exec(make, function (code, stdout, stderr) {
        shell.rm(path.join(__appdir, 'tftp', 'ipxe.0'))
        shell.cp('bin/ipxe.pxe', path.join(__appdir, 'tftp'))
        shell.mv(path.join(__appdir, 'tftp', 'ipxe.pxe'), path.join(__appdir, 'tftp', 'ipxe.0'))
        // shell.rm('-rf', 'ipxe');
        return res.status(200).send({ status: 'success' })
      })
    })
  }
}

// sudo apt-get install liblzma-dev
// sudo apt-get install mkisofs