summaryrefslogblamecommitdiffstats
path: root/server/lib/shell.js
blob: 931286c9f5ea3f6d3bf8bbb5e22840be59e0c8d2 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                                                                                       



                                                                 







                                                                                                                                          


                                                                                                                                    



                                                                                                         







                                                                   
/* 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