diff --git a/.appveyor.yml b/.appveyor.yml index 37f85af..a25b3ac 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -41,7 +41,7 @@ deploy: notifications: - provider: Email to: - - abuse@catswords.net + - gnh1201@catswords.re.kr subject: 'Build #{{build}} {{status}}' on_build_success: false on_build_failure: true diff --git a/README.md b/README.md index 78b7700..e3070c0 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ function say() { exports.say = say; exports.VERSIONINFO = "SayHello (sayhello.js) version 0.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; ``` diff --git a/app.hta b/app.hta index 1705f60..11fc4c8 100644 --- a/app.hta +++ b/app.hta @@ -51,7 +51,7 @@ - + diff --git a/app.js b/app.js index e660882..c28e9d9 100644 --- a/app.js +++ b/app.js @@ -1,6 +1,6 @@ // app.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. // SPDX-License-Identifier: GPL-3.0-or-later -// SPDX-FileCopyrightText: 2025 Catswords OSS and WelsonJS Contributors // https://github.com/gnh1201/welsonjs // Bootstrap code for running a javascript app in windows. Run as: @@ -693,7 +693,7 @@ function __main__() { console.log(" WelsonJS - Build a Windows app on the Windows built-in JavaScript engine"); console.log(" C-2021-000237 (cros.or.kr), 10.5281/zenodo.11382385 (doi.org), 2023-A0562 (oss.kr), Codename Macadamia"); console.log(" This software is distributed as open source under the GPL 3.0 or MS-RL licenses."); - console.log(" Please support this project: https://gnh1201.link"); + console.log(" Please support this project: https://github.com/sponsors/gnh1201"); console.log(" Source code available: https://github.com/gnh1201/welsonjs"); console.log(""); diff --git a/app/assets/ps1/WelsonJS-WebRequest.ps1 b/app/assets/ps1/WelsonJS-WebRequest.ps1 index ec5fa51..52b8d2f 100644 --- a/app/assets/ps1/WelsonJS-WebRequest.ps1 +++ b/app/assets/ps1/WelsonJS-WebRequest.ps1 @@ -1,5 +1,6 @@ # WelsonJS-WebRequest.ps1 -# Namhyeon Go +# Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +# SPDX-License-Identifier: GPL-3.0-or-later # https://github.com/gnh1201/welsonjs param( [string]$url, diff --git a/app/index.js b/app/index.js index aa42cf4..c223308 100644 --- a/app/index.js +++ b/app/index.js @@ -1,6 +1,10 @@ -// index.js - The entrypoint on WelsonJS GUI envionment -// Namhyeon Go +// index.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// The entrypoint on WelsonJS GUI envionment +// var FILE = require("lib/file"); var SHELL = require("lib/shell"); var Browser = require("lib/browser"); diff --git a/bgloader.js b/bgloader.js index 690557f..9af7ea0 100644 --- a/bgloader.js +++ b/bgloader.js @@ -1,3 +1,8 @@ +// bgloader.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// if (!Array.prototype.map) { Array.prototype.map = function(fn) { var rv = []; diff --git a/bootstrap.js b/bootstrap.js index 6ba5ca5..2df570e 100644 --- a/bootstrap.js +++ b/bootstrap.js @@ -1,9 +1,8 @@ -////////////////////////////////////////////////////////////////////////////////// -// -// bootstrap.js -// -///////////////////////////////////////////////////////////////////////////////// - +// bootstrap.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var STD = require("lib/std"); var PS = require("lib/powershell"); var REG = require("lib/registry"); diff --git a/data/test-msoffice.json b/data/test-msoffice.json index 88c0c5a..a6aa57c 100644 --- a/data/test-msoffice.json +++ b/data/test-msoffice.json @@ -5,7 +5,7 @@ "welsonjs": "0.2.7" }, "authors": [ - "Namhyeon Go " + "Namhyeon Go " ], "references": [ "https://github.com/gnh1201/welsonjs", diff --git a/data/test-oss-korea-2023.json b/data/test-oss-korea-2023.json index f0c1b81..805e1cc 100644 --- a/data/test-oss-korea-2023.json +++ b/data/test-oss-korea-2023.json @@ -5,7 +5,7 @@ "welsonjs": "0.2.7" }, "authors": [ - "Namhyeon Go " + "Namhyeon Go " ], "references": [ "https://github.com/gnh1201/welsonjs", diff --git a/defaultService.example.js b/defaultService.example.js index 5912e69..c8794fa 100644 --- a/defaultService.example.js +++ b/defaultService.example.js @@ -1,5 +1,8 @@ // defaultService.example.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// var SYS = require("lib/system"); // Examples of class (prototype) and instance referencing .env values diff --git a/encryptor.js b/encryptor.js index 63305f8..4a5ae16 100644 --- a/encryptor.js +++ b/encryptor.js @@ -1,8 +1,10 @@ // encryptor.js -// HIGHT(ISO/IEC 18033-3) encryption and decryption tool for WelsonJS -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs - +// +// HIGHT(ISO/IEC 18033-3) encryption and decryption tool for WelsonJS framework +// var FILE = require("lib/file"); var Toolkit = require("lib/toolkit"); diff --git a/examples/certchecker.js b/examples/certchecker.js index 9d05c83..7d3d975 100644 --- a/examples/certchecker.js +++ b/examples/certchecker.js @@ -1,6 +1,8 @@ // certchecker.js -// Namhyeon Go - +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var FILE = require("lib/file"); var HTTP = require("lib/http"); var RAND = require("lib/rand"); diff --git a/examples/virustotal.js b/examples/virustotal.js index 6b5d53b..6f2538c 100644 --- a/examples/virustotal.js +++ b/examples/virustotal.js @@ -1,6 +1,8 @@ // virustotal.js -// Namhyeon Go - +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var FILE = require("lib/file"); var HTTP = require("lib/http"); var Chrome = require("lib/chrome"); diff --git a/lib/adb.js b/lib/adb.js index 6c8845a..57b4d75 100644 --- a/lib/adb.js +++ b/lib/adb.js @@ -1,6 +1,10 @@ -// Android Debug Bridge API -// Namhyeon Go (Catswords Research) +// adb.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// Android Debug Bridge API +// var SHELL = require("lib/shell"); var SYS = require("lib/system"); @@ -130,6 +134,6 @@ exports.createEmulator = function(binPath) { }; exports.VERSIONINFO = "Android Debug Bridge Interface (adb.js) version 0.2.2"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/anthropic.js b/lib/anthropic.js index d518100..2a4bc48 100644 --- a/lib/anthropic.js +++ b/lib/anthropic.js @@ -1,11 +1,12 @@ // anthropic.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // -// ***SECURITY NOTICE*** -// Anthropic/Claude requires an internet connection, and data may be transmitted externally. Users must adhere to the terms of use and privacy policy. -// - Privacy Policy: https://www.anthropic.com/legal/privacy -// +// SECURITY NOTICE +// Anthropic requires an internet connection, and data may be transmitted externally. Please check the terms of use and privacy policy. +// https://www.anthropic.com/legal/privacy +// var FILE = require("lib/file"); var HTTP = require("lib/http"); var CRED = require("lib/credentials"); @@ -55,6 +56,6 @@ function chat(content) { exports.chat = chat; exports.VERSIONINFO = "Anthropic (Claude) interface (anthropic.js) version 0.1.4"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/archive.js b/lib/archive.js index 5e36069..322994b 100644 --- a/lib/archive.js +++ b/lib/archive.js @@ -1,7 +1,9 @@ // archive.js -// File archiver library for WelsonJS framework -// Namhyeon Go (Catswords Research) +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// File archiver library for WelsonJS framework // var SHELL = require("lib/shell"); var FILE = require("lib/file"); @@ -119,6 +121,6 @@ exports.create = function(engine) { }; exports.VERSIONINFO = "File archiver library (archive.js) version 0.1-dev"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/autohotkey.js b/lib/autohotkey.js index a5b6ac9..7e9605d 100644 --- a/lib/autohotkey.js +++ b/lib/autohotkey.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// autohotkey.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // AutoHotKey API -/////////////////////////////////////////////////////////////////////// - +// var SHELL = require("lib/shell"); exports.VERSIONINFO = "AutoHotKey (autohotkey.js) version 0.1"; diff --git a/lib/autoit.js b/lib/autoit.js index b384fe3..40ae23b 100644 --- a/lib/autoit.js +++ b/lib/autoit.js @@ -1,7 +1,10 @@ // autoit.js -// AutoIt (AutoIt3, AutoItX) API interface for WelsonJS framework -// Namhyeon Go (Catswords Research) +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// AutoIt (AutoIt3, AutoItX) API interface for WelsonJS framework +// function AutoItObject() { this._interface = null; diff --git a/lib/aviation.js b/lib/aviation.js index ada4ab8..18c00f9 100644 --- a/lib/aviation.js +++ b/lib/aviation.js @@ -1,11 +1,12 @@ // aviation.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // -// ***SECURITY NOTICE*** -// Aviation Data Integration requires an internet connection, and data may be transmitted externally. Users must adhere to the terms of use and privacy policy. -// - AviationStack website: https://aviationstack.com/?utm_source=FirstPromoter&utm_medium=Affiliate&fpr=namhyeon71 -// - SearchApi website: https://www.searchapi.io/?via=namhyeon +// SECURITY NOTICE +// AviationStack, SearchApi requires an internet connection, and data may be transmitted externally. Please check the terms of use and privacy policy. +// https://aviationstack.com/?utm_source=FirstPromoter&utm_medium=Affiliate&fpr=namhyeon71 +// https://www.searchapi.io/?via=namhyeon // var HTTP = require("lib/http"); var CRED = require("lib/credentials"); @@ -114,6 +115,6 @@ exports.getRoundTrip = getRoundTrip; exports.getOneWay = getOneWay; exports.VERSIONINFO = "Aviation Data Integration (aviation.js) version 0.1.3"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/base64.js b/lib/base64.js index fd98f16..6940dfa 100644 --- a/lib/base64.js +++ b/lib/base64.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// base64.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // Base64 API -//////////////////////////////////////////////////////////////////////// - +// //var XML = require("lib/xml"); var PS = require("lib/powershell"); diff --git a/lib/browser.js b/lib/browser.js index 99646d0..755501e 100644 --- a/lib/browser.js +++ b/lib/browser.js @@ -1,7 +1,10 @@ // browser.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs - +// +// Browser Compatibility Layer +// // only less than IE 9 if (!window.addEventListener) { global.Element = function() {}; @@ -285,6 +288,6 @@ exports.reload = reload; exports.close = close; exports.VERSIONINFO = "Browser Compatibility Layer (browser.js) version 0.1.7"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/catproxy.js b/lib/catproxy.js index 45cb87c..c8c185d 100644 --- a/lib/catproxy.js +++ b/lib/catproxy.js @@ -1,6 +1,10 @@ // catproxy.js -// Caterpillar Proxy Integration for WelsonJS framework +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// Caterpillar Proxy Integration for WelsonJS framework +// var JSONRPC2 = require("lib/jsonrpc2"); function CatProxyClient(url) { @@ -70,6 +74,6 @@ exports.create = create; exports.CatProxyClient = CatProxyClient; exports.VERSIONINFO = "Caterpillar Proxy Integration (caterpillar.js) version 0.1.5"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/chatgpt.js b/lib/chatgpt.js index 4950859..2de663a 100644 --- a/lib/chatgpt.js +++ b/lib/chatgpt.js @@ -1,11 +1,12 @@ // chatgpt.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // -// ***SECURITY NOTICE*** -// ChatGPT requires an internet connection, and data may be transmitted externally. Users must adhere to the terms of use and privacy policy. -// - Privacy Policy: https://openai.com/policies/row-privacy-policy/ -// +// SECURITY NOTICE +// ChatGPT requires an internet connection, and data may be transmitted externally. Please check the terms of use and privacy policy. +// https://openai.com/policies/row-privacy-policy/ +// var FILE = require("lib/file"); var HTTP = require("lib/http"); var CRED = require("lib/credentials"); @@ -53,6 +54,6 @@ function chat(content) { exports.chat = chat; exports.VERSIONINFO = "OpenAI (ChatGPT) interface version 0.1.2"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/chrome.js b/lib/chrome.js index d44beba..65ad22b 100644 --- a/lib/chrome.js +++ b/lib/chrome.js @@ -1,8 +1,10 @@ // chrome.js -// Chrome Web Browser Debugging Interface for WelsonJS framework -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // +// Chrome Web Browser Debugging Interface for WelsonJS framework +// var STD = require("lib/std"); var RAND = require("lib/rand"); var SHELL = require("lib/shell"); diff --git a/lib/cloudflare.js b/lib/cloudflare.js index 478b0d9..faba822 100644 --- a/lib/cloudflare.js +++ b/lib/cloudflare.js @@ -1,11 +1,14 @@ -//////////////////////////////////////////////////////////////////////// +// cloudflare.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // Cloudflare API -//////////////////////////////////////////////////////////////////////// - +// var SHELL = require("lib/shell"); var SYS = require("lib/system"); -exports.VERSIONINFO = "Cloudflare Lib (cloudflare.js) version 0.1"; +exports.VERSIONINFO = "Cloudflare(d) Integration (cloudflare.js) version 0.1"; exports.global = global; exports.require = global.require; diff --git a/lib/config.js b/lib/config.js index 8b33a3d..6b727d1 100644 --- a/lib/config.js +++ b/lib/config.js @@ -1,6 +1,8 @@ -//////////////////////////////////////////////////////////////////////// -// Config API -//////////////////////////////////////////////////////////////////////// +// config.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var XML = require("lib/xml"); exports.getValue = function(key) { diff --git a/lib/cookie.js b/lib/cookie.js index ff3f4e8..ee7ad9e 100644 --- a/lib/cookie.js +++ b/lib/cookie.js @@ -1,3 +1,8 @@ +// cookie.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var CookieObject = function() { this.expireDays = 90; diff --git a/lib/coupang.js b/lib/coupang.js index a9d8f11..10b5252 100644 --- a/lib/coupang.js +++ b/lib/coupang.js @@ -1,8 +1,9 @@ // coupang.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // -// ***SECURITY NOTICE*** +// SECURITY NOTICE // Due to potential security issues, the Public API URL is not provided. If you need to request access, please refer to the project's contact information. // You can download the server-side script that implements this functionality from the link below: // https://github.com/gnh1201/caterpillar @@ -27,6 +28,6 @@ function search(s) { exports.search = search; exports.VERSIONINFO = "Coupang Product Search Client (coupang.js) version 0.1.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/credentials.js b/lib/credentials.js index b653718..568d607 100644 --- a/lib/credentials.js +++ b/lib/credentials.js @@ -1,5 +1,6 @@ // credentials.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // var FILE = require("lib/file"); @@ -64,6 +65,6 @@ exports.push = push; exports.get = get; exports.VERSIONINFO = "Credential store (credentials.js) version 0.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/db.js b/lib/db.js index 2490743..5debf6e 100644 --- a/lib/db.js +++ b/lib/db.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// db.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // Example Database API -//////////////////////////////////////////////////////////////////////// - +// var LIB = require("lib/std"); exports.VERSIONINFO = "Database Lib (db.js) version 1.0"; diff --git a/lib/extramath.js b/lib/extramath.js index cd33a66..8076ff7 100644 --- a/lib/extramath.js +++ b/lib/extramath.js @@ -1,8 +1,10 @@ // extramath.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs -// https://app.rdbl.io/T0AB411UHDW9/S0VLKP4HKVGC/P0TL9IQZOUFT - +// +// Documentation: https://app.rdbl.io/T0AB411UHDW9/S0VLKP4HKVGC/P0TL9IQZOUFT +// // DTM(Document-term Matrix): https://en.wikipedia.org/wiki/Document-term_matrix function DTM() { this.data = []; @@ -75,6 +77,6 @@ exports.export_measureSimilarity = export_measureSimilarity; exports.cartesianProduct = cartesianProduct; exports.VERSIONINFO = "ExtraMath module (extramath.js) version 0.0.5"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/fakeworker.js b/lib/fakeworker.js index 1ccd855..af109e7 100644 --- a/lib/fakeworker.js +++ b/lib/fakeworker.js @@ -1,3 +1,8 @@ +// fakeworker.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var BASE64 = require("lib/base64"); function FakeWorker() { @@ -168,6 +173,6 @@ exports.repeat = function(target, worker, onError) { }; exports.VERSIONINFO = "FakeWorker module (fakeworker.js) version 0.0.6"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/file.js b/lib/file.js index 1b9cfd8..a7aa32b 100644 --- a/lib/file.js +++ b/lib/file.js @@ -1,10 +1,10 @@ -////////////////////////////////////////////////////////////////////////////////// -// -// file.js -// with the PIPE based IPC (lib/pipe-ipc.js) -// -///////////////////////////////////////////////////////////////////////////////// - +// file.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// +// FILE IO Library with the PIPE based IPC (lib/pipe-ipc.js) +// var STD = require("lib/std"); var PipeIPC = require("lib/pipe-ipc"); @@ -254,6 +254,6 @@ exports.loadEnvFromArgs = loadEnvFromArgs; exports.CdoCharset = PipeIPC.CdoCharset; exports.VERSIONINFO = "File IO Library (file.js) version 0.2.13"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/filetypes.js b/lib/filetypes.js index a953736..e3e8389 100644 --- a/lib/filetypes.js +++ b/lib/filetypes.js @@ -1,7 +1,8 @@ -// msoffice.js -// Namhyeon Go +// filetypes.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs - +// var FILE = require("lib/file"); // https://support.microsoft.com/en-au/office/file-formats-that-are-supported-in-excel-0943ff2c-6014-4e8d-aaea-b83d51d46247 @@ -21,6 +22,6 @@ function getExtensionsByOpenWith(openwith) { exports.getExtensionsByOpenWith = getExtensionsByOpenWith; exports.VERSIONINFO = "FileTypes version 0.0.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/fsm.js b/lib/fsm.js index 63a1460..4a07b5e 100644 --- a/lib/fsm.js +++ b/lib/fsm.js @@ -1,8 +1,10 @@ // fsm.js -// FSM(Finite State Machine) library for WelsonJS framework -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs - +// +// FSM(Finite State Machine) library for WelsonJS framework +// // State constructor function function State(name) { this.name = name; @@ -81,6 +83,6 @@ exports.State = State; exports.FSM = FSM; exports.VERSIONINFO = "FSM(Finite State Machine) library (fsm.js) version 0.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/grok.js b/lib/grok.js index 8bcc39a..bec7e0b 100644 --- a/lib/grok.js +++ b/lib/grok.js @@ -1,11 +1,12 @@ // grok.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // -// ***SECURITY NOTICE*** -// Grok (x.ai) requires an internet connection, and data may be transmitted externally. Users must adhere to the terms of use and privacy policy. -// - Privacy Policy: https://x.ai/legal/privacy-policy -// +// SECURITY NOTICE +// Grok requires an internet connection, and data may be transmitted externally. Please check the terms of use and privacy policy. +// https://x.ai/legal/privacy-policy +// var FILE = require("lib/file"); var HTTP = require("lib/http"); var CRED = require("lib/credentials"); @@ -48,6 +49,6 @@ function chat(content) { exports.chat = chat; exports.VERSIONINFO = "Grok (x.ai) interface version 0.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/groq.js b/lib/groq.js index e6f92bb..1e18f63 100644 --- a/lib/groq.js +++ b/lib/groq.js @@ -1,10 +1,11 @@ // groq.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // -// ***SECURITY NOTICE*** -// Groq requires an internet connection, and data may be transmitted externally. Users must adhere to the terms of use and privacy policy. -// - Privacy Policy: https://groq.com/privacy-policy/ +// SECURITY NOTICE +// Groq requires an internet connection, and data may be transmitted externally. Please check the terms of use and privacy policy. +// https://groq.com/privacy-policy/ // var FILE = require("lib/file"); var HTTP = require("lib/http"); @@ -42,6 +43,6 @@ function chat(content) { exports.chat = chat; exports.VERSIONINFO = "Groq (GroqCloud) interface (groq.js) version 0.1.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/gtk.js b/lib/gtk.js index d3ce170..73691bc 100644 --- a/lib/gtk.js +++ b/lib/gtk.js @@ -1,12 +1,10 @@ -//////////////////////////////////////////////////////////////////////// -// -// GTKServer API -// -// * Breif: GTK GUI Programming with WSH (Windows Scripting Host) -// * Author: Go Namhyeon -// * Project site: https://github.com/gnh1201/welsonjs -// -//////////////////////////////////////////////////////////////////////// +// gtk.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// +// GTKServer API - GTK GUI Programming with WSH (Windows Scripting Host) +// var SHELL = require("lib/shell"); // set binPath diff --git a/lib/har.js b/lib/har.js index d4a841a..5e60b37 100644 --- a/lib/har.js +++ b/lib/har.js @@ -1,6 +1,10 @@ // har.js -// HAR(HTTP Archive) manipulate and replay tools +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// HAR(HTTP Archive) manipulate and replay tools +// var PipeIPC = require("lib/pipe-ipc"); var FILE = require("lib/file"); var HTTP = require("lib/http"); @@ -106,6 +110,6 @@ var HARObject = function() { exports.HARObject = HARObject; exports.VERSIONINFO = "HAR(HTTP Archive) manipulate and replay tools version 0.1.8"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = require; diff --git a/lib/hosts.js b/lib/hosts.js index 17e9e35..e6114b5 100644 --- a/lib/hosts.js +++ b/lib/hosts.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// hosts.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // Hosts API -//////////////////////////////////////////////////////////////////////// - +// var SYS = require("lib/system"); var FILE = require("lib/file"); diff --git a/lib/http.js b/lib/http.js index 6125a74..bae27b9 100644 --- a/lib/http.js +++ b/lib/http.js @@ -1,7 +1,10 @@ // http.js -// HTTP REST API client for WelsonJS framework -// Namhyeon Go (Catswords Research) +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// HTTP REST API client for WelsonJS framework +// var SYS = require("lib/system"); var FILE = require("lib/file"); var SHELL = require("lib/shell"); diff --git a/lib/httpserver.js b/lib/httpserver.js index 34881a5..a4f0956 100644 --- a/lib/httpserver.js +++ b/lib/httpserver.js @@ -1,6 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// httpserver.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // HTTPServer API -/////////////////////////////////////////////////////////////////////// +// var HTTPServer = { _this: this, // Avoid conflicts between HTTPServer and Winsock variables diff --git a/lib/ip-reputation.js b/lib/ip-reputation.js index 78efe14..e677f1c 100644 --- a/lib/ip-reputation.js +++ b/lib/ip-reputation.js @@ -1,10 +1,11 @@ // ip-reputation.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // -// ***SECURITY NOTICE*** -// IP Reputation Checker requires an internet connection, and data may be transmitted externally. Users must adhere to the terms of use and privacy policy. -// - AbuseIPDB website: https://www.abuseipdb.com/ +// SECURITY NOTICE +// AbuseIPDB requires an internet connection, and data may be transmitted externally. Please check the terms of use and privacy policy. +// https://www.abuseipdb.com/ // var HTTP = require("lib/http"); var APIKEY = require("lib/apikey"); @@ -27,6 +28,6 @@ function check(ip_address) { exports.check = check; exports.VERSIONINFO = "IP Reputation Checker (ip-reputation.js) version 0.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/jsonrpc2.js b/lib/jsonrpc2.js index f4d0f3c..2f14f3f 100644 --- a/lib/jsonrpc2.js +++ b/lib/jsonrpc2.js @@ -1,8 +1,10 @@ // jsonrpc2.js -// JSON-RPC 2.0 wrapper for WelsonJS framework -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // +// JSON-RPC 2.0 wrapper for WelsonJS framework +// function JsonRpc2(url) { this.url = url; this.userAgent = "php-httpproxy/0.1.5 (Client; WelsonJS)"; @@ -57,6 +59,6 @@ exports.create = create; exports.DEFAULT_JSONRPC2_URL = DEFAULT_JSONRPC2_URL; exports.VERSIONINFO = "JSON-RPC 2.0 wrapper (jsonrpc2.js) version 0.1.5"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/kakaotalk.js b/lib/kakaotalk.js new file mode 100644 index 0000000..b4b74bb --- /dev/null +++ b/lib/kakaotalk.js @@ -0,0 +1,191 @@ +// kakaotalk.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// +// KakaoTalk (Instant Messaging Service in South Korea) automation testing (PoC) library +// +var Toolkit = require("lib/toolkit"); +var AutoIt = require("lib/autoit"); + +function KakaoTalk() { + this.lastTemplate = ""; + this.nextTemplate = "wall.png"; + this.oAutoIt = AutoIt.create(); + + // 사용할 메시지 지정 + this.message = { + start: "ㅎㄱㅎㅈ", // 하트 교환을 요청하는 메시지 + clipboardPaste: "^v", // 클립보드에 복사된 내용(이미지)를 붙여넣기 + pushed: "ㄴ" // 하트 번호 인증 (스크린샷 전송) 후 보낼 메시지. **카톡은 답글 모드에선 그림 첨부를 지원하지 않음** + }; + this.setMessage = function(messageType, messageText) { + this.message[messageType] = messageText; + }; + + // 템플릿 제어 + this.setLastTemplate = function(templateName) { + this.lastTemplate = templateName; + }; + this.setNextTemplate = function(templateName) { + this.nextTemplate = templateName; + }; + + // x: 화면 좌표 X, y: 화면 좌표 Y, dx: 화면 좌표 X 보정값, dy: 화면 좌표 Y 보정값 + this.mouseMove = function(x, y, dx, dy) { + this.oAutoIt.mouseMove(x + dx, y + dy); + }; + + // x: 화면 좌표 X, y: 화면 좌표 Y, dx: 화면 좌표 X 보정값, dy: 화면 좌표 Y 보정값 + this.mouseClick = function(x, y, dx, dy) { + this.mouseMove(x, y, dx, dy); + this.oAutoIt.mouseClick("left"); + }; + + this.sendKeys = function(keys) { + this.oAutoIt.send(keys); + }; + + this.check = function(params) { + // 메시지 띄우기 (값이 정상적으로 들어오는지 확인용) + //Toolkit.alert(JSON.stringify(params)); + + // 전달 받은 좌표를 숫자로 변환 + var x = parseInt(params.position.x); + var y = parseInt(params.position.y); + + // 템플릿 이름 + var templateName = params.fileName; + + // 각 클릭 단계별 처리 + switch (templateName) { + case "wall.png": // 입력창 클릭 + // 초기 상태에서 들어온 경우 + if (this.lastTemplate == "") { + this.mouseClick(x, y, -32, 32); // 채팅창 클릭 + sleep(1000); // 1초 기다림 + this.sendKeys(this.message.start); // 메시지 입력 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("button_message_send.png"); // 다음 상태 설정 + } + + // 하트를 누르고 프로필 창 닫기까지 완료한 경우 + if (this.lastTemplate == "binary_button_close_profile_blured.png") { + this.mouseClick(x, y, -32, 32); // 채팅창 클릭 + sleep(1000); // 1초 기다림 + + this.sendKeys(this.message.clipboardPaste); // 붙여넣기 명령 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("button_clipboard_send.png"); // 다음 상태 설정 + } + + break; + + case "wall_reply_ready.png": + // 하트 누른거 인증 + if (this.lastTemplate == "button_reply.png") { + this.mouseClick(x, y, -32, 56 + 32); // 채팅창 클릭 + sleep(1000); // 1초 기다림 + this.sendKeys(this.message.pushed); // "눌렀다"는 메시지 입력 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("button_message_send.png"); // 다음 상태 설정 + } + break; + + // 클립보드 전송 + case "button_clipboard_send.png": + if (this.lastTemplate == "wall.png") { + this.mouseClick(x, y, 0, 0); // 클립보드 전송 버튼 클릭 + sleep(1000); // 1초 기다림 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("mention_reply.png:-1"); // 기억해두었던 "나에게 답장" 위치 다시 찾기 + } + break; + + case "button_message_send.png": // 메시지 전송 버튼 찾았을 때 + // 이전 작업이 신규 메시지 전송일 때 + if (this.lastTemplate == "wall.png") { + this.mouseClick(x, y, 0, 0); // 메시지 전송 버튼 클릭 + sleep(1000); // 1초 기다림 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("mention_reply.png"); // 다음 상태 설정 + } + + // 이전 작업이 답글 전송일 때 + if (this.lastTemplate == "wall_reply_ready.png") { + this.mouseClick(x, y, 0, 0); // 메시지 전송 버튼 클릭 + sleep(1000); // 1초 기다림 + this.setLastTemplate(templateName); // 현재 상태 저장 + + /**** 회기점 (여기서는 "ㅎㄱㅎㅈ" 메시지를 이미 보낸 상태이므로, 다시 메시지를 보내지 않고 다른 응답을 기다림.) ****/ + this.setNextTemplate("mention_reply.png"); // 다음 상태 설정 + } + break; + + case "mention_reply.png": // 답글이 도착했을 때 + // 이전 작업이 메시지 전송 버튼 클릭이었을 때에만 진행 + if (this.lastTemplate == "button_message_send.png") { + this.mouseClick(x, y, -40, -9); // 아바타 클릭 + sleep(1000); // 1초 기다림 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("binary_button_view_profile.png"); // 다음 상태 설정 + } + + // 하트 찍기를 완료하고 "나에게 답장" 메시지를 다시 찾은 경우 진행 + if (this.lastTemplate == "button_clipboard_send.png") { + this.mouseMove(x, y, 100, 30); // 해당 메시지로 커서 이동 + sleep(1000); // 1초 기다림 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("button_reply.png"); // 다음 상태 설정 + } + break; + + case "button_reply.png": // 답글 버튼을 찾았을 때 + // "나에게 답장" 메시지를 다시 찾은 뒤, 답글 버튼을 눌렀을 때에만 진행 + if (this.lastTemplate == "mention_reply.png") { + this.mouseClick(x, y, 5, 5); // 답글 버튼 클릭 + sleep(1000); // 1초 기다림 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("wall_reply_ready.png"); // 다음 상태 설정 + } + break; + + case "binary_button_view_profile.png": // 프로필 보기 버튼을 찾았을 때 + // 답글이 온 경우에만 진행 + if (this.lastTemplate == "mention_reply.png") { + this.mouseClick(x, y, 0, 0); // 프로필 보기 버튼 클릭 + sleep(1000); // 1초 기다림 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("button_heart.png"); // 다음 상태 설정 + } + break; + + case "button_heart.png": // 하트 버튼 찾았을 때 + if (this.lastTemplate == "binary_button_view_profile.png") { + this.mouseClick(x, y, 0, 0); // 하트 버튼 클릭 + sleep(1000); // 1초 기다림 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("button_heart_clicked.png"); // 다음 상태 설정 + } + break; + + case "button_heart_clicked.png": // 하트 버튼 클릭했을 때 + if (this.lastTemplate == "button_heart.png") { + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("binary_button_close_profile_blured.png"); // 다음 상태 설정 + } + break; + + case "binary_button_close_profile_blured.png": // 프로필 창을 닫기 + if (this.lastTemplate == "button_heart_clicked.png") { // 하트 버튼을 찍고 들어왔으면 + this.mouseClick(x, y, 3, 3); // 프로필 창 닫기 버튼 클릭 + sleep(1000); // 1초 기다림 + this.setLastTemplate(templateName); // 현재 상태 저장 + this.setNextTemplate("wall.png"); // 다음 상태 설정 + } + break; + } + }; +} + +exports.KakaoTalk = KakaoTalk; diff --git a/lib/language-inference-engine.js b/lib/language-inference-engine.js index 1a71080..5ab9bad 100644 --- a/lib/language-inference-engine.js +++ b/lib/language-inference-engine.js @@ -1,10 +1,12 @@ // language-inference-engine.js -// Language Inference Engine (e.g., NLP, LLM) services integration -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs - -// ***SECURITY NOTICE*** -// Language Inference Engine requires an internet connection, and data may be transmitted externally. Users must adhere to the terms of use and privacy policy. +// +// Language Inference Engine (e.g., NLP, LLM) services integration +// +// SECURITY NOTICE +// A LLM service requires an internet connection, and data may be transmitted externally. Please the terms of use and privacy policy. // - OpenAI: https://openai.com/policies/row-privacy-policy/ // - Anthropic: https://www.anthropic.com/legal/privacy // - Groq: https://groq.com/privacy-policy/ @@ -552,6 +554,6 @@ exports.create = function() { }; exports.VERSIONINFO = "Language Inference Engine integration version 0.1.11"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/ldplayer.js b/lib/ldplayer.js index 86476e8..936dadb 100644 --- a/lib/ldplayer.js +++ b/lib/ldplayer.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// ldplayer.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // LDPlayer API -/////////////////////////////////////////////////////////////////////// - +// var SHELL = require("lib/shell"); var SYS = require("lib/system"); diff --git a/lib/lz77.js b/lib/lz77.js index 77ac5ed..7829a59 100644 --- a/lib/lz77.js +++ b/lib/lz77.js @@ -1,6 +1,8 @@ // lz77.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs - +// function compress(input) { var compressed = ''; var searchBufferIndex = 0; @@ -67,6 +69,6 @@ exports.compress = compress; exports.decompress = decompress; exports.VERSIONINFO = "LZ77 (MsCompress) algorithm implementation version 0.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/msmq.js b/lib/msmq.js index 20dd44b..8eaeb90 100644 --- a/lib/msmq.js +++ b/lib/msmq.js @@ -1,13 +1,13 @@ -//////////////////////////////////////////////////////////////////////// -// MSMQ(Microsoft Message Queuing) API -// +// msmq.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // references: -// - https://gist.github.com/vladaman/6375841 -// - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/msmq/ms703952(v=vs.85) -// - https://docs.microsoft.com/en-us/previous-versions/windows/desktop/msmq/ms705286(v=vs.85) -// -//////////////////////////////////////////////////////////////////////// - +// https://gist.github.com/vladaman/6375841 +// https://docs.microsoft.com/en-us/previous-versions/windows/desktop/msmq/ms703952(v=vs.85) +// https://docs.microsoft.com/en-us/previous-versions/windows/desktop/msmq/ms705286(v=vs.85) +// var MSMQObject = function(queueName) { var MQ_SEND_ACCESS = 2; var MQ_DENY_NONE = 0; diff --git a/lib/msoffice.js b/lib/msoffice.js index 344c921..32fd718 100644 --- a/lib/msoffice.js +++ b/lib/msoffice.js @@ -1,6 +1,8 @@ // msoffice.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// var STD = require("lib/std"); var SYS = require("lib/system"); var FILE = require("lib/file"); @@ -222,6 +224,6 @@ exports.PowerPoint = PowerPoint; exports.Word = Word; exports.VERSIONINFO = "Microsoft Office interface (msoffice.js) version 0.2.0"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/nmap.js b/lib/nmap.js index 8ca6e6c..5fdfa60 100644 --- a/lib/nmap.js +++ b/lib/nmap.js @@ -1,7 +1,8 @@ -//////////////////////////////////////////////////////////////////////// -// NMAP interface API -//////////////////////////////////////////////////////////////////////// - +// nmap.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var client = require("lib/catproxy"); var PortScanner = function(binpath, url) { @@ -23,6 +24,6 @@ var PortScanner = function(binpath, url) { exports.PortScanner = PortScanner; exports.VERSIONINFO = "NMAP interface version 0.2"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/noxplayer.js b/lib/noxplayer.js index a1b43db..51bbe41 100644 --- a/lib/noxplayer.js +++ b/lib/noxplayer.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// noxplayer.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // NoxPlayer API -/////////////////////////////////////////////////////////////////////// - +// var SHELL = require("lib/shell"); var SYS = require("lib/system"); diff --git a/lib/ovftool.js b/lib/ovftool.js index 40f32ba..311b6f0 100644 --- a/lib/ovftool.js +++ b/lib/ovftool.js @@ -1,5 +1,6 @@ // ovftool.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // // Download OVFTool (Open Virtualization Format (OVF) Tool): @@ -66,6 +67,6 @@ exports.setCredential = setCredential; exports.create = create; exports.VERSIONINFO = "Broadcom/VMware OVF Tool interface (ovftool.js) version 0.1.2"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/pipe-ipc.js b/lib/pipe-ipc.js index 3ab55d8..3903314 100644 --- a/lib/pipe-ipc.js +++ b/lib/pipe-ipc.js @@ -1,7 +1,10 @@ // pipe-ipc.js -// Pipe based IPC implementation for WelsonJS framework -// Namhyeon Go (Catswords Research) +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// Pipe based IPC implementation for WelsonJS framework +// var STD = require("lib/std"); // https://learn.microsoft.com/en-us/office/vba/language/reference/user-interface-help/opentextfile-method @@ -553,6 +556,6 @@ exports.adSaveCreateOverWrite = adSaveCreateOverWrite; exports.adModeReadWrite = adModeReadWrite; exports.VERSIONINFO = "PIPE-based IPC Module (pipe-ipc.js) version 0.1.23"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = require; diff --git a/lib/powershell.js b/lib/powershell.js index faf2052..91cefb8 100644 --- a/lib/powershell.js +++ b/lib/powershell.js @@ -1,6 +1,10 @@ -// Powershell Interface API -// Namhyeon Go (Catswords Research) +// powershell.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// Powershell Interface API +// var SHELL = require("lib/shell"); var PowershellObject = function() { @@ -149,6 +153,6 @@ exports.execCommand = execCommand; exports.runAs = runAs; exports.VERSIONINFO = "Powershell Interface (powershell.js) version 0.1.4"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/punycode.js b/lib/punycode.js index bf3063a..8059b9c 100644 --- a/lib/punycode.js +++ b/lib/punycode.js @@ -1,8 +1,9 @@ // punycode.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // -// ***SECURITY NOTICE*** +// SECURITY NOTICE // Due to potential security issues, the Public API URL is not provided. If you need to request access, please refer to the project's contact information. // You can download the server-side script that implements this functionality from the link below: // https://github.com/gnh1201/caterpillar @@ -43,6 +44,6 @@ exports.encode = encode; exports.decode = decode; exports.VERSIONINFO = "Punycode Conversion Client (punycode.js) version 0.2.4"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/python3.js b/lib/python3.js index 4d5637d..37635c0 100644 --- a/lib/python3.js +++ b/lib/python3.js @@ -1,7 +1,10 @@ // python3.js -// Python Interface -// Namhyeon Go (Catswords Research) +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// Python Interface +// var SYS = require("lib/system"); var SHELL = require("lib/shell"); diff --git a/lib/rand.js b/lib/rand.js index 462bfc1..526f5e7 100644 --- a/lib/rand.js +++ b/lib/rand.js @@ -1,5 +1,8 @@ // rand.js - +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var FILE = require("lib/file"); function randomize() { diff --git a/lib/registry.js b/lib/registry.js index d2782a1..fce2625 100644 --- a/lib/registry.js +++ b/lib/registry.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// registry.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // Registry API -//////////////////////////////////////////////////////////////////////// - +// var SHELL = require("lib/shell"); // http://apidock.com/ruby/Win32/Registry/Constants diff --git a/lib/router.js b/lib/router.js index 0e05288..ce8e07e 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1,8 +1,10 @@ // router.js -// Content-Type based URI router for WelsonJS framework -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs -// +// +// Content-Type based URI router for WelsonJS framework +// function RouteModel(path, callback) { this.path = path; this.callback = callback; @@ -88,6 +90,6 @@ function RouterObject() { exports.Router = new RouterObject(); exports.VERSIONINFO = "Content-Type based URI router (router.js) version 0.1.2"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/sandboxie.js b/lib/sandboxie.js index 43cf0bd..1f433b8 100644 --- a/lib/sandboxie.js +++ b/lib/sandboxie.js @@ -1,3 +1,8 @@ +// sendboxie.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var SHELL = require("lib/shell"); var SandboxieObject = function() { diff --git a/lib/security.js b/lib/security.js index 3ba833b..a642afc 100644 --- a/lib/security.js +++ b/lib/security.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// security.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // Security Policy API -//////////////////////////////////////////////////////////////////////// - +// var SYS = require("lib/system"); var FILE = require("lib/file"); var REG = require("lib/registry"); @@ -85,6 +88,6 @@ exports.getAntiVirusProducts = getAntiVirusProducts; exports.OpenThreatSettings = OpenThreatSettings; exports.VERSIONINFO = "Security Policy Module (security.js) version 0.2.2"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/sendmail.js b/lib/sendmail.js index d167a56..13a4655 100644 --- a/lib/sendmail.js +++ b/lib/sendmail.js @@ -1,11 +1,10 @@ -////////////////////////////////////////////////////////////////////////////////// +// sendmail.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// +// Sendmail using either CDO or Persits.MailSender // -// sendmail.js -// -// Sendmail using either CDO or Persits.MailSender -// -///////////////////////////////////////////////////////////////////////////////// - ///////////////////////////////////////////////////////////////////////////////// // Private APIs / Utility functions ///////////////////////////////////////////////////////////////////////////////// diff --git a/lib/serp.js b/lib/serp.js index 405eea5..72ff863 100644 --- a/lib/serp.js +++ b/lib/serp.js @@ -1,7 +1,10 @@ // serp.js -// SERP/SEO tools integration for WelsonJS framework -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// SERP/SEO tools integration for WelsonJS framework +// function parseUrl(url) { var getEngine = function(url) { var defaultEngine = "google"; @@ -59,6 +62,6 @@ function parseUrl(url) { exports.parseUrl = parseUrl; exports.VERSIONINFO = "SERP/SEO tools integration (serp.js) version 0.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/shadowsocks.js b/lib/shadowsocks.js index 0dadca4..9cb7549 100644 --- a/lib/shadowsocks.js +++ b/lib/shadowsocks.js @@ -1,7 +1,8 @@ -//////////////////////////////////////////////////////////////////////// -// Shadowsocks API -//////////////////////////////////////////////////////////////////////// - +// shadowsocks.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var CONFIG = require("lib/config"); var SHELL = require("lib/shell"); diff --git a/lib/shell.js b/lib/shell.js index 1b6075b..ec541f5 100644 --- a/lib/shell.js +++ b/lib/shell.js @@ -1,6 +1,10 @@ -// Windows Shell Interface with WelsonJS Pipe-IPC module -// Namhyeon Go (Catswords Research) +// shell.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// Windows Shell Interface with WelsonJS Pipe-IPC module +// var FILE = require("lib/file"); var PipeIPC = require("lib/pipe-ipc"); @@ -255,6 +259,6 @@ exports.getPathOfMyDocuments = function() { exports.CdoCharset = PipeIPC.CdoCharset; exports.VERSIONINFO = "Windows Shell Interface (shell.js) version 0.3.18"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/std.js b/lib/std.js index 6faebd7..b44bf65 100644 --- a/lib/std.js +++ b/lib/std.js @@ -1,8 +1,10 @@ // std.js -// WelsonJS Standard Library -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs -// +// +// WelsonJS Standard Library +// // Polyfills if (!Function.prototype.GetResource) { Function.prototype.GetResource = function(ResourceName) { @@ -617,6 +619,6 @@ exports.confirm = confirm; exports.prompt = prompt; exports.VERSIONINFO = "WelsonJS Standard Library (std.js) version 0.8.17"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/strings.js b/lib/strings.js index e1bca55..adf8e07 100644 --- a/lib/strings.js +++ b/lib/strings.js @@ -1,7 +1,8 @@ -/* - * strings.js - */ - +// strings.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// function numberFormat(number, decimals, decPoint, thousandsSep) { // eslint-disable-line camelcase // discuss at: https://locutus.io/php/number_format/ // original by: Jonas Raoni Soares Silva (https://www.jsfromhell.com) diff --git a/lib/system.js b/lib/system.js index 6cbc835..37f8a0f 100644 --- a/lib/system.js +++ b/lib/system.js @@ -1,5 +1,8 @@ -// lib/system.js +// system.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// var SHELL = require("lib/shell"); var WMI = require("lib/wmi"); diff --git a/lib/task-scheduler.js b/lib/task-scheduler.js index 339cd2c..9edbe10 100644 --- a/lib/task-scheduler.js +++ b/lib/task-scheduler.js @@ -1,6 +1,8 @@ // task-scheduler.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs - +// // Connect to Task Scheduler service function connect() { var service = CreateObject("Schedule.Service"); @@ -92,6 +94,6 @@ exports.createAndRegisterTask = createAndRegisterTask; exports.test = test; exports.VERSIONINFO = "Windows Task Scheduler Scripting Interface (task-scheduler.js) version 0.1"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = require; diff --git a/lib/task.js b/lib/task.js index e88e073..30c765e 100644 --- a/lib/task.js +++ b/lib/task.js @@ -1,21 +1,23 @@ -////////////////////////////////////////////////////////////////////////////////// +// task.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // Task API (Time-sharing based `async`, `setTimeout`, `setInterval`, implementation in WSH.js) -///////////////////////////////////////////////////////////////////////////////// - -/* // example: - * // var TASK = require("lib/task"); - * // var taskQueue = TASK.createTaskQueue(); - * // TASK.putTask(queue, TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(100); }, [1, 2, 3])) - * // .then(TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(200); }, [4, 5, 6])) - * // .then(TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(300); }, [7, 8, 9])) - * // ; - * // TASK.putTask(queue, TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(100); }, [3, 2, 1]) - * // .then(TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(200); }, [6, 5, 4])) - * // .then(TASK.createTask(function(task, a, b, c) { TASK.stop(); console.log(a + b + c); sleep(300); }, [9, 8, 7])) - * // ; - * // taskQueue.run(); - */ - +// +// example: +// var TASK = require("lib/task"); +// var taskQueue = TASK.createTaskQueue(); +// TASK.putTask(queue, TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(100); }, [1, 2, 3])) +// .then(TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(200); }, [4, 5, 6])) +// .then(TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(300); }, [7, 8, 9])) +// ; +// TASK.putTask(queue, TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(100); }, [3, 2, 1]) +// .then(TASK.createTask(function(task, a, b, c) { console.log(a + b + c); sleep(200); }, [6, 5, 4])) +// .then(TASK.createTask(function(task, a, b, c) { TASK.stop(); console.log(a + b + c); sleep(300); }, [9, 8, 7])) +// ; +// taskQueue.run(); +// function Task(f, params) { this.f = f; this.params = params; diff --git a/lib/timer.js b/lib/timer.js deleted file mode 100644 index 1c6dce0..0000000 --- a/lib/timer.js +++ /dev/null @@ -1,111 +0,0 @@ -/* - Windows Scripting Host doesn't provide setTimeout and clearTimeout. - This serves as a replacement. - - To use: - - Set up all the deferred actions you like with the usual setTimeout calls - setTimeout(function() { - // do something - }, 200); - - Then call setTimeout.queue.run(). - Deferred actions can spawn more deferred actions. - If the queue ever runs dry, it will stop running and return. - Remember, javascript is single-threaded. If you put more - functions in the queue, call the run method again. -*/ - -exports.VERSIONINFO = "Timer Module (timer.js) version 0.1"; -exports.global = global; -exports.require = global.require; - -exports.sleep = function(ms, callback) { - WScript.Sleep(ms); - if(typeof(callback) == "function") { - callback(); - } -}; - -exports.setTimeout = function(func, delay) { - var when = new Date().getTime() + delay; - return exports.setTimeout.queue.add(func, when); -}; - -exports.clearTimeout = function(timer) { - exports.setTimeout.queue.del(timer); -}; - -// A queue object, with methods add, del, run. -// Tied to setTimeout to keep it out of the global namespace. - -exports.setTimeout.queue = (function() { - var store = []; - var nextid = 0; - - return { - add: function(func, when) { - store.push({ - id: nextid, - func: func, - when: when - }); - return nextid++; - }, - - del: function(id) { - for (var i = 0; i < store.length; i++) { - if (store[i].id == id) { - store.splice(i, 1); - } - } - }, - - run: function() { - while (store.length > 0) { - var now = new Date().getTime(); - for (var i = 0; i < store.length; i++) { - var item = store[i]; - - if (now > item.when) { - exports.setTimeout.queue.del(item.id); - item.func(); // <---- actually invoke the function here - - // Note: we can't continue looping through the queue here, - // because we removed one of the items. The loop limit is - // now incorrect. Easiest thing to do is restart the loop. - - break; - } - - // We burn a millisecond here to throttle the looping. - // Otherwise it will loop on the order of 200,000 times per sec. - - exports.sleep(1); - } - } - } - } -})(); - -exports.setTimeout.test = function() { - console.log('You should see: C,A,D,N,M'); - - exports.setTimeout(console.log('A'), 500); - var b = setTimeout(console.log('B'), 1220); - exports.setTimeout(console.log('C'), 300); - exports.setTimeout(console.log('D'), 1000); - clearTimeout(b); - - exports.setTimeout(function() { - console.log('N'); - exports.setTimeout(function() { - console.log('M'); - }, 100) - }, 1300); - - exports.setTimeout.queue.run(); - console.log('done'); -}; - -///// setTimeout.test(); // uncomment to run test diff --git a/lib/toolkit.js b/lib/toolkit.js index b8473b4..662fbfb 100644 --- a/lib/toolkit.js +++ b/lib/toolkit.js @@ -1,8 +1,10 @@ // toolkit.js -// WelsonJS native toolkit interface version 0.3.7 -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs - +// +// WelsonJS native toolkit interface version 0.3.7 +// function ToolkitObject() { this._interface = null; @@ -120,6 +122,6 @@ exports.encryptStringHIGHT = encryptString; exports.decryptStringHIGHT = decryptString; exports.VERSIONINFO = "WelsonJS native toolkit interface version 0.3.7"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/totp.js b/lib/totp.js index 29aaee8..884864c 100644 --- a/lib/totp.js +++ b/lib/totp.js @@ -1,9 +1,9 @@ // totp.js -// TOTP library for WelsonJS framework -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // -// ***SECURITY NOTICE*** +// SECURITY NOTICE // Due to potential security issues, the Public API URL is not provided. If you need to request access, please refer to the project's contact information. // You can download the server-side script that implements this functionality from the link below: // https://github.com/gnh1201/caterpillar @@ -44,7 +44,7 @@ exports.getPubKey = getPubKey; exports.getOtp = getOtp; exports.VERSIONINFO = "TOTP Client (totp.js) version 0.1.8"; -exports.AUTHOR = "abuse@catswords.net"; +exports.AUTHOR = "gnh1201@catswords.re.kr"; exports.global = global; exports.require = global.require; diff --git a/lib/tun2socks.js b/lib/tun2socks.js index 0f875a4..c8648a9 100644 --- a/lib/tun2socks.js +++ b/lib/tun2socks.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// tun2sock.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // TUN2SOCKS API -//////////////////////////////////////////////////////////////////////// - +// var SHELL = require("lib/shell"); var SYS = require("lib/system"); diff --git a/lib/uri.js b/lib/uri.js index 1f67c80..f6e73c9 100644 --- a/lib/uri.js +++ b/lib/uri.js @@ -1,9 +1,8 @@ -////////////////////////////////////////////////////////////////////////////////// -// -// uri.js -// -///////////////////////////////////////////////////////////////////////////////// - +// uri.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// ///////////////////////////////////////////////////////////////////////////////// // Private APIs / Utility functions ///////////////////////////////////////////////////////////////////////////////// diff --git a/lib/vbscript.js b/lib/vbscript.js index 8d4a6e0..73f994d 100644 --- a/lib/vbscript.js +++ b/lib/vbscript.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// vbscript.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // VBScript API -/////////////////////////////////////////////////////////////////////// - +// var SHELL = require("lib/shell"); exports.VERSIONINFO = "VBScript (vbscript.js) version 0.1"; diff --git a/lib/virtualinput.js b/lib/virtualinput.js index 476c885..a1d9437 100644 --- a/lib/virtualinput.js +++ b/lib/virtualinput.js @@ -1,7 +1,10 @@ -////////////////////////////////////////////////////////////////////////////////// +// virtualinput.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // VirtualInput API -///////////////////////////////////////////////////////////////////////////////// - +// var VirtualInputObject = function() { this.oShell = null; this.oAutoIt = null; diff --git a/lib/wamr.js b/lib/wamr.js index d11bb83..83d2573 100644 --- a/lib/wamr.js +++ b/lib/wamr.js @@ -1,7 +1,11 @@ -// WAMR for WelsonJS -// - WAMR: https://github.com/bytecodealliance/wasm-micro-runtime -// - WelsonJS: https://github.com/gnh1201/welsonjs - +// wamr.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// +// WAMR(WebAssembly Micro Runtime) integration for WelsonJS framework +// https://github.com/bytecodealliance/wasm-micro-runtime +// var SHELL = require("lib/shell"); var WAMRObject = function() { diff --git a/lib/websocket.js b/lib/websocket.js index 599f15e..62ac48c 100644 --- a/lib/websocket.js +++ b/lib/websocket.js @@ -1,10 +1,11 @@ -// Websocket API for WelsonJS framework -// Namhyeon Go +// websocket.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs // // references: -// - https://stackoverflow.com/questions/52783655/use-curl-with-chrome-remote-debugging -// - https://github.com/vi/websocat +// https://stackoverflow.com/questions/52783655/use-curl-with-chrome-remote-debugging +// https://github.com/vi/websocat // var SHELL = require("lib/shell"); var SYS = require("lib/system"); diff --git a/lib/winlibs.js b/lib/winlibs.js index e15cefa..f04d380 100644 --- a/lib/winlibs.js +++ b/lib/winlibs.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// winlibs.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // Windows Library API -//////////////////////////////////////////////////////////////////////// - +// var SHELL = require("lib/shell"); var FILE = require("lib/file"); diff --git a/lib/winservice.js b/lib/winservice.js index cff7960..a64dcef 100644 --- a/lib/winservice.js +++ b/lib/winservice.js @@ -1,35 +1,122 @@ -////////////////////////////////////////////////////////////////////////////////// -// VirtualInput API -///////////////////////////////////////////////////////////////////////////////// +// winservice.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// +// Windows Service API +// +var SHELL = require("lib/shell"); -var VirtualInputObject = function() { - this.oShell = null; - this.oAutoIt = null; - - this.create = function() { - try { - this.oShell = CreateObject("WScript.Shell"); - this.oAutoIt = CreateObject("AutoItX.Control"); - } catch (e) { - console.error("VirtualInputObject.create() -> " + e.message); - } - }; - - this.moveMouse = function(x, y) { - this.oAutoIt.MouseMove(x, y); - }; - - this.sendKeys = function(s) { - this.oShell.SendKeys(s); - }; - - this.create(); -}; - -exports.VERSIONINFO = "VirtualInput Lib (virtualinput.js) version 0.1"; +exports.VERSIONINFO = "Windows Service Lib (service.js) version 0.1"; exports.global = global; exports.require = global.require; -exports.create = function() { - return new VirtualInputObject(); +// https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/dd228922(v=ws.11) +exports.queryService = function(name, options) { + var cmd = [ + "sc", + "query", + name + ], + _options = { + type: [ + "service", // type= {driver | service | all} + "own" // type= {own | share | interact | kernel | filesys | rec | adapt} + ], + state: "active", // state= {active | inactive | all} + bufsize: "1024", // bufsize= + ri: "0", // ri= + group: "" // group= + }; + + for (var k in _options) { + if (k in options) { + _options[k] = options[k]; + } + + if (_options[k] !== false) { + if (Array.isArray(_options[k])) { + for (var i in options[k]) { + cmd.push(k + '='); + cmd.push(_options[k][i]); + } + } else { + cmd.push(k + '='); + cmd.push(_options[k]); + } + } + } + + return SHELL.exec(cmd); }; + +// https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/sc-create +exports.createService = function(name, options) { + var cmd = [ + "sc", + "create", + name + ], + _options = { + type: "share", // type= {own | share | kernel | filesys | rec | interact type= {own | share}} + start: "demand", // start= {boot | system | auto | demand | disabled | delayed-auto } + error: "normal", // error= {normal | severe | critical | ignore} + binPath: false, // binpath= + group: false, // group= + tag: false, // tag= {yes | no} + depend: false, // depend= + obj: false, // obj= { | } + DisplayName: false, // displayname= + password: false // password= + }; + + for (var k in _options) { + if (k in options) { + _options[k] = options[k]; + } + + if (_options[k] !== false) { + if (Array.isArray(_options[k])) { + for (var i in options[k]) { + cmd.push(k + '='); + cmd.push(_options[k][i]); + } + } else { + cmd.push(k + '='); + cmd.push(_options[k]); + } + } + } + + return SHELL.exec(cmd); +}; + +exports.startService = function(name, args) { + var cmd = [ + "sc", + "start", + name + ]; + + if (typeof(args) !== "undefined") { + cmd = cmd.concat(args); + } + + return SHELL.exec(cmd); +}; + +exports.stopService = function(name) { + return SHELL.exec([ + "sc", + "stop", + name + ]); +}; + +exports.deleteService = function(name) { + return SHELL.exec([ + "sc", + "delete", + name + ]); +}; \ No newline at end of file diff --git a/lib/wintap.js b/lib/wintap.js index 558516b..0b3d1b3 100644 --- a/lib/wintap.js +++ b/lib/wintap.js @@ -1,7 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// wintap.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // WindowsTAP API -//////////////////////////////////////////////////////////////////////// - +// var SHELL = require("lib/shell"); var SYS = require("lib/system"); var FILE = require("lib/file"); diff --git a/lib/wmi.js b/lib/wmi.js index b8e8f0f..405e85a 100644 --- a/lib/wmi.js +++ b/lib/wmi.js @@ -1,7 +1,10 @@ // wmi.js -// WMI(Windows Management Instrumentation) API interface for WelsonJS framework -// Namhyeon Go (Catswords Research) +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// +// WMI(Windows Management Instrumentation) API interface for WelsonJS framework +// var WMIQueryObject = function() { var wbemFlagReturnImmediately = 0x10; var wbemFlagForwardOnly = 0x20; diff --git a/lib/xml.js b/lib/xml.js index 585902e..e7a8d83 100644 --- a/lib/xml.js +++ b/lib/xml.js @@ -1,6 +1,10 @@ -//////////////////////////////////////////////////////////////////////// +// xml.js +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// // XML interface -//////////////////////////////////////////////////////////////////////// +// var FILE = require("lib/file"); var PipeIPC = require("lib/pipe-ipc"); diff --git a/officeloader.js b/officeloader.js index 73b661d..7ce5838 100644 --- a/officeloader.js +++ b/officeloader.js @@ -1,6 +1,8 @@ // officeloader.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// var SYS = require("lib/system"); var Office = require("lib/msoffice"); var ChatGPT = require("lib/chatgpt"); diff --git a/setup.iss b/setup.iss index df9f7d4..3469c46 100644 --- a/setup.iss +++ b/setup.iss @@ -1,6 +1,6 @@ ; @created_on 2020-06-26 ; @updated_on 2025-03-21 -; @author Namhyeon Go (Catswords Research) +; @author Namhyeon Go [Setup] AppName=WelsonJS diff --git a/shoutcut.js b/shoutcut.js index 83904fa..e826c65 100644 --- a/shoutcut.js +++ b/shoutcut.js @@ -1,6 +1,8 @@ // shoutcut.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs +// var SHELL = require("lib/shell"); var SYS = require("lib/system"); diff --git a/testloader.js b/testloader.js index 21bcbaa..572c2a7 100644 --- a/testloader.js +++ b/testloader.js @@ -1,7 +1,8 @@ // testloader.js -// Namhyeon Go +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later // https://github.com/gnh1201/welsonjs - +// // load libraries var FILE = require("lib/file"); diff --git a/uriloader.js b/uriloader.js index bd6b9b1..127528e 100644 --- a/uriloader.js +++ b/uriloader.js @@ -1,7 +1,8 @@ // uriloader.js -// URI scheme loader for WelsonJS framework -// Namhyeon Go -// https;//github.com/gnh1201/welsonjs +// Copyright 2019-2025, Namhyeon Go and the WelsonJS contributors. +// SPDX-License-Identifier: GPL-3.0-or-later +// https://github.com/gnh1201/welsonjs +// var SYS = require("lib/system"); var SHELL = require("lib/shell"); var URI = require("lib/uri");