Compare commits

..

10 Commits

Author SHA1 Message Date
7aaf12d2bf fix typo 2022-12-14 22:01:05 +01:00
6def97cbae create /tmp/uploads if not existing 2022-12-14 21:05:17 +01:00
d352cd346b add readme 2022-10-13 01:39:04 +02:00
4711025fdb re run node2nix 2022-10-13 01:23:03 +02:00
39c2a12a3e update gitignore 2022-10-13 01:15:07 +02:00
d91969afa6 test uploading to /tmp 2022-08-30 22:57:32 +02:00
f912e45cc0 update node-packages 2022-08-30 22:36:30 +02:00
eee3a5e3fc mv uploaded files to /mnt 2022-08-30 22:35:57 +02:00
1d339cf614 update gitignore 2022-08-30 22:04:56 +02:00
f96dc09d51 try with package-lock 2022-08-30 21:18:41 +02:00
9 changed files with 2242 additions and 26 deletions

2
.gitignore vendored
View File

@@ -1,2 +1,4 @@
node_modules
result
result*
uploads

24
README.md Normal file
View File

@@ -0,0 +1,24 @@
# usage
works with node2nix. very simple
## reconfigure node packages
updates nix files depending on package.json
``` shell
node2nix
```
## build
``` shell
nix-build -A package
```
## run
``` shell
#run the executable
./result/bin/EvidenceDump
#run jusing node
node result/lib/node_modules/EvidenceDump/server.js
```

View File

@@ -2,7 +2,7 @@
{pkgs ? import <nixpkgs> {
inherit system;
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-14_x"}:
let
nodeEnv = import ./node-env.nix {

View File

@@ -45,8 +45,6 @@ footer{
[data-filepond-item-state='processing-complete'] .filepond--item-panel {
background-color: #888888;
}
</style>
</head>

View File

@@ -165,7 +165,11 @@ let
if(process.argv[2] == "development") {
replaceDependencies(packageObj.devDependencies);
}
else {
packageObj.devDependencies = {};
}
replaceDependencies(packageObj.optionalDependencies);
replaceDependencies(packageObj.peerDependencies);
/* Write the fixed package.json file */
fs.writeFileSync("package.json", JSON.stringify(packageObj, null, 2));
@@ -270,7 +274,7 @@ let
# Reconstructs a package-lock file from the node_modules/ folder structure and package.json files with dummy sha1 hashes
reconstructPackageLock = writeTextFile {
name = "addintegrityfields.js";
name = "reconstructpackagelock.js";
text = ''
var fs = require('fs');
var path = require('path');
@@ -280,25 +284,43 @@ let
var lockObj = {
name: packageObj.name,
version: packageObj.version,
lockfileVersion: 1,
lockfileVersion: 2,
requires: true,
packages: {
"": {
name: packageObj.name,
version: packageObj.version,
license: packageObj.license,
bin: packageObj.bin,
dependencies: packageObj.dependencies,
engines: packageObj.engines,
optionalDependencies: packageObj.optionalDependencies
}
},
dependencies: {}
};
function augmentPackageJSON(filePath, dependencies) {
function augmentPackageJSON(filePath, packages, dependencies) {
var packageJSON = path.join(filePath, "package.json");
if(fs.existsSync(packageJSON)) {
var packageObj = JSON.parse(fs.readFileSync(packageJSON));
packages[filePath] = {
version: packageObj.version,
integrity: "sha1-000000000000000000000000000=",
dependencies: packageObj.dependencies,
engines: packageObj.engines,
optionalDependencies: packageObj.optionalDependencies
};
dependencies[packageObj.name] = {
version: packageObj.version,
integrity: "sha1-000000000000000000000000000=",
dependencies: {}
};
processDependencies(path.join(filePath, "node_modules"), dependencies[packageObj.name].dependencies);
processDependencies(path.join(filePath, "node_modules"), packages, dependencies[packageObj.name].dependencies);
}
}
function processDependencies(dir, dependencies) {
function processDependencies(dir, packages, dependencies) {
if(fs.existsSync(dir)) {
var files = fs.readdirSync(dir);
@@ -314,23 +336,84 @@ let
pkgFiles.forEach(function(entry) {
if(stats.isDirectory()) {
var pkgFilePath = path.join(filePath, entry);
augmentPackageJSON(pkgFilePath, dependencies);
augmentPackageJSON(pkgFilePath, packages, dependencies);
}
});
} else {
augmentPackageJSON(filePath, dependencies);
augmentPackageJSON(filePath, packages, dependencies);
}
}
});
}
}
processDependencies("node_modules", lockObj.dependencies);
processDependencies("node_modules", lockObj.packages, lockObj.dependencies);
fs.writeFileSync("package-lock.json", JSON.stringify(lockObj, null, 2));
'';
};
# Script that links bins defined in package.json to the node_modules bin directory
# NPM does not do this for top-level packages itself anymore as of v7
linkBinsScript = writeTextFile {
name = "linkbins.js";
text = ''
var fs = require('fs');
var path = require('path');
var packageObj = JSON.parse(fs.readFileSync("package.json"));
var nodeModules = Array(packageObj.name.split("/").length).fill("..").join(path.sep);
if(packageObj.bin !== undefined) {
fs.mkdirSync(path.join(nodeModules, ".bin"))
if(typeof packageObj.bin == "object") {
Object.keys(packageObj.bin).forEach(function(exe) {
if(fs.existsSync(packageObj.bin[exe])) {
console.log("linking bin '" + exe + "'");
fs.symlinkSync(
path.join("..", packageObj.name, packageObj.bin[exe]),
path.join(nodeModules, ".bin", exe)
);
}
else {
console.log("skipping non-existent bin '" + exe + "'");
}
})
}
else {
if(fs.existsSync(packageObj.bin)) {
console.log("linking bin '" + packageObj.bin + "'");
fs.symlinkSync(
path.join("..", packageObj.name, packageObj.bin),
path.join(nodeModules, ".bin", packageObj.name.split("/").pop())
);
}
else {
console.log("skipping non-existent bin '" + packageObj.bin + "'");
}
}
}
else if(packageObj.directories !== undefined && packageObj.directories.bin !== undefined) {
fs.mkdirSync(path.join(nodeModules, ".bin"))
fs.readdirSync(packageObj.directories.bin).forEach(function(exe) {
if(fs.existsSync(path.join(packageObj.directories.bin, exe))) {
console.log("linking bin '" + exe + "'");
fs.symlinkSync(
path.join("..", packageObj.name, packageObj.directories.bin, exe),
path.join(nodeModules, ".bin", exe)
);
}
else {
console.log("skipping non-existent bin '" + exe + "'");
}
})
}
'';
};
prepareAndInvokeNPM = {packageName, bypassCache, reconstructLock, npmFlags, production}:
let
forceOfflineFlag = if bypassCache then "--offline" else "--registry http://www.example.com";
@@ -377,13 +460,18 @@ let
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} rebuild
runHook postRebuild
if [ "''${dontNpmInstall-}" != "1" ]
then
# NPM tries to download packages even when they already exist if npm-shrinkwrap is used.
rm -f npm-shrinkwrap.json
npm ${forceOfflineFlag} --nodedir=${nodeSources} ${npmFlags} ${lib.optionalString production "--production"} install
npm ${forceOfflineFlag} --nodedir=${nodeSources} --no-bin-links --ignore-scripts ${npmFlags} ${lib.optionalString production "--production"} install
fi
# Link executables defined in package.json
node ${linkBinsScript}
'';
# Builds and composes an NPM package including all its dependencies

View File

@@ -31,6 +31,24 @@ let
sha512 = "PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==";
};
};
"balanced-match-1.0.2" = {
name = "balanced-match";
packageName = "balanced-match";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz";
sha512 = "3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==";
};
};
"brace-expansion-1.1.11" = {
name = "brace-expansion";
packageName = "brace-expansion";
version = "1.1.11";
src = fetchurl {
url = "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz";
sha512 = "iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==";
};
};
"buffer-from-1.1.2" = {
name = "buffer-from";
packageName = "buffer-from";
@@ -49,6 +67,15 @@ let
sha512 = "InWFDomvlkEj+xWLBfU3AvnbVYqeTWmQopiW0tWWEy5yehYm2YkGEc59sUmw/4ty5Zj/b0WHGs1LgecuBSBGrg==";
};
};
"concat-map-0.0.1" = {
name = "concat-map";
packageName = "concat-map";
version = "0.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz";
sha512 = "/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==";
};
};
"concat-stream-1.6.2" = {
name = "concat-stream";
packageName = "concat-stream";
@@ -229,6 +256,15 @@ let
sha512 = "akx5WBKAwMSg36qoHTuMMVncHWctlaDGslJASDYAhoLrzDUDCjZlOngNa/iC6lPm9aA0qk8pN5KnpmbJHSIIQQ==";
};
};
"glob-6.0.4" = {
name = "glob";
packageName = "glob";
version = "6.0.4";
src = fetchurl {
url = "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz";
sha512 = "MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==";
};
};
"http-errors-1.3.1" = {
name = "http-errors";
packageName = "http-errors";
@@ -238,6 +274,15 @@ let
sha512 = "gMygNskMurDCWfoCdyh1gOeDfSbkAHXqz94QoPj5IHIUjC/BG8/xv7FSEUr7waR5RcAya4j58bft9Wu/wHNeXA==";
};
};
"inflight-1.0.6" = {
name = "inflight";
packageName = "inflight";
version = "1.0.6";
src = fetchurl {
url = "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz";
sha512 = "k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==";
};
};
"inherits-2.0.4" = {
name = "inherits";
packageName = "inherits";
@@ -328,13 +373,22 @@ let
sha512 = "ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==";
};
};
"minimist-1.2.6" = {
"minimatch-3.1.2" = {
name = "minimatch";
packageName = "minimatch";
version = "3.1.2";
src = fetchurl {
url = "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz";
sha512 = "J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==";
};
};
"minimist-1.2.7" = {
name = "minimist";
packageName = "minimist";
version = "1.2.6";
version = "1.2.7";
src = fetchurl {
url = "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz";
sha512 = "Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==";
url = "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz";
sha512 = "bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==";
};
};
"mkdirp-0.5.6" = {
@@ -364,6 +418,24 @@ let
sha512 = "J0UXcyIPRtoYh2YDxWO1hFVGSZMl8dwMCik5ZmtdMlNSPd2M6qgnEs+WydAOdw54uJtgrIu8qvRSaK6etpHj6Q==";
};
};
"mv-2.1.1" = {
name = "mv";
packageName = "mv";
version = "2.1.1";
src = fetchurl {
url = "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz";
sha512 = "at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==";
};
};
"ncp-2.0.0" = {
name = "ncp";
packageName = "ncp";
version = "2.0.0";
src = fetchurl {
url = "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz";
sha512 = "zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==";
};
};
"negotiator-0.5.3" = {
name = "negotiator";
packageName = "negotiator";
@@ -391,6 +463,15 @@ let
sha512 = "ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==";
};
};
"once-1.4.0" = {
name = "once";
packageName = "once";
version = "1.4.0";
src = fetchurl {
url = "https://registry.npmjs.org/once/-/once-1.4.0.tgz";
sha512 = "lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==";
};
};
"parseurl-1.3.3" = {
name = "parseurl";
packageName = "parseurl";
@@ -400,6 +481,15 @@ let
sha512 = "CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==";
};
};
"path-is-absolute-1.0.1" = {
name = "path-is-absolute";
packageName = "path-is-absolute";
version = "1.0.1";
src = fetchurl {
url = "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz";
sha512 = "AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==";
};
};
"path-to-regexp-0.1.7" = {
name = "path-to-regexp";
packageName = "path-to-regexp";
@@ -463,6 +553,15 @@ let
sha512 = "Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==";
};
};
"rimraf-2.4.5" = {
name = "rimraf";
packageName = "rimraf";
version = "2.4.5";
src = fetchurl {
url = "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz";
sha512 = "J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==";
};
};
"safe-buffer-5.1.2" = {
name = "safe-buffer";
packageName = "safe-buffer";
@@ -589,6 +688,15 @@ let
sha512 = "yNsH+tC0r8quK2tg/yqkXqqaYzeKTkSqQ+8T6xCoWgOi/bU/omMYz+6k+I91JJJDeltJzI7oridTOq6OYkY0Tw==";
};
};
"wrappy-1.0.2" = {
name = "wrappy";
packageName = "wrappy";
version = "1.0.2";
src = fetchurl {
url = "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz";
sha512 = "l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==";
};
};
"xtend-4.0.2" = {
name = "xtend";
packageName = "xtend";
@@ -608,8 +716,11 @@ let
sources."accepts-1.2.13"
sources."append-field-0.1.0"
sources."array-flatten-1.1.1"
sources."balanced-match-1.0.2"
sources."brace-expansion-1.1.11"
sources."buffer-from-1.1.2"
sources."busboy-0.2.14"
sources."concat-map-0.0.1"
(sources."concat-stream-1.6.2" // {
dependencies = [
sources."isarray-1.0.0"
@@ -633,7 +744,9 @@ let
sources."finalhandler-0.4.0"
sources."forwarded-0.1.2"
sources."fresh-0.3.0"
sources."glob-6.0.4"
sources."http-errors-1.3.1"
sources."inflight-1.0.6"
sources."inherits-2.0.4"
sources."ipaddr.js-1.0.5"
sources."isarray-0.0.1"
@@ -643,20 +756,26 @@ let
sources."mime-1.3.4"
sources."mime-db-1.52.0"
sources."mime-types-2.1.35"
sources."minimist-1.2.6"
sources."minimatch-3.1.2"
sources."minimist-1.2.7"
sources."mkdirp-0.5.6"
sources."ms-0.7.1"
sources."multer-1.1.0"
sources."mv-2.1.1"
sources."ncp-2.0.0"
sources."negotiator-0.5.3"
sources."object-assign-3.0.0"
sources."on-finished-2.3.0"
sources."once-1.4.0"
sources."parseurl-1.3.3"
sources."path-is-absolute-1.0.1"
sources."path-to-regexp-0.1.7"
sources."process-nextick-args-2.0.1"
sources."proxy-addr-1.0.10"
sources."qs-4.0.0"
sources."range-parser-1.0.3"
sources."readable-stream-1.1.14"
sources."rimraf-2.4.5"
sources."safe-buffer-5.1.2"
sources."send-0.13.0"
(sources."serve-static-1.10.3" // {
@@ -676,6 +795,7 @@ let
sources."util-deprecate-1.0.2"
sources."utils-merge-1.0.0"
sources."vary-1.0.1"
sources."wrappy-1.0.2"
sources."xtend-4.0.2"
];
buildInputs = globalBuildInputs;

1965
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3,7 +3,8 @@
"version": "0.0.1",
"dependencies": {
"express": "4.13.3",
"multer": "1.1.0"
"multer": "1.1.0",
"mv" : "2.1.1"
},
"devDependencies": {
"should": "~7.1.0",

View File

@@ -4,14 +4,19 @@ var express = require("express");
var multer = require('multer');
var app = express();
var path = require('path');
var mv = require('mv');
var fs = require('fs');
var upload_dir = '/tmp/uploads/';
if (!fs.existsSync(upload_dir)){
fs.mkdirSync(upload_dir);
}
app.use(express.static(path.join(__dirname, '/')));
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads');
callback(null, '/tmp');
},
filename: function (req, file, callback) {
callback(null, 'upload_' + Date.now() + '_' + file.originalname);
@@ -25,12 +30,25 @@ app.get('/',function(req,res){
app.post('/uploads',function(req,res){
upload(req,res,function(err) {
if(err) {
console.log("error: ");
console.log(err);
return res.end("Error uploading file.");
if(err) {
console.log("error: ");
console.log(err);
return res.end("Error uploading file.");
}
var oldPath = req.file.path;
var newPath = upload_dir + req.file.filename;
mv(oldPath, newPath, function (err) {
if(err)
{
console.log("error: ");
console.log(err);
return res.end("Error uploading file.");
}
res.end("File is uploaded");
});
res.end("File is uploaded");
});
});