Linux v69820.1blu.de 4.15.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64
Apache/2.4.58
Server IP : 195.90.215.149 & Your IP : 216.73.216.250
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
include /
nodejs /
src /
Delete
Unzip
Name
Size
Permission
Date
Action
crypto
[ DIR ]
drwxr-xr-x
2024-07-10 10:55
permission
[ DIR ]
drwxr-xr-x
2024-07-10 10:55
tracing
[ DIR ]
drwxr-xr-x
2024-07-10 10:55
acorn_version.h
209
B
-rw-r--r--
2024-04-18 19:08
aliased_buffer-inl.h
7.44
KB
-rw-r--r--
2024-02-13 21:40
aliased_buffer.h
6.05
KB
-rw-r--r--
2024-02-13 21:40
aliased_struct-inl.h
1.32
KB
-rw-r--r--
2024-02-13 21:40
aliased_struct.h
1.44
KB
-rw-r--r--
2024-02-13 21:40
async_wrap-inl.h
2.68
KB
-rw-r--r--
2024-02-13 21:40
async_wrap.h
11.32
KB
-rw-r--r--
2024-02-13 21:40
base64-inl.h
5.76
KB
-rw-r--r--
2024-02-13 21:40
base64.h
1.43
KB
-rw-r--r--
2024-02-13 21:40
base64_version.h
227
B
-rw-r--r--
2024-02-13 21:40
base_object-inl.h
8.94
KB
-rw-r--r--
2024-02-13 21:40
base_object.h
13.3
KB
-rw-r--r--
2024-02-13 21:40
base_object_types.h
3.28
KB
-rw-r--r--
2024-02-13 21:40
blob_serializer_deserializer-inl.h
10.54
KB
-rw-r--r--
2024-02-13 21:40
blob_serializer_deserializer.h
3.56
KB
-rw-r--r--
2024-02-13 21:40
callback_queue-inl.h
2.59
KB
-rw-r--r--
2024-02-13 21:40
callback_queue.h
1.96
KB
-rw-r--r--
2024-02-13 21:40
cares_wrap.h
14.37
KB
-rw-r--r--
2024-04-18 19:08
cjs_module_lexer_version.h
277
B
-rw-r--r--
2024-04-18 19:08
cleanup_queue-inl.h
1.58
KB
-rw-r--r--
2024-02-13 21:40
cleanup_queue.h
2.19
KB
-rw-r--r--
2024-02-13 21:40
connect_wrap.h
584
B
-rw-r--r--
2024-02-13 21:40
connection_wrap.h
686
B
-rw-r--r--
2024-02-13 21:40
debug_utils-inl.h
7.42
KB
-rw-r--r--
2024-02-13 21:40
debug_utils.h
6.77
KB
-rw-r--r--
2024-02-13 21:40
diagnosticfilename-inl.h
768
B
-rw-r--r--
2024-02-13 21:40
env-inl.h
25.59
KB
-rw-r--r--
2024-02-13 21:40
env.h
38.85
KB
-rw-r--r--
2024-02-13 21:40
env_properties.h
33.32
KB
-rw-r--r--
2024-02-13 21:40
handle_wrap.h
4.16
KB
-rw-r--r--
2024-02-13 21:40
histogram-inl.h
2.39
KB
-rw-r--r--
2024-02-13 21:40
histogram.h
7.89
KB
-rw-r--r--
2024-02-13 21:40
inspector_agent.h
4.69
KB
-rw-r--r--
2024-02-13 21:40
inspector_io.h
2.19
KB
-rw-r--r--
2024-02-13 21:40
inspector_profiler.h
4.53
KB
-rw-r--r--
2024-02-13 21:40
inspector_socket.h
1.53
KB
-rw-r--r--
2024-02-13 21:40
inspector_socket_server.h
3.5
KB
-rw-r--r--
2024-02-13 21:40
js_native_api.h
31.22
KB
-rw-r--r--
2024-02-13 21:40
js_native_api_types.h
4.44
KB
-rw-r--r--
2024-02-13 21:40
js_native_api_v8.h
16.83
KB
-rw-r--r--
2024-02-13 21:40
js_native_api_v8_internals.h
1.56
KB
-rw-r--r--
2024-02-13 21:40
js_stream.h
1.35
KB
-rw-r--r--
2024-02-13 21:40
json_utils.h
3.8
KB
-rw-r--r--
2024-02-13 21:40
memory_tracker-inl.h
12.01
KB
-rw-r--r--
2024-02-13 21:40
memory_tracker.h
11.55
KB
-rw-r--r--
2024-02-13 21:40
module_wrap.h
3.72
KB
-rw-r--r--
2024-02-13 21:40
node.h
56.44
KB
-rw-r--r--
2024-02-13 21:40
node_api.h
9.96
KB
-rw-r--r--
2024-02-13 21:40
node_api_internals.h
1.24
KB
-rw-r--r--
2024-02-13 21:40
node_api_types.h
1.57
KB
-rw-r--r--
2024-02-13 21:40
node_binding.h
4.19
KB
-rw-r--r--
2024-02-13 21:40
node_blob.h
5.04
KB
-rw-r--r--
2024-02-13 21:40
node_bob-inl.h
657
B
-rw-r--r--
2024-02-13 21:40
node_bob.h
2.82
KB
-rw-r--r--
2024-02-13 21:40
node_buffer.h
3.6
KB
-rw-r--r--
2024-02-13 21:40
node_builtins.h
5.63
KB
-rw-r--r--
2024-02-13 21:40
node_constants.h
3.67
KB
-rw-r--r--
2024-02-13 21:40
node_context_data.h
2.94
KB
-rw-r--r--
2024-02-13 21:40
node_contextify.h
7.63
KB
-rw-r--r--
2024-02-13 21:40
node_crypto.h
2.27
KB
-rw-r--r--
2024-02-13 21:40
node_dir.h
1.31
KB
-rw-r--r--
2024-02-13 21:40
node_dtrace.h
2.89
KB
-rw-r--r--
2024-02-13 21:40
node_errors.h
16.86
KB
-rw-r--r--
2024-02-13 21:40
node_external_reference.h
7.86
KB
-rw-r--r--
2024-02-13 21:40
node_file-inl.h
12.45
KB
-rw-r--r--
2024-02-13 21:40
node_file.h
14.7
KB
-rw-r--r--
2024-02-13 21:40
node_http2.h
38.61
KB
-rw-r--r--
2024-02-13 21:40
node_http2_state.h
4.76
KB
-rw-r--r--
2024-02-13 21:40
node_http_common-inl.h
5.46
KB
-rw-r--r--
2024-02-13 21:40
node_http_common.h
24.56
KB
-rw-r--r--
2024-02-13 21:40
node_i18n.h
4.34
KB
-rw-r--r--
2024-02-13 21:40
node_internals.h
15.03
KB
-rw-r--r--
2024-02-13 21:40
node_main_instance.h
2.96
KB
-rw-r--r--
2024-02-13 21:40
node_mem-inl.h
3.6
KB
-rw-r--r--
2024-02-13 21:40
node_mem.h
1.27
KB
-rw-r--r--
2024-02-13 21:40
node_messaging.h
14.3
KB
-rw-r--r--
2024-02-13 21:40
node_metadata.h
4.37
KB
-rw-r--r--
2024-02-13 21:40
node_mutex.h
7.78
KB
-rw-r--r--
2024-02-13 21:40
node_object_wrap.h
3.78
KB
-rw-r--r--
2024-02-13 21:40
node_options-inl.h
15.86
KB
-rw-r--r--
2024-02-13 21:40
node_options.h
17.57
KB
-rw-r--r--
2024-02-13 21:40
node_perf.h
4.76
KB
-rw-r--r--
2024-02-13 21:40
node_perf_common.h
2.88
KB
-rw-r--r--
2024-02-13 21:40
node_platform.h
6.19
KB
-rw-r--r--
2024-02-13 21:40
node_process-inl.h
737
B
-rw-r--r--
2024-02-13 21:40
node_process.h
3.36
KB
-rw-r--r--
2024-02-13 21:40
node_realm-inl.h
4.59
KB
-rw-r--r--
2024-02-13 21:40
node_realm.h
5.38
KB
-rw-r--r--
2024-02-13 21:40
node_report.h
994
B
-rw-r--r--
2024-02-13 21:40
node_revert.h
2.09
KB
-rw-r--r--
2024-02-13 21:40
node_root_certs.h
231.49
KB
-rw-r--r--
2024-02-13 21:40
node_sea.h
517
B
-rw-r--r--
2024-02-13 21:40
node_shadow_realm.h
449
B
-rw-r--r--
2024-02-13 21:40
node_snapshot_builder.h
1.21
KB
-rw-r--r--
2024-02-13 21:40
node_snapshotable.h
4.82
KB
-rw-r--r--
2024-02-13 21:40
node_sockaddr-inl.h
7.28
KB
-rw-r--r--
2024-02-13 21:40
node_sockaddr.h
12.91
KB
-rw-r--r--
2024-02-13 21:40
node_stat_watcher.h
2.36
KB
-rw-r--r--
2024-02-13 21:40
node_threadsafe_cow-inl.h
1.28
KB
-rw-r--r--
2024-02-13 21:40
node_threadsafe_cow.h
2.78
KB
-rw-r--r--
2024-02-13 21:40
node_union_bytes.h
1.66
KB
-rw-r--r--
2024-02-13 21:40
node_url.h
2.13
KB
-rw-r--r--
2024-02-13 21:40
node_util.h
1.39
KB
-rw-r--r--
2024-02-13 21:40
node_v8.h
1.67
KB
-rw-r--r--
2024-02-13 21:40
node_v8_platform-inl.h
6.63
KB
-rw-r--r--
2024-02-13 21:40
node_version.h
3.85
KB
-rw-r--r--
2024-04-18 19:08
node_wasi.h
5.21
KB
-rw-r--r--
2024-02-13 21:40
node_wasm_web_api.h
1.78
KB
-rw-r--r--
2024-02-13 21:40
node_watchdog.h
4.32
KB
-rw-r--r--
2024-02-13 21:40
node_win32_etw_provider-inl.h
11.53
KB
-rw-r--r--
2024-02-13 21:40
node_win32_etw_provider.h
3.67
KB
-rw-r--r--
2024-02-13 21:40
node_worker.h
4.92
KB
-rw-r--r--
2024-02-13 21:40
pipe_wrap.h
2.78
KB
-rw-r--r--
2024-02-13 21:40
req_wrap-inl.h
5.43
KB
-rw-r--r--
2024-02-13 21:40
req_wrap.h
2.23
KB
-rw-r--r--
2024-02-13 21:40
spawn_sync.h
6.87
KB
-rw-r--r--
2024-02-13 21:40
stream_base-inl.h
4.93
KB
-rw-r--r--
2024-02-13 21:40
stream_base.h
17.44
KB
-rw-r--r--
2024-02-13 21:40
stream_pipe.h
2.39
KB
-rw-r--r--
2024-02-13 21:40
stream_wrap.h
4.15
KB
-rw-r--r--
2024-02-13 21:40
string_bytes.h
4.69
KB
-rw-r--r--
2024-02-13 21:40
string_decoder-inl.h
858
B
-rw-r--r--
2024-02-13 21:40
string_decoder.h
1.5
KB
-rw-r--r--
2024-02-13 21:40
string_search.h
20.94
KB
-rw-r--r--
2024-02-13 21:40
tcp_wrap.h
3.9
KB
-rw-r--r--
2024-02-13 21:40
threadpoolwork-inl.h
2.58
KB
-rw-r--r--
2024-02-13 21:40
timer_wrap-inl.h
755
B
-rw-r--r--
2024-02-13 21:40
timer_wrap.h
1.79
KB
-rw-r--r--
2024-02-13 21:40
tty_wrap.h
2.27
KB
-rw-r--r--
2024-02-13 21:40
udp_wrap.h
8.5
KB
-rw-r--r--
2024-02-13 21:40
undici_version.h
215
B
-rw-r--r--
2024-04-18 19:08
util-inl.h
19.56
KB
-rw-r--r--
2024-02-13 21:40
util.h
31.46
KB
-rw-r--r--
2024-02-13 21:40
v8abbr.h
5.05
KB
-rw-r--r--
2024-02-13 21:40
Save
Rename
#ifndef SRC_NODE_OPTIONS_INL_H_ #define SRC_NODE_OPTIONS_INL_H_ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #include <cstdlib> #include "node_options.h" #include "util.h" namespace node { PerIsolateOptions* PerProcessOptions::get_per_isolate_options() { return per_isolate.get(); } EnvironmentOptions* PerIsolateOptions::get_per_env_options() { return per_env.get(); } namespace options_parser { template <typename Options> void OptionsParser<Options>::AddOption(const char* name, const char* help_text, bool Options::* field, OptionEnvvarSettings env_setting, bool default_is_true) { options_.emplace(name, OptionInfo{kBoolean, std::make_shared<SimpleOptionField<bool>>(field), env_setting, help_text, default_is_true}); } template <typename Options> void OptionsParser<Options>::AddOption(const char* name, const char* help_text, uint64_t Options::* field, OptionEnvvarSettings env_setting) { options_.emplace( name, OptionInfo{kUInteger, std::make_shared<SimpleOptionField<uint64_t>>(field), env_setting, help_text}); } template <typename Options> void OptionsParser<Options>::AddOption(const char* name, const char* help_text, int64_t Options::* field, OptionEnvvarSettings env_setting) { options_.emplace( name, OptionInfo{kInteger, std::make_shared<SimpleOptionField<int64_t>>(field), env_setting, help_text}); } template <typename Options> void OptionsParser<Options>::AddOption(const char* name, const char* help_text, std::string Options::* field, OptionEnvvarSettings env_setting) { options_.emplace( name, OptionInfo{kString, std::make_shared<SimpleOptionField<std::string>>(field), env_setting, help_text}); } template <typename Options> void OptionsParser<Options>::AddOption( const char* name, const char* help_text, std::vector<std::string> Options::* field, OptionEnvvarSettings env_setting) { options_.emplace(name, OptionInfo { kStringList, std::make_shared<SimpleOptionField<std::vector<std::string>>>(field), env_setting, help_text }); } template <typename Options> void OptionsParser<Options>::AddOption(const char* name, const char* help_text, HostPort Options::* field, OptionEnvvarSettings env_setting) { options_.emplace( name, OptionInfo{kHostPort, std::make_shared<SimpleOptionField<HostPort>>(field), env_setting, help_text}); } template <typename Options> void OptionsParser<Options>::AddOption(const char* name, const char* help_text, NoOp no_op_tag, OptionEnvvarSettings env_setting) { options_.emplace(name, OptionInfo{kNoOp, nullptr, env_setting, help_text}); } template <typename Options> void OptionsParser<Options>::AddOption(const char* name, const char* help_text, V8Option v8_option_tag, OptionEnvvarSettings env_setting) { options_.emplace(name, OptionInfo{kV8Option, nullptr, env_setting, help_text}); } template <typename Options> void OptionsParser<Options>::AddAlias(const char* from, const char* to) { aliases_[from] = { to }; } template <typename Options> void OptionsParser<Options>::AddAlias(const char* from, const std::vector<std::string>& to) { aliases_[from] = to; } template <typename Options> void OptionsParser<Options>::AddAlias( const char* from, const std::initializer_list<std::string>& to) { AddAlias(from, std::vector<std::string>(to)); } template <typename Options> void OptionsParser<Options>::Implies(const char* from, const char* to) { auto it = options_.find(to); CHECK_NE(it, options_.end()); CHECK(it->second.type == kBoolean || it->second.type == kV8Option); implications_.emplace( from, Implication{it->second.type, to, it->second.field, true}); } template <typename Options> void OptionsParser<Options>::ImpliesNot(const char* from, const char* to) { auto it = options_.find(to); CHECK_NE(it, options_.end()); CHECK_EQ(it->second.type, kBoolean); implications_.emplace( from, Implication{it->second.type, to, it->second.field, false}); } template <typename Options> template <typename OriginalField, typename ChildOptions> auto OptionsParser<Options>::Convert( std::shared_ptr<OriginalField> original, ChildOptions* (Options::* get_child)()) { // If we have a field on ChildOptions, and we want to access it from an // Options instance, we call get_child() on the original Options and then // access it, i.e. this class implements a kind of function chaining. struct AdaptedField : BaseOptionField { void* LookupImpl(Options* options) const override { return original->LookupImpl((options->*get_child)()); } AdaptedField( std::shared_ptr<OriginalField> original, ChildOptions* (Options::* get_child)()) : original(original), get_child(get_child) {} std::shared_ptr<OriginalField> original; ChildOptions* (Options::* get_child)(); }; return std::shared_ptr<BaseOptionField>( new AdaptedField(original, get_child)); } template <typename Options> template <typename ChildOptions> auto OptionsParser<Options>::Convert( typename OptionsParser<ChildOptions>::OptionInfo original, ChildOptions* (Options::* get_child)()) { return OptionInfo{original.type, Convert(original.field, get_child), original.env_setting, original.help_text, original.default_is_true}; } template <typename Options> template <typename ChildOptions> auto OptionsParser<Options>::Convert( typename OptionsParser<ChildOptions>::Implication original, ChildOptions* (Options::* get_child)()) { return Implication{ original.type, original.name, Convert(original.target_field, get_child), original.target_value, }; } template <typename Options> template <typename ChildOptions> void OptionsParser<Options>::Insert( const OptionsParser<ChildOptions>& child_options_parser, ChildOptions* (Options::* get_child)()) { aliases_.insert(std::begin(child_options_parser.aliases_), std::end(child_options_parser.aliases_)); for (const auto& pair : child_options_parser.options_) options_.emplace(pair.first, Convert(pair.second, get_child)); for (const auto& pair : child_options_parser.implications_) implications_.emplace(pair.first, Convert(pair.second, get_child)); } inline std::string NotAllowedInEnvErr(const std::string& arg) { return arg + " is not allowed in NODE_OPTIONS"; } inline std::string RequiresArgumentErr(const std::string& arg) { return arg + " requires an argument"; } inline std::string NegationImpliesBooleanError(const std::string& arg) { return arg + " is an invalid negation because it is not a boolean option"; } // We store some of the basic information around a single Parse call inside // this struct, to separate storage of command line arguments and their // handling. In particular, this makes it easier to introduce 'synthetic' // arguments that get inserted by expanding option aliases. struct ArgsInfo { // Generally, the idea here is that the first entry in `*underlying` stores // the "0th" argument (the program name), then `synthetic_args` are inserted, // followed by the remainder of `*underlying`. std::vector<std::string>* underlying; std::vector<std::string> synthetic_args; std::vector<std::string>* exec_args; ArgsInfo(std::vector<std::string>* args, std::vector<std::string>* exec_args) : underlying(args), exec_args(exec_args) {} size_t remaining() const { // -1 to account for the program name. return underlying->size() - 1 + synthetic_args.size(); } bool empty() const { return remaining() == 0; } const std::string& program_name() const { return underlying->at(0); } std::string& first() { return synthetic_args.empty() ? underlying->at(1) : synthetic_args.front(); } std::string pop_first() { std::string ret = std::move(first()); if (synthetic_args.empty()) { // Only push arguments to `exec_args` that were also originally passed // on the command line (i.e. not generated through alias expansion). // '--' is a special case here since its purpose is to end `exec_argv`, // which is why we do not include it. if (exec_args != nullptr && ret != "--") exec_args->push_back(ret); underlying->erase(underlying->begin() + 1); } else { synthetic_args.erase(synthetic_args.begin()); } return ret; } }; template <typename Options> void OptionsParser<Options>::Parse( std::vector<std::string>* const orig_args, std::vector<std::string>* const exec_args, std::vector<std::string>* const v8_args, Options* const options, OptionEnvvarSettings required_env_settings, std::vector<std::string>* const errors) const { ArgsInfo args(orig_args, exec_args); // The first entry is the process name. Make sure it ends up in the V8 argv, // since V8::SetFlagsFromCommandLine() expects that to hold true for that // array as well. if (v8_args->empty()) v8_args->push_back(args.program_name()); while (!args.empty() && errors->empty()) { if (args.first().size() <= 1 || args.first()[0] != '-') break; // We know that we're either going to consume this // argument or fail completely. const std::string arg = args.pop_first(); if (arg == "--") { if (required_env_settings == kAllowedInEnvvar) errors->push_back(NotAllowedInEnvErr("--")); break; } // Only allow --foo=bar notation for options starting with double dashes. // (E.g. -e=a is not allowed as shorthand for --eval=a, which would // otherwise be the result of alias expansion.) const std::string::size_type equals_index = arg[0] == '-' && arg[1] == '-' ? arg.find('=') : std::string::npos; std::string name = equals_index == std::string::npos ? arg : arg.substr(0, equals_index); // Store the 'original name' of the argument. This name differs from // 'name' in that it contains a possible '=' sign and is not affected // by alias expansion. std::string original_name = name; if (equals_index != std::string::npos) original_name += '='; auto missing_argument = [&]() { errors->push_back(RequiresArgumentErr(original_name)); }; // Normalize by replacing `_` with `-` in options. for (std::string::size_type i = 2; i < name.size(); ++i) { if (name[i] == '_') name[i] = '-'; } // Convert --no-foo to --foo and keep in mind that we're negating. bool is_negation = false; if (name.find("--no-") == 0) { name.erase(2, 3); // remove no- is_negation = true; } { auto it = aliases_.end(); // Expand aliases: // - If `name` can be found in `aliases_`. // - If `name` + '=' can be found in `aliases_`. // - If `name` + " <arg>" can be found in `aliases_`, and we have // a subsequent argument that does not start with '-' itself. while ((it = aliases_.find(name)) != aliases_.end() || (equals_index != std::string::npos && (it = aliases_.find(name + '=')) != aliases_.end()) || (!args.empty() && !args.first().empty() && args.first()[0] != '-' && (it = aliases_.find(name + " <arg>")) != aliases_.end())) { const std::string prev_name = std::move(name); const std::vector<std::string>& expansion = it->second; // Use the first entry in the expansion as the new 'name'. name = expansion.front(); if (expansion.size() > 1) { // The other arguments, if any, are going to be handled later. args.synthetic_args.insert( args.synthetic_args.begin(), expansion.begin() + 1, expansion.end()); } if (name == prev_name) break; } } auto it = options_.find(name); if ((it == options_.end() || it->second.env_setting == kDisallowedInEnvvar) && required_env_settings == kAllowedInEnvvar) { errors->push_back(NotAllowedInEnvErr(original_name)); break; } { std::string implied_name = name; if (is_negation) { // Implications for negated options are defined with "--no-". implied_name.insert(2, "no-"); } auto implications = implications_.equal_range(implied_name); for (auto imp = implications.first; imp != implications.second; ++imp) { if (imp->second.type == kV8Option) { v8_args->push_back(imp->second.name); } else { *imp->second.target_field->template Lookup<bool>(options) = imp->second.target_value; } } } if (it == options_.end()) { v8_args->push_back(arg); continue; } const OptionInfo& info = it->second; // Some V8 options can be negated and they are validated by V8 later. if (is_negation && info.type != kBoolean && info.type != kV8Option) { errors->push_back(NegationImpliesBooleanError(arg)); break; } std::string value; if (info.type != kBoolean && info.type != kNoOp && info.type != kV8Option) { if (equals_index != std::string::npos) { value = arg.substr(equals_index + 1); if (value.empty()) { missing_argument(); break; } } else { if (args.empty()) { missing_argument(); break; } value = args.pop_first(); if (!value.empty() && value[0] == '-') { missing_argument(); break; } else { if (!value.empty() && value[0] == '\\' && value[1] == '-') value = value.substr(1); // Treat \- as escaping an -. } } } switch (info.type) { case kBoolean: *Lookup<bool>(info.field, options) = !is_negation; break; case kInteger: *Lookup<int64_t>(info.field, options) = std::atoll(value.c_str()); break; case kUInteger: *Lookup<uint64_t>(info.field, options) = std::strtoull(value.c_str(), nullptr, 10); break; case kString: *Lookup<std::string>(info.field, options) = value; break; case kStringList: Lookup<std::vector<std::string>>(info.field, options) ->emplace_back(std::move(value)); break; case kHostPort: Lookup<HostPort>(info.field, options) ->Update(SplitHostPort(value, errors)); break; case kNoOp: break; case kV8Option: v8_args->push_back(arg); break; default: UNREACHABLE(); } } options->CheckOptions(errors, orig_args); } } // namespace options_parser } // namespace node #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS #endif // SRC_NODE_OPTIONS_INL_H_