netsh-rule
Version:
Utility to generate a batch file to manage inbound and outbound Windows firewall connections for a single exe file or all exe files in folder
83 lines • 3.01 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.uniqueFileName = exports.uniqueFolderName = exports.toWindows = exports.toUnix = exports.exist = void 0;
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
function exist(name) {
try {
return fs_1.default.statSync(name);
}
catch (e) {
}
}
exports.exist = exist;
function toUnix(fileName) {
const double = /\/\//;
let res = fileName.replace(/\\/g, '/');
while (res.match(double)) {
res = res.replace(double, '/');
}
return res;
}
exports.toUnix = toUnix;
function toWindows(fileName) {
let res = fileName.replace(/\//g, '/');
res = res.replace(/\//g, '\\');
return res;
}
exports.toWindows = toWindows;
function zeros(v, total) {
// Returns v prefixed with '0's with length <= total or v as is.
v = v ? '' + v : '';
return v.length < total ? '0000000000'.slice(0, total - v.length) + v : v;
}
function getDesktopPath() {
if (!process.env.USERPROFILE) {
throw Error('User HOME is undefined');
}
return path_1.default.join(process.env.USERPROFILE, 'Desktop');
}
function nowDay(d) {
return `${zeros(d.getMonth() + 1, 2)}.${zeros(d.getDate(), 2)}.${d.getFullYear() % 100}`;
}
function nowTime(d) {
return `${zeros(d.getHours(), 2)}.${zeros(d.getMinutes(), 2)}.${zeros(d.getSeconds(), 2)}.${zeros(d.getMilliseconds(), 3)}`;
}
function nowDayTime(delimiter = ' at ') {
let d = new Date();
return `${nowDay(d)}${delimiter}${nowTime(d)}`;
}
function ensureNameUnique(name, nameIsFname = true) {
// 0. Ensure that file/folder name is unique.
let basename, ext = '', index = 0, initialized = false;
while (1) {
let st = exist(name);
if (!st || (st.isDirectory() === nameIsFname)) { // case if folder exist but we create file name.
return name;
}
if (!initialized) {
let org = path_1.default.parse(name);
if (nameIsFname) {
org.base = org.name; // to set base name wo/ ext.
ext = org.ext; // folder name may have '.', so keep ext only for file names.
}
org.ext = '';
basename = path_1.default.format(org);
initialized = true;
}
index++;
name = `${basename} (${index})${ext}`;
}
} //ensureNameUnique()
function uniqueFolderName(prefix) {
return ensureNameUnique(`${getDesktopPath()}/${prefix} ${nowDayTime()}`, false);
}
exports.uniqueFolderName = uniqueFolderName;
function uniqueFileName(prefix) {
return ensureNameUnique(`${getDesktopPath()}/${prefix} ${nowDayTime()}`, true);
}
exports.uniqueFileName = uniqueFileName;
//# sourceMappingURL=unique-names.js.map