!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/var/www/html/node-red/packages/node_modules/@node-red/editor-client/src/ace/mode/   drwxr-xr-x
Free 13.04 GB of 57.97 GB (22.5%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     nrjavascript_worker.js (8.74 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* ***** BEGIN LICENSE BLOCK *****
 * Distributed under the BSD license:
 *
 * Copyright (c) 2010, Ajax.org B.V.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of Ajax.org B.V. nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ***** END LICENSE BLOCK ***** */

define(function(require, exports, module) {
"use strict";

var oop = require("../lib/oop");
var Mirror = require("../worker/mirror").Mirror;
var lint = require("./javascript/jshint").JSHINT;

function startRegex(arr) {
    return RegExp("^(" + arr.join("|") + ")");
}

var disabledWarningsRe = startRegex([
    "Bad for in variable '(.+)'.",
    'Missing "use strict"'
]);
var errorsRe = startRegex([
    "Unexpected",
    "Expected ",
    "Confusing (plus|minus)",
    "\\{a\\} unterminated regular expression",
    "Unclosed ",
    "Unmatched ",
    "Unbegun comment",
    "Bad invocation",
    "Missing space after",
    "Missing operator at"
]);
var infoRe = startRegex([
    "Expected an assignment",
    "Bad escapement of EOL",
    "Unexpected comma",
    "Unexpected space",
    "Missing radix parameter.",
    "A leading decimal point can",
    "\\['{a}'\\] is better written in dot notation.",
    "'{a}' used out of scope"
]);

var NRJavaScriptWorker = exports.NRJavaScriptWorker = function(sender) {
    Mirror.call(this, sender);
    this.setTimeout(500);
    this.setOptions();
};

oop.inherits(NRJavaScriptWorker, Mirror);

(function() {
    this.setOptions = function(options) {
        this.options = {
            // undef: true,
            // unused: true,
            esversion: 9,
            devel: true,
            browser: false,
            node: true,
            laxcomma: true,
            laxbreak: true,
            lastsemic: true,
            onevar: false,
            passfail: false,
            maxerr: 100,
            expr: true,
            multistr: true,
            strict: false,
            sub: true,
            asi: true
        };
        if (options) {
            for (var opt in options) {
                if (options.hasOwnProperty(opt)) {
                    this.options[opt] = options.opt;
                }
            }
        }
        this.doc.getValue() && this.deferredUpdate.schedule(100);
    };

    this.changeOptions = function(newOptions) {
        oop.mixin(this.options, newOptions);
        this.doc.getValue() && this.deferredUpdate.schedule(100);
    };

    this.isValidJS = function(str) {
        try {
            // evaluated code can only create variables in this function
            eval("throw 0;" + str);
        } catch(e) {
            if (e === 0)
                return true;
        }
        return false;
    };

    this.onUpdate = function() {
        var value = this.doc.getValue();
        value = value.replace(/^#!.*\n/, "\n");
        if (!value)
            return this.sender.emit("annotate", []);

        var originalValue = value;

        // [Node-RED] wrap the code in a function
        value = "async function __nodered__(msg) {\n"+value+"\n}";

        var errors = [];
        // jshint reports many false errors
        // report them as error only if code is actually invalid
        var maxErrorLevel = this.isValidJS(value) ? "warning" : "error";

        // var start = new Date();
        lint(value, this.options, this.options.globals);
        var results = lint.errors;

        var errorAdded = false;
        for (var i = 0; i < results.length; i++) {
            var error = results[i];
            if (!error)
                continue;
            var raw = error.raw;
            var type = "warning";
            var line = error.line - 2;

            if (raw == "Missing semicolon.") {
                var str = error.evidence.substr(error.character);
                str = str.charAt(str.search(/\S/));
                if (maxErrorLevel == "error" && str && /[\w\d{(['"]/.test(str)) {
                    error.reason = 'Missing ";" before statement';
                    type = "error";
                } else {
                    type = "info";
                }
            }
            else if (disabledWarningsRe.test(raw)) {
                continue;
            }
            else if (infoRe.test(raw)) {
                type = "info";
            }
            else if (errorsRe.test(raw)) {
                errorAdded  = true;
                type = maxErrorLevel;
            }
            else if (raw == "'{a}' is not defined.") {
                type = "warning";
            }
            else if (raw == "'{a}' is defined but never used.") {
                type = "info";
            }

            if (raw === "Unmatched '{a}'." && line === -1) {
                // This is an unmatched { error. It has incorrectly matched it
                // against the { in the added line. Need to find the next valid {
                // This code scans through the original code looking for the first '{'
                // that is not in a comment or string.
                // It will incorrectly find a '{' if it is inside a regex... but
                // at least the error will be shown somwhere. There are only
                // so many hours in the day to fix every tiny edge case of an
                // edge case.
                var inSingleComment = false;
                var inMultiComment = false;
                var inString = false;
                var stringQ;
                var lineNumber = 0;
                for (var pos = 0;pos<originalValue.length;pos++) {
                    var c = originalValue[pos];
                    if (c === "\\") {
                        pos++;
                    } else if (inSingleComment) {
                        if (c === "\n") {
                            lineNumber++;
                            inSingleComment = false;
                        }
                    } else if (inMultiComment) {
                        if (c === "*" && originalValue[pos+1] === "/") {
                            pos++;
                            inMultiComment = false;
                        } else if (c === "\n") {
                            lineNumber++;
                        }
                    } else if (inString) {
                        if (c === stringQ) {
                            inString = false;
                        }
                    } else if (c === "'" || c === "\"") {
                        inString = true;
                        stringQ = c;
                    } else if (c === "/") {
                        if (originalValue[pos+1] === "/") {
                            inSingleComment = true;
                        } else if (originalValue[pos+1] === "*") {
                            inMultiComment = true;
                        }
                    } else if (c === "\n") {
                        lineNumber++;
                    } else if (c === "{") {
                        // found it!
                        break;
                    }
                }
                line = lineNumber;
            }

            errors.push({
                // [Node-RED] offset the row for the added line
                row: Math.max(0,line),
                column: error.character-1,
                text: error.reason,
                type: type,
                raw: raw
            });

            if (errorAdded) {
               // break;
            }
        }
        // console.log("lint time: " + (new Date() - start));

        this.sender.emit("annotate", errors);
    };

}).call(NRJavaScriptWorker.prototype);

});

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0051 ]--