HEX
Server: LiteSpeed
System: Linux CentOS-79-64-minimal 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: vishn3436 (5293)
PHP: 8.0.15
Disabled: NONE
Upload Files
File: //sbin/bitninja-config
#!/opt/bitninja-dojo/run/bin/bitninja-dojo -c=/opt/bitninja/etc
<?php
/**
 * BitNinja linux client entry file.
 *
 * @author Egri Zsolt <ezsolt@bitninja.io>
 * @copyright  © 2021 BitNinja Inc.
 * @package    blue
 * @subpackage main
 * @version    1.0
 */

if (!is_dir('/etc/bitninja')) {
    mkdir('/etc/bitninja');
}

if ($argv[1] !== '--set') {
    $license_v2_file = "/etc/bitninja/license-v2.json";
    $options = getopt("y", ["provision-key::", "type::", "license::", "serverConfigurationMetadata::", "environmentSpecification::"]);

    $serverConfigMeta = $options['serverConfigurationMetadata'] ?? "";
    $envSpec = $options['environmentSpecification'] ?? "";

    $metaFile = '/etc/bitninja/server-meta.json';

    if ($serverConfigMeta || $envSpec) {
        setMetaData($metaFile, 'serverConfigurationMetadata', $serverConfigMeta);
        setMetaData($metaFile, 'environmentSpecification', $envSpec);
        echo PHP_EOL . "Metadata set." . PHP_EOL;
        exit(0);
    }

    $license_key = $options['provision-key'] ?? "";
    if ($license_key) {
        configLegacy("license_key", trim($license_key));
    } else {
        help();
    }

    $type = trim($options['type'] ?? "server-protection");
    $type = in_array($type, ["vps", "server-protection"]) ? $type : "server-protection";
    $license = trim($options['license'] ?? "");

    $license_v2 = [];
    if (file_exists($license_v2_file)) {
        $license_v2 = json_decode(file_get_contents($license_v2_file), true);
    }
    $license_v2["createdAt"] = gmdate("Y-m-d H:i:s");
    if ($license) {
        $license_v2["license"] = $license;
    }
    $license_v2["type"] = trim($type);

    file_put_contents($license_v2_file, json_encode($license_v2, JSON_PRETTY_PRINT));
    chmod($license_v2_file, 0400);
} else {
    if (strpos($argv[2], '=') === false){
        help("legacy");
    }

    $argv2 = explode('=', $argv[2]);
    $key = trim($argv2[0]);
    $value = trim($argv2[1]);

    configLegacy($key, $value);
}

function setMetaData($metaFile, $metaKey, $metaData) {
    if (!$metaData) {
        return;
    }

    $currentMeta = [];
    if (file_exists($metaFile)) {
        $currentMeta = json_decode(file_get_contents($metaFile), true) ?? [];

        if (!is_array($currentMeta)) {
            $currentMeta = [];
        }
    }

    $currentMeta[$metaKey] = json_decode($metaData, true);
    file_put_contents($metaFile, json_encode($currentMeta, JSON_PRETTY_PRINT));
}

function configLegacy($key, $value)
{
    $license_file = '/etc/bitninja/license.php';

    if (!is_file($license_file) || (filesize($license_file) == 0)) {
        file_put_contents($license_file, getEmptyLicense());
    }

    $lines = file('/etc/bitninja/license.php');

    foreach ($lines as $line) {
        if (strpos($line, $key) !== false){
    	$line = "\t'".$key."' => '".$value."',\n";
        }

        $res[] =$line;
    }

    $res_txt = implode("", $res);
    file_put_contents($license_file, $res_txt);
    chmod($license_file, 0400);
}

function help($mode = "")
{
    $message = "Usage: bitninja-config --provision-key=XXXXXX --license=xxxx-xxxx-xxxx-xxxx-xx"; 
    if ($mode === "legacy") {
        $message = "Usage: bitninja-config --set license_key=XXXXXX";
    }
    echo "\n$message\n\n";
    exit(1);
}

function getEmptyLicense()
{
$str= <<<EOD
/
<?php
/**
 *
 * BitNinja config file for license key
 * BitNinja Inc.
 *
 */

//You can get your license key from BitNinja Dashboard
return array(
    'Heimdall' => array (
        'license_key' => '<change_me>',
    ),
);
EOD;
    return $str;
}