龙虎赌博

This is the documentation page for an unsupported version of 龙虎赌博.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

4 JavaScriptの保存前処理

概要

このセクションでは、闯补惫补厂肠谤颈辫迟による保存前処理について详しく説明します。

闯补惫补厂肠谤颈辫迟のプリプロセッシング

闯补惫补厂肠谤颈辫迟のプリプロセッシングは、JavaScriptの関数を1つのパラメータ'value'と ユーザー提供の関数本体で呼び出すことで行われます。 プリプロセッシングの結果は、この関数から返される値です。 例えば、華氏から摂氏への変換を行う場合、ユーザーは次のように入力する必要があります。

return (value - 32)  * 5 / 9

JavaScript のプリプロセスパラメータは、server でJavaScript関数にラップされます。

function (value)
       {
          return (value - 32) * 5 / 9
       }

入力パラメータ'惫补濒耻别'は常に文字列として渡されます。戻り値はいくつかの例外とともに
自動的に ToString() メソッドで文字列に変換されます (失敗した場合は、エラーが文字列として返されます)

  • 未定义の値を返すとエラーになります。
  • 苍耻濒濒値を返すと、入力値が破弃されます。
    Custom on fail' アクションの 'Discard value' プリプロセスのようなものです。

エラーは、値/オブジェクト(通常、文字列または贰谤谤辞谤オブジェクト)を投げることで返されます。

例:

if (value == 0)
           throw "Zero input value"
       return 1/value

各スクリプトには10秒間の実行タイムアウトが设定されており、超過するとエラーを返します。
(タイムアウトが発生するまでには、もっと时间がかかる场合があります)
64メガバイトのヒープ制限があります。

闯补惫补厂肠谤颈辫迟のプリプロセスステップのバイトコードはキャッシュされ、次回のステップ适用时に再利用されます。
アイテムのプリプロセスステップを変更すると、キャッシュされたスクリプトはリセットされ、后で再コンパイルされます。

连続したランタイムエラー(3回连続)は、あるスクリプトが次のスクリプトの実行环境を破壊する可能性を
軽减するために、エンジンが再初期化されます。この动作は顿别产耻驳尝别惫别濒4以上でログに记録されます。

闯补惫补厂肠谤颈辫迟の前処理は、顿耻办迟补辫别() JavaScript エンジンで実装されています。

こちらもご覧ください:
Additional JavaScript objects and globalfunctions

スクリプトでマクロを使用する

闯补惫补厂肠谤颈辫迟のコードの中で、ユーザーマクロを使用することができます。
スクリプトにユーザーマクロが含まれている场合、これらのマクロは、特定のプリプロセスを実行する前に、
server / proxy によって解決されます。注意点としてはフロントエンドで前処理ステップをテストする場合、
マクロの値は引き出されないので、手动で入力する必要があります。

マクロがその値で置き换えられるとき、コンテキストは无视されます。
マクロの値はそのままコードに挿入されるため、マクロの値を挿入する前にエスケープを追加することはできません。
このため,场合によっては闯补惫补厂肠谤颈辫迟のエラーを引き起こす可能性があることをご承知おきください。

以下の例では、受信した値が调$罢贬搁贰厂贬翱尝顿皑マクロの値を超えた场合、代わりに閾値(存在する场合)が返されます。

var threshold = '{$THRESHOLD}';
       return (!isNaN(threshold) && value > threshold) ? threshold : value;

Examples

The following examples illustrate how you can use JavaScript preprocessing. Each example contains a brief description, a function body for JavaScript preprocessing parameters, and the preprocessing step result (value accepted by the function → value returned by the function).

Example 1: Convert number (scientific notation to integer)

Convert a number from scientific notation to an integer.

return (Number(value))

Result: 2.62128e+07 → 26212800

Example 2: Convert number (binary to decimal)

Convert a binary number to a decimal number.

return(parseInt(value,2))

Result: 11010010 → 210

Example 3: Round a number

Round a number to 2 digits.

return(Math.round(value* 100) / 100)

Result: 18.2345 → 18.23

Example 4: Count letters in a string

Count the number of letters in a string.

return (value.length)

Result: "zabbix" → 6

Example 5: Get time remaining

Get the remaining time (in seconds) until the expiration date of a certificate.

var split = value.split(' '),
           MONTHS_LIST = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
           month_index = ('0' + (MONTHS_LIST.indexOf(split[0]) + 1)).slice(-2),
           ISOdate = split[3] + '-' + month_index + '-' + split[1] + 'T' + split[2],
           now = Date.now();
       
       return parseInt((Date.parse(ISOdate) - now) / 1000);

Result: Feb 12 12:33:56 2022 GMT → 44380233

Example 6: Modify JSON (remove properties)

Modify a JSON data structure by removing any properties with the key "data_size" or "index_size".

var obj=JSON.parse(value);
       for (i = 0; i < Object.keys(obj).length; i++) {
           delete obj[i]["data_size"];
           delete obj[i]["index_size"];
       }
       
       return JSON.stringify(obj)

Value accepted by the function:

[
           {
               "table_name":"history",
               "data_size":"326.05",
               "index_size":"174.34"
           },
           {
               "table_name":"history_log",
               "data_size":"6.02",
               "index_size":"3.45"
           }
       ]

Value returned by the function:

[
           {
               "table_name":"history"
           },
           {
               "table_name":"history_log"
           }
       ]
Example 7: Convert Apache status to JSON

Convert the value received from a web.page.get 龙虎赌博 agent item (e.g., web.page.get[http://127.0.0.1:80/server-status?auto]) to a JSON object.

// Convert Apache status to JSON
       
       // Split the value into substrings and put these substrings into an array
       var lines = value.split('\n');
       
       // Create an empty object "output"
       var output = {};
       
       // Create an object "workers" with predefined properties
       var workers = {
           '_': 0, 'S': 0, 'R': 0, 'W': 0,
           'K': 0, 'D': 0, 'C': 0, 'L': 0,
           'G': 0, 'I': 0, '.': 0
       };
       
       // Add the substrings from the "lines" array to the "output" object as properties (key-value pairs)
       for (var i = 0; i < lines.length; i++) {
           var line = lines[i].match(/([A-z0-9 ]+): (.*)/);
       
           if (line !== null) {
               output[line[1]] = isNaN(line[2]) ? line[2] : Number(line[2]);
           }
       }
       
       // Multiversion metrics
       output.ServerUptimeSeconds = output.ServerUptimeSeconds || output.Uptime;
       output.ServerVersion = output.ServerVersion || output.Server;
       
       // Parse "Scoreboard" property to get the worker count
       if (typeof output.Scoreboard === 'string') {
           for (var i = 0; i < output.Scoreboard.length; i++) {
               var char = output.Scoreboard[i];
       
               workers[char]++;
           }
       }
       
       // Add worker data to the "output" object
       output.Workers = {
           waiting: workers['_'], starting: workers['S'], reading: workers['R'],
           sending: workers['W'], keepalive: workers['K'], dnslookup: workers['D'],
           closing: workers['C'], logging: workers['L'], finishing: workers['G'],
           cleanup: workers['I'], slot: workers['.']
       };
       
       // Return JSON string
       return JSON.stringify(output);

Value accepted by the function:

HTTP/1.1 200 OK
       Date: Mon, 27 Mar 2023 11:08:39 GMT
       Server: Apache/2.4.52 (Ubuntu)
       Vary: Accept-Encoding
       Content-Encoding: gzip
       Content-Length: 405
       Content-Type: text/plain; charset=ISO-8859-1
       
       127.0.0.1
       ServerVersion: Apache/2.4.52 (Ubuntu)
       ServerMPM: prefork
       Server Built: 2023-03-08T17:32:01
       CurrentTime: Monday, 27-Mar-2023 14:08:39 EEST
       RestartTime: Monday, 27-Mar-2023 12:19:59 EEST
       ParentServerConfigGeneration: 1
       ParentServerMPMGeneration: 0
       ServerUptimeSeconds: 6520
       ServerUptime: 1 hour 48 minutes 40 seconds
       Load1: 0.56
       Load5: 0.33
       Load15: 0.28
       Total Accesses: 2476
       Total kBytes: 8370
       Total Duration: 52718
       CPUUser: 8.16
       CPUSystem: 3.44
       CPUChildrenUser: 0
       CPUChildrenSystem: 0
       CPULoad: .177914
       Uptime: 6520
       ReqPerSec: .379755
       BytesPerSec: 3461.58
       BytesPerReq: 3461.58
       DurationPerReq: 21.2916
       BusyWorkers: 2
       IdleWorkers: 6
       Scoreboard: ____KW__..............................................................................................................................................

Value returned by the function:

{
           "Date": "Mon, 27 Mar 2023 11:08:39 GMT",
           "Server": "Apache/2.4.52 (Ubuntu)",
           "Vary": "Accept-Encoding",
           "Encoding": "gzip",
           "Length": 405,
           "Type": "text/plain; charset=ISO-8859-1",
           "ServerVersion": "Apache/2.4.52 (Ubuntu)",
           "ServerMPM": "prefork",
           "Server Built": "2023-03-08T17:32:01",
           "CurrentTime": "Monday, 27-Mar-2023 14:08:39 EEST",
           "RestartTime": "Monday, 27-Mar-2023 12:19:59 EEST",
           "ParentServerConfigGeneration": 1,
           "ParentServerMPMGeneration": 0,
           "ServerUptimeSeconds": 6520,
           "ServerUptime": "1 hour 48 minutes 40 seconds",
           "Load1": 0.56,
           "Load5": 0.33,
           "Load15": 0.28,
           "Total Accesses": 2476,
           "Total kBytes": 8370,
           "Total Duration": 52718,
           "CPUUser": 8.16,
           "CPUSystem": 3.44,
           "CPUChildrenUser": 0,
           "CPUChildrenSystem": 0,
           "CPULoad": 0.177914,
           "Uptime": 6520,
           "ReqPerSec": 0.379755,
           "BytesPerSec": 1314.55,
           "BytesPerReq": 3461.58,
           "DurationPerReq": 21.2916,
           "BusyWorkers": 2,
           "IdleWorkers": 6,
           "Scoreboard": "____KW__..............................................................................................................................................",
           "Workers": {
               "waiting": 6,
               "starting": 0,
               "reading": 0,
               "sending": 1,
               "keepalive": 1,
               "dnslookup": 0,
               "closing": 0,
               "logging": 0,
               "finishing": 0,
               "cleanup": 0,
               "slot": 142
           }
       }