├── .dockerignore ├── .github ├── ISSUE_TEMPLATE.md ├── actions │ └── ft-test │ │ └── action.yaml ├── dockerfiles │ ├── cloudserver │ │ ├── Dockerfile │ │ └── config.json │ ├── docker │ │ └── requirements.sh │ ├── ft │ │ ├── docker-compose.yaml │ │ └── metadata-config.json │ ├── kafka │ │ └── Dockerfile │ ├── mongodb │ │ ├── Dockerfile │ │ └── conf │ │ │ ├── initReplicaSet.js │ │ │ ├── mongo-run.sh │ │ │ └── mongod.conf │ ├── sproxyd │ │ ├── Dockerfile │ │ └── sproxyd.conf │ └── syntheticbucketd │ │ └── Dockerfile ├── scripts │ ├── run_ft_tests.bash │ └── run_server_tests.bash └── workflows │ ├── alerts.yaml │ ├── docker-build.yaml │ ├── release.yaml │ └── tests.yaml ├── .gitignore ├── .nycrc ├── DESIGN.md ├── Dockerfile ├── LICENSE ├── README.md ├── Using.md ├── _config.yml ├── bin ├── backbeat.js ├── ensureServiceUser ├── ingestion.js ├── queuePopulator.js └── replication.js ├── bucket-scanner ├── go.mod ├── go.sum ├── pkg │ ├── console │ │ ├── console.go │ │ ├── interactive.go │ │ ├── logging.go │ │ ├── test │ │ │ └── main.go │ │ └── types.go │ ├── counter │ │ ├── base_counter.go │ │ ├── base_counter_test.go │ │ ├── counter_suite_test.go │ │ ├── replication │ │ │ ├── by_status_counter_set.go │ │ │ ├── by_status_counter_set_test.go │ │ │ ├── counter_set.go │ │ │ ├── counter_set_test.go │ │ │ └── replication_suite_test.go │ │ ├── tracking_counter.go │ │ └── types.go │ ├── exporter │ │ ├── exporter.go │ │ ├── exporter_suite_test.go │ │ └── exporter_test.go │ └── types │ │ ├── types.go │ │ ├── types_suite_test.go │ │ └── types_test.go └── vendor │ ├── github.com │ ├── beorn7 │ │ └── perks │ │ │ ├── LICENSE │ │ │ └── quantile │ │ │ ├── exampledata.txt │ │ │ └── stream.go │ ├── cespare │ │ └── xxhash │ │ │ └── v2 │ │ │ ├── .travis.yml │ │ │ ├── LICENSE.txt │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── xxhash.go │ │ │ ├── xxhash_amd64.go │ │ │ ├── xxhash_amd64.s │ │ │ ├── xxhash_other.go │ │ │ ├── xxhash_safe.go │ │ │ └── xxhash_unsafe.go │ ├── confluentinc │ │ └── confluent-kafka-go │ │ │ ├── LICENSE │ │ │ └── kafka │ │ │ ├── .gitignore │ │ │ ├── 00version.go │ │ │ ├── README.md │ │ │ ├── adminapi.go │ │ │ ├── adminoptions.go │ │ │ ├── api.html │ │ │ ├── build_darwin.go │ │ │ ├── build_dynamic.go │ │ │ ├── build_glibc_linux.go │ │ │ ├── build_musl_linux.go │ │ │ ├── config.go │ │ │ ├── consumer.go │ │ │ ├── context.go │ │ │ ├── error.go │ │ │ ├── error_gen.go │ │ │ ├── event.go │ │ │ ├── generated_errors.go │ │ │ ├── glue_rdkafka.h │ │ │ ├── handle.go │ │ │ ├── header.go │ │ │ ├── kafka.go │ │ │ ├── librdkafka_vendor │ │ │ ├── .gitignore │ │ │ ├── LICENSES.txt │ │ │ ├── README.md │ │ │ ├── bundle-import.sh │ │ │ ├── import.sh │ │ │ ├── librdkafka.go │ │ │ ├── librdkafka_darwin.a │ │ │ ├── librdkafka_glibc_linux.a │ │ │ ├── librdkafka_musl_linux.a │ │ │ └── rdkafka.h │ │ │ ├── log.go │ │ │ ├── message.go │ │ │ ├── metadata.go │ │ │ ├── misc.go │ │ │ ├── offset.go │ │ │ ├── producer.go │ │ │ ├── select_rdkafka.h │ │ │ ├── testconf-example.json │ │ │ ├── testhelpers.go │ │ │ └── time.go │ ├── fsnotify │ │ └── fsnotify │ │ │ ├── .editorconfig │ │ │ ├── .gitattributes │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── AUTHORS │ │ │ ├── CHANGELOG.md │ │ │ ├── CONTRIBUTING.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── fen.go │ │ │ ├── fsnotify.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── inotify.go │ │ │ ├── inotify_poller.go │ │ │ ├── kqueue.go │ │ │ ├── open_mode_bsd.go │ │ │ ├── open_mode_darwin.go │ │ │ └── windows.go │ ├── go-resty │ │ └── resty │ │ │ └── v2 │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── BUILD.bazel │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── WORKSPACE │ │ │ ├── client.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── middleware.go │ │ │ ├── redirect.go │ │ │ ├── request.go │ │ │ ├── response.go │ │ │ ├── resty.go │ │ │ ├── retry.go │ │ │ ├── trace.go │ │ │ ├── transport.go │ │ │ ├── transport112.go │ │ │ └── util.go │ ├── golang │ │ └── protobuf │ │ │ ├── AUTHORS │ │ │ ├── CONTRIBUTORS │ │ │ ├── LICENSE │ │ │ ├── proto │ │ │ ├── buffer.go │ │ │ ├── defaults.go │ │ │ ├── deprecated.go │ │ │ ├── discard.go │ │ │ ├── extensions.go │ │ │ ├── properties.go │ │ │ ├── proto.go │ │ │ ├── registry.go │ │ │ ├── text_decode.go │ │ │ ├── text_encode.go │ │ │ ├── wire.go │ │ │ └── wrappers.go │ │ │ └── ptypes │ │ │ ├── any.go │ │ │ ├── any │ │ │ └── any.pb.go │ │ │ ├── doc.go │ │ │ ├── duration.go │ │ │ ├── duration │ │ │ └── duration.pb.go │ │ │ ├── timestamp.go │ │ │ └── timestamp │ │ │ └── timestamp.pb.go │ ├── gosuri │ │ └── uilive │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── doc.go │ │ │ ├── go.mod │ │ │ ├── terminal_size.go │ │ │ ├── terminal_size_windows.go │ │ │ ├── writer.go │ │ │ ├── writer_posix.go │ │ │ └── writer_windows.go │ ├── hashicorp │ │ └── hcl │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── appveyor.yml │ │ │ ├── decoder.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── hcl.go │ │ │ ├── hcl │ │ │ ├── ast │ │ │ │ ├── ast.go │ │ │ │ └── walk.go │ │ │ ├── parser │ │ │ │ ├── error.go │ │ │ │ └── parser.go │ │ │ ├── printer │ │ │ │ ├── nodes.go │ │ │ │ └── printer.go │ │ │ ├── scanner │ │ │ │ └── scanner.go │ │ │ ├── strconv │ │ │ │ └── quote.go │ │ │ └── token │ │ │ │ ├── position.go │ │ │ │ └── token.go │ │ │ ├── json │ │ │ ├── parser │ │ │ │ ├── flatten.go │ │ │ │ └── parser.go │ │ │ ├── scanner │ │ │ │ └── scanner.go │ │ │ └── token │ │ │ │ ├── position.go │ │ │ │ └── token.go │ │ │ ├── lex.go │ │ │ └── parse.go │ ├── inconshreveable │ │ └── mousetrap │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── trap_others.go │ │ │ ├── trap_windows.go │ │ │ └── trap_windows_1.4.go │ ├── magiconair │ │ └── properties │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── decode.go │ │ │ ├── doc.go │ │ │ ├── go.mod │ │ │ ├── integrate.go │ │ │ ├── lex.go │ │ │ ├── load.go │ │ │ ├── parser.go │ │ │ ├── properties.go │ │ │ └── rangecheck.go │ ├── mattn │ │ └── go-isatty │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── doc.go │ │ │ ├── isatty_appengine.go │ │ │ ├── isatty_bsd.go │ │ │ ├── isatty_linux.go │ │ │ ├── isatty_linux_ppc64x.go │ │ │ ├── isatty_others.go │ │ │ ├── isatty_solaris.go │ │ │ └── isatty_windows.go │ ├── matttproud │ │ └── golang_protobuf_extensions │ │ │ ├── LICENSE │ │ │ ├── NOTICE │ │ │ └── pbutil │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── decode.go │ │ │ ├── doc.go │ │ │ └── encode.go │ ├── mitchellh │ │ └── mapstructure │ │ │ ├── .travis.yml │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── decode_hooks.go │ │ │ ├── error.go │ │ │ ├── go.mod │ │ │ └── mapstructure.go │ ├── nxadm │ │ └── tail │ │ │ ├── .gitignore │ │ │ ├── CHANGES.md │ │ │ ├── Dockerfile │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── ratelimiter │ │ │ ├── Licence │ │ │ ├── leakybucket.go │ │ │ ├── memory.go │ │ │ └── storage.go │ │ │ ├── tail.go │ │ │ ├── tail_posix.go │ │ │ ├── tail_windows.go │ │ │ ├── util │ │ │ └── util.go │ │ │ ├── watch │ │ │ ├── filechanges.go │ │ │ ├── inotify.go │ │ │ ├── inotify_tracker.go │ │ │ ├── polling.go │ │ │ └── watch.go │ │ │ └── winfile │ │ │ └── winfile.go │ ├── onsi │ │ ├── ginkgo │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── CHANGELOG.md │ │ │ ├── CONTRIBUTING.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── RELEASING.md │ │ │ ├── config │ │ │ │ └── config.go │ │ │ ├── ginkgo_dsl.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── internal │ │ │ │ ├── codelocation │ │ │ │ │ └── code_location.go │ │ │ │ ├── containernode │ │ │ │ │ └── container_node.go │ │ │ │ ├── failer │ │ │ │ │ └── failer.go │ │ │ │ ├── global │ │ │ │ │ └── init.go │ │ │ │ ├── leafnodes │ │ │ │ │ ├── benchmarker.go │ │ │ │ │ ├── interfaces.go │ │ │ │ │ ├── it_node.go │ │ │ │ │ ├── measure_node.go │ │ │ │ │ ├── runner.go │ │ │ │ │ ├── setup_nodes.go │ │ │ │ │ ├── suite_nodes.go │ │ │ │ │ ├── synchronized_after_suite_node.go │ │ │ │ │ └── synchronized_before_suite_node.go │ │ │ │ ├── remote │ │ │ │ │ ├── aggregator.go │ │ │ │ │ ├── forwarding_reporter.go │ │ │ │ │ ├── output_interceptor.go │ │ │ │ │ ├── output_interceptor_unix.go │ │ │ │ │ ├── output_interceptor_win.go │ │ │ │ │ └── server.go │ │ │ │ ├── spec │ │ │ │ │ ├── spec.go │ │ │ │ │ └── specs.go │ │ │ │ ├── spec_iterator │ │ │ │ │ ├── index_computer.go │ │ │ │ │ ├── parallel_spec_iterator.go │ │ │ │ │ ├── serial_spec_iterator.go │ │ │ │ │ ├── sharded_parallel_spec_iterator.go │ │ │ │ │ └── spec_iterator.go │ │ │ │ ├── specrunner │ │ │ │ │ ├── random_id.go │ │ │ │ │ └── spec_runner.go │ │ │ │ ├── suite │ │ │ │ │ └── suite.go │ │ │ │ ├── testingtproxy │ │ │ │ │ └── testing_t_proxy.go │ │ │ │ └── writer │ │ │ │ │ ├── fake_writer.go │ │ │ │ │ └── writer.go │ │ │ ├── reporters │ │ │ │ ├── default_reporter.go │ │ │ │ ├── fake_reporter.go │ │ │ │ ├── junit_reporter.go │ │ │ │ ├── reporter.go │ │ │ │ ├── stenographer │ │ │ │ │ ├── console_logging.go │ │ │ │ │ ├── fake_stenographer.go │ │ │ │ │ ├── stenographer.go │ │ │ │ │ └── support │ │ │ │ │ │ ├── go-colorable │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── colorable_others.go │ │ │ │ │ │ ├── colorable_windows.go │ │ │ │ │ │ └── noncolorable.go │ │ │ │ │ │ └── go-isatty │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── doc.go │ │ │ │ │ │ ├── isatty_appengine.go │ │ │ │ │ │ ├── isatty_bsd.go │ │ │ │ │ │ ├── isatty_linux.go │ │ │ │ │ │ ├── isatty_solaris.go │ │ │ │ │ │ └── isatty_windows.go │ │ │ │ └── teamcity_reporter.go │ │ │ └── types │ │ │ │ ├── code_location.go │ │ │ │ ├── synchronization.go │ │ │ │ └── types.go │ │ └── gomega │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── CHANGELOG.md │ │ │ ├── CONTRIBUTING.md │ │ │ ├── Dockerfile │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── RELEASING.md │ │ │ ├── docker-compose.yaml │ │ │ ├── format │ │ │ └── format.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── gomega_dsl.go │ │ │ ├── internal │ │ │ ├── assertion │ │ │ │ └── assertion.go │ │ │ ├── asyncassertion │ │ │ │ └── async_assertion.go │ │ │ ├── oraclematcher │ │ │ │ └── oracle_matcher.go │ │ │ └── testingtsupport │ │ │ │ └── testing_t_support.go │ │ │ ├── matchers.go │ │ │ ├── matchers │ │ │ ├── and.go │ │ │ ├── assignable_to_type_of_matcher.go │ │ │ ├── attributes_slice.go │ │ │ ├── be_a_directory.go │ │ │ ├── be_a_regular_file.go │ │ │ ├── be_an_existing_file.go │ │ │ ├── be_closed_matcher.go │ │ │ ├── be_element_of_matcher.go │ │ │ ├── be_empty_matcher.go │ │ │ ├── be_equivalent_to_matcher.go │ │ │ ├── be_false_matcher.go │ │ │ ├── be_identical_to.go │ │ │ ├── be_nil_matcher.go │ │ │ ├── be_numerically_matcher.go │ │ │ ├── be_sent_matcher.go │ │ │ ├── be_temporally_matcher.go │ │ │ ├── be_true_matcher.go │ │ │ ├── be_zero_matcher.go │ │ │ ├── consist_of.go │ │ │ ├── contain_element_matcher.go │ │ │ ├── contain_elements_matcher.go │ │ │ ├── contain_substring_matcher.go │ │ │ ├── equal_matcher.go │ │ │ ├── have_cap_matcher.go │ │ │ ├── have_http_status_matcher.go │ │ │ ├── have_key_matcher.go │ │ │ ├── have_key_with_value_matcher.go │ │ │ ├── have_len_matcher.go │ │ │ ├── have_occurred_matcher.go │ │ │ ├── have_prefix_matcher.go │ │ │ ├── have_suffix_matcher.go │ │ │ ├── match_error_matcher.go │ │ │ ├── match_json_matcher.go │ │ │ ├── match_regexp_matcher.go │ │ │ ├── match_xml_matcher.go │ │ │ ├── match_yaml_matcher.go │ │ │ ├── not.go │ │ │ ├── or.go │ │ │ ├── panic_matcher.go │ │ │ ├── receive_matcher.go │ │ │ ├── semi_structured_data_support.go │ │ │ ├── succeed_matcher.go │ │ │ ├── support │ │ │ │ └── goraph │ │ │ │ │ ├── bipartitegraph │ │ │ │ │ ├── bipartitegraph.go │ │ │ │ │ └── bipartitegraphmatching.go │ │ │ │ │ ├── edge │ │ │ │ │ └── edge.go │ │ │ │ │ ├── node │ │ │ │ │ └── node.go │ │ │ │ │ └── util │ │ │ │ │ └── util.go │ │ │ ├── type_support.go │ │ │ └── with_transform.go │ │ │ └── types │ │ │ └── types.go │ ├── pelletier │ │ └── go-toml │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── benchmark.json │ │ │ ├── benchmark.sh │ │ │ ├── benchmark.toml │ │ │ ├── benchmark.yml │ │ │ ├── doc.go │ │ │ ├── example-crlf.toml │ │ │ ├── example.toml │ │ │ ├── fuzz.go │ │ │ ├── fuzz.sh │ │ │ ├── keysparsing.go │ │ │ ├── lexer.go │ │ │ ├── marshal.go │ │ │ ├── marshal_test.toml │ │ │ ├── parser.go │ │ │ ├── position.go │ │ │ ├── test.sh │ │ │ ├── token.go │ │ │ ├── toml.go │ │ │ ├── tomltree_create.go │ │ │ └── tomltree_write.go │ ├── pkg │ │ └── errors │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── appveyor.yml │ │ │ ├── errors.go │ │ │ ├── go113.go │ │ │ └── stack.go │ ├── prometheus │ │ ├── client_golang │ │ │ ├── LICENSE │ │ │ ├── NOTICE │ │ │ └── prometheus │ │ │ │ ├── .gitignore │ │ │ │ ├── README.md │ │ │ │ ├── build_info.go │ │ │ │ ├── build_info_pre_1.12.go │ │ │ │ ├── collector.go │ │ │ │ ├── counter.go │ │ │ │ ├── desc.go │ │ │ │ ├── doc.go │ │ │ │ ├── expvar_collector.go │ │ │ │ ├── fnv.go │ │ │ │ ├── gauge.go │ │ │ │ ├── go_collector.go │ │ │ │ ├── histogram.go │ │ │ │ ├── internal │ │ │ │ └── metric.go │ │ │ │ ├── labels.go │ │ │ │ ├── metric.go │ │ │ │ ├── observer.go │ │ │ │ ├── process_collector.go │ │ │ │ ├── process_collector_other.go │ │ │ │ ├── process_collector_windows.go │ │ │ │ ├── promauto │ │ │ │ └── auto.go │ │ │ │ ├── promhttp │ │ │ │ ├── delegator.go │ │ │ │ ├── http.go │ │ │ │ ├── instrument_client.go │ │ │ │ └── instrument_server.go │ │ │ │ ├── registry.go │ │ │ │ ├── summary.go │ │ │ │ ├── timer.go │ │ │ │ ├── untyped.go │ │ │ │ ├── value.go │ │ │ │ ├── vec.go │ │ │ │ └── wrap.go │ │ ├── client_model │ │ │ ├── LICENSE │ │ │ ├── NOTICE │ │ │ └── go │ │ │ │ └── metrics.pb.go │ │ ├── common │ │ │ ├── LICENSE │ │ │ ├── NOTICE │ │ │ ├── expfmt │ │ │ │ ├── decode.go │ │ │ │ ├── encode.go │ │ │ │ ├── expfmt.go │ │ │ │ ├── fuzz.go │ │ │ │ ├── openmetrics_create.go │ │ │ │ ├── text_create.go │ │ │ │ └── text_parse.go │ │ │ ├── internal │ │ │ │ └── bitbucket.org │ │ │ │ │ └── ww │ │ │ │ │ └── goautoneg │ │ │ │ │ ├── README.txt │ │ │ │ │ └── autoneg.go │ │ │ └── model │ │ │ │ ├── alert.go │ │ │ │ ├── fingerprinting.go │ │ │ │ ├── fnv.go │ │ │ │ ├── labels.go │ │ │ │ ├── labelset.go │ │ │ │ ├── metric.go │ │ │ │ ├── model.go │ │ │ │ ├── signature.go │ │ │ │ ├── silence.go │ │ │ │ ├── time.go │ │ │ │ └── value.go │ │ └── procfs │ │ │ ├── .gitignore │ │ │ ├── .golangci.yml │ │ │ ├── CODE_OF_CONDUCT.md │ │ │ ├── CONTRIBUTING.md │ │ │ ├── LICENSE │ │ │ ├── MAINTAINERS.md │ │ │ ├── Makefile │ │ │ ├── Makefile.common │ │ │ ├── NOTICE │ │ │ ├── README.md │ │ │ ├── arp.go │ │ │ ├── buddyinfo.go │ │ │ ├── cpuinfo.go │ │ │ ├── cpuinfo_armx.go │ │ │ ├── cpuinfo_mipsx.go │ │ │ ├── cpuinfo_others.go │ │ │ ├── cpuinfo_ppcx.go │ │ │ ├── cpuinfo_s390x.go │ │ │ ├── cpuinfo_x86.go │ │ │ ├── crypto.go │ │ │ ├── doc.go │ │ │ ├── fixtures.ttar │ │ │ ├── fs.go │ │ │ ├── fscache.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── internal │ │ │ ├── fs │ │ │ │ └── fs.go │ │ │ └── util │ │ │ │ ├── parse.go │ │ │ │ ├── readfile.go │ │ │ │ ├── sysreadfile.go │ │ │ │ ├── sysreadfile_compat.go │ │ │ │ └── valueparser.go │ │ │ ├── ipvs.go │ │ │ ├── kernel_random.go │ │ │ ├── loadavg.go │ │ │ ├── mdstat.go │ │ │ ├── meminfo.go │ │ │ ├── mountinfo.go │ │ │ ├── mountstats.go │ │ │ ├── net_conntrackstat.go │ │ │ ├── net_dev.go │ │ │ ├── net_sockstat.go │ │ │ ├── net_softnet.go │ │ │ ├── net_udp.go │ │ │ ├── net_unix.go │ │ │ ├── proc.go │ │ │ ├── proc_cgroup.go │ │ │ ├── proc_environ.go │ │ │ ├── proc_fdinfo.go │ │ │ ├── proc_io.go │ │ │ ├── proc_limits.go │ │ │ ├── proc_maps.go │ │ │ ├── proc_ns.go │ │ │ ├── proc_psi.go │ │ │ ├── proc_smaps.go │ │ │ ├── proc_stat.go │ │ │ ├── proc_status.go │ │ │ ├── schedstat.go │ │ │ ├── stat.go │ │ │ ├── swaps.go │ │ │ ├── ttar │ │ │ ├── vm.go │ │ │ ├── xfrm.go │ │ │ └── zoneinfo.go │ ├── sirupsen │ │ └── logrus │ │ │ ├── .gitignore │ │ │ ├── .golangci.yml │ │ │ ├── .travis.yml │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── alt_exit.go │ │ │ ├── appveyor.yml │ │ │ ├── buffer_pool.go │ │ │ ├── doc.go │ │ │ ├── entry.go │ │ │ ├── exported.go │ │ │ ├── formatter.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── hooks.go │ │ │ ├── json_formatter.go │ │ │ ├── logger.go │ │ │ ├── logrus.go │ │ │ ├── terminal_check_appengine.go │ │ │ ├── terminal_check_bsd.go │ │ │ ├── terminal_check_js.go │ │ │ ├── terminal_check_no_terminal.go │ │ │ ├── terminal_check_notappengine.go │ │ │ ├── terminal_check_solaris.go │ │ │ ├── terminal_check_unix.go │ │ │ ├── terminal_check_windows.go │ │ │ ├── text_formatter.go │ │ │ └── writer.go │ ├── spf13 │ │ ├── afero │ │ │ ├── .travis.yml │ │ │ ├── LICENSE.txt │ │ │ ├── README.md │ │ │ ├── afero.go │ │ │ ├── appveyor.yml │ │ │ ├── basepath.go │ │ │ ├── cacheOnReadFs.go │ │ │ ├── const_bsds.go │ │ │ ├── const_win_unix.go │ │ │ ├── copyOnWriteFs.go │ │ │ ├── go.mod │ │ │ ├── httpFs.go │ │ │ ├── ioutil.go │ │ │ ├── lstater.go │ │ │ ├── match.go │ │ │ ├── mem │ │ │ │ ├── dir.go │ │ │ │ ├── dirmap.go │ │ │ │ └── file.go │ │ │ ├── memmap.go │ │ │ ├── os.go │ │ │ ├── path.go │ │ │ ├── readonlyfs.go │ │ │ ├── regexpfs.go │ │ │ ├── unionFile.go │ │ │ └── util.go │ │ ├── cast │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── cast.go │ │ │ ├── caste.go │ │ │ ├── go.mod │ │ │ └── go.sum │ │ ├── cobra │ │ │ ├── .gitignore │ │ │ ├── .golangci.yml │ │ │ ├── .mailmap │ │ │ ├── .travis.yml │ │ │ ├── CHANGELOG.md │ │ │ ├── CONDUCT.md │ │ │ ├── CONTRIBUTING.md │ │ │ ├── LICENSE.txt │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── args.go │ │ │ ├── bash_completions.go │ │ │ ├── bash_completions.md │ │ │ ├── cobra.go │ │ │ ├── command.go │ │ │ ├── command_notwin.go │ │ │ ├── command_win.go │ │ │ ├── custom_completions.go │ │ │ ├── fish_completions.go │ │ │ ├── fish_completions.md │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── powershell_completions.go │ │ │ ├── powershell_completions.md │ │ │ ├── projects_using_cobra.md │ │ │ ├── shell_completions.go │ │ │ ├── shell_completions.md │ │ │ ├── zsh_completions.go │ │ │ └── zsh_completions.md │ │ ├── jwalterweatherman │ │ │ ├── .gitignore │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── default_notepad.go │ │ │ ├── go.mod │ │ │ ├── log_counter.go │ │ │ └── notepad.go │ │ ├── pflag │ │ │ ├── .gitignore │ │ │ ├── .travis.yml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bool.go │ │ │ ├── bool_slice.go │ │ │ ├── bytes.go │ │ │ ├── count.go │ │ │ ├── duration.go │ │ │ ├── duration_slice.go │ │ │ ├── flag.go │ │ │ ├── float32.go │ │ │ ├── float32_slice.go │ │ │ ├── float64.go │ │ │ ├── float64_slice.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── golangflag.go │ │ │ ├── int.go │ │ │ ├── int16.go │ │ │ ├── int32.go │ │ │ ├── int32_slice.go │ │ │ ├── int64.go │ │ │ ├── int64_slice.go │ │ │ ├── int8.go │ │ │ ├── int_slice.go │ │ │ ├── ip.go │ │ │ ├── ip_slice.go │ │ │ ├── ipmask.go │ │ │ ├── ipnet.go │ │ │ ├── string.go │ │ │ ├── string_array.go │ │ │ ├── string_slice.go │ │ │ ├── string_to_int.go │ │ │ ├── string_to_int64.go │ │ │ ├── string_to_string.go │ │ │ ├── uint.go │ │ │ ├── uint16.go │ │ │ ├── uint32.go │ │ │ ├── uint64.go │ │ │ ├── uint8.go │ │ │ └── uint_slice.go │ │ └── viper │ │ │ ├── .editorconfig │ │ │ ├── .gitignore │ │ │ ├── .golangci.yml │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── flags.go │ │ │ ├── go.mod │ │ │ ├── go.sum │ │ │ ├── util.go │ │ │ └── viper.go │ └── subosito │ │ └── gotenv │ │ ├── .env │ │ ├── .env.invalid │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── appveyor.yml │ │ └── gotenv.go │ ├── golang.org │ └── x │ │ ├── net │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── html │ │ │ ├── atom │ │ │ │ ├── atom.go │ │ │ │ └── table.go │ │ │ ├── charset │ │ │ │ └── charset.go │ │ │ ├── const.go │ │ │ ├── doc.go │ │ │ ├── doctype.go │ │ │ ├── entity.go │ │ │ ├── escape.go │ │ │ ├── foreign.go │ │ │ ├── node.go │ │ │ ├── parse.go │ │ │ ├── render.go │ │ │ └── token.go │ │ └── publicsuffix │ │ │ ├── list.go │ │ │ └── table.go │ │ ├── sys │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── internal │ │ │ └── unsafeheader │ │ │ │ └── unsafeheader.go │ │ ├── unix │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── affinity_linux.go │ │ │ ├── aliases.go │ │ │ ├── asm_aix_ppc64.s │ │ │ ├── asm_darwin_386.s │ │ │ ├── asm_darwin_amd64.s │ │ │ ├── asm_darwin_arm.s │ │ │ ├── asm_darwin_arm64.s │ │ │ ├── asm_dragonfly_amd64.s │ │ │ ├── asm_freebsd_386.s │ │ │ ├── asm_freebsd_amd64.s │ │ │ ├── asm_freebsd_arm.s │ │ │ ├── asm_freebsd_arm64.s │ │ │ ├── asm_linux_386.s │ │ │ ├── asm_linux_amd64.s │ │ │ ├── asm_linux_arm.s │ │ │ ├── asm_linux_arm64.s │ │ │ ├── asm_linux_mips64x.s │ │ │ ├── asm_linux_mipsx.s │ │ │ ├── asm_linux_ppc64x.s │ │ │ ├── asm_linux_riscv64.s │ │ │ ├── asm_linux_s390x.s │ │ │ ├── asm_netbsd_386.s │ │ │ ├── asm_netbsd_amd64.s │ │ │ ├── asm_netbsd_arm.s │ │ │ ├── asm_netbsd_arm64.s │ │ │ ├── asm_openbsd_386.s │ │ │ ├── asm_openbsd_amd64.s │ │ │ ├── asm_openbsd_arm.s │ │ │ ├── asm_openbsd_arm64.s │ │ │ ├── asm_openbsd_mips64.s │ │ │ ├── asm_solaris_amd64.s │ │ │ ├── bluetooth_linux.go │ │ │ ├── cap_freebsd.go │ │ │ ├── constants.go │ │ │ ├── dev_aix_ppc.go │ │ │ ├── dev_aix_ppc64.go │ │ │ ├── dev_darwin.go │ │ │ ├── dev_dragonfly.go │ │ │ ├── dev_freebsd.go │ │ │ ├── dev_linux.go │ │ │ ├── dev_netbsd.go │ │ │ ├── dev_openbsd.go │ │ │ ├── dirent.go │ │ │ ├── endian_big.go │ │ │ ├── endian_little.go │ │ │ ├── env_unix.go │ │ │ ├── errors_freebsd_386.go │ │ │ ├── errors_freebsd_amd64.go │ │ │ ├── errors_freebsd_arm.go │ │ │ ├── errors_freebsd_arm64.go │ │ │ ├── fcntl.go │ │ │ ├── fcntl_darwin.go │ │ │ ├── fcntl_linux_32bit.go │ │ │ ├── fdset.go │ │ │ ├── gccgo.go │ │ │ ├── gccgo_c.c │ │ │ ├── gccgo_linux_amd64.go │ │ │ ├── ioctl.go │ │ │ ├── mkall.sh │ │ │ ├── mkerrors.sh │ │ │ ├── pagesize_unix.go │ │ │ ├── pledge_openbsd.go │ │ │ ├── ptrace_darwin.go │ │ │ ├── ptrace_ios.go │ │ │ ├── race.go │ │ │ ├── race0.go │ │ │ ├── readdirent_getdents.go │ │ │ ├── readdirent_getdirentries.go │ │ │ ├── sockcmsg_dragonfly.go │ │ │ ├── sockcmsg_linux.go │ │ │ ├── sockcmsg_unix.go │ │ │ ├── sockcmsg_unix_other.go │ │ │ ├── str.go │ │ │ ├── syscall.go │ │ │ ├── syscall_aix.go │ │ │ ├── syscall_aix_ppc.go │ │ │ ├── syscall_aix_ppc64.go │ │ │ ├── syscall_bsd.go │ │ │ ├── syscall_darwin.1_12.go │ │ │ ├── syscall_darwin.1_13.go │ │ │ ├── syscall_darwin.go │ │ │ ├── syscall_darwin_386.go │ │ │ ├── syscall_darwin_amd64.go │ │ │ ├── syscall_darwin_arm.go │ │ │ ├── syscall_darwin_arm64.go │ │ │ ├── syscall_darwin_libSystem.go │ │ │ ├── syscall_dragonfly.go │ │ │ ├── syscall_dragonfly_amd64.go │ │ │ ├── syscall_freebsd.go │ │ │ ├── syscall_freebsd_386.go │ │ │ ├── syscall_freebsd_amd64.go │ │ │ ├── syscall_freebsd_arm.go │ │ │ ├── syscall_freebsd_arm64.go │ │ │ ├── syscall_illumos.go │ │ │ ├── syscall_linux.go │ │ │ ├── syscall_linux_386.go │ │ │ ├── syscall_linux_amd64.go │ │ │ ├── syscall_linux_amd64_gc.go │ │ │ ├── syscall_linux_arm.go │ │ │ ├── syscall_linux_arm64.go │ │ │ ├── syscall_linux_gc.go │ │ │ ├── syscall_linux_gc_386.go │ │ │ ├── syscall_linux_gc_arm.go │ │ │ ├── syscall_linux_gccgo_386.go │ │ │ ├── syscall_linux_gccgo_arm.go │ │ │ ├── syscall_linux_mips64x.go │ │ │ ├── syscall_linux_mipsx.go │ │ │ ├── syscall_linux_ppc64x.go │ │ │ ├── syscall_linux_riscv64.go │ │ │ ├── syscall_linux_s390x.go │ │ │ ├── syscall_linux_sparc64.go │ │ │ ├── syscall_netbsd.go │ │ │ ├── syscall_netbsd_386.go │ │ │ ├── syscall_netbsd_amd64.go │ │ │ ├── syscall_netbsd_arm.go │ │ │ ├── syscall_netbsd_arm64.go │ │ │ ├── syscall_openbsd.go │ │ │ ├── syscall_openbsd_386.go │ │ │ ├── syscall_openbsd_amd64.go │ │ │ ├── syscall_openbsd_arm.go │ │ │ ├── syscall_openbsd_arm64.go │ │ │ ├── syscall_openbsd_mips64.go │ │ │ ├── syscall_solaris.go │ │ │ ├── syscall_solaris_amd64.go │ │ │ ├── syscall_unix.go │ │ │ ├── syscall_unix_gc.go │ │ │ ├── syscall_unix_gc_ppc64x.go │ │ │ ├── timestruct.go │ │ │ ├── unveil_openbsd.go │ │ │ ├── xattr_bsd.go │ │ │ ├── zerrors_aix_ppc.go │ │ │ ├── zerrors_aix_ppc64.go │ │ │ ├── zerrors_darwin_386.go │ │ │ ├── zerrors_darwin_amd64.go │ │ │ ├── zerrors_darwin_arm.go │ │ │ ├── zerrors_darwin_arm64.go │ │ │ ├── zerrors_dragonfly_amd64.go │ │ │ ├── zerrors_freebsd_386.go │ │ │ ├── zerrors_freebsd_amd64.go │ │ │ ├── zerrors_freebsd_arm.go │ │ │ ├── zerrors_freebsd_arm64.go │ │ │ ├── zerrors_linux.go │ │ │ ├── zerrors_linux_386.go │ │ │ ├── zerrors_linux_amd64.go │ │ │ ├── zerrors_linux_arm.go │ │ │ ├── zerrors_linux_arm64.go │ │ │ ├── zerrors_linux_mips.go │ │ │ ├── zerrors_linux_mips64.go │ │ │ ├── zerrors_linux_mips64le.go │ │ │ ├── zerrors_linux_mipsle.go │ │ │ ├── zerrors_linux_ppc64.go │ │ │ ├── zerrors_linux_ppc64le.go │ │ │ ├── zerrors_linux_riscv64.go │ │ │ ├── zerrors_linux_s390x.go │ │ │ ├── zerrors_linux_sparc64.go │ │ │ ├── zerrors_netbsd_386.go │ │ │ ├── zerrors_netbsd_amd64.go │ │ │ ├── zerrors_netbsd_arm.go │ │ │ ├── zerrors_netbsd_arm64.go │ │ │ ├── zerrors_openbsd_386.go │ │ │ ├── zerrors_openbsd_amd64.go │ │ │ ├── zerrors_openbsd_arm.go │ │ │ ├── zerrors_openbsd_arm64.go │ │ │ ├── zerrors_openbsd_mips64.go │ │ │ ├── zerrors_solaris_amd64.go │ │ │ ├── zptrace_armnn_linux.go │ │ │ ├── zptrace_linux_arm64.go │ │ │ ├── zptrace_mipsnn_linux.go │ │ │ ├── zptrace_mipsnnle_linux.go │ │ │ ├── zptrace_x86_linux.go │ │ │ ├── zsyscall_aix_ppc.go │ │ │ ├── zsyscall_aix_ppc64.go │ │ │ ├── zsyscall_aix_ppc64_gc.go │ │ │ ├── zsyscall_aix_ppc64_gccgo.go │ │ │ ├── zsyscall_darwin_386.1_13.go │ │ │ ├── zsyscall_darwin_386.1_13.s │ │ │ ├── zsyscall_darwin_386.go │ │ │ ├── zsyscall_darwin_386.s │ │ │ ├── zsyscall_darwin_amd64.1_13.go │ │ │ ├── zsyscall_darwin_amd64.1_13.s │ │ │ ├── zsyscall_darwin_amd64.go │ │ │ ├── zsyscall_darwin_amd64.s │ │ │ ├── zsyscall_darwin_arm.1_13.go │ │ │ ├── zsyscall_darwin_arm.1_13.s │ │ │ ├── zsyscall_darwin_arm.go │ │ │ ├── zsyscall_darwin_arm.s │ │ │ ├── zsyscall_darwin_arm64.1_13.go │ │ │ ├── zsyscall_darwin_arm64.1_13.s │ │ │ ├── zsyscall_darwin_arm64.go │ │ │ ├── zsyscall_darwin_arm64.s │ │ │ ├── zsyscall_dragonfly_amd64.go │ │ │ ├── zsyscall_freebsd_386.go │ │ │ ├── zsyscall_freebsd_amd64.go │ │ │ ├── zsyscall_freebsd_arm.go │ │ │ ├── zsyscall_freebsd_arm64.go │ │ │ ├── zsyscall_illumos_amd64.go │ │ │ ├── zsyscall_linux.go │ │ │ ├── zsyscall_linux_386.go │ │ │ ├── zsyscall_linux_amd64.go │ │ │ ├── zsyscall_linux_arm.go │ │ │ ├── zsyscall_linux_arm64.go │ │ │ ├── zsyscall_linux_mips.go │ │ │ ├── zsyscall_linux_mips64.go │ │ │ ├── zsyscall_linux_mips64le.go │ │ │ ├── zsyscall_linux_mipsle.go │ │ │ ├── zsyscall_linux_ppc64.go │ │ │ ├── zsyscall_linux_ppc64le.go │ │ │ ├── zsyscall_linux_riscv64.go │ │ │ ├── zsyscall_linux_s390x.go │ │ │ ├── zsyscall_linux_sparc64.go │ │ │ ├── zsyscall_netbsd_386.go │ │ │ ├── zsyscall_netbsd_amd64.go │ │ │ ├── zsyscall_netbsd_arm.go │ │ │ ├── zsyscall_netbsd_arm64.go │ │ │ ├── zsyscall_openbsd_386.go │ │ │ ├── zsyscall_openbsd_amd64.go │ │ │ ├── zsyscall_openbsd_arm.go │ │ │ ├── zsyscall_openbsd_arm64.go │ │ │ ├── zsyscall_openbsd_mips64.go │ │ │ ├── zsyscall_solaris_amd64.go │ │ │ ├── zsysctl_openbsd_386.go │ │ │ ├── zsysctl_openbsd_amd64.go │ │ │ ├── zsysctl_openbsd_arm.go │ │ │ ├── zsysctl_openbsd_arm64.go │ │ │ ├── zsysctl_openbsd_mips64.go │ │ │ ├── zsysnum_darwin_386.go │ │ │ ├── zsysnum_darwin_amd64.go │ │ │ ├── zsysnum_darwin_arm.go │ │ │ ├── zsysnum_darwin_arm64.go │ │ │ ├── zsysnum_dragonfly_amd64.go │ │ │ ├── zsysnum_freebsd_386.go │ │ │ ├── zsysnum_freebsd_amd64.go │ │ │ ├── zsysnum_freebsd_arm.go │ │ │ ├── zsysnum_freebsd_arm64.go │ │ │ ├── zsysnum_linux_386.go │ │ │ ├── zsysnum_linux_amd64.go │ │ │ ├── zsysnum_linux_arm.go │ │ │ ├── zsysnum_linux_arm64.go │ │ │ ├── zsysnum_linux_mips.go │ │ │ ├── zsysnum_linux_mips64.go │ │ │ ├── zsysnum_linux_mips64le.go │ │ │ ├── zsysnum_linux_mipsle.go │ │ │ ├── zsysnum_linux_ppc64.go │ │ │ ├── zsysnum_linux_ppc64le.go │ │ │ ├── zsysnum_linux_riscv64.go │ │ │ ├── zsysnum_linux_s390x.go │ │ │ ├── zsysnum_linux_sparc64.go │ │ │ ├── zsysnum_netbsd_386.go │ │ │ ├── zsysnum_netbsd_amd64.go │ │ │ ├── zsysnum_netbsd_arm.go │ │ │ ├── zsysnum_netbsd_arm64.go │ │ │ ├── zsysnum_openbsd_386.go │ │ │ ├── zsysnum_openbsd_amd64.go │ │ │ ├── zsysnum_openbsd_arm.go │ │ │ ├── zsysnum_openbsd_arm64.go │ │ │ ├── zsysnum_openbsd_mips64.go │ │ │ ├── ztypes_aix_ppc.go │ │ │ ├── ztypes_aix_ppc64.go │ │ │ ├── ztypes_darwin_386.go │ │ │ ├── ztypes_darwin_amd64.go │ │ │ ├── ztypes_darwin_arm.go │ │ │ ├── ztypes_darwin_arm64.go │ │ │ ├── ztypes_dragonfly_amd64.go │ │ │ ├── ztypes_freebsd_386.go │ │ │ ├── ztypes_freebsd_amd64.go │ │ │ ├── ztypes_freebsd_arm.go │ │ │ ├── ztypes_freebsd_arm64.go │ │ │ ├── ztypes_linux.go │ │ │ ├── ztypes_linux_386.go │ │ │ ├── ztypes_linux_amd64.go │ │ │ ├── ztypes_linux_arm.go │ │ │ ├── ztypes_linux_arm64.go │ │ │ ├── ztypes_linux_mips.go │ │ │ ├── ztypes_linux_mips64.go │ │ │ ├── ztypes_linux_mips64le.go │ │ │ ├── ztypes_linux_mipsle.go │ │ │ ├── ztypes_linux_ppc64.go │ │ │ ├── ztypes_linux_ppc64le.go │ │ │ ├── ztypes_linux_riscv64.go │ │ │ ├── ztypes_linux_s390x.go │ │ │ ├── ztypes_linux_sparc64.go │ │ │ ├── ztypes_netbsd_386.go │ │ │ ├── ztypes_netbsd_amd64.go │ │ │ ├── ztypes_netbsd_arm.go │ │ │ ├── ztypes_netbsd_arm64.go │ │ │ ├── ztypes_openbsd_386.go │ │ │ ├── ztypes_openbsd_amd64.go │ │ │ ├── ztypes_openbsd_arm.go │ │ │ ├── ztypes_openbsd_arm64.go │ │ │ ├── ztypes_openbsd_mips64.go │ │ │ └── ztypes_solaris_amd64.go │ │ └── windows │ │ │ ├── aliases.go │ │ │ ├── dll_windows.go │ │ │ ├── empty.s │ │ │ ├── env_windows.go │ │ │ ├── eventlog.go │ │ │ ├── exec_windows.go │ │ │ ├── memory_windows.go │ │ │ ├── mkerrors.bash │ │ │ ├── mkknownfolderids.bash │ │ │ ├── mksyscall.go │ │ │ ├── race.go │ │ │ ├── race0.go │ │ │ ├── security_windows.go │ │ │ ├── service.go │ │ │ ├── setupapierrors_windows.go │ │ │ ├── str.go │ │ │ ├── syscall.go │ │ │ ├── syscall_windows.go │ │ │ ├── types_windows.go │ │ │ ├── types_windows_386.go │ │ │ ├── types_windows_amd64.go │ │ │ ├── types_windows_arm.go │ │ │ ├── zerrors_windows.go │ │ │ ├── zknownfolderids_windows.go │ │ │ └── zsyscall_windows.go │ │ └── text │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── encoding │ │ ├── charmap │ │ │ ├── charmap.go │ │ │ └── tables.go │ │ ├── encoding.go │ │ ├── htmlindex │ │ │ ├── htmlindex.go │ │ │ ├── map.go │ │ │ └── tables.go │ │ ├── internal │ │ │ ├── identifier │ │ │ │ ├── identifier.go │ │ │ │ └── mib.go │ │ │ └── internal.go │ │ ├── japanese │ │ │ ├── all.go │ │ │ ├── eucjp.go │ │ │ ├── iso2022jp.go │ │ │ ├── shiftjis.go │ │ │ └── tables.go │ │ ├── korean │ │ │ ├── euckr.go │ │ │ └── tables.go │ │ ├── simplifiedchinese │ │ │ ├── all.go │ │ │ ├── gbk.go │ │ │ ├── hzgb2312.go │ │ │ └── tables.go │ │ ├── traditionalchinese │ │ │ ├── big5.go │ │ │ └── tables.go │ │ └── unicode │ │ │ ├── override.go │ │ │ └── unicode.go │ │ ├── internal │ │ ├── language │ │ │ ├── common.go │ │ │ ├── compact.go │ │ │ ├── compact │ │ │ │ ├── compact.go │ │ │ │ ├── language.go │ │ │ │ ├── parents.go │ │ │ │ ├── tables.go │ │ │ │ └── tags.go │ │ │ ├── compose.go │ │ │ ├── coverage.go │ │ │ ├── language.go │ │ │ ├── lookup.go │ │ │ ├── match.go │ │ │ ├── parse.go │ │ │ ├── tables.go │ │ │ └── tags.go │ │ ├── tag │ │ │ └── tag.go │ │ └── utf8internal │ │ │ └── utf8internal.go │ │ ├── language │ │ ├── coverage.go │ │ ├── doc.go │ │ ├── go1_1.go │ │ ├── go1_2.go │ │ ├── language.go │ │ ├── match.go │ │ ├── parse.go │ │ ├── tables.go │ │ └── tags.go │ │ ├── runes │ │ ├── cond.go │ │ └── runes.go │ │ ├── transform │ │ └── transform.go │ │ └── unicode │ │ └── norm │ │ ├── composition.go │ │ ├── forminfo.go │ │ ├── input.go │ │ ├── iter.go │ │ ├── normalize.go │ │ ├── readwriter.go │ │ ├── tables10.0.0.go │ │ ├── tables11.0.0.go │ │ ├── tables12.0.0.go │ │ ├── tables9.0.0.go │ │ ├── transform.go │ │ └── trie.go │ ├── google.golang.org │ └── protobuf │ │ ├── AUTHORS │ │ ├── CONTRIBUTORS │ │ ├── LICENSE │ │ ├── PATENTS │ │ ├── encoding │ │ ├── prototext │ │ │ ├── decode.go │ │ │ ├── doc.go │ │ │ └── encode.go │ │ └── protowire │ │ │ └── wire.go │ │ ├── internal │ │ ├── descfmt │ │ │ └── stringer.go │ │ ├── descopts │ │ │ └── options.go │ │ ├── detrand │ │ │ └── rand.go │ │ ├── encoding │ │ │ ├── defval │ │ │ │ └── default.go │ │ │ ├── messageset │ │ │ │ └── messageset.go │ │ │ ├── tag │ │ │ │ └── tag.go │ │ │ └── text │ │ │ │ ├── decode.go │ │ │ │ ├── decode_number.go │ │ │ │ ├── decode_string.go │ │ │ │ ├── decode_token.go │ │ │ │ ├── doc.go │ │ │ │ └── encode.go │ │ ├── errors │ │ │ ├── errors.go │ │ │ ├── is_go112.go │ │ │ └── is_go113.go │ │ ├── fieldnum │ │ │ ├── any_gen.go │ │ │ ├── api_gen.go │ │ │ ├── descriptor_gen.go │ │ │ ├── doc.go │ │ │ ├── duration_gen.go │ │ │ ├── empty_gen.go │ │ │ ├── field_mask_gen.go │ │ │ ├── source_context_gen.go │ │ │ ├── struct_gen.go │ │ │ ├── timestamp_gen.go │ │ │ ├── type_gen.go │ │ │ └── wrappers_gen.go │ │ ├── fieldsort │ │ │ └── fieldsort.go │ │ ├── filedesc │ │ │ ├── build.go │ │ │ ├── desc.go │ │ │ ├── desc_init.go │ │ │ ├── desc_lazy.go │ │ │ ├── desc_list.go │ │ │ ├── desc_list_gen.go │ │ │ └── placeholder.go │ │ ├── filetype │ │ │ └── build.go │ │ ├── flags │ │ │ ├── flags.go │ │ │ ├── proto_legacy_disable.go │ │ │ └── proto_legacy_enable.go │ │ ├── genname │ │ │ └── name.go │ │ ├── impl │ │ │ ├── api_export.go │ │ │ ├── checkinit.go │ │ │ ├── codec_extension.go │ │ │ ├── codec_field.go │ │ │ ├── codec_gen.go │ │ │ ├── codec_map.go │ │ │ ├── codec_map_go111.go │ │ │ ├── codec_map_go112.go │ │ │ ├── codec_message.go │ │ │ ├── codec_messageset.go │ │ │ ├── codec_reflect.go │ │ │ ├── codec_tables.go │ │ │ ├── codec_unsafe.go │ │ │ ├── convert.go │ │ │ ├── convert_list.go │ │ │ ├── convert_map.go │ │ │ ├── decode.go │ │ │ ├── encode.go │ │ │ ├── enum.go │ │ │ ├── extension.go │ │ │ ├── legacy_enum.go │ │ │ ├── legacy_export.go │ │ │ ├── legacy_extension.go │ │ │ ├── legacy_file.go │ │ │ ├── legacy_message.go │ │ │ ├── merge.go │ │ │ ├── merge_gen.go │ │ │ ├── message.go │ │ │ ├── message_reflect.go │ │ │ ├── message_reflect_field.go │ │ │ ├── message_reflect_gen.go │ │ │ ├── pointer_reflect.go │ │ │ ├── pointer_unsafe.go │ │ │ ├── validate.go │ │ │ └── weak.go │ │ ├── mapsort │ │ │ └── mapsort.go │ │ ├── pragma │ │ │ └── pragma.go │ │ ├── set │ │ │ └── ints.go │ │ ├── strs │ │ │ ├── strings.go │ │ │ ├── strings_pure.go │ │ │ └── strings_unsafe.go │ │ └── version │ │ │ └── version.go │ │ ├── proto │ │ ├── checkinit.go │ │ ├── decode.go │ │ ├── decode_gen.go │ │ ├── doc.go │ │ ├── encode.go │ │ ├── encode_gen.go │ │ ├── equal.go │ │ ├── extension.go │ │ ├── merge.go │ │ ├── messageset.go │ │ ├── proto.go │ │ ├── proto_methods.go │ │ ├── proto_reflect.go │ │ ├── reset.go │ │ ├── size.go │ │ ├── size_gen.go │ │ └── wrappers.go │ │ ├── reflect │ │ ├── protoreflect │ │ │ ├── methods.go │ │ │ ├── proto.go │ │ │ ├── source.go │ │ │ ├── type.go │ │ │ ├── value.go │ │ │ ├── value_pure.go │ │ │ ├── value_union.go │ │ │ └── value_unsafe.go │ │ └── protoregistry │ │ │ └── registry.go │ │ ├── runtime │ │ ├── protoiface │ │ │ ├── legacy.go │ │ │ └── methods.go │ │ └── protoimpl │ │ │ ├── impl.go │ │ │ └── version.go │ │ └── types │ │ └── known │ │ ├── anypb │ │ └── any.pb.go │ │ ├── durationpb │ │ └── duration.pb.go │ │ └── timestamppb │ │ └── timestamp.pb.go │ ├── gopkg.in │ ├── ini.v1 │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── Makefile │ │ ├── README.md │ │ ├── data_source.go │ │ ├── deprecated.go │ │ ├── error.go │ │ ├── file.go │ │ ├── helper.go │ │ ├── ini.go │ │ ├── key.go │ │ ├── parser.go │ │ ├── section.go │ │ └── struct.go │ ├── tomb.v1 │ │ ├── LICENSE │ │ ├── README.md │ │ └── tomb.go │ └── yaml.v2 │ │ ├── .travis.yml │ │ ├── LICENSE │ │ ├── LICENSE.libyaml │ │ ├── NOTICE │ │ ├── README.md │ │ ├── apic.go │ │ ├── decode.go │ │ ├── emitterc.go │ │ ├── encode.go │ │ ├── go.mod │ │ ├── parserc.go │ │ ├── readerc.go │ │ ├── resolve.go │ │ ├── scannerc.go │ │ ├── sorter.go │ │ ├── writerc.go │ │ ├── yaml.go │ │ ├── yamlh.go │ │ └── yamlprivateh.go │ └── modules.txt ├── circle.yml ├── codecov.yml ├── conf ├── authdata.json ├── config.json └── locationConfig.json ├── docker-entrypoint.sh ├── docs ├── RELEASE.md ├── crr-to-aws-s3.md ├── data-mover.md ├── healthcheck.md ├── lifecycle.md ├── metrics.md ├── oob-s3-ring.md ├── pause-resume.md ├── probe-requests.md ├── replication-metrics.md ├── run-crr-replay-locally.md ├── run-oob-locally.md ├── run-transition-locally.md └── transient-crr-source.md ├── eslint.config.mjs ├── extensions ├── gc │ ├── GarbageCollector.js │ ├── GarbageCollectorConfigValidator.js │ ├── GarbageCollectorMetrics.js │ ├── GarbageCollectorProducer.js │ ├── index.js │ ├── policy.json │ ├── service.js │ └── tasks │ │ └── GarbageCollectorTask.js ├── index.js ├── ingestion │ ├── IngestionConfigValidator.js │ ├── IngestionQueuePopulator.js │ ├── constants.js │ └── index.js ├── lifecycle │ ├── CircuitBreakerGroup.js │ ├── LifecycleConfigValidator.js │ ├── LifecycleMetrics.js │ ├── LifecycleOplogPopulatorUtils.js │ ├── LifecycleQueuePopulator.js │ ├── bucketProcessor │ │ ├── LifecycleBucketProcessor.js │ │ ├── policy.json │ │ └── task.js │ ├── conductor │ │ ├── LifecycleConductor.js │ │ ├── policy.json │ │ ├── policy_index_management.json │ │ └── service.js │ ├── index.js │ ├── management.js │ ├── objectProcessor │ │ ├── LifecycleObjectExpirationProcessor.js │ │ ├── LifecycleObjectProcessor.js │ │ ├── LifecycleObjectTransitionProcessor.js │ │ ├── policy.json │ │ ├── policy_transition.json │ │ └── task.js │ ├── tasks │ │ ├── LifecycleColdStatusArchiveTask.js │ │ ├── LifecycleDeleteObjectTask.js │ │ ├── LifecycleRequeueTask.js │ │ ├── LifecycleResetTransitionInProgressTask.js │ │ ├── LifecycleRetriggerRestoreTask.js │ │ ├── LifecycleTask.js │ │ ├── LifecycleTaskV2.js │ │ ├── LifecycleUpdateExpirationTask.js │ │ └── LifecycleUpdateTransitionTask.js │ └── util │ │ ├── RulesReducer.js │ │ ├── rules.js │ │ └── safeJsonParse.js ├── mongoProcessor │ ├── MongoProcessorConfigValidator.js │ ├── MongoProcessorMetrics.js │ ├── MongoQueueProcessor.js │ ├── constants.js │ ├── index.js │ ├── mongoProcessorTask.js │ └── utils │ │ ├── BucketMemState.js │ │ └── contentTypeHelper.js ├── notification │ ├── NotificationConfigManager.js │ ├── NotificationConfigValidator.js │ ├── NotificationOplogPopulatorUtils.js │ ├── NotificationQueuePopulator.js │ ├── configManager │ │ ├── BaseConfigManager.js │ │ ├── MongoConfigManager.js │ │ └── ZookeeperConfigManager.js │ ├── constants.js │ ├── destination │ │ ├── KafkaNotificationDestination.js │ │ ├── KafkaProducer.js │ │ ├── NotificationDestination.js │ │ └── index.js │ ├── index.js │ ├── queueProcessor │ │ ├── QueueProcessor.js │ │ └── task.js │ └── utils │ │ ├── auth.js │ │ ├── config.js │ │ ├── message.js │ │ └── safeJsonParse.js ├── oplogPopulator │ ├── OplogPopulator.js │ ├── OplogPopulatorConfigValidator.js │ ├── OplogPopulatorMetrics.js │ ├── OplogPopulatorTask.js │ ├── allocationStrategy │ │ ├── AllocationStrategy.js │ │ ├── ImmutableConnector.js │ │ ├── LeastFullConnector.js │ │ ├── RetainBucketsDecorator.js │ │ └── UniqueConnector.js │ ├── constants.js │ ├── index.js │ ├── modules │ │ ├── Allocator.js │ │ ├── Connector.js │ │ └── ConnectorsManager.js │ └── pipeline │ │ ├── MultipleBucketsPipelineFactory.js │ │ ├── PipelineFactory.js │ │ └── WildcardPipelineFactory.js ├── replication │ ├── ReplicationAPI.js │ ├── ReplicationConfigValidator.js │ ├── ReplicationMetric.js │ ├── ReplicationMetrics.js │ ├── ReplicationOplogPopulatorUtils.js │ ├── ReplicationQueuePopulator.js │ ├── constants.js │ ├── failedCRR │ │ ├── FailedCRRConsumer.js │ │ └── FailedCRRProducer.js │ ├── index.js │ ├── management.js │ ├── queueProcessor │ │ ├── QueueProcessor.js │ │ ├── task.js │ │ └── taskSchedulerHelpers.js │ ├── replay │ │ └── ReplayProducer.js │ ├── replicationStatusProcessor │ │ ├── ReplicationStatusProcessor.js │ │ └── task.js │ ├── tasks │ │ ├── CopyLocationTask.js │ │ ├── EchoBucket.js │ │ ├── MultipleBackendTask.js │ │ ├── ReplicateObject.js │ │ └── UpdateReplicationStatus.js │ └── utils │ │ ├── ObjectFailureEntry.js │ │ ├── SetupReplication.js │ │ ├── getExtMetrics.js │ │ ├── getLocationsFromStorageClass.js │ │ └── getRedisClient.js └── utils │ ├── AccountIdCache.js │ ├── BucketMdQueueEntry.js │ ├── LocationStatusStream.js │ ├── MongoUtils.js │ └── VaultClientWrapper.js ├── images └── federation │ └── Dockerfile ├── index.js ├── lib ├── BackbeatConsumer.js ├── BackbeatConsumerManager.js ├── BackbeatMetadataProxy.js ├── BackbeatProducer.js ├── CircuitBreaker.js ├── Config.js ├── KafkaBacklogMetrics.js ├── MetricsConsumer.js ├── MetricsProducer.js ├── OffsetLedger.js ├── api │ ├── BackbeatAPI.js │ ├── BackbeatRequest.js │ ├── BackbeatServer.js │ ├── Healthcheck.js │ ├── Metrics.js │ └── routes.js ├── clients │ ├── BackbeatClient.js │ ├── ClientManager.js │ ├── VaultClientCache.js │ ├── ZookeeperManager.js │ ├── backbeat-2017-07-01.api.json │ ├── utils.js │ └── zookeeper.js ├── config.joi.js ├── config │ └── configItems.joi.js ├── constants.js ├── credentials │ ├── AccountCredentials.js │ ├── CredentialsManager.js │ ├── RoleCredentials.js │ └── getVaultCredentials.js ├── management │ ├── applyWorkflowUpdates.js │ ├── convertOverlayFormat.js │ ├── convertServiceStateFormat.js │ ├── getWorkflowUpdates.js │ ├── index.js │ ├── operatorBackend.js │ ├── patchConfiguration.js │ ├── pensieveBackend.js │ └── serviceState.js ├── models │ ├── ActionQueueEntry.js │ ├── BucketMdQueueEntry.js │ ├── BucketQueueEntry.js │ ├── ColdStorageStatusQueueEntry.js │ ├── DeleteOpQueueEntry.js │ ├── LocationStatus.js │ ├── MetricsModel.js │ ├── ObjectQueueEntry.js │ ├── QueueEntry.js │ └── RaftLogEntry.js ├── provisioning │ └── ProvisionDispatcher.js ├── queuePopulator │ ├── BucketFileLogReader.js │ ├── IngestionPopulator.js │ ├── IngestionPopulatorMetrics.js │ ├── IngestionProducer.js │ ├── IngestionReader.js │ ├── KafkaLogConsumer │ │ ├── ListRecordStream.js │ │ └── LogConsumer.js │ ├── KafkaLogReader.js │ ├── LogReader.js │ ├── MongoLogReader.js │ ├── QueuePopulator.js │ ├── QueuePopulatorExtension.js │ └── RaftLogReader.js ├── tasks │ ├── BackbeatTask.js │ └── TaskScheduler.js ├── util │ ├── LocationStatusManager.js │ ├── OplogPopulatorUtils.js │ ├── buffer.js │ ├── entry.js │ ├── mapLimitWaitPendingIfError.js │ ├── metrics.js │ ├── probe.js │ ├── sortedSetHelper.js │ ├── topic.js │ └── versioning.js └── wrappers │ ├── ChangeStream.js │ └── KafkaConnectWrapper.js ├── monitoring ├── __init__.py ├── cold-storage │ └── dashboard.json ├── ingestion │ ├── ingestion-global-dashboard.json │ ├── ingestion-processor-alert.yaml │ ├── ingestion-processor-dashboard.json │ ├── ingestion-producer-alert.yaml │ └── ingestion-producer-dashboard.json ├── lifecycle │ ├── alerts.test.yaml │ ├── alerts.yaml │ ├── dashboard.json │ └── dashboard.py ├── notification │ ├── alerts.test.yaml │ ├── alerts.yaml │ ├── dashboard.json │ └── dashboard.py ├── oplog-populator │ ├── alerts.test.yaml │ ├── alerts.yaml │ ├── dashboard.json │ └── dashboard.py └── replication │ ├── alerts.test.yaml │ ├── alerts.yaml │ ├── dashboard.json │ └── dashboard.py ├── package.json ├── policies ├── queue_populator_policy.json └── read_accounts.json ├── res ├── backbeat-crr.png ├── backbeat-logo.png └── design-overview.png ├── tests ├── behavior │ └── queuePopulator.js ├── config.json ├── config.notification.json ├── config.roleAuth.json~origin_feature_S3C-4491-backbeat-expiration-backport ├── functional │ ├── api │ │ ├── Metrics.js │ │ ├── retry.js │ │ └── routes.js │ ├── ingestion │ │ ├── DummyPensieveCredentials.json │ │ ├── DummySSHKey.json │ │ ├── IngestionProducer.js │ │ ├── IngestionReader.js │ │ ├── MongoQueueProcessor.js │ │ ├── S3Mock.js │ │ ├── expectedEntries.js │ │ └── pauseResumeState.js │ ├── lib │ │ ├── BackbeatClient.js │ │ ├── BackbeatConsumer.js │ │ ├── BackbeatProducer.js │ │ ├── KafkaBacklogMetrics.spec.js │ │ └── ZookeeperManager.js │ ├── lifecycle │ │ ├── LifecycleBucketProcessor.spec.js │ │ ├── LifecycleConductor.spec.js │ │ ├── LifecycleObjectProcessor.spec.js │ │ ├── LifecycleTask.js │ │ ├── LifecycleTaskV2-versioned.js │ │ ├── LifecycleTaskV2.js │ │ ├── configObjects.js │ │ └── utils.js │ ├── notification │ │ └── NotificationConfigManager.js │ ├── queuePopulator │ │ ├── config │ │ │ └── s3c-config.json │ │ └── queuePopulator.spec.js │ ├── replication │ │ ├── pauseResumeState.js │ │ ├── queueProcessor.js │ │ └── streamedCopy.spec.js │ └── utils │ │ ├── BackbeatTestConsumer.spec.js │ │ ├── MetadataMock.js │ │ ├── S3Mock.js │ │ ├── VaultMock.js │ │ ├── getUrl.js │ │ ├── httpHelpers.js │ │ ├── mockRes.json │ │ ├── mockZookeeperClient.js │ │ ├── pauseResumeUtils │ │ ├── mockAPI.js │ │ └── zkStateHelper.js │ │ ├── sortedSetHelpers.js │ │ └── timeMachine.js ├── performance │ └── lifecycle │ │ └── conductor-check-memory-balloon.js ├── unit │ ├── OffsetLedger.spec.js │ ├── ProvisionDispatcher.spec.js │ ├── QueuePopulator.spec.js │ ├── ReplicationMetric.js │ ├── RoleCredentials.js │ ├── api │ │ ├── BackbeatAPI.spec.js │ │ ├── BackbeatRequest.spec.js │ │ └── routes.spec.js │ ├── backbeatConsumer.js │ ├── backbeatProducer.js │ ├── clients │ │ ├── VaultClientCache.spec.js │ │ └── ZookeeperManager.js │ ├── conf │ │ └── Config.js │ ├── credentials │ │ ├── CredentialsManager.js │ │ ├── external-creds.json │ │ └── utils.js │ ├── gc │ │ ├── GarbageCollector.spec.js │ │ ├── GarbageCollectorProducer.spec.js │ │ └── GarbageCollectorTask.spec.js │ ├── ingestion │ │ ├── IngestionPopulator.js │ │ ├── IngestionReader.js │ │ └── mongoProcessorMetrics.js │ ├── lib │ │ ├── config │ │ │ ├── Config.spec.js │ │ │ └── config.json │ │ ├── models │ │ │ ├── ActionQueueEntry.spec.js │ │ │ ├── ColdStorageStatusQueueEntry.spec.js │ │ │ ├── LocationStatus.spec.js │ │ │ ├── MetricsModel.js │ │ │ └── ObjectQueueEntry.spec.js │ │ ├── queuePopulator │ │ │ ├── LogReader.spec.js │ │ │ └── kafkaLogConsumer │ │ │ │ ├── ListRecordStream.js │ │ │ │ └── LogConsumer.js │ │ ├── tasks │ │ │ ├── BackbeatTask.spec.js │ │ │ └── TaskScheduler.spec.js │ │ ├── util │ │ │ ├── LocationStatusManager.spec.js │ │ │ ├── buffer.spec.js │ │ │ ├── circuitBreaker.spec.js │ │ │ ├── entry.spec.js │ │ │ ├── mapLimitWaitPendingIfError.spec.js │ │ │ ├── metrics.spec.js │ │ │ └── probe.spec.js │ │ └── wrappers │ │ │ ├── ChangeStream.js │ │ │ └── kafkaConnectWrapper.js │ ├── lifecycle │ │ ├── AccountIdCache.spec.js │ │ ├── CircuitBreakerGroup.spec.js │ │ ├── LifecycleBucketProcessor.spec.js │ │ ├── LifecycleColdStatusArchiveTask.spec.js │ │ ├── LifecycleConductor.spec.js │ │ ├── LifecycleDeleteObjectTask.spec.js │ │ ├── LifecycleObjectExpirationProcessor.spec.js │ │ ├── LifecycleObjectTransitionProcessor.spec.js │ │ ├── LifecycleOplogPopulatorUtils.spec.js │ │ ├── LifecycleQueuePopulator.spec.js │ │ ├── LifecycleResetTransitionInProgressTask.spec.js │ │ ├── LifecycleRetriggerRestoreTask.spec.js │ │ ├── LifecycleTask.spec.js │ │ ├── LifecycleUpdateExpirationTask.spec.js │ │ ├── LifecycleUpdateTransitionTask.spec.js │ │ ├── RulesReducer.spec.js │ │ ├── RulesReducerWithVersion.spec.js │ │ ├── rules.spec.js │ │ └── rulesWithVersion.spec.js │ ├── management │ │ ├── applyWorkflowUpdates.spec.js │ │ ├── convertOverlayFormat.spec.js │ │ ├── convertServiceStateFormat.spec.js │ │ ├── getWorkflowUpdates.spec.js │ │ └── patchConfiguration.js │ ├── mocks.js │ ├── notification │ │ ├── KafkaNotificationDestination.js │ │ ├── NotificationConfigManager.js │ │ ├── NotificationConfigValidator.js │ │ ├── NotificationQueuePopulator.js │ │ ├── NotificationQueueProcessor.js │ │ ├── QueueProcessor.spec.js │ │ ├── configManager │ │ │ ├── MongoConfigManager.spec.js │ │ │ └── ZookeeperConfigManager.spec.js │ │ └── utils │ │ │ ├── config.js │ │ │ └── message.js │ ├── oplogPopulator │ │ ├── Allocator.js │ │ ├── Connector.js │ │ ├── ConnectorsManager.js │ │ ├── allocationStrategy │ │ │ ├── AllocationStrategy.js │ │ │ ├── ImmutableConnector.js │ │ │ ├── LeastFullConnector.js │ │ │ ├── RetainBucketsDecorator.js │ │ │ └── UniqueConnector.js │ │ ├── oplogPopulator.js │ │ └── pipeline │ │ │ ├── MultipleBucketsPipelineFactory.js │ │ │ ├── PipelineFactory.js │ │ │ └── WildcardPipelineFactory.js │ ├── replication │ │ ├── CopyLocationTask.spec.js │ │ ├── MultipleBackendTask.js │ │ ├── ObjectFailureEntry.spec.js │ │ ├── QueueEntry.spec.js │ │ ├── QueueProcessor.spec.js │ │ ├── ReplicationAPI.spec.js │ │ ├── ReplicationMetrics.js │ │ ├── ReplicationQueuePopulator.spec.js │ │ ├── ReplicationStatusProcessor.js │ │ ├── UpdateReplicationStatus.js │ │ ├── getLocationsFromStorageClass.js │ │ └── taskSchedulerHelpers.spec.js │ ├── sortedSetHelper.js │ └── utils │ │ ├── LocationStatusStream.spec.js │ │ ├── MongoUtils.js │ │ └── VaultClientWrapper.spec.js └── utils │ ├── BackbeatClientMock.js │ ├── BackbeatTestConsumer.js │ ├── DummyLogger.js │ ├── Rule.js │ ├── S3ClientMock.js │ ├── TestConfigurator.js │ ├── fakeLogger.js │ ├── kafkaEntries.js │ ├── mockEntries.js │ ├── mockIngestionSite.js │ ├── syntheticbucketd.js │ └── wait_for_local_port.bash └── yarn.lock /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | localData/* 3 | localMetadata/* 4 | .git 5 | .github 6 | .tox 7 | coverage 8 | .DS_Store 9 | -------------------------------------------------------------------------------- /.github/dockerfiles/cloudserver/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG CLOUDSERVER_IMAGE=ghcr.io/scality/cloudserver:7.70.47 2 | 3 | FROM ${CLOUDSERVER_IMAGE} 4 | 5 | ADD ./config.json /conf/config.json 6 | 7 | RUN apt update \ 8 | && apt install -y curl \ 9 | && apt clean 10 | -------------------------------------------------------------------------------- /.github/dockerfiles/docker/requirements.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | apt-get update && apt-get install -y \ 5 | apt-transport-https \ 6 | ca-certificates \ 7 | curl \ 8 | git \ 9 | gnupg-agent \ 10 | gnupg2 \ 11 | software-properties-common \ 12 | gettext-base 13 | 14 | # Install docker 15 | curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - 16 | add-apt-repository \ 17 | "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ 18 | $(lsb_release -cs) \ 19 | stable" 20 | apt-get update 21 | apt-get install -y docker-ce docker-ce-cli containerd.io 22 | adduser eve docker 23 | -------------------------------------------------------------------------------- /.github/dockerfiles/ft/metadata-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "raftSessions": 3, 3 | "raftMembers": 5, 4 | "bucketdCount": 1, 5 | "bucketdWorkers": 1, 6 | "basePorts": { 7 | "bucketd": 9000, 8 | "repd": 4200, 9 | "repdAdmin": 4250 10 | }, 11 | "logLevel": "info", 12 | "env": { 13 | "METADATA_NEW_BUCKETS_VFORMAT": "v0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /.github/dockerfiles/kafka/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM spotify/kafka 2 | 3 | RUN echo "message.max.bytes=5000020" >> /opt/kafka_2.11-0.10.1.0/config/server.properties 4 | -------------------------------------------------------------------------------- /.github/dockerfiles/mongodb/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM mongo:5.0.21 2 | 3 | ENV USER=scality \ 4 | HOME_DIR=/home/scality \ 5 | CONF_DIR=/conf \ 6 | DATA_DIR=/data 7 | 8 | # Set up directories and permissions 9 | RUN mkdir -p /data/db /data/configdb && chown -R mongodb:mongodb /data/db /data/configdb; \ 10 | mkdir /logs; \ 11 | adduser --uid 1000 --disabled-password --gecos --quiet --shell /bin/bash scality 12 | 13 | # Set up environment variables and directories for scality user 14 | RUN mkdir ${CONF_DIR} && \ 15 | chown -R ${USER} ${CONF_DIR} && \ 16 | chown -R ${USER} ${DATA_DIR} 17 | 18 | # copy the mongo config file 19 | COPY /conf/mongod.conf /conf/mongod.conf 20 | COPY /conf/mongo-run.sh /conf/mongo-run.sh 21 | COPY /conf/initReplicaSet.js /conf/initReplicaSet.js 22 | 23 | EXPOSE 27017/tcp 24 | EXPOSE 27018 25 | 26 | # Set up CMD 27 | ENTRYPOINT ["bash", "/conf/mongo-run.sh"] 28 | CMD ["bash", "/conf/mongo-run.sh"] 29 | -------------------------------------------------------------------------------- /.github/dockerfiles/mongodb/conf/initReplicaSet.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-undef */ 2 | rs.initiate({ 3 | _id: 'rs0', 4 | members: [{ _id: 0, host: '127.0.0.1:27018' }] 5 | }); 6 | -------------------------------------------------------------------------------- /.github/dockerfiles/mongodb/conf/mongo-run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -exo pipefail 3 | 4 | init_RS() { 5 | sleep 5 6 | mongo --port 27018 /conf/initReplicaSet.js 7 | } 8 | init_RS & 9 | 10 | mongod --bind_ip_all --config=/conf/mongod.conf 11 | -------------------------------------------------------------------------------- /.github/dockerfiles/mongodb/conf/mongod.conf: -------------------------------------------------------------------------------- 1 | storage: 2 | journal: 3 | enabled: true 4 | engine: wiredTiger 5 | dbPath: "/data/db" 6 | processManagement: 7 | fork: false 8 | net: 9 | port: 27018 10 | bindIp: 0.0.0.0 11 | replication: 12 | replSetName: "rs0" 13 | enableMajorityReadConcern: true 14 | security: 15 | authorization: disabled -------------------------------------------------------------------------------- /.github/dockerfiles/sproxyd/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG SPROXYD_VERSION=7.10.11.0 2 | 3 | FROM ghcr.io/scality/federation/sproxyd:${SPROXYD_VERSION} 4 | 5 | ADD ./sproxyd.conf /conf/sproxyd.conf 6 | 7 | RUN chown root:root /conf/sproxyd.conf 8 | 9 | RUN mkdir /var/run/scality/ 10 | 11 | RUN touch /var/run/scality/scality-sproxyd-adminapi 12 | -------------------------------------------------------------------------------- /.github/dockerfiles/sproxyd/sproxyd.conf: -------------------------------------------------------------------------------- 1 | { 2 | "general": { 3 | "bind": "127.0.0.1", 4 | "conn_max": 3000, 5 | "conn_max_reuse": 100000, 6 | "consistent_reads": false, 7 | "consistent_writes": true, 8 | "max_proc_fd": 40960, 9 | "n_workers": 100, 10 | "n_responders": 100, 11 | "port": 8181, 12 | "split_chunk_size": 33554432, 13 | "split_control_by_request": false, 14 | "split_enabled": true, 15 | "split_gc_cos": 2, 16 | "split_memory_limit": 671088640, 17 | "split_n_get_workers": 20, 18 | "split_n_io_workers": 20, 19 | "split_n_put_workers": 20, 20 | "split_threshold": 67108864 21 | }, 22 | "ring_driver:0": { 23 | "alias": "arc", 24 | "type": "local", 25 | "queue_path": "/data", 26 | "trusted": 0 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /.github/dockerfiles/syntheticbucketd/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:22 2 | 3 | RUN mkdir /app 4 | RUN npm install -g \ 5 | typescript@4.9.5 6 | COPY package.json /app 7 | COPY yarn.lock /app 8 | RUN cd /app && yarn install --network-concurrency 1 9 | 10 | COPY tests/utils /app 11 | 12 | CMD ["node", "/app/syntheticbucketd.js", "200000", "1000"] 13 | -------------------------------------------------------------------------------- /.github/scripts/run_ft_tests.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -x 4 | set -eu -o pipefail 5 | 6 | NODE_PATH=${NODE_PATH:-node_modules} 7 | # port for cloudserver 8 | PORT=8000 9 | 10 | if [ ! -d "${NODE_PATH}/@zenko/cloudserver" ]; then 11 | echo "cloudserver module was not found!" 12 | exit 1 13 | fi 14 | 15 | trap killandsleep EXIT 16 | 17 | killandsleep () { 18 | kill -9 $(lsof -t -i:$PORT) || true 19 | sleep 10 20 | } 21 | 22 | cd ${NODE_PATH}/@zenko/cloudserver && yarn run mem_backend & bash tests/utils/wait_for_local_port.bash $PORT 40 23 | ./node_modules/.bin/nyc --clean --silent yarn run $1 24 | ./node_modules/.bin/nyc report --report-dir "./coverage/$1" --reporter=lcov 25 | -------------------------------------------------------------------------------- /.github/scripts/run_server_tests.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -x 4 | set -eu -o pipefail 5 | 6 | # port for backbeat server 7 | PORT=8900 8 | 9 | killandsleep () { 10 | kill -9 $(lsof -t -i:$PORT) || true 11 | sleep 10 12 | } 13 | 14 | ./node_modules/.bin/nyc --clean --silent yarn start & 15 | bash tests/utils/wait_for_local_port.bash $PORT 40 16 | yarn run $1 17 | killandsleep 18 | ./node_modules/.bin/nyc report --report-dir "./coverage/$1" --reporter=lcov 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | 5 | # Runtime data 6 | pids 7 | *.pid 8 | *.seed 9 | 10 | # Coverage directory used by tools like istanbul 11 | coverage 12 | .nyc_output 13 | 14 | # Dependencies 15 | node_modules 16 | 17 | # Redis 18 | *.rdb 19 | 20 | # Python cache, created when refreshing the monitoring files 21 | __pycache__ 22 | -------------------------------------------------------------------------------- /.nycrc: -------------------------------------------------------------------------------- 1 | { 2 | "all": true, 3 | "include": [ 4 | "bin/**/*.js", 5 | "lib/**/*.js", 6 | "extensions/**/*.js" 7 | ], 8 | "exclude": [ 9 | "**/*.spec.js" 10 | ] 11 | } -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-cayman -------------------------------------------------------------------------------- /bucket-scanner/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/scality/backbeat/bucket-scanner 2 | 3 | go 1.15 4 | 5 | require ( 6 | github.com/confluentinc/confluent-kafka-go v1.6.1 7 | github.com/go-resty/resty/v2 v2.5.0 8 | github.com/gosuri/uilive v0.0.4 9 | github.com/onsi/ginkgo v1.15.1 10 | github.com/onsi/gomega v1.11.0 11 | github.com/pkg/errors v0.9.1 12 | github.com/prometheus/client_golang v1.9.0 13 | github.com/sirupsen/logrus v1.8.1 14 | github.com/spf13/cobra v1.1.3 15 | github.com/spf13/viper v1.7.1 16 | ) 17 | -------------------------------------------------------------------------------- /bucket-scanner/pkg/console/console.go: -------------------------------------------------------------------------------- 1 | package console 2 | 3 | import ( 4 | "time" 5 | ) 6 | 7 | func NewMonitor(echoInterval time.Duration, interactive bool) Monitor { 8 | if interactive { 9 | return newInteractiveMonitor(echoInterval) 10 | } 11 | 12 | return &LoggingMonitor{} 13 | } 14 | -------------------------------------------------------------------------------- /bucket-scanner/pkg/console/types.go: -------------------------------------------------------------------------------- 1 | package console 2 | 3 | import "context" 4 | 5 | type ( 6 | Channel interface { 7 | Output(msg map[string]interface{}) 8 | } 9 | 10 | Monitor interface { 11 | Start(ctx context.Context) 12 | Stop() 13 | 14 | Append(name string) Channel 15 | AppendDebug(name string) Channel 16 | } 17 | ) 18 | -------------------------------------------------------------------------------- /bucket-scanner/pkg/counter/base_counter.go: -------------------------------------------------------------------------------- 1 | package counter 2 | 3 | import ( 4 | "fmt" 5 | "sync/atomic" 6 | 7 | "github.com/scality/backbeat/bucket-scanner/pkg/types" 8 | ) 9 | 10 | type baseCounter struct { 11 | count int64 12 | } 13 | 14 | // NewBaseCounter returns an atomic counter 15 | func NewBaseCounter() *baseCounter { 16 | return &baseCounter{} 17 | } 18 | 19 | func (c *baseCounter) Incr(key types.HashedNamer) { 20 | atomic.AddInt64(&c.count, 1) 21 | } 22 | 23 | func (c *baseCounter) Decr(key types.HashedNamer) { 24 | atomic.AddInt64(&c.count, -1) 25 | } 26 | 27 | func (c *baseCounter) Get() int64 { 28 | return atomic.LoadInt64(&c.count) 29 | } 30 | 31 | func (c *baseCounter) Set(i int64) { 32 | atomic.StoreInt64(&c.count, i) 33 | } 34 | 35 | func (c *baseCounter) String() string { 36 | return fmt.Sprint(c.Get()) 37 | } 38 | -------------------------------------------------------------------------------- /bucket-scanner/pkg/counter/counter_suite_test.go: -------------------------------------------------------------------------------- 1 | package counter_test 2 | 3 | import ( 4 | "testing" 5 | 6 | . "github.com/onsi/ginkgo" 7 | . "github.com/onsi/gomega" 8 | ) 9 | 10 | func TestCounter(t *testing.T) { 11 | RegisterFailHandler(Fail) 12 | RunSpecs(t, "Counter Suite") 13 | } 14 | -------------------------------------------------------------------------------- /bucket-scanner/pkg/counter/replication/replication_suite_test.go: -------------------------------------------------------------------------------- 1 | package replication_test 2 | 3 | import ( 4 | "testing" 5 | 6 | . "github.com/onsi/ginkgo" 7 | . "github.com/onsi/gomega" 8 | ) 9 | 10 | func TestReplication(t *testing.T) { 11 | RegisterFailHandler(Fail) 12 | RunSpecs(t, "Replication Suite") 13 | } 14 | -------------------------------------------------------------------------------- /bucket-scanner/pkg/counter/tracking_counter.go: -------------------------------------------------------------------------------- 1 | package counter 2 | 3 | type trackingCounter struct { 4 | baseCounter 5 | } 6 | 7 | // NewTrackingCounter returns a counter keeps track of them item being counted 8 | // to avoid incrementing twice for it if we see it from 2 difference sources, 9 | // or decrementing when it hasn't been accounted for after our process was started. 10 | // TODO: Not Implemented! 11 | func NewTrackingCounter() *trackingCounter { 12 | return &trackingCounter{ 13 | baseCounter: *NewBaseCounter(), 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/pkg/counter/types.go: -------------------------------------------------------------------------------- 1 | package counter 2 | 3 | import "github.com/scality/backbeat/bucket-scanner/pkg/types" 4 | 5 | type Counter interface { 6 | Incr(subject types.HashedNamer) 7 | Decr(subject types.HashedNamer) 8 | Get() int64 9 | Set(i int64) 10 | } 11 | -------------------------------------------------------------------------------- /bucket-scanner/pkg/exporter/exporter_suite_test.go: -------------------------------------------------------------------------------- 1 | package exporter_test 2 | 3 | import ( 4 | "testing" 5 | 6 | . "github.com/onsi/ginkgo" 7 | . "github.com/onsi/gomega" 8 | ) 9 | 10 | func TestExporter(t *testing.T) { 11 | RegisterFailHandler(Fail) 12 | RunSpecs(t, "Exporter Suite") 13 | } 14 | -------------------------------------------------------------------------------- /bucket-scanner/pkg/types/types_suite_test.go: -------------------------------------------------------------------------------- 1 | package types_test 2 | 3 | import ( 4 | "testing" 5 | 6 | . "github.com/onsi/ginkgo" 7 | . "github.com/onsi/gomega" 8 | ) 9 | 10 | func TestTypes(t *testing.T) { 11 | RegisterFailHandler(Fail) 12 | RunSpecs(t, "Types Suite") 13 | } 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/cespare/xxhash/v2/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - "1.x" 4 | - master 5 | env: 6 | - TAGS="" 7 | - TAGS="-tags purego" 8 | script: go test $TAGS -v ./... 9 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/cespare/xxhash/v2/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/cespare/xxhash/v2 2 | 3 | go 1.11 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/cespare/xxhash/v2/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scality/backbeat/cfab65dd82929b52ab496dd4a396e950800d634a/bucket-scanner/vendor/github.com/cespare/xxhash/v2/go.sum -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/cespare/xxhash/v2/xxhash_amd64.go: -------------------------------------------------------------------------------- 1 | // +build !appengine 2 | // +build gc 3 | // +build !purego 4 | 5 | package xxhash 6 | 7 | // Sum64 computes the 64-bit xxHash digest of b. 8 | // 9 | //go:noescape 10 | func Sum64(b []byte) uint64 11 | 12 | //go:noescape 13 | func writeBlocks(d *Digest, b []byte) int 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go: -------------------------------------------------------------------------------- 1 | // +build appengine 2 | 3 | // This file contains the safe implementations of otherwise unsafe-using code. 4 | 5 | package xxhash 6 | 7 | // Sum64String computes the 64-bit xxHash digest of s. 8 | func Sum64String(s string) uint64 { 9 | return Sum64([]byte(s)) 10 | } 11 | 12 | // WriteString adds more data to d. It always returns len(s), nil. 13 | func (d *Digest) WriteString(s string) (n int, err error) { 14 | return d.Write([]byte(s)) 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/.gitignore: -------------------------------------------------------------------------------- 1 | testconf.json 2 | go_rdkafka_generr/go_rdkafka_generr 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_darwin.go: -------------------------------------------------------------------------------- 1 | // +build !dynamic 2 | 3 | 4 | // This file was auto-generated by librdkafka_vendor/bundle-import.sh, DO NOT EDIT. 5 | 6 | package kafka 7 | 8 | // #cgo CFLAGS: -DUSE_VENDORED_LIBRDKAFKA 9 | // #cgo LDFLAGS: ${SRCDIR}/librdkafka_vendor/librdkafka_darwin.a -lz -lm -lsasl2 -ldl -lpthread 10 | import "C" 11 | 12 | // LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client 13 | const LibrdkafkaLinkInfo = "static darwin from librdkafka-static-bundle-v1.6.1.tgz" 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_dynamic.go: -------------------------------------------------------------------------------- 1 | // +build dynamic 2 | 3 | package kafka 4 | 5 | // #cgo pkg-config: rdkafka 6 | import "C" 7 | 8 | // LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client 9 | const LibrdkafkaLinkInfo = "dynamically linked to librdkafka" 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_glibc_linux.go: -------------------------------------------------------------------------------- 1 | // +build !dynamic 2 | // +build !musl 3 | 4 | // This file was auto-generated by librdkafka_vendor/bundle-import.sh, DO NOT EDIT. 5 | 6 | package kafka 7 | 8 | // #cgo CFLAGS: -DUSE_VENDORED_LIBRDKAFKA 9 | // #cgo LDFLAGS: ${SRCDIR}/librdkafka_vendor/librdkafka_glibc_linux.a -lm -ldl -lpthread -lrt 10 | import "C" 11 | 12 | // LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client 13 | const LibrdkafkaLinkInfo = "static glibc_linux from librdkafka-static-bundle-v1.6.1.tgz" 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/build_musl_linux.go: -------------------------------------------------------------------------------- 1 | // +build !dynamic 2 | // +build musl 3 | 4 | // This file was auto-generated by librdkafka_vendor/bundle-import.sh, DO NOT EDIT. 5 | 6 | package kafka 7 | 8 | // #cgo CFLAGS: -DUSE_VENDORED_LIBRDKAFKA 9 | // #cgo LDFLAGS: ${SRCDIR}/librdkafka_vendor/librdkafka_musl_linux.a -lm -ldl -lpthread -lrt -lpthread -lrt 10 | import "C" 11 | 12 | // LibrdkafkaLinkInfo explains how librdkafka was linked to the Go client 13 | const LibrdkafkaLinkInfo = "static musl_linux from librdkafka-static-bundle-v1.6.1.tgz" 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/.gitignore: -------------------------------------------------------------------------------- 1 | *.tar.gz 2 | *.tgz 3 | tmp* 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka.go: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Confluent Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package librdkafka 18 | 19 | // LibrdkafkaGoSubdir is a dummy variable needed to export something so the 20 | // file is not empty. 21 | var LibrdkafkaGoSubdir = true 22 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_darwin.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scality/backbeat/cfab65dd82929b52ab496dd4a396e950800d634a/bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_darwin.a -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_glibc_linux.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scality/backbeat/cfab65dd82929b52ab496dd4a396e950800d634a/bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_glibc_linux.a -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_musl_linux.a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scality/backbeat/cfab65dd82929b52ab496dd4a396e950800d634a/bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/librdkafka_vendor/librdkafka_musl_linux.a -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/confluentinc/confluent-kafka-go/kafka/testconf-example.json: -------------------------------------------------------------------------------- 1 | { 2 | "Brokers": "mybroker or $BROKERS env", 3 | "Topic": "test", 4 | "GroupID": "testgroup", 5 | "PerfMsgCount": 1000000, 6 | "PerfMsgSize": 100, 7 | "Config": ["api.version.request=true"] 8 | } 9 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/fsnotify/fsnotify/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.go] 4 | indent_style = tab 5 | indent_size = 4 6 | insert_final_newline = true 7 | 8 | [*.{yml,yaml}] 9 | indent_style = space 10 | indent_size = 2 11 | insert_final_newline = true 12 | trim_trailing_whitespace = true 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/fsnotify/fsnotify/.gitattributes: -------------------------------------------------------------------------------- 1 | go.sum linguist-generated 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/fsnotify/fsnotify/.gitignore: -------------------------------------------------------------------------------- 1 | # Setup a Global .gitignore for OS and editor generated files: 2 | # https://help.github.com/articles/ignoring-files 3 | # git config --global core.excludesfile ~/.gitignore_global 4 | 5 | .vagrant 6 | *.sublime-project 7 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/fsnotify/fsnotify/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: go 3 | 4 | go: 5 | - "stable" 6 | - "1.11.x" 7 | - "1.10.x" 8 | - "1.9.x" 9 | 10 | matrix: 11 | include: 12 | - go: "stable" 13 | env: GOLINT=true 14 | allow_failures: 15 | - go: tip 16 | fast_finish: true 17 | 18 | 19 | before_install: 20 | - if [ ! -z "${GOLINT}" ]; then go get -u golang.org/x/lint/golint; fi 21 | 22 | script: 23 | - go test --race ./... 24 | 25 | after_script: 26 | - test -z "$(gofmt -s -l -w . | tee /dev/stderr)" 27 | - if [ ! -z "${GOLINT}" ]; then echo running golint; golint --set_exit_status ./...; else echo skipping golint; fi 28 | - go vet ./... 29 | 30 | os: 31 | - linux 32 | - osx 33 | - windows 34 | 35 | notifications: 36 | email: false 37 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/fsnotify/fsnotify/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/fsnotify/fsnotify 2 | 3 | go 1.13 4 | 5 | require golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9 6 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/fsnotify/fsnotify/go.sum: -------------------------------------------------------------------------------- 1 | golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9 h1:L2auWcuQIvxz9xSEqzESnV/QN/gNRXNApHi3fYwl2w0= 2 | golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/fsnotify/fsnotify/open_mode_bsd.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build freebsd openbsd netbsd dragonfly 6 | 7 | package fsnotify 8 | 9 | import "golang.org/x/sys/unix" 10 | 11 | const openMode = unix.O_NONBLOCK | unix.O_RDONLY | unix.O_CLOEXEC 12 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/fsnotify/fsnotify/open_mode_darwin.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin 6 | 7 | package fsnotify 8 | 9 | import "golang.org/x/sys/unix" 10 | 11 | // note: this constant is not defined on BSD 12 | const openMode = unix.O_EVTONLY | unix.O_CLOEXEC 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/go-resty/resty/v2/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | *.test 24 | *.prof 25 | 26 | coverage.out 27 | coverage.txt 28 | 29 | # Exclude intellij IDE folders 30 | .idea/* 31 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/go-resty/resty/v2/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | os: linux 4 | 5 | go: # use travis ci resource effectively, keep always latest 2 versions and tip :) 6 | - 1.15.x 7 | - 1.14.x 8 | - tip 9 | 10 | install: 11 | - go get -v -t ./... 12 | 13 | script: 14 | - go test ./... -race -coverprofile=coverage.txt -covermode=atomic 15 | 16 | after_success: 17 | - bash <(curl -s https://codecov.io/bash) 18 | 19 | jobs: 20 | allow_failures: 21 | - go: tip 22 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/go-resty/resty/v2/WORKSPACE: -------------------------------------------------------------------------------- 1 | workspace(name = "resty") 2 | 3 | git_repository( 4 | name = "io_bazel_rules_go", 5 | remote = "https://github.com/bazelbuild/rules_go.git", 6 | tag = "0.13.0", 7 | ) 8 | 9 | git_repository( 10 | name = "bazel_gazelle", 11 | remote = "https://github.com/bazelbuild/bazel-gazelle.git", 12 | tag = "0.13.0", 13 | ) 14 | 15 | load( 16 | "@io_bazel_rules_go//go:def.bzl", 17 | "go_rules_dependencies", 18 | "go_register_toolchains", 19 | ) 20 | 21 | go_rules_dependencies() 22 | 23 | go_register_toolchains() 24 | 25 | load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") 26 | 27 | gazelle_dependencies() 28 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/go-resty/resty/v2/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/go-resty/resty/v2 2 | 3 | require golang.org/x/net v0.0.0-20201224014010-6772e930b67b 4 | 5 | go 1.11 6 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/go-resty/resty/v2/go.sum: -------------------------------------------------------------------------------- 1 | golang.org/x/net v0.0.0-20201224014010-6772e930b67b h1:iFwSg7t5GZmB/Q5TjiEAsdoLDrdJRC1RiF2WhuV29Qw= 2 | golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 3 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 4 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 5 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 6 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 7 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/golang/protobuf/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at http://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/golang/protobuf/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at http://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/golang/protobuf/ptypes/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package ptypes provides functionality for interacting with well-known types. 6 | package ptypes 7 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/gosuri/uilive/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | sudo: false 3 | 4 | matrix: 5 | include: 6 | - go: 1.11.x 7 | os: linux 8 | - go: 1.12.x 9 | os: linux 10 | - go: 1.11.x 11 | os: linux 12 | env: CROSS_COMPILE=true 13 | - go: 1.12.x 14 | os: linux 15 | env: CROSS_COMPILE=true 16 | - go: 1.11.x 17 | os: osx 18 | - go: 1.12.x 19 | os: osx 20 | 21 | install: 22 | - if [ "$TRAVIS_OS_NAME" = "linux" -a "$CROSS_COMPILE" = "true" ]; then go get github.com/mattn/go-isatty ; fi 23 | - go get -t -v ./... 24 | 25 | script: 26 | - go build 27 | - go test 28 | - if [ "$TRAVIS_OS_NAME" = "linux" -a "$CROSS_COMPILE" = "true" ]; then env GOOS=windows GOARCH=amd64 CGO_ENABLED=0 go build -v; fi 29 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/gosuri/uilive/Makefile: -------------------------------------------------------------------------------- 1 | test: 2 | @go test -race . 3 | 4 | examples: 5 | @go run -race ./example 6 | 7 | .PHONY: test examples 8 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/gosuri/uilive/doc.go: -------------------------------------------------------------------------------- 1 | // Package uilive provides a writer that live updates the terminal. It provides a buffered io.Writer that is flushed at a timed interval. 2 | package uilive 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/gosuri/uilive/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/gosuri/uilive 2 | 3 | go 1.10 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/gosuri/uilive/terminal_size.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | package uilive 4 | 5 | import ( 6 | "os" 7 | "runtime" 8 | "syscall" 9 | "unsafe" 10 | ) 11 | 12 | type windowSize struct { 13 | rows uint16 14 | cols uint16 15 | } 16 | 17 | var out *os.File 18 | var err error 19 | var sz windowSize 20 | 21 | func getTermSize() (int, int) { 22 | if runtime.GOOS == "openbsd" { 23 | out, err = os.OpenFile("/dev/tty", os.O_RDWR, 0) 24 | if err != nil { 25 | return 0, 0 26 | } 27 | 28 | } else { 29 | out, err = os.OpenFile("/dev/tty", os.O_WRONLY, 0) 30 | if err != nil { 31 | return 0, 0 32 | } 33 | } 34 | _, _, _ = syscall.Syscall(syscall.SYS_IOCTL, 35 | out.Fd(), uintptr(syscall.TIOCGWINSZ), uintptr(unsafe.Pointer(&sz))) 36 | return int(sz.cols), int(sz.rows) 37 | } 38 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/gosuri/uilive/terminal_size_windows.go: -------------------------------------------------------------------------------- 1 | // +build windows 2 | 3 | package uilive 4 | 5 | import ( 6 | "os" 7 | "unsafe" 8 | ) 9 | 10 | func getTermSize() (int, int) { 11 | out, err := os.Open("CONOUT$") 12 | if err != nil { 13 | return 0, 0 14 | } 15 | defer out.Close() 16 | 17 | var csbi consoleScreenBufferInfo 18 | ret, _, _ := procGetConsoleScreenBufferInfo.Call(out.Fd(), uintptr(unsafe.Pointer(&csbi))) 19 | if ret == 0 { 20 | return 0, 0 21 | } 22 | 23 | return int(csbi.window.right - csbi.window.left + 1), int(csbi.window.bottom - csbi.window.top + 1) 24 | } 25 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/gosuri/uilive/writer_posix.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | package uilive 4 | 5 | import ( 6 | "fmt" 7 | "strings" 8 | ) 9 | 10 | // clear the line and move the cursor up 11 | var clear = fmt.Sprintf("%c[%dA%c[2K", ESC, 1, ESC) 12 | 13 | func (w *Writer) clearLines() { 14 | _, _ = fmt.Fprint(w.Out, strings.Repeat(clear, w.lineCount)) 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/hashicorp/hcl/.gitignore: -------------------------------------------------------------------------------- 1 | y.output 2 | 3 | # ignore intellij files 4 | .idea 5 | *.iml 6 | *.ipr 7 | *.iws 8 | 9 | *.test 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/hashicorp/hcl/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | 3 | language: go 4 | 5 | go: 6 | - 1.x 7 | - tip 8 | 9 | branches: 10 | only: 11 | - master 12 | 13 | script: make test 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/hashicorp/hcl/Makefile: -------------------------------------------------------------------------------- 1 | TEST?=./... 2 | 3 | default: test 4 | 5 | fmt: generate 6 | go fmt ./... 7 | 8 | test: generate 9 | go get -t ./... 10 | go test $(TEST) $(TESTARGS) 11 | 12 | generate: 13 | go generate ./... 14 | 15 | updatedeps: 16 | go get -u golang.org/x/tools/cmd/stringer 17 | 18 | .PHONY: default generate test updatedeps 19 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/hashicorp/hcl/appveyor.yml: -------------------------------------------------------------------------------- 1 | version: "build-{branch}-{build}" 2 | image: Visual Studio 2015 3 | clone_folder: c:\gopath\src\github.com\hashicorp\hcl 4 | environment: 5 | GOPATH: c:\gopath 6 | init: 7 | - git config --global core.autocrlf false 8 | install: 9 | - cmd: >- 10 | echo %Path% 11 | 12 | go version 13 | 14 | go env 15 | 16 | go get -t ./... 17 | 18 | build_script: 19 | - cmd: go test -v ./... 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/hashicorp/hcl/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/hashicorp/hcl 2 | 3 | require github.com/davecgh/go-spew v1.1.1 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/hashicorp/hcl/go.sum: -------------------------------------------------------------------------------- 1 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 2 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/hashicorp/hcl/hcl.go: -------------------------------------------------------------------------------- 1 | // Package hcl decodes HCL into usable Go structures. 2 | // 3 | // hcl input can come in either pure HCL format or JSON format. 4 | // It can be parsed into an AST, and then decoded into a structure, 5 | // or it can be decoded directly from a string into a structure. 6 | // 7 | // If you choose to parse HCL into a raw AST, the benefit is that you 8 | // can write custom visitor implementations to implement custom 9 | // semantic checks. By default, HCL does not perform any semantic 10 | // checks. 11 | package hcl 12 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/hashicorp/hcl/hcl/parser/error.go: -------------------------------------------------------------------------------- 1 | package parser 2 | 3 | import ( 4 | "fmt" 5 | 6 | "github.com/hashicorp/hcl/hcl/token" 7 | ) 8 | 9 | // PosError is a parse error that contains a position. 10 | type PosError struct { 11 | Pos token.Pos 12 | Err error 13 | } 14 | 15 | func (e *PosError) Error() string { 16 | return fmt.Sprintf("At %s: %s", e.Pos, e.Err) 17 | } 18 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/hashicorp/hcl/lex.go: -------------------------------------------------------------------------------- 1 | package hcl 2 | 3 | import ( 4 | "unicode" 5 | "unicode/utf8" 6 | ) 7 | 8 | type lexModeValue byte 9 | 10 | const ( 11 | lexModeUnknown lexModeValue = iota 12 | lexModeHcl 13 | lexModeJson 14 | ) 15 | 16 | // lexMode returns whether we're going to be parsing in JSON 17 | // mode or HCL mode. 18 | func lexMode(v []byte) lexModeValue { 19 | var ( 20 | r rune 21 | w int 22 | offset int 23 | ) 24 | 25 | for { 26 | r, w = utf8.DecodeRune(v[offset:]) 27 | offset += w 28 | if unicode.IsSpace(r) { 29 | continue 30 | } 31 | if r == '{' { 32 | return lexModeJson 33 | } 34 | break 35 | } 36 | 37 | return lexModeHcl 38 | } 39 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/inconshreveable/mousetrap/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2014 Alan Shreve 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/inconshreveable/mousetrap/trap_others.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | package mousetrap 4 | 5 | // StartedByExplorer returns true if the program was invoked by the user 6 | // double-clicking on the executable from explorer.exe 7 | // 8 | // It is conservative and returns false if any of the internal calls fail. 9 | // It does not guarantee that the program was run from a terminal. It only can tell you 10 | // whether it was launched from explorer.exe 11 | // 12 | // On non-Windows platforms, it always returns false. 13 | func StartedByExplorer() bool { 14 | return false 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/magiconair/properties/.gitignore: -------------------------------------------------------------------------------- 1 | *.sublime-project 2 | *.sublime-workspace 3 | *.un~ 4 | *.swp 5 | .idea/ 6 | *.iml 7 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/magiconair/properties/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - 1.4.x 4 | - 1.5.x 5 | - 1.6.x 6 | - 1.7.x 7 | - 1.8.x 8 | - 1.9.x 9 | - "1.10.x" 10 | - "1.11.x" 11 | - "1.12.x" 12 | - tip 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/magiconair/properties/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/magiconair/properties 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mattn/go-isatty/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - tip 4 | 5 | os: 6 | - linux 7 | - osx 8 | 9 | before_install: 10 | - go get github.com/mattn/goveralls 11 | - go get golang.org/x/tools/cmd/cover 12 | script: 13 | - $HOME/gopath/bin/goveralls -repotoken 3gHdORO5k5ziZcWMBxnd9LrMZaJs8m9x5 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mattn/go-isatty/doc.go: -------------------------------------------------------------------------------- 1 | // Package isatty implements interface to isatty 2 | package isatty 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mattn/go-isatty/isatty_appengine.go: -------------------------------------------------------------------------------- 1 | // +build appengine 2 | 3 | package isatty 4 | 5 | // IsTerminal returns true if the file descriptor is terminal which 6 | // is always false on on appengine classic which is a sandboxed PaaS. 7 | func IsTerminal(fd uintptr) bool { 8 | return false 9 | } 10 | 11 | // IsCygwinTerminal() return true if the file descriptor is a cygwin or msys2 12 | // terminal. This is also always false on this environment. 13 | func IsCygwinTerminal(fd uintptr) bool { 14 | return false 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mattn/go-isatty/isatty_bsd.go: -------------------------------------------------------------------------------- 1 | // +build darwin freebsd openbsd netbsd dragonfly 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | import ( 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | const ioctlReadTermios = syscall.TIOCGETA 12 | 13 | // IsTerminal return true if the file descriptor is terminal. 14 | func IsTerminal(fd uintptr) bool { 15 | var termios syscall.Termios 16 | _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) 17 | return err == 0 18 | } 19 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mattn/go-isatty/isatty_linux.go: -------------------------------------------------------------------------------- 1 | // +build linux 2 | // +build !appengine,!ppc64,!ppc64le 3 | 4 | package isatty 5 | 6 | import ( 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | const ioctlReadTermios = syscall.TCGETS 12 | 13 | // IsTerminal return true if the file descriptor is terminal. 14 | func IsTerminal(fd uintptr) bool { 15 | var termios syscall.Termios 16 | _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) 17 | return err == 0 18 | } 19 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mattn/go-isatty/isatty_linux_ppc64x.go: -------------------------------------------------------------------------------- 1 | // +build linux 2 | // +build ppc64 ppc64le 3 | 4 | package isatty 5 | 6 | import ( 7 | "unsafe" 8 | 9 | syscall "golang.org/x/sys/unix" 10 | ) 11 | 12 | const ioctlReadTermios = syscall.TCGETS 13 | 14 | // IsTerminal return true if the file descriptor is terminal. 15 | func IsTerminal(fd uintptr) bool { 16 | var termios syscall.Termios 17 | _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) 18 | return err == 0 19 | } 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mattn/go-isatty/isatty_others.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | // IsCygwinTerminal return true if the file descriptor is a cygwin or msys2 7 | // terminal. This is also always false on this environment. 8 | func IsCygwinTerminal(fd uintptr) bool { 9 | return false 10 | } 11 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mattn/go-isatty/isatty_solaris.go: -------------------------------------------------------------------------------- 1 | // +build solaris 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | import ( 7 | "golang.org/x/sys/unix" 8 | ) 9 | 10 | // IsTerminal returns true if the given file descriptor is a terminal. 11 | // see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c 12 | func IsTerminal(fd uintptr) bool { 13 | var termio unix.Termio 14 | err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio) 15 | return err == nil 16 | } 17 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2012 Matt T. Proud (matt.proud@gmail.com) 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore: -------------------------------------------------------------------------------- 1 | cover.dat 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | 3 | cover: 4 | go test -cover -v -coverprofile=cover.dat ./... 5 | go tool cover -func cover.dat 6 | 7 | .PHONY: cover 8 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 Matt T. Proud 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Package pbutil provides record length-delimited Protocol Buffer streaming. 16 | package pbutil 17 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mitchellh/mapstructure/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | go: 4 | - "1.11.x" 5 | - tip 6 | 7 | script: 8 | - go test 9 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 1.1.2 2 | 3 | * Fix error when decode hook decodes interface implementation into interface 4 | type. [GH-140] 5 | 6 | ## 1.1.1 7 | 8 | * Fix panic that can happen in `decodePtr` 9 | 10 | ## 1.1.0 11 | 12 | * Added `StringToIPHookFunc` to convert `string` to `net.IP` and `net.IPNet` [GH-133] 13 | * Support struct to struct decoding [GH-137] 14 | * If source map value is nil, then destination map value is nil (instead of empty) 15 | * If source slice value is nil, then destination slice value is nil (instead of empty) 16 | * If source pointer is nil, then destination pointer is set to nil (instead of 17 | allocated zero value of type) 18 | 19 | ## 1.0.0 20 | 21 | * Initial tagged stable release. 22 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/mitchellh/mapstructure/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/mitchellh/mapstructure 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/nxadm/tail/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .test/ 3 | examples/_* -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/nxadm/tail/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang 2 | 3 | RUN mkdir -p $GOPATH/src/github.com/nxadm/tail/ 4 | ADD . $GOPATH/src/github.com/nxadm/tail/ 5 | 6 | # expecting to fetch dependencies successfully. 7 | RUN go get -v github.com/nxadm/tail 8 | 9 | # expecting to run the test successfully. 10 | RUN go test -v github.com/nxadm/tail 11 | 12 | # expecting to install successfully 13 | RUN go install -v github.com/nxadm/tail 14 | RUN go install -v github.com/nxadm/tail/cmd/gotail 15 | 16 | RUN $GOPATH/bin/gotail -h || true 17 | 18 | ENV PATH $GOPATH/bin:$PATH 19 | CMD ["gotail"] 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/nxadm/tail/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/nxadm/tail 2 | 3 | go 1.13 4 | 5 | require ( 6 | github.com/fsnotify/fsnotify v1.4.9 7 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 8 | ) 9 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/nxadm/tail/go.sum: -------------------------------------------------------------------------------- 1 | github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= 2 | github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= 3 | golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9 h1:L2auWcuQIvxz9xSEqzESnV/QN/gNRXNApHi3fYwl2w0= 4 | golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 5 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= 6 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= 7 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/nxadm/tail/ratelimiter/storage.go: -------------------------------------------------------------------------------- 1 | package ratelimiter 2 | 3 | type Storage interface { 4 | GetBucketFor(string) (*LeakyBucket, error) 5 | SetBucketFor(string, LeakyBucket) error 6 | } 7 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/nxadm/tail/tail_posix.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail 2 | // +build !windows 3 | 4 | package tail 5 | 6 | import ( 7 | "os" 8 | ) 9 | 10 | // Deprecated: this function is only useful internally and, as such, 11 | // it will be removed from the API in a future major release. 12 | // 13 | // OpenFile proxies a os.Open call for a file so it can be correctly tailed 14 | // on POSIX and non-POSIX OSes like MS Windows. 15 | func OpenFile(name string) (file *os.File, err error) { 16 | return os.Open(name) 17 | } 18 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/nxadm/tail/tail_windows.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 FOSS contributors of https://github.com/nxadm/tail 2 | // +build windows 3 | 4 | package tail 5 | 6 | import ( 7 | "os" 8 | 9 | "github.com/nxadm/tail/winfile" 10 | ) 11 | 12 | // Deprecated: this function is only useful internally and, as such, 13 | // it will be removed from the API in a future major release. 14 | // 15 | // OpenFile proxies a os.Open call for a file so it can be correctly tailed 16 | // on POSIX and non-POSIX OSes like MS Windows. 17 | func OpenFile(name string) (file *os.File, err error) { 18 | return winfile.OpenFile(name, os.O_RDONLY, 0) 19 | } 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | TODO 3 | tmp/**/* 4 | *.coverprofile 5 | .vscode 6 | .idea/ 7 | *.log 8 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - tip 4 | - 1.16.x 5 | - 1.15.x 6 | 7 | cache: 8 | directories: 9 | - $GOPATH/pkg/mod 10 | 11 | # allow internal package imports, necessary for forked repositories 12 | go_import_path: github.com/onsi/ginkgo 13 | 14 | install: 15 | - GO111MODULE="off" go get -v -t ./... 16 | - GO111MODULE="off" go get golang.org/x/tools/cmd/cover 17 | - GO111MODULE="off" go get github.com/onsi/gomega 18 | - GO111MODULE="off" go install github.com/onsi/ginkgo/ginkgo 19 | - export PATH=$GOPATH/bin:$PATH 20 | 21 | script: 22 | - GO111MODULE="on" go mod tidy && git diff --exit-code go.mod go.sum 23 | - go vet 24 | - ginkgo -r --randomizeAllSpecs --randomizeSuites --race --trace 25 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/onsi/ginkgo 2 | 3 | go 1.15 4 | 5 | require ( 6 | github.com/nxadm/tail v1.4.8 7 | github.com/onsi/gomega v1.10.1 8 | golang.org/x/sys v0.0.0-20210112080510-489259a85091 9 | golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e 10 | ) 11 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/internal/global/init.go: -------------------------------------------------------------------------------- 1 | package global 2 | 3 | import ( 4 | "time" 5 | 6 | "github.com/onsi/ginkgo/internal/failer" 7 | "github.com/onsi/ginkgo/internal/suite" 8 | ) 9 | 10 | const DefaultTimeout = time.Duration(1 * time.Second) 11 | 12 | var Suite *suite.Suite 13 | var Failer *failer.Failer 14 | 15 | func init() { 16 | InitializeGlobals() 17 | } 18 | 19 | func InitializeGlobals() { 20 | Failer = failer.New() 21 | Suite = suite.New(Failer) 22 | } 23 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/internal/leafnodes/interfaces.go: -------------------------------------------------------------------------------- 1 | package leafnodes 2 | 3 | import ( 4 | "github.com/onsi/ginkgo/types" 5 | ) 6 | 7 | type BasicNode interface { 8 | Type() types.SpecComponentType 9 | Run() (types.SpecState, types.SpecFailure) 10 | CodeLocation() types.CodeLocation 11 | } 12 | 13 | type SubjectNode interface { 14 | BasicNode 15 | 16 | Text() string 17 | Flag() types.FlagType 18 | Samples() int 19 | } 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor.go: -------------------------------------------------------------------------------- 1 | package remote 2 | 3 | import "os" 4 | 5 | /* 6 | The OutputInterceptor is used by the ForwardingReporter to 7 | intercept and capture all stdin and stderr output during a test run. 8 | */ 9 | type OutputInterceptor interface { 10 | StartInterceptingOutput() error 11 | StopInterceptingAndReturnOutput() (string, error) 12 | StreamTo(*os.File) 13 | } 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_win.go: -------------------------------------------------------------------------------- 1 | // +build windows 2 | 3 | package remote 4 | 5 | import ( 6 | "errors" 7 | "os" 8 | ) 9 | 10 | func NewOutputInterceptor() OutputInterceptor { 11 | return &outputInterceptor{} 12 | } 13 | 14 | type outputInterceptor struct { 15 | intercepting bool 16 | } 17 | 18 | func (interceptor *outputInterceptor) StartInterceptingOutput() error { 19 | if interceptor.intercepting { 20 | return errors.New("Already intercepting output!") 21 | } 22 | interceptor.intercepting = true 23 | 24 | // not working on windows... 25 | 26 | return nil 27 | } 28 | 29 | func (interceptor *outputInterceptor) StopInterceptingAndReturnOutput() (string, error) { 30 | // not working on windows... 31 | interceptor.intercepting = false 32 | 33 | return "", nil 34 | } 35 | 36 | func (interceptor *outputInterceptor) StreamTo(*os.File) {} 37 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/internal/spec_iterator/spec_iterator.go: -------------------------------------------------------------------------------- 1 | package spec_iterator 2 | 3 | import ( 4 | "errors" 5 | 6 | "github.com/onsi/ginkgo/internal/spec" 7 | ) 8 | 9 | var ErrClosed = errors.New("no more specs to run") 10 | 11 | type SpecIterator interface { 12 | Next() (*spec.Spec, error) 13 | NumberOfSpecsPriorToIteration() int 14 | NumberOfSpecsToProcessIfKnown() (int, bool) 15 | NumberOfSpecsThatWillBeRunIfKnown() (int, bool) 16 | } 17 | 18 | type Counter struct { 19 | Index int `json:"index"` 20 | } 21 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/internal/specrunner/random_id.go: -------------------------------------------------------------------------------- 1 | package specrunner 2 | 3 | import ( 4 | "crypto/rand" 5 | "fmt" 6 | ) 7 | 8 | func randomID() string { 9 | b := make([]byte, 8) 10 | _, err := rand.Read(b) 11 | if err != nil { 12 | return "" 13 | } 14 | return fmt.Sprintf("%x-%x-%x-%x", b[0:2], b[2:4], b[4:6], b[6:8]) 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/reporters/reporter.go: -------------------------------------------------------------------------------- 1 | package reporters 2 | 3 | import ( 4 | "github.com/onsi/ginkgo/config" 5 | "github.com/onsi/ginkgo/types" 6 | ) 7 | 8 | type Reporter interface { 9 | SpecSuiteWillBegin(config config.GinkgoConfigType, summary *types.SuiteSummary) 10 | BeforeSuiteDidRun(setupSummary *types.SetupSummary) 11 | SpecWillRun(specSummary *types.SpecSummary) 12 | SpecDidComplete(specSummary *types.SpecSummary) 13 | AfterSuiteDidRun(setupSummary *types.SetupSummary) 14 | SpecSuiteDidEnd(summary *types.SuiteSummary) 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-colorable/colorable_others.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | package colorable 4 | 5 | import ( 6 | "io" 7 | "os" 8 | ) 9 | 10 | func NewColorable(file *os.File) io.Writer { 11 | if file == nil { 12 | panic("nil passed instead of *os.File to NewColorable()") 13 | } 14 | 15 | return file 16 | } 17 | 18 | func NewColorableStdout() io.Writer { 19 | return os.Stdout 20 | } 21 | 22 | func NewColorableStderr() io.Writer { 23 | return os.Stderr 24 | } 25 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/README.md: -------------------------------------------------------------------------------- 1 | # go-isatty 2 | 3 | isatty for golang 4 | 5 | ## Usage 6 | 7 | ```go 8 | package main 9 | 10 | import ( 11 | "fmt" 12 | "github.com/mattn/go-isatty" 13 | "os" 14 | ) 15 | 16 | func main() { 17 | if isatty.IsTerminal(os.Stdout.Fd()) { 18 | fmt.Println("Is Terminal") 19 | } else { 20 | fmt.Println("Is Not Terminal") 21 | } 22 | } 23 | ``` 24 | 25 | ## Installation 26 | 27 | ``` 28 | $ go get github.com/mattn/go-isatty 29 | ``` 30 | 31 | # License 32 | 33 | MIT 34 | 35 | # Author 36 | 37 | Yasuhiro Matsumoto (a.k.a mattn) 38 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/doc.go: -------------------------------------------------------------------------------- 1 | // Package isatty implements interface to isatty 2 | package isatty 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_appengine.go: -------------------------------------------------------------------------------- 1 | // +build appengine 2 | 3 | package isatty 4 | 5 | // IsTerminal returns true if the file descriptor is terminal which 6 | // is always false on on appengine classic which is a sandboxed PaaS. 7 | func IsTerminal(fd uintptr) bool { 8 | return false 9 | } 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_bsd.go: -------------------------------------------------------------------------------- 1 | // +build darwin freebsd openbsd netbsd 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | import ( 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | const ioctlReadTermios = syscall.TIOCGETA 12 | 13 | // IsTerminal return true if the file descriptor is terminal. 14 | func IsTerminal(fd uintptr) bool { 15 | var termios syscall.Termios 16 | _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) 17 | return err == 0 18 | } 19 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_linux.go: -------------------------------------------------------------------------------- 1 | // +build linux 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | import ( 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | const ioctlReadTermios = syscall.TCGETS 12 | 13 | // IsTerminal return true if the file descriptor is terminal. 14 | func IsTerminal(fd uintptr) bool { 15 | var termios syscall.Termios 16 | _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) 17 | return err == 0 18 | } 19 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_solaris.go: -------------------------------------------------------------------------------- 1 | // +build solaris 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | import ( 7 | "golang.org/x/sys/unix" 8 | ) 9 | 10 | // IsTerminal returns true if the given file descriptor is a terminal. 11 | // see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c 12 | func IsTerminal(fd uintptr) bool { 13 | var termio unix.Termio 14 | err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio) 15 | return err == nil 16 | } 17 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_windows.go: -------------------------------------------------------------------------------- 1 | // +build windows 2 | // +build !appengine 3 | 4 | package isatty 5 | 6 | import ( 7 | "syscall" 8 | "unsafe" 9 | ) 10 | 11 | var kernel32 = syscall.NewLazyDLL("kernel32.dll") 12 | var procGetConsoleMode = kernel32.NewProc("GetConsoleMode") 13 | 14 | // IsTerminal return true if the file descriptor is terminal. 15 | func IsTerminal(fd uintptr) bool { 16 | var st uint32 17 | r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0) 18 | return r != 0 && e == 0 19 | } 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/types/code_location.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | type CodeLocation struct { 8 | FileName string 9 | LineNumber int 10 | FullStackTrace string 11 | } 12 | 13 | func (codeLocation CodeLocation) String() string { 14 | return fmt.Sprintf("%s:%d", codeLocation.FileName, codeLocation.LineNumber) 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/ginkgo/types/synchronization.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | type RemoteBeforeSuiteState int 8 | 9 | const ( 10 | RemoteBeforeSuiteStateInvalid RemoteBeforeSuiteState = iota 11 | 12 | RemoteBeforeSuiteStatePending 13 | RemoteBeforeSuiteStatePassed 14 | RemoteBeforeSuiteStateFailed 15 | RemoteBeforeSuiteStateDisappeared 16 | ) 17 | 18 | type RemoteBeforeSuiteData struct { 19 | Data []byte 20 | State RemoteBeforeSuiteState 21 | } 22 | 23 | func (r RemoteBeforeSuiteData) ToJSON() []byte { 24 | data, _ := json.Marshal(r) 25 | return data 26 | } 27 | 28 | type RemoteAfterSuiteData struct { 29 | CanRun bool 30 | } 31 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.test 3 | . 4 | .idea 5 | gomega.iml 6 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | arch: 3 | - amd64 4 | - ppc64le 5 | 6 | go: 7 | - gotip 8 | - 1.16.x 9 | - 1.15.x 10 | 11 | env: 12 | - GO111MODULE=on 13 | 14 | install: skip 15 | 16 | script: 17 | - go mod tidy && git diff --exit-code go.mod go.sum 18 | - make test 19 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM golang:1.15 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/RELEASING.md: -------------------------------------------------------------------------------- 1 | A Gomega release is a tagged sha and a GitHub release. To cut a release: 2 | 3 | 1. Ensure CHANGELOG.md is up to date. 4 | - Use `git log --pretty=format:'- %s [%h]' HEAD...vX.X.X` to list all the commits since the last release 5 | - Categorize the changes into 6 | - Breaking Changes (requires a major version) 7 | - New Features (minor version) 8 | - Fixes (fix version) 9 | - Maintenance (which in general should not be mentioned in `CHANGELOG.md` as they have no user impact) 10 | 2. Update GOMEGA_VERSION in `gomega_dsl.go` 11 | 3. Push a commit with the version number as the commit message (e.g. `v1.3.0`) 12 | 4. Create a new [GitHub release](https://help.github.com/articles/creating-releases/) with the version number as the tag (e.g. `v1.3.0`). List the key changes in the release notes. 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.0' 2 | 3 | services: 4 | test: 5 | build: 6 | dockerfile: Dockerfile 7 | context: . 8 | working_dir: /app 9 | volumes: 10 | - ${PWD}:/app 11 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/onsi/gomega 2 | 3 | go 1.14 4 | 5 | require ( 6 | github.com/golang/protobuf v1.4.3 7 | github.com/onsi/ginkgo v1.12.1 8 | golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb 9 | gopkg.in/yaml.v2 v2.4.0 10 | ) 11 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/matchers/attributes_slice.go: -------------------------------------------------------------------------------- 1 | package matchers 2 | 3 | import ( 4 | "encoding/xml" 5 | "strings" 6 | ) 7 | 8 | type attributesSlice []xml.Attr 9 | 10 | func (attrs attributesSlice) Len() int { return len(attrs) } 11 | func (attrs attributesSlice) Less(i, j int) bool { 12 | return strings.Compare(attrs[i].Name.Local, attrs[j].Name.Local) == -1 13 | } 14 | func (attrs attributesSlice) Swap(i, j int) { attrs[i], attrs[j] = attrs[j], attrs[i] } 15 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go: -------------------------------------------------------------------------------- 1 | // untested sections: 2 2 | 3 | package matchers 4 | 5 | import ( 6 | "fmt" 7 | 8 | "github.com/onsi/gomega/format" 9 | ) 10 | 11 | type BeEmptyMatcher struct { 12 | } 13 | 14 | func (matcher *BeEmptyMatcher) Match(actual interface{}) (success bool, err error) { 15 | length, ok := lengthOf(actual) 16 | if !ok { 17 | return false, fmt.Errorf("BeEmpty matcher expects a string/array/map/channel/slice. Got:\n%s", format.Object(actual, 1)) 18 | } 19 | 20 | return length == 0, nil 21 | } 22 | 23 | func (matcher *BeEmptyMatcher) FailureMessage(actual interface{}) (message string) { 24 | return format.Message(actual, "to be empty") 25 | } 26 | 27 | func (matcher *BeEmptyMatcher) NegatedFailureMessage(actual interface{}) (message string) { 28 | return format.Message(actual, "not to be empty") 29 | } 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go: -------------------------------------------------------------------------------- 1 | // untested sections: 2 2 | 3 | package matchers 4 | 5 | import ( 6 | "fmt" 7 | 8 | "github.com/onsi/gomega/format" 9 | ) 10 | 11 | type BeFalseMatcher struct { 12 | } 13 | 14 | func (matcher *BeFalseMatcher) Match(actual interface{}) (success bool, err error) { 15 | if !isBool(actual) { 16 | return false, fmt.Errorf("Expected a boolean. Got:\n%s", format.Object(actual, 1)) 17 | } 18 | 19 | return actual == false, nil 20 | } 21 | 22 | func (matcher *BeFalseMatcher) FailureMessage(actual interface{}) (message string) { 23 | return format.Message(actual, "to be false") 24 | } 25 | 26 | func (matcher *BeFalseMatcher) NegatedFailureMessage(actual interface{}) (message string) { 27 | return format.Message(actual, "not to be false") 28 | } 29 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go: -------------------------------------------------------------------------------- 1 | // untested sections: 2 2 | 3 | package matchers 4 | 5 | import "github.com/onsi/gomega/format" 6 | 7 | type BeNilMatcher struct { 8 | } 9 | 10 | func (matcher *BeNilMatcher) Match(actual interface{}) (success bool, err error) { 11 | return isNil(actual), nil 12 | } 13 | 14 | func (matcher *BeNilMatcher) FailureMessage(actual interface{}) (message string) { 15 | return format.Message(actual, "to be nil") 16 | } 17 | 18 | func (matcher *BeNilMatcher) NegatedFailureMessage(actual interface{}) (message string) { 19 | return format.Message(actual, "not to be nil") 20 | } 21 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go: -------------------------------------------------------------------------------- 1 | // untested sections: 2 2 | 3 | package matchers 4 | 5 | import ( 6 | "fmt" 7 | 8 | "github.com/onsi/gomega/format" 9 | ) 10 | 11 | type BeTrueMatcher struct { 12 | } 13 | 14 | func (matcher *BeTrueMatcher) Match(actual interface{}) (success bool, err error) { 15 | if !isBool(actual) { 16 | return false, fmt.Errorf("Expected a boolean. Got:\n%s", format.Object(actual, 1)) 17 | } 18 | 19 | return actual.(bool), nil 20 | } 21 | 22 | func (matcher *BeTrueMatcher) FailureMessage(actual interface{}) (message string) { 23 | return format.Message(actual, "to be true") 24 | } 25 | 26 | func (matcher *BeTrueMatcher) NegatedFailureMessage(actual interface{}) (message string) { 27 | return format.Message(actual, "not to be true") 28 | } 29 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/matchers/be_zero_matcher.go: -------------------------------------------------------------------------------- 1 | package matchers 2 | 3 | import ( 4 | "reflect" 5 | 6 | "github.com/onsi/gomega/format" 7 | ) 8 | 9 | type BeZeroMatcher struct { 10 | } 11 | 12 | func (matcher *BeZeroMatcher) Match(actual interface{}) (success bool, err error) { 13 | if actual == nil { 14 | return true, nil 15 | } 16 | zeroValue := reflect.Zero(reflect.TypeOf(actual)).Interface() 17 | 18 | return reflect.DeepEqual(zeroValue, actual), nil 19 | 20 | } 21 | 22 | func (matcher *BeZeroMatcher) FailureMessage(actual interface{}) (message string) { 23 | return format.Message(actual, "to be zero-valued") 24 | } 25 | 26 | func (matcher *BeZeroMatcher) NegatedFailureMessage(actual interface{}) (message string) { 27 | return format.Message(actual, "not to be zero-valued") 28 | } 29 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/matchers/support/goraph/node/node.go: -------------------------------------------------------------------------------- 1 | package node 2 | 3 | type Node struct { 4 | ID int 5 | Value interface{} 6 | } 7 | 8 | type NodeOrderedSet []Node 9 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/matchers/support/goraph/util/util.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import "math" 4 | 5 | func Odd(n int) bool { 6 | return math.Mod(float64(n), 2.0) == 1.0 7 | } 8 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/onsi/gomega/types/types.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | type TWithHelper interface { 4 | Helper() 5 | } 6 | 7 | type GomegaFailHandler func(message string, callerSkip ...int) 8 | 9 | type GomegaFailWrapper struct { 10 | Fail GomegaFailHandler 11 | TWithHelper TWithHelper 12 | } 13 | 14 | //A simple *testing.T interface wrapper 15 | type GomegaTestingT interface { 16 | Fatalf(format string, args ...interface{}) 17 | } 18 | 19 | //All Gomega matchers must implement the GomegaMatcher interface 20 | // 21 | //For details on writing custom matchers, check out: http://onsi.github.io/gomega/#adding-your-own-matchers 22 | type GomegaMatcher interface { 23 | Match(actual interface{}) (success bool, err error) 24 | FailureMessage(actual interface{}) (message string) 25 | NegatedFailureMessage(actual interface{}) (message string) 26 | } 27 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pelletier/go-toml/.gitignore: -------------------------------------------------------------------------------- 1 | test_program/test_program_bin 2 | fuzz/ 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pelletier/go-toml/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: go 3 | go: 4 | - 1.8.x 5 | - 1.9.x 6 | - 1.10.x 7 | - tip 8 | matrix: 9 | allow_failures: 10 | - go: tip 11 | fast_finish: true 12 | script: 13 | - if [ -n "$(go fmt ./...)" ]; then exit 1; fi 14 | - ./test.sh 15 | - ./benchmark.sh $TRAVIS_BRANCH https://github.com/$TRAVIS_REPO_SLUG.git 16 | before_install: 17 | - go get github.com/axw/gocov/gocov 18 | - go get github.com/mattn/goveralls 19 | - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi 20 | branches: 21 | only: [master] 22 | after_success: 23 | - $HOME/gopath/bin/goveralls -service=travis-ci -coverprofile=coverage.out -repotoken $COVERALLS_TOKEN 24 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pelletier/go-toml/doc.go: -------------------------------------------------------------------------------- 1 | // Package toml is a TOML parser and manipulation library. 2 | // 3 | // This version supports the specification as described in 4 | // https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.4.0.md 5 | // 6 | // Marshaling 7 | // 8 | // Go-toml can marshal and unmarshal TOML documents from and to data 9 | // structures. 10 | // 11 | // TOML document as a tree 12 | // 13 | // Go-toml can operate on a TOML document as a tree. Use one of the Load* 14 | // functions to parse TOML data and obtain a Tree instance, then one of its 15 | // methods to manipulate the tree. 16 | // 17 | // JSONPath-like queries 18 | // 19 | // The package github.com/pelletier/go-toml/query implements a system 20 | // similar to JSONPath to quickly retrieve elements of a TOML document using a 21 | // single expression. See the package documentation for more information. 22 | // 23 | package toml 24 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pelletier/go-toml/example-crlf.toml: -------------------------------------------------------------------------------- 1 | # This is a TOML document. Boom. 2 | 3 | title = "TOML Example" 4 | 5 | [owner] 6 | name = "Tom Preston-Werner" 7 | organization = "GitHub" 8 | bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." 9 | dob = 1979-05-27T07:32:00Z # First class dates? Why not? 10 | 11 | [database] 12 | server = "192.168.1.1" 13 | ports = [ 8001, 8001, 8002 ] 14 | connection_max = 5000 15 | enabled = true 16 | 17 | [servers] 18 | 19 | # You can indent as you please. Tabs or spaces. TOML don't care. 20 | [servers.alpha] 21 | ip = "10.0.0.1" 22 | dc = "eqdc10" 23 | 24 | [servers.beta] 25 | ip = "10.0.0.2" 26 | dc = "eqdc10" 27 | 28 | [clients] 29 | data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pelletier/go-toml/example.toml: -------------------------------------------------------------------------------- 1 | # This is a TOML document. Boom. 2 | 3 | title = "TOML Example" 4 | 5 | [owner] 6 | name = "Tom Preston-Werner" 7 | organization = "GitHub" 8 | bio = "GitHub Cofounder & CEO\nLikes tater tots and beer." 9 | dob = 1979-05-27T07:32:00Z # First class dates? Why not? 10 | 11 | [database] 12 | server = "192.168.1.1" 13 | ports = [ 8001, 8001, 8002 ] 14 | connection_max = 5000 15 | enabled = true 16 | 17 | [servers] 18 | 19 | # You can indent as you please. Tabs or spaces. TOML don't care. 20 | [servers.alpha] 21 | ip = "10.0.0.1" 22 | dc = "eqdc10" 23 | 24 | [servers.beta] 25 | ip = "10.0.0.2" 26 | dc = "eqdc10" 27 | 28 | [clients] 29 | data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pelletier/go-toml/fuzz.go: -------------------------------------------------------------------------------- 1 | // +build gofuzz 2 | 3 | package toml 4 | 5 | func Fuzz(data []byte) int { 6 | tree, err := LoadBytes(data) 7 | if err != nil { 8 | if tree != nil { 9 | panic("tree must be nil if there is an error") 10 | } 11 | return 0 12 | } 13 | 14 | str, err := tree.ToTomlString() 15 | if err != nil { 16 | if str != "" { 17 | panic(`str must be "" if there is an error`) 18 | } 19 | panic(err) 20 | } 21 | 22 | tree, err = Load(str) 23 | if err != nil { 24 | if tree != nil { 25 | panic("tree must be nil if there is an error") 26 | } 27 | return 0 28 | } 29 | 30 | return 1 31 | } 32 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pelletier/go-toml/fuzz.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | set -eu 3 | 4 | go get github.com/dvyukov/go-fuzz/go-fuzz 5 | go get github.com/dvyukov/go-fuzz/go-fuzz-build 6 | 7 | if [ ! -e toml-fuzz.zip ]; then 8 | go-fuzz-build github.com/pelletier/go-toml 9 | fi 10 | 11 | rm -fr fuzz 12 | mkdir -p fuzz/corpus 13 | cp *.toml fuzz/corpus 14 | 15 | go-fuzz -bin=toml-fuzz.zip -workdir=fuzz 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pelletier/go-toml/marshal_test.toml: -------------------------------------------------------------------------------- 1 | title = "TOML Marshal Testing" 2 | 3 | [basic] 4 | bool = true 5 | date = 1979-05-27T07:32:00Z 6 | float = 123.4 7 | int = 5000 8 | string = "Bite me" 9 | uint = 5001 10 | 11 | [basic_lists] 12 | bools = [true,false,true] 13 | dates = [1979-05-27T07:32:00Z,1980-05-27T07:32:00Z] 14 | floats = [12.3,45.6,78.9] 15 | ints = [8001,8001,8002] 16 | strings = ["One","Two","Three"] 17 | uints = [5002,5003] 18 | 19 | [basic_map] 20 | one = "one" 21 | two = "two" 22 | 23 | [subdoc] 24 | 25 | [subdoc.first] 26 | name = "First" 27 | 28 | [subdoc.second] 29 | name = "Second" 30 | 31 | [[subdoclist]] 32 | name = "List.First" 33 | 34 | [[subdoclist]] 35 | name = "List.Second" 36 | 37 | [[subdocptrs]] 38 | name = "Second" 39 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pelletier/go-toml/position.go: -------------------------------------------------------------------------------- 1 | // Position support for go-toml 2 | 3 | package toml 4 | 5 | import ( 6 | "fmt" 7 | ) 8 | 9 | // Position of a document element within a TOML document. 10 | // 11 | // Line and Col are both 1-indexed positions for the element's line number and 12 | // column number, respectively. Values of zero or less will cause Invalid(), 13 | // to return true. 14 | type Position struct { 15 | Line int // line within the document 16 | Col int // column within the line 17 | } 18 | 19 | // String representation of the position. 20 | // Displays 1-indexed line and column numbers. 21 | func (p Position) String() string { 22 | return fmt.Sprintf("(%d, %d)", p.Line, p.Col) 23 | } 24 | 25 | // Invalid returns whether or not the position is valid (i.e. with negative or 26 | // null values) 27 | func (p Position) Invalid() bool { 28 | return p.Line <= 0 || p.Col <= 0 29 | } 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pkg/errors/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | *.test 24 | *.prof 25 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pkg/errors/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go_import_path: github.com/pkg/errors 3 | go: 4 | - 1.11.x 5 | - 1.12.x 6 | - 1.13.x 7 | - tip 8 | 9 | script: 10 | - make check 11 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/pkg/errors/appveyor.yml: -------------------------------------------------------------------------------- 1 | version: build-{build}.{branch} 2 | 3 | clone_folder: C:\gopath\src\github.com\pkg\errors 4 | shallow_clone: true # for startup speed 5 | 6 | environment: 7 | GOPATH: C:\gopath 8 | 9 | platform: 10 | - x64 11 | 12 | # http://www.appveyor.com/docs/installed-software 13 | install: 14 | # some helpful output for debugging builds 15 | - go version 16 | - go env 17 | # pre-installed MinGW at C:\MinGW is 32bit only 18 | # but MSYS2 at C:\msys64 has mingw64 19 | - set PATH=C:\msys64\mingw64\bin;%PATH% 20 | - gcc --version 21 | - g++ --version 22 | 23 | build_script: 24 | - go install -v ./... 25 | 26 | test_script: 27 | - set PATH=C:\gopath\bin;%PATH% 28 | - go test -v ./... 29 | 30 | #artifacts: 31 | # - path: '%GOPATH%\bin\*.exe' 32 | deploy: off 33 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/client_golang/prometheus/.gitignore: -------------------------------------------------------------------------------- 1 | command-line-arguments.test 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/client_golang/prometheus/README.md: -------------------------------------------------------------------------------- 1 | See [![go-doc](https://godoc.org/github.com/prometheus/client_golang/prometheus?status.svg)](https://godoc.org/github.com/prometheus/client_golang/prometheus). 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/client_model/NOTICE: -------------------------------------------------------------------------------- 1 | Data model artifacts for Prometheus. 2 | Copyright 2012-2015 The Prometheus Authors 3 | 4 | This product includes software developed at 5 | SoundCloud Ltd. (http://soundcloud.com/). 6 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/common/NOTICE: -------------------------------------------------------------------------------- 1 | Common libraries shared by Prometheus Go components. 2 | Copyright 2015 The Prometheus Authors 3 | 4 | This product includes software developed at 5 | SoundCloud Ltd. (http://soundcloud.com/). 6 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/common/model/model.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Prometheus Authors 2 | // Licensed under the Apache License, Version 2.0 (the "License"); 3 | // you may not use this file except in compliance with the License. 4 | // You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | // Package model contains common data structures that are shared across 15 | // Prometheus components and libraries. 16 | package model 17 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/.gitignore: -------------------------------------------------------------------------------- 1 | /fixtures/ 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/.golangci.yml: -------------------------------------------------------------------------------- 1 | --- 2 | linters: 3 | enable: 4 | - golint 5 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Prometheus Community Code of Conduct 2 | 3 | Prometheus follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/MAINTAINERS.md: -------------------------------------------------------------------------------- 1 | * Johannes 'fish' Ziemke @discordianfish 2 | * Paul Gier @pgier 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/NOTICE: -------------------------------------------------------------------------------- 1 | procfs provides functions to retrieve system, kernel and process 2 | metrics from the pseudo-filesystem proc. 3 | 4 | Copyright 2014-2015 The Prometheus Authors 5 | 6 | This product includes software developed at 7 | SoundCloud Ltd. (http://soundcloud.com/). 8 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/cpuinfo_armx.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Prometheus Authors 2 | // Licensed under the Apache License, Version 2.0 (the "License"); 3 | // you may not use this file except in compliance with the License. 4 | // You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | // +build linux 15 | // +build arm arm64 16 | 17 | package procfs 18 | 19 | var parseCPUInfo = parseCPUInfoARM 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/cpuinfo_mipsx.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Prometheus Authors 2 | // Licensed under the Apache License, Version 2.0 (the "License"); 3 | // you may not use this file except in compliance with the License. 4 | // You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | // +build linux 15 | // +build mips mipsle mips64 mips64le 16 | 17 | package procfs 18 | 19 | var parseCPUInfo = parseCPUInfoMips 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/cpuinfo_others.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Prometheus Authors 2 | // Licensed under the Apache License, Version 2.0 (the "License"); 3 | // you may not use this file except in compliance with the License. 4 | // You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | // +build linux 15 | // +build !386,!amd64,!arm,!arm64,!mips,!mips64,!mips64le,!mipsle,!ppc64,!ppc64le,!riscv64,!s390x 16 | 17 | package procfs 18 | 19 | var parseCPUInfo = parseCPUInfoDummy 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/cpuinfo_ppcx.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Prometheus Authors 2 | // Licensed under the Apache License, Version 2.0 (the "License"); 3 | // you may not use this file except in compliance with the License. 4 | // You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | // +build linux 15 | // +build ppc64 ppc64le 16 | 17 | package procfs 18 | 19 | var parseCPUInfo = parseCPUInfoPPC 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/cpuinfo_s390x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Prometheus Authors 2 | // Licensed under the Apache License, Version 2.0 (the "License"); 3 | // you may not use this file except in compliance with the License. 4 | // You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | // +build linux 15 | 16 | package procfs 17 | 18 | var parseCPUInfo = parseCPUInfoS390X 19 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/cpuinfo_x86.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Prometheus Authors 2 | // Licensed under the Apache License, Version 2.0 (the "License"); 3 | // you may not use this file except in compliance with the License. 4 | // You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | // +build linux 15 | // +build 386 amd64 16 | 17 | package procfs 18 | 19 | var parseCPUInfo = parseCPUInfoX86 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/prometheus/procfs 2 | 3 | go 1.12 4 | 5 | require ( 6 | github.com/google/go-cmp v0.3.1 7 | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e 8 | golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e 9 | ) 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/prometheus/procfs/go.sum: -------------------------------------------------------------------------------- 1 | github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= 2 | github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= 3 | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= 4 | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 5 | golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e h1:LwyF2AFISC9nVbS6MgzsaQNSUsRXI49GS+YQ5KX/QH0= 6 | golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 7 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/.gitignore: -------------------------------------------------------------------------------- 1 | logrus 2 | vendor 3 | 4 | .idea/ 5 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go_import_path: github.com/sirupsen/logrus 3 | git: 4 | depth: 1 5 | env: 6 | - GO111MODULE=on 7 | go: 1.15.x 8 | os: linux 9 | install: 10 | - ./travis/install.sh 11 | script: 12 | - cd ci 13 | - go run mage.go -v -w ../ crossBuild 14 | - go run mage.go -v -w ../ lint 15 | - go run mage.go -v -w ../ test 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/appveyor.yml: -------------------------------------------------------------------------------- 1 | version: "{build}" 2 | platform: x64 3 | clone_folder: c:\gopath\src\github.com\sirupsen\logrus 4 | environment: 5 | GOPATH: c:\gopath 6 | branches: 7 | only: 8 | - master 9 | install: 10 | - set PATH=%GOPATH%\bin;c:\go\bin;%PATH% 11 | - go version 12 | build_script: 13 | - go get -t 14 | - go test 15 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/doc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Package logrus is a structured logger for Go, completely API compatible with the standard library logger. 3 | 4 | 5 | The simplest way to use Logrus is simply the package-level exported logger: 6 | 7 | package main 8 | 9 | import ( 10 | log "github.com/sirupsen/logrus" 11 | ) 12 | 13 | func main() { 14 | log.WithFields(log.Fields{ 15 | "animal": "walrus", 16 | "number": 1, 17 | "size": 10, 18 | }).Info("A walrus appears") 19 | } 20 | 21 | Output: 22 | time="2015-09-07T08:48:33Z" level=info msg="A walrus appears" animal=walrus number=1 size=10 23 | 24 | For a full guide visit https://github.com/sirupsen/logrus 25 | */ 26 | package logrus 27 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/sirupsen/logrus 2 | 3 | require ( 4 | github.com/davecgh/go-spew v1.1.1 // indirect 5 | github.com/pmezard/go-difflib v1.0.0 // indirect 6 | github.com/stretchr/testify v1.2.2 7 | golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 8 | ) 9 | 10 | go 1.13 11 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/go.sum: -------------------------------------------------------------------------------- 1 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 2 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 3 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 4 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 5 | github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= 6 | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 7 | golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= 8 | golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 9 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/terminal_check_appengine.go: -------------------------------------------------------------------------------- 1 | // +build appengine 2 | 3 | package logrus 4 | 5 | import ( 6 | "io" 7 | ) 8 | 9 | func checkIfTerminal(w io.Writer) bool { 10 | return true 11 | } 12 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/terminal_check_bsd.go: -------------------------------------------------------------------------------- 1 | // +build darwin dragonfly freebsd netbsd openbsd 2 | // +build !js 3 | 4 | package logrus 5 | 6 | import "golang.org/x/sys/unix" 7 | 8 | const ioctlReadTermios = unix.TIOCGETA 9 | 10 | func isTerminal(fd int) bool { 11 | _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) 12 | return err == nil 13 | } 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/terminal_check_js.go: -------------------------------------------------------------------------------- 1 | // +build js 2 | 3 | package logrus 4 | 5 | func isTerminal(fd int) bool { 6 | return false 7 | } 8 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/terminal_check_no_terminal.go: -------------------------------------------------------------------------------- 1 | // +build js nacl plan9 2 | 3 | package logrus 4 | 5 | import ( 6 | "io" 7 | ) 8 | 9 | func checkIfTerminal(w io.Writer) bool { 10 | return false 11 | } 12 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/terminal_check_notappengine.go: -------------------------------------------------------------------------------- 1 | // +build !appengine,!js,!windows,!nacl,!plan9 2 | 3 | package logrus 4 | 5 | import ( 6 | "io" 7 | "os" 8 | ) 9 | 10 | func checkIfTerminal(w io.Writer) bool { 11 | switch v := w.(type) { 12 | case *os.File: 13 | return isTerminal(int(v.Fd())) 14 | default: 15 | return false 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/terminal_check_solaris.go: -------------------------------------------------------------------------------- 1 | package logrus 2 | 3 | import ( 4 | "golang.org/x/sys/unix" 5 | ) 6 | 7 | // IsTerminal returns true if the given file descriptor is a terminal. 8 | func isTerminal(fd int) bool { 9 | _, err := unix.IoctlGetTermio(fd, unix.TCGETA) 10 | return err == nil 11 | } 12 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/terminal_check_unix.go: -------------------------------------------------------------------------------- 1 | // +build linux aix zos 2 | // +build !js 3 | 4 | package logrus 5 | 6 | import "golang.org/x/sys/unix" 7 | 8 | const ioctlReadTermios = unix.TCGETS 9 | 10 | func isTerminal(fd int) bool { 11 | _, err := unix.IoctlGetTermios(fd, ioctlReadTermios) 12 | return err == nil 13 | } 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/sirupsen/logrus/terminal_check_windows.go: -------------------------------------------------------------------------------- 1 | // +build !appengine,!js,windows 2 | 3 | package logrus 4 | 5 | import ( 6 | "io" 7 | "os" 8 | 9 | "golang.org/x/sys/windows" 10 | ) 11 | 12 | func checkIfTerminal(w io.Writer) bool { 13 | switch v := w.(type) { 14 | case *os.File: 15 | handle := windows.Handle(v.Fd()) 16 | var mode uint32 17 | if err := windows.GetConsoleMode(handle, &mode); err != nil { 18 | return false 19 | } 20 | mode |= windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING 21 | if err := windows.SetConsoleMode(handle, mode); err != nil { 22 | return false 23 | } 24 | return true 25 | } 26 | return false 27 | } 28 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/afero/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: go 3 | 4 | go: 5 | - 1.9 6 | - "1.10" 7 | - tip 8 | 9 | os: 10 | - linux 11 | - osx 12 | 13 | matrix: 14 | allow_failures: 15 | - go: tip 16 | fast_finish: true 17 | 18 | script: 19 | - go build 20 | - go test -race -v ./... 21 | 22 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/afero/appveyor.yml: -------------------------------------------------------------------------------- 1 | version: '{build}' 2 | clone_folder: C:\gopath\src\github.com\spf13\afero 3 | environment: 4 | GOPATH: C:\gopath 5 | build_script: 6 | - cmd: >- 7 | go version 8 | 9 | go env 10 | 11 | go get -v github.com/spf13/afero/... 12 | 13 | go build github.com/spf13/afero 14 | test_script: 15 | - cmd: go test -race -v github.com/spf13/afero/... 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/afero/const_bsds.go: -------------------------------------------------------------------------------- 1 | // Copyright © 2016 Steve Francia . 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | // +build darwin openbsd freebsd netbsd dragonfly 15 | 16 | package afero 17 | 18 | import ( 19 | "syscall" 20 | ) 21 | 22 | const BADFD = syscall.EBADF 23 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/afero/const_win_unix.go: -------------------------------------------------------------------------------- 1 | // Copyright © 2016 Steve Francia . 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | // +build !darwin 14 | // +build !openbsd 15 | // +build !freebsd 16 | // +build !dragonfly 17 | // +build !netbsd 18 | 19 | package afero 20 | 21 | import ( 22 | "syscall" 23 | ) 24 | 25 | const BADFD = syscall.EBADFD 26 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/afero/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/spf13/afero 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cast/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | *.test 24 | 25 | *.bench 26 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cast/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | env: 3 | - GO111MODULE=on 4 | sudo: required 5 | go: 6 | - "1.11.x" 7 | - tip 8 | os: 9 | - linux 10 | matrix: 11 | allow_failures: 12 | - go: tip 13 | fast_finish: true 14 | script: 15 | - make check 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cast/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/spf13/cast 2 | 3 | require ( 4 | github.com/davecgh/go-spew v1.1.1 // indirect 5 | github.com/pmezard/go-difflib v1.0.0 // indirect 6 | github.com/stretchr/testify v1.2.2 7 | ) 8 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cast/go.sum: -------------------------------------------------------------------------------- 1 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 2 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 3 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 4 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 5 | github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= 6 | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 7 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cobra/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | # Vim files https://github.com/github/gitignore/blob/master/Global/Vim.gitignore 23 | # swap 24 | [._]*.s[a-w][a-z] 25 | [._]s[a-w][a-z] 26 | # session 27 | Session.vim 28 | # temporary 29 | .netrwhist 30 | *~ 31 | # auto-generated tag files 32 | tags 33 | 34 | *.exe 35 | cobra.test 36 | bin 37 | 38 | .idea/ 39 | *.iml 40 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cobra/.mailmap: -------------------------------------------------------------------------------- 1 | Steve Francia 2 | Bjørn Erik Pedersen 3 | Fabiano Franz 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cobra/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | stages: 4 | - test 5 | - build 6 | 7 | go: 8 | - 1.12.x 9 | - 1.13.x 10 | - tip 11 | 12 | env: GO111MODULE=on 13 | 14 | before_install: 15 | - go get -u github.com/kyoh86/richgo 16 | - go get -u github.com/mitchellh/gox 17 | - curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin latest 18 | 19 | matrix: 20 | allow_failures: 21 | - go: tip 22 | include: 23 | - stage: build 24 | go: 1.13.x 25 | script: make cobra_generator 26 | 27 | script: 28 | - make test 29 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cobra/command_notwin.go: -------------------------------------------------------------------------------- 1 | // +build !windows 2 | 3 | package cobra 4 | 5 | var preExecHookFn func(*Command) 6 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cobra/command_win.go: -------------------------------------------------------------------------------- 1 | // +build windows 2 | 3 | package cobra 4 | 5 | import ( 6 | "fmt" 7 | "os" 8 | "time" 9 | 10 | "github.com/inconshreveable/mousetrap" 11 | ) 12 | 13 | var preExecHookFn = preExecHook 14 | 15 | func preExecHook(c *Command) { 16 | if MousetrapHelpText != "" && mousetrap.StartedByExplorer() { 17 | c.Print(MousetrapHelpText) 18 | if MousetrapDisplayDuration > 0 { 19 | time.Sleep(MousetrapDisplayDuration) 20 | } else { 21 | c.Println("Press return to continue...") 22 | fmt.Scanln() 23 | } 24 | os.Exit(1) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cobra/fish_completions.md: -------------------------------------------------------------------------------- 1 | ## Generating Fish Completions For Your cobra.Command 2 | 3 | Please refer to [Shell Completions](shell_completions.md) for details. 4 | 5 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cobra/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/spf13/cobra 2 | 3 | go 1.12 4 | 5 | require ( 6 | github.com/cpuguy83/go-md2man/v2 v2.0.0 7 | github.com/inconshreveable/mousetrap v1.0.0 8 | github.com/mitchellh/go-homedir v1.1.0 9 | github.com/spf13/pflag v1.0.5 10 | github.com/spf13/viper v1.7.0 11 | gopkg.in/yaml.v2 v2.4.0 12 | ) 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/cobra/powershell_completions.md: -------------------------------------------------------------------------------- 1 | # Generating PowerShell Completions For Your Own cobra.Command 2 | 3 | Please refer to [Shell Completions](shell_completions.md#powershell-completions) for details. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/jwalterweatherman/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/jwalterweatherman/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/spf13/jwalterweatherman 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/pflag/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/* 2 | 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/pflag/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | 3 | language: go 4 | 5 | go: 6 | - 1.9.x 7 | - 1.10.x 8 | - 1.11.x 9 | - tip 10 | 11 | matrix: 12 | allow_failures: 13 | - go: tip 14 | 15 | install: 16 | - go get golang.org/x/lint/golint 17 | - export PATH=$GOPATH/bin:$PATH 18 | - go install ./... 19 | 20 | script: 21 | - verify/all.sh -v 22 | - go test ./... 23 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/pflag/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/spf13/pflag 2 | 3 | go 1.12 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/pflag/go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scality/backbeat/cfab65dd82929b52ab496dd4a396e950800d634a/bucket-scanner/vendor/github.com/spf13/pflag/go.sum -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/viper/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.go] 12 | indent_style = tab 13 | 14 | [{Makefile, *.mk}] 15 | indent_style = tab 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/viper/.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/ 2 | /bin/ 3 | /build/ 4 | /var/ 5 | /vendor/ 6 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/spf13/viper/.golangci.yml: -------------------------------------------------------------------------------- 1 | linters-settings: 2 | golint: 3 | min-confidence: 0.1 4 | goimports: 5 | local-prefixes: github.com/spf13/viper 6 | 7 | linters: 8 | enable-all: true 9 | disable: 10 | - funlen 11 | - maligned 12 | 13 | # TODO: fix me 14 | - wsl 15 | - gochecknoinits 16 | - gosimple 17 | - gochecknoglobals 18 | - errcheck 19 | - lll 20 | - godox 21 | - scopelint 22 | - gocyclo 23 | - gocognit 24 | - gocritic 25 | 26 | service: 27 | golangci-lint-version: 1.21.x 28 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/subosito/gotenv/.env: -------------------------------------------------------------------------------- 1 | HELLO=world 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/subosito/gotenv/.env.invalid: -------------------------------------------------------------------------------- 1 | lol$wut 2 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/subosito/gotenv/.gitignore: -------------------------------------------------------------------------------- 1 | *.test 2 | *.out 3 | annotate.json 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/subosito/gotenv/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | go: 3 | - 1.x 4 | os: 5 | - linux 6 | - osx 7 | script: 8 | - go test -test.v -coverprofile=coverage.out -covermode=count 9 | after_success: 10 | - bash <(curl -s https://codecov.io/bash) 11 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/github.com/subosito/gotenv/appveyor.yml: -------------------------------------------------------------------------------- 1 | build: off 2 | clone_folder: c:\gopath\src\github.com\subosito\gotenv 3 | environment: 4 | GOPATH: c:\gopath 5 | stack: go 1.10 6 | before_test: 7 | - go get -t 8 | test_script: 9 | - go test -v -cover -race 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/net/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at http://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/net/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at http://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at http://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at http://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/.gitignore: -------------------------------------------------------------------------------- 1 | _obj/ 2 | unix.test 3 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/aliases.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 6 | // +build go1.9 7 | 8 | package unix 9 | 10 | import "syscall" 11 | 12 | type Signal = syscall.Signal 13 | type Errno = syscall.Errno 14 | type SysProcAttr = syscall.SysProcAttr 15 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for ppc64, AIX are implemented in runtime/syscall_aix.go 11 | // 12 | 13 | TEXT ·syscall6(SB),NOSPLIT,$0-88 14 | JMP syscall·syscall6(SB) 15 | 16 | TEXT ·rawSyscall6(SB),NOSPLIT,$0-88 17 | JMP syscall·rawSyscall6(SB) 18 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_darwin_386.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for 386, Darwin 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-28 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for AMD64, Darwin 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_darwin_arm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | // +build arm,darwin 7 | 8 | #include "textflag.h" 9 | 10 | // 11 | // System call support for ARM, Darwin 12 | // 13 | 14 | // Just jump to package syscall's implementation for all these functions. 15 | // The runtime may know about them. 16 | 17 | TEXT ·Syscall(SB),NOSPLIT,$0-28 18 | B syscall·Syscall(SB) 19 | 20 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 21 | B syscall·Syscall6(SB) 22 | 23 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 24 | B syscall·Syscall9(SB) 25 | 26 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 27 | B syscall·RawSyscall(SB) 28 | 29 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 30 | B syscall·RawSyscall6(SB) 31 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | // +build arm64,darwin 7 | 8 | #include "textflag.h" 9 | 10 | // 11 | // System call support for AMD64, Darwin 12 | // 13 | 14 | // Just jump to package syscall's implementation for all these functions. 15 | // The runtime may know about them. 16 | 17 | TEXT ·Syscall(SB),NOSPLIT,$0-56 18 | B syscall·Syscall(SB) 19 | 20 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 21 | B syscall·Syscall6(SB) 22 | 23 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 24 | B syscall·Syscall9(SB) 25 | 26 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 27 | B syscall·RawSyscall(SB) 28 | 29 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 30 | B syscall·RawSyscall6(SB) 31 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for AMD64, DragonFly 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_freebsd_386.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for 386, FreeBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-28 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for AMD64, FreeBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for ARM, FreeBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-28 17 | B syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 20 | B syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 23 | B syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 26 | B syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 29 | B syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_freebsd_arm64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for ARM64, FreeBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_netbsd_386.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for 386, NetBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-28 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for AMD64, NetBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for ARM, NetBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-28 17 | B syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 20 | B syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 23 | B syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 26 | B syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 29 | B syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_netbsd_arm64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for ARM64, NetBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | B syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | B syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | B syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | B syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | B syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_openbsd_386.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for 386, OpenBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-28 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for AMD64, OpenBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for ARM, OpenBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-28 17 | B syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40 20 | B syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52 23 | B syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28 26 | B syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 29 | B syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_openbsd_arm64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for arm64, OpenBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System call support for mips64, OpenBSD 11 | // 12 | 13 | // Just jump to package syscall's implementation for all these functions. 14 | // The runtime may know about them. 15 | 16 | TEXT ·Syscall(SB),NOSPLIT,$0-56 17 | JMP syscall·Syscall(SB) 18 | 19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80 20 | JMP syscall·Syscall6(SB) 21 | 22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104 23 | JMP syscall·Syscall9(SB) 24 | 25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56 26 | JMP syscall·RawSyscall(SB) 27 | 28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 29 | JMP syscall·RawSyscall6(SB) 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gc 6 | 7 | #include "textflag.h" 8 | 9 | // 10 | // System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go 11 | // 12 | 13 | TEXT ·sysvicall6(SB),NOSPLIT,$0-88 14 | JMP syscall·sysvicall6(SB) 15 | 16 | TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88 17 | JMP syscall·rawSysvicall6(SB) 18 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/bluetooth_linux.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Bluetooth sockets and messages 6 | 7 | package unix 8 | 9 | // Bluetooth Protocols 10 | const ( 11 | BTPROTO_L2CAP = 0 12 | BTPROTO_HCI = 1 13 | BTPROTO_SCO = 2 14 | BTPROTO_RFCOMM = 3 15 | BTPROTO_BNEP = 4 16 | BTPROTO_CMTP = 5 17 | BTPROTO_HIDP = 6 18 | BTPROTO_AVDTP = 7 19 | ) 20 | 21 | const ( 22 | HCI_CHANNEL_RAW = 0 23 | HCI_CHANNEL_USER = 1 24 | HCI_CHANNEL_MONITOR = 2 25 | HCI_CHANNEL_CONTROL = 3 26 | HCI_CHANNEL_LOGGING = 4 27 | ) 28 | 29 | // Socketoption Level 30 | const ( 31 | SOL_BLUETOOTH = 0x112 32 | SOL_HCI = 0x0 33 | SOL_L2CAP = 0x6 34 | SOL_RFCOMM = 0x12 35 | SOL_SCO = 0x11 36 | ) 37 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/constants.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 6 | 7 | package unix 8 | 9 | const ( 10 | R_OK = 0x4 11 | W_OK = 0x2 12 | X_OK = 0x1 13 | ) 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/dev_aix_ppc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix 6 | // +build ppc 7 | 8 | // Functions to access/create device major and minor numbers matching the 9 | // encoding used by AIX. 10 | 11 | package unix 12 | 13 | // Major returns the major component of a Linux device number. 14 | func Major(dev uint64) uint32 { 15 | return uint32((dev >> 16) & 0xffff) 16 | } 17 | 18 | // Minor returns the minor component of a Linux device number. 19 | func Minor(dev uint64) uint32 { 20 | return uint32(dev & 0xffff) 21 | } 22 | 23 | // Mkdev returns a Linux device number generated from the given major and minor 24 | // components. 25 | func Mkdev(major, minor uint32) uint64 { 26 | return uint64(((major) << 16) | (minor)) 27 | } 28 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/dev_darwin.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Functions to access/create device major and minor numbers matching the 6 | // encoding used in Darwin's sys/types.h header. 7 | 8 | package unix 9 | 10 | // Major returns the major component of a Darwin device number. 11 | func Major(dev uint64) uint32 { 12 | return uint32((dev >> 24) & 0xff) 13 | } 14 | 15 | // Minor returns the minor component of a Darwin device number. 16 | func Minor(dev uint64) uint32 { 17 | return uint32(dev & 0xffffff) 18 | } 19 | 20 | // Mkdev returns a Darwin device number generated from the given major and minor 21 | // components. 22 | func Mkdev(major, minor uint32) uint64 { 23 | return (uint64(major) << 24) | uint64(minor) 24 | } 25 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/endian_big.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | // 5 | // +build armbe arm64be m68k mips mips64 mips64p32 ppc ppc64 s390 s390x shbe sparc sparc64 6 | 7 | package unix 8 | 9 | const isBigEndian = true 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/endian_little.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | // 5 | // +build 386 amd64 amd64p32 alpha arm arm64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh 6 | 7 | package unix 8 | 9 | const isBigEndian = false 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/env_unix.go: -------------------------------------------------------------------------------- 1 | // Copyright 2010 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 6 | 7 | // Unix environment variables. 8 | 9 | package unix 10 | 11 | import "syscall" 12 | 13 | func Getenv(key string) (value string, found bool) { 14 | return syscall.Getenv(key) 15 | } 16 | 17 | func Setenv(key, value string) error { 18 | return syscall.Setenv(key, value) 19 | } 20 | 21 | func Clearenv() { 22 | syscall.Clearenv() 23 | } 24 | 25 | func Environ() []string { 26 | return syscall.Environ() 27 | } 28 | 29 | func Unsetenv(key string) error { 30 | return syscall.Unsetenv(key) 31 | } 32 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Constants that were deprecated or moved to enums in the FreeBSD headers. Keep 6 | // them here for backwards compatibility. 7 | 8 | package unix 9 | 10 | const ( 11 | DLT_HHDLC = 0x79 12 | IPV6_MIN_MEMBERSHIPS = 0x1f 13 | IP_MAX_SOURCE_FILTER = 0x400 14 | IP_MIN_MEMBERSHIPS = 0x1f 15 | RT_CACHING_CONTEXT = 0x1 16 | RT_NORTREF = 0x2 17 | ) 18 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/fcntl_darwin.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package unix 6 | 7 | import "unsafe" 8 | 9 | // FcntlInt performs a fcntl syscall on fd with the provided command and argument. 10 | func FcntlInt(fd uintptr, cmd, arg int) (int, error) { 11 | return fcntl(int(fd), cmd, arg) 12 | } 13 | 14 | // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command. 15 | func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error { 16 | _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk)))) 17 | return err 18 | } 19 | 20 | // FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command. 21 | func FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error { 22 | _, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore)))) 23 | return err 24 | } 25 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build linux,386 linux,arm linux,mips linux,mipsle 6 | 7 | package unix 8 | 9 | func init() { 10 | // On 32-bit Linux systems, the fcntl syscall that matches Go's 11 | // Flock_t type is SYS_FCNTL64, not SYS_FCNTL. 12 | fcntl64Syscall = SYS_FCNTL64 13 | } 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/fdset.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 6 | 7 | package unix 8 | 9 | // Set adds fd to the set fds. 10 | func (fds *FdSet) Set(fd int) { 11 | fds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS)) 12 | } 13 | 14 | // Clear removes fd from the set fds. 15 | func (fds *FdSet) Clear(fd int) { 16 | fds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS)) 17 | } 18 | 19 | // IsSet returns whether fd is in the set fds. 20 | func (fds *FdSet) IsSet(fd int) bool { 21 | return fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0 22 | } 23 | 24 | // Zero clears the set fds. 25 | func (fds *FdSet) Zero() { 26 | for i := range fds.Bits { 27 | fds.Bits[i] = 0 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build gccgo,linux,amd64 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | //extern gettimeofday 12 | func realGettimeofday(*Timeval, *byte) int32 13 | 14 | func gettimeofday(tv *Timeval) (err syscall.Errno) { 15 | r := realGettimeofday(tv, nil) 16 | if r < 0 { 17 | return syscall.GetErrno() 18 | } 19 | return 0 20 | } 21 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/pagesize_unix.go: -------------------------------------------------------------------------------- 1 | // Copyright 2017 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 6 | 7 | // For Unix, get the pagesize from the runtime. 8 | 9 | package unix 10 | 11 | import "syscall" 12 | 13 | func Getpagesize() int { 14 | return syscall.Getpagesize() 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/ptrace_darwin.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin,!ios 6 | 7 | package unix 8 | 9 | func ptrace(request int, pid int, addr uintptr, data uintptr) error { 10 | return ptrace1(request, pid, addr, data) 11 | } 12 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/ptrace_ios.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build ios 6 | 7 | package unix 8 | 9 | func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { 10 | return ENOTSUP 11 | } 12 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/race.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin,race linux,race freebsd,race 6 | 7 | package unix 8 | 9 | import ( 10 | "runtime" 11 | "unsafe" 12 | ) 13 | 14 | const raceenabled = true 15 | 16 | func raceAcquire(addr unsafe.Pointer) { 17 | runtime.RaceAcquire(addr) 18 | } 19 | 20 | func raceReleaseMerge(addr unsafe.Pointer) { 21 | runtime.RaceReleaseMerge(addr) 22 | } 23 | 24 | func raceReadRange(addr unsafe.Pointer, len int) { 25 | runtime.RaceReadRange(addr, len) 26 | } 27 | 28 | func raceWriteRange(addr unsafe.Pointer, len int) { 29 | runtime.RaceWriteRange(addr, len) 30 | } 31 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/race0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin,!race linux,!race freebsd,!race netbsd openbsd solaris dragonfly 6 | 7 | package unix 8 | 9 | import ( 10 | "unsafe" 11 | ) 12 | 13 | const raceenabled = false 14 | 15 | func raceAcquire(addr unsafe.Pointer) { 16 | } 17 | 18 | func raceReleaseMerge(addr unsafe.Pointer) { 19 | } 20 | 21 | func raceReadRange(addr unsafe.Pointer, len int) { 22 | } 23 | 24 | func raceWriteRange(addr unsafe.Pointer, len int) { 25 | } 26 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/readdirent_getdents.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix dragonfly freebsd linux netbsd openbsd 6 | 7 | package unix 8 | 9 | // ReadDirent reads directory entries from fd and writes them into buf. 10 | func ReadDirent(fd int, buf []byte) (n int, err error) { 11 | return Getdents(fd, buf) 12 | } 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin 6 | 7 | package unix 8 | 9 | import "unsafe" 10 | 11 | // ReadDirent reads directory entries from fd and writes them into buf. 12 | func ReadDirent(fd int, buf []byte) (n int, err error) { 13 | // Final argument is (basep *uintptr) and the syscall doesn't take nil. 14 | // 64 bits should be enough. (32 bits isn't even on 386). Since the 15 | // actual system call is getdirentries64, 64 is a good guess. 16 | // TODO(rsc): Can we use a single global basep for all calls? 17 | var base = (*uintptr)(unsafe.Pointer(new(uint64))) 18 | return Getdirentries(fd, buf, base) 19 | } 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package unix 6 | 7 | // Round the length of a raw sockaddr up to align it properly. 8 | func cmsgAlignOf(salen int) int { 9 | salign := SizeofPtr 10 | if SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) { 11 | // 64-bit Dragonfly before the September 2019 ABI changes still requires 12 | // 32-bit aligned access to network subsystem. 13 | salign = 4 14 | } 15 | return (salen + salign - 1) & ^(salign - 1) 16 | } 17 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/str.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris 6 | 7 | package unix 8 | 9 | func itoa(val int) string { // do it here rather than with fmt to avoid dependency 10 | if val < 0 { 11 | return "-" + uitoa(uint(-val)) 12 | } 13 | return uitoa(uint(val)) 14 | } 15 | 16 | func uitoa(val uint) string { 17 | var buf [32]byte // big enough for int64 18 | i := len(buf) - 1 19 | for val >= 10 { 20 | buf[i] = byte(val%10 + '0') 21 | i-- 22 | val /= 10 23 | } 24 | buf[i] = byte(val + '0') 25 | return string(buf[i:]) 26 | } 27 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build amd64,linux 6 | // +build gc 7 | 8 | package unix 9 | 10 | import "syscall" 11 | 12 | //go:noescape 13 | func gettimeofday(tv *Timeval) (err syscall.Errno) 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/syscall_linux_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build linux,gc 6 | 7 | package unix 8 | 9 | // SyscallNoError may be used instead of Syscall for syscalls that don't fail. 10 | func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) 11 | 12 | // RawSyscallNoError may be used instead of RawSyscall for syscalls that don't 13 | // fail. 14 | func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) 15 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build linux,gc,386 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | // Underlying system call writes to newoffset via pointer. 12 | // Implemented in assembly to avoid allocation. 13 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) 14 | 15 | func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) 16 | func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno) 17 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build arm,gc,linux 6 | 7 | package unix 8 | 9 | import "syscall" 10 | 11 | // Underlying system call writes to newoffset via pointer. 12 | // Implemented in assembly to avoid allocation. 13 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build linux,gccgo,arm 6 | 7 | package unix 8 | 9 | import ( 10 | "syscall" 11 | "unsafe" 12 | ) 13 | 14 | func seek(fd int, offset int64, whence int) (int64, syscall.Errno) { 15 | var newoffset int64 16 | offsetLow := uint32(offset & 0xffffffff) 17 | offsetHigh := uint32((offset >> 32) & 0xffffffff) 18 | _, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0) 19 | return newoffset, err 20 | } 21 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build amd64,solaris 6 | 7 | package unix 8 | 9 | func setTimespec(sec, nsec int64) Timespec { 10 | return Timespec{Sec: sec, Nsec: nsec} 11 | } 12 | 13 | func setTimeval(sec, usec int64) Timeval { 14 | return Timeval{Sec: sec, Usec: usec} 15 | } 16 | 17 | func (iov *Iovec) SetLen(length int) { 18 | iov.Len = uint64(length) 19 | } 20 | 21 | func (msghdr *Msghdr) SetIovlen(length int) { 22 | msghdr.Iovlen = int32(length) 23 | } 24 | 25 | func (cmsg *Cmsghdr) SetLen(length int) { 26 | cmsg.Len = uint32(length) 27 | } 28 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/syscall_unix_gc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build darwin dragonfly freebsd linux netbsd openbsd solaris 6 | // +build gc,!ppc64le,!ppc64 7 | 8 | package unix 9 | 10 | import "syscall" 11 | 12 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) 13 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) 14 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) 15 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build linux 6 | // +build ppc64le ppc64 7 | // +build gc 8 | 9 | package unix 10 | 11 | import "syscall" 12 | 13 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { 14 | return syscall.Syscall(trap, a1, a2, a3) 15 | } 16 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { 17 | return syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6) 18 | } 19 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { 20 | return syscall.RawSyscall(trap, a1, a2, a3) 21 | } 22 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) { 23 | return syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6) 24 | } 25 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go: -------------------------------------------------------------------------------- 1 | // Code generated by linux/mkall.go generatePtraceRegSet("arm64"). DO NOT EDIT. 2 | 3 | package unix 4 | 5 | import "unsafe" 6 | 7 | // PtraceGetRegSetArm64 fetches the registers used by arm64 binaries. 8 | func PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error { 9 | iovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))} 10 | return ptrace(PTRACE_GETREGSET, pid, uintptr(addr), uintptr(unsafe.Pointer(&iovec))) 11 | } 12 | 13 | // PtraceSetRegSetArm64 sets the registers used by arm64 binaries. 14 | func PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error { 15 | iovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))} 16 | return ptrace(PTRACE_SETREGSET, pid, uintptr(addr), uintptr(unsafe.Pointer(&iovec))) 17 | } 18 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_13.s: -------------------------------------------------------------------------------- 1 | // go run mkasm_darwin.go 386 2 | // Code generated by the command above; DO NOT EDIT. 3 | 4 | // +build go1.13 5 | 6 | #include "textflag.h" 7 | TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 8 | JMP libc_fdopendir(SB) 9 | TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 10 | JMP libc_closedir(SB) 11 | TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 12 | JMP libc_readdir_r(SB) 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_13.s: -------------------------------------------------------------------------------- 1 | // go run mkasm_darwin.go amd64 2 | // Code generated by the command above; DO NOT EDIT. 3 | 4 | // +build go1.13 5 | 6 | #include "textflag.h" 7 | TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 8 | JMP libc_fdopendir(SB) 9 | TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 10 | JMP libc_closedir(SB) 11 | TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 12 | JMP libc_readdir_r(SB) 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_13.s: -------------------------------------------------------------------------------- 1 | // go run mkasm_darwin.go arm 2 | // Code generated by the command above; DO NOT EDIT. 3 | 4 | // +build go1.13 5 | 6 | #include "textflag.h" 7 | TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 8 | JMP libc_fdopendir(SB) 9 | TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 10 | JMP libc_closedir(SB) 11 | TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 12 | JMP libc_readdir_r(SB) 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_13.s: -------------------------------------------------------------------------------- 1 | // go run mkasm_darwin.go arm64 2 | // Code generated by the command above; DO NOT EDIT. 3 | 4 | // +build go1.13 5 | 6 | #include "textflag.h" 7 | TEXT ·libc_fdopendir_trampoline(SB),NOSPLIT,$0-0 8 | JMP libc_fdopendir(SB) 9 | TEXT ·libc_closedir_trampoline(SB),NOSPLIT,$0-0 10 | JMP libc_closedir(SB) 11 | TEXT ·libc_readdir_r_trampoline(SB),NOSPLIT,$0-0 12 | JMP libc_readdir_r(SB) 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/windows/aliases.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build windows 6 | // +build go1.9 7 | 8 | package windows 9 | 10 | import "syscall" 11 | 12 | type Errno = syscall.Errno 13 | type SysProcAttr = syscall.SysProcAttr 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/windows/empty.s: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !go1.12 6 | 7 | // This file is here to allow bodyless functions with go:linkname for Go 1.11 8 | // and earlier (see https://golang.org/issue/23311). 9 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/windows/eventlog.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build windows 6 | 7 | package windows 8 | 9 | const ( 10 | EVENTLOG_SUCCESS = 0 11 | EVENTLOG_ERROR_TYPE = 1 12 | EVENTLOG_WARNING_TYPE = 2 13 | EVENTLOG_INFORMATION_TYPE = 4 14 | EVENTLOG_AUDIT_SUCCESS = 8 15 | EVENTLOG_AUDIT_FAILURE = 16 16 | ) 17 | 18 | //sys RegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW 19 | //sys DeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource 20 | //sys ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW 21 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/windows/mksyscall.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build generate 6 | 7 | package windows 8 | 9 | //go:generate go run golang.org/x/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/windows/race.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build windows,race 6 | 7 | package windows 8 | 9 | import ( 10 | "runtime" 11 | "unsafe" 12 | ) 13 | 14 | const raceenabled = true 15 | 16 | func raceAcquire(addr unsafe.Pointer) { 17 | runtime.RaceAcquire(addr) 18 | } 19 | 20 | func raceReleaseMerge(addr unsafe.Pointer) { 21 | runtime.RaceReleaseMerge(addr) 22 | } 23 | 24 | func raceReadRange(addr unsafe.Pointer, len int) { 25 | runtime.RaceReadRange(addr, len) 26 | } 27 | 28 | func raceWriteRange(addr unsafe.Pointer, len int) { 29 | runtime.RaceWriteRange(addr, len) 30 | } 31 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/windows/race0.go: -------------------------------------------------------------------------------- 1 | // Copyright 2012 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build windows,!race 6 | 7 | package windows 8 | 9 | import ( 10 | "unsafe" 11 | ) 12 | 13 | const raceenabled = false 14 | 15 | func raceAcquire(addr unsafe.Pointer) { 16 | } 17 | 18 | func raceReleaseMerge(addr unsafe.Pointer) { 19 | } 20 | 21 | func raceReadRange(addr unsafe.Pointer, len int) { 22 | } 23 | 24 | func raceWriteRange(addr unsafe.Pointer, len int) { 25 | } 26 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/sys/windows/str.go: -------------------------------------------------------------------------------- 1 | // Copyright 2009 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build windows 6 | 7 | package windows 8 | 9 | func itoa(val int) string { // do it here rather than with fmt to avoid dependency 10 | if val < 0 { 11 | return "-" + itoa(-val) 12 | } 13 | var buf [32]byte // big enough for int64 14 | i := len(buf) - 1 15 | for val >= 10 { 16 | buf[i] = byte(val%10 + '0') 17 | i-- 18 | val /= 10 19 | } 20 | buf[i] = byte(val + '0') 21 | return string(buf[i:]) 22 | } 23 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/text/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at http://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/text/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at http://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/text/encoding/japanese/all.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package japanese 6 | 7 | import ( 8 | "golang.org/x/text/encoding" 9 | ) 10 | 11 | // All is a list of all defined encodings in this package. 12 | var All = []encoding.Encoding{EUCJP, ISO2022JP, ShiftJIS} 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package simplifiedchinese 6 | 7 | import ( 8 | "golang.org/x/text/encoding" 9 | ) 10 | 11 | // All is a list of all defined encodings in this package. 12 | var All = []encoding.Encoding{GB18030, GBK, HZGB2312} 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/text/internal/language/common.go: -------------------------------------------------------------------------------- 1 | // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT. 2 | 3 | package language 4 | 5 | // This file contains code common to the maketables.go and the package code. 6 | 7 | // AliasType is the type of an alias in AliasMap. 8 | type AliasType int8 9 | 10 | const ( 11 | Deprecated AliasType = iota 12 | Macro 13 | Legacy 14 | 15 | AliasTypeUnknown AliasType = -1 16 | ) 17 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/text/internal/language/coverage.go: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package language 6 | 7 | // BaseLanguages returns the list of all supported base languages. It generates 8 | // the list by traversing the internal structures. 9 | func BaseLanguages() []Language { 10 | base := make([]Language, 0, NumLanguages) 11 | for i := 0; i < langNoIndexOffset; i++ { 12 | // We included "und" already for the value 0. 13 | if i != nonCanonicalUnd { 14 | base = append(base, Language(i)) 15 | } 16 | } 17 | i := langNoIndexOffset 18 | for _, v := range langNoIndex { 19 | for k := 0; k < 8; k++ { 20 | if v&1 == 1 { 21 | base = append(base, Language(i)) 22 | } 23 | v >>= 1 24 | i++ 25 | } 26 | } 27 | return base 28 | } 29 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/text/language/go1_1.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !go1.2 6 | 7 | package language 8 | 9 | import "sort" 10 | 11 | func sortStable(s sort.Interface) { 12 | ss := stableSort{ 13 | s: s, 14 | pos: make([]int, s.Len()), 15 | } 16 | for i := range ss.pos { 17 | ss.pos[i] = i 18 | } 19 | sort.Sort(&ss) 20 | } 21 | 22 | type stableSort struct { 23 | s sort.Interface 24 | pos []int 25 | } 26 | 27 | func (s *stableSort) Len() int { 28 | return len(s.pos) 29 | } 30 | 31 | func (s *stableSort) Less(i, j int) bool { 32 | return s.s.Less(i, j) || !s.s.Less(j, i) && s.pos[i] < s.pos[j] 33 | } 34 | 35 | func (s *stableSort) Swap(i, j int) { 36 | s.s.Swap(i, j) 37 | s.pos[i], s.pos[j] = s.pos[j], s.pos[i] 38 | } 39 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/golang.org/x/text/language/go1_2.go: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build go1.2 6 | 7 | package language 8 | 9 | import "sort" 10 | 11 | var sortStable = sort.Stable 12 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/AUTHORS: -------------------------------------------------------------------------------- 1 | # This source code refers to The Go Authors for copyright purposes. 2 | # The master list of authors is in the main Go distribution, 3 | # visible at https://tip.golang.org/AUTHORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | # This source code was written by the Go contributors. 2 | # The master list of contributors is in the main Go distribution, 3 | # visible at https://tip.golang.org/CONTRIBUTORS. 4 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/encoding/prototext/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package prototext marshals and unmarshals protocol buffer messages as the 6 | // textproto format. 7 | package prototext 8 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/errors/is_go113.go: -------------------------------------------------------------------------------- 1 | // Copyright 2020 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build go1.13 6 | 7 | package errors 8 | 9 | import "errors" 10 | 11 | // Is is errors.Is. 12 | func Is(err, target error) bool { return errors.Is(err, target) } 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/fieldnum/any_gen.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Code generated by generate-protos. DO NOT EDIT. 6 | 7 | package fieldnum 8 | 9 | // Field numbers for google.protobuf.Any. 10 | const ( 11 | Any_TypeUrl = 1 // optional string 12 | Any_Value = 2 // optional bytes 13 | ) 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/fieldnum/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package fieldnum contains constants for field numbers of fields in messages 6 | // declared in descriptor.proto and any of the well-known types. 7 | package fieldnum 8 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/fieldnum/duration_gen.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Code generated by generate-protos. DO NOT EDIT. 6 | 7 | package fieldnum 8 | 9 | // Field numbers for google.protobuf.Duration. 10 | const ( 11 | Duration_Seconds = 1 // optional int64 12 | Duration_Nanos = 2 // optional int32 13 | ) 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/fieldnum/empty_gen.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Code generated by generate-protos. DO NOT EDIT. 6 | 7 | package fieldnum 8 | 9 | // Field numbers for google.protobuf.Empty. 10 | const () 11 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/fieldnum/field_mask_gen.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Code generated by generate-protos. DO NOT EDIT. 6 | 7 | package fieldnum 8 | 9 | // Field numbers for google.protobuf.FieldMask. 10 | const ( 11 | FieldMask_Paths = 1 // repeated string 12 | ) 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/fieldnum/source_context_gen.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Code generated by generate-protos. DO NOT EDIT. 6 | 7 | package fieldnum 8 | 9 | // Field numbers for google.protobuf.SourceContext. 10 | const ( 11 | SourceContext_FileName = 1 // optional string 12 | ) 13 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/fieldnum/timestamp_gen.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Code generated by generate-protos. DO NOT EDIT. 6 | 7 | package fieldnum 8 | 9 | // Field numbers for google.protobuf.Timestamp. 10 | const ( 11 | Timestamp_Seconds = 1 // optional int64 12 | Timestamp_Nanos = 2 // optional int32 13 | ) 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !protolegacy 6 | 7 | package flags 8 | 9 | const protoLegacy = false 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build protolegacy 6 | 7 | package flags 8 | 9 | const protoLegacy = true 10 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/genname/name.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // Package genname contains constants for generated names. 6 | package genname 7 | 8 | const ( 9 | State = "state" 10 | 11 | SizeCache = "sizeCache" 12 | SizeCacheA = "XXX_sizecache" 13 | 14 | WeakFields = "weakFields" 15 | WeakFieldsA = "XXX_weak" 16 | 17 | UnknownFields = "unknownFields" 18 | UnknownFieldsA = "XXX_unrecognized" 19 | 20 | ExtensionFields = "extensionFields" 21 | ExtensionFieldsA = "XXX_InternalExtensions" 22 | ExtensionFieldsB = "XXX_extensions" 23 | 24 | WeakFieldPrefix = "XXX_weak_" 25 | ) 26 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build go1.12 6 | 7 | package impl 8 | 9 | import "reflect" 10 | 11 | func mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() } 12 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build !purego,!appengine 6 | 7 | package impl 8 | 9 | // When using unsafe pointers, we can just treat enum values as int32s. 10 | 11 | var ( 12 | coderEnumNoZero = coderInt32NoZero 13 | coderEnum = coderInt32 14 | coderEnumPtr = coderInt32Ptr 15 | coderEnumSlice = coderInt32Slice 16 | coderEnumPackedSlice = coderInt32PackedSlice 17 | ) 18 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/impl/enum.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package impl 6 | 7 | import ( 8 | "reflect" 9 | 10 | pref "google.golang.org/protobuf/reflect/protoreflect" 11 | ) 12 | 13 | type EnumInfo struct { 14 | GoReflectType reflect.Type // int32 kind 15 | Desc pref.EnumDescriptor 16 | } 17 | 18 | func (t *EnumInfo) New(n pref.EnumNumber) pref.Enum { 19 | return reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(pref.Enum) 20 | } 21 | func (t *EnumInfo) Descriptor() pref.EnumDescriptor { return t.Desc } 22 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // +build purego appengine 6 | 7 | package strs 8 | 9 | import pref "google.golang.org/protobuf/reflect/protoreflect" 10 | 11 | func UnsafeString(b []byte) string { 12 | return string(b) 13 | } 14 | 15 | func UnsafeBytes(s string) []byte { 16 | return []byte(s) 17 | } 18 | 19 | type Builder struct{} 20 | 21 | func (*Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName { 22 | return prefix.Append(name) 23 | } 24 | 25 | func (*Builder) MakeString(b []byte) string { 26 | return string(b) 27 | } 28 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/proto/proto_methods.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // The protoreflect build tag disables use of fast-path methods. 6 | // +build !protoreflect 7 | 8 | package proto 9 | 10 | import ( 11 | "google.golang.org/protobuf/reflect/protoreflect" 12 | "google.golang.org/protobuf/runtime/protoiface" 13 | ) 14 | 15 | const hasProtoMethods = true 16 | 17 | func protoMethods(m protoreflect.Message) *protoiface.Methods { 18 | return m.ProtoMethods() 19 | } 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/proto/proto_reflect.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | // The protoreflect build tag disables use of fast-path methods. 6 | // +build protoreflect 7 | 8 | package proto 9 | 10 | import ( 11 | "google.golang.org/protobuf/reflect/protoreflect" 12 | "google.golang.org/protobuf/runtime/protoiface" 13 | ) 14 | 15 | const hasProtoMethods = false 16 | 17 | func protoMethods(m protoreflect.Message) *protoiface.Methods { 18 | return nil 19 | } 20 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Go Authors. All rights reserved. 2 | // Use of this source code is governed by a BSD-style 3 | // license that can be found in the LICENSE file. 4 | 5 | package protoiface 6 | 7 | type MessageV1 interface { 8 | Reset() 9 | String() string 10 | ProtoMessage() 11 | } 12 | 13 | type ExtensionRangeV1 struct { 14 | Start, End int32 // both inclusive 15 | } 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/ini.v1/.gitignore: -------------------------------------------------------------------------------- 1 | testdata/conf_out.ini 2 | ini.sublime-project 3 | ini.sublime-workspace 4 | testdata/conf_reflect.ini 5 | .idea 6 | /.vscode 7 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/ini.v1/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: go 3 | go: 4 | - 1.6.x 5 | - 1.7.x 6 | - 1.8.x 7 | - 1.9.x 8 | - 1.10.x 9 | - 1.11.x 10 | - 1.12.x 11 | - 1.13.x 12 | 13 | install: skip 14 | script: 15 | - go get golang.org/x/tools/cmd/cover 16 | - go get github.com/smartystreets/goconvey 17 | - mkdir -p $HOME/gopath/src/gopkg.in 18 | - ln -s $HOME/gopath/src/github.com/go-ini/ini $HOME/gopath/src/gopkg.in/ini.v1 19 | - cd $HOME/gopath/src/gopkg.in/ini.v1 20 | - go test -v -cover -race 21 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/ini.v1/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: build test bench vet coverage 2 | 3 | build: vet bench 4 | 5 | test: 6 | go test -v -cover -race 7 | 8 | bench: 9 | go test -v -cover -race -test.bench=. -test.benchmem 10 | 11 | vet: 12 | go vet 13 | 14 | coverage: 15 | go test -coverprofile=c.out && go tool cover -html=c.out && rm c.out 16 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/ini.v1/deprecated.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 Unknwon 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"): you may 4 | // not use this file except in compliance with the License. You may obtain 5 | // a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | // License for the specific language governing permissions and limitations 13 | // under the License. 14 | 15 | package ini 16 | 17 | const ( 18 | // Deprecated: Use "DefaultSection" instead. 19 | DEFAULT_SECTION = DefaultSection 20 | ) 21 | 22 | var ( 23 | // Deprecated: AllCapsUnderscore converts to format ALL_CAPS_UNDERSCORE. 24 | AllCapsUnderscore = SnackCase 25 | ) 26 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/ini.v1/helper.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 Unknwon 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"): you may 4 | // not use this file except in compliance with the License. You may obtain 5 | // a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | // License for the specific language governing permissions and limitations 13 | // under the License. 14 | 15 | package ini 16 | 17 | func inSlice(str string, s []string) bool { 18 | for _, v := range s { 19 | if str == v { 20 | return true 21 | } 22 | } 23 | return false 24 | } 25 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/tomb.v1/README.md: -------------------------------------------------------------------------------- 1 | Installation and usage 2 | ---------------------- 3 | 4 | See [gopkg.in/tomb.v1](https://gopkg.in/tomb.v1) for documentation and usage details. 5 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/yaml.v2/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | 3 | go: 4 | - "1.4.x" 5 | - "1.5.x" 6 | - "1.6.x" 7 | - "1.7.x" 8 | - "1.8.x" 9 | - "1.9.x" 10 | - "1.10.x" 11 | - "1.11.x" 12 | - "1.12.x" 13 | - "1.13.x" 14 | - "1.14.x" 15 | - "tip" 16 | 17 | go_import_path: gopkg.in/yaml.v2 18 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/yaml.v2/NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2011-2016 Canonical Ltd. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/yaml.v2/go.mod: -------------------------------------------------------------------------------- 1 | module gopkg.in/yaml.v2 2 | 3 | go 1.15 4 | 5 | require gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 6 | -------------------------------------------------------------------------------- /bucket-scanner/vendor/gopkg.in/yaml.v2/writerc.go: -------------------------------------------------------------------------------- 1 | package yaml 2 | 3 | // Set the writer error and return false. 4 | func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool { 5 | emitter.error = yaml_WRITER_ERROR 6 | emitter.problem = problem 7 | return false 8 | } 9 | 10 | // Flush the output buffer. 11 | func yaml_emitter_flush(emitter *yaml_emitter_t) bool { 12 | if emitter.write_handler == nil { 13 | panic("write handler not set") 14 | } 15 | 16 | // Check if the buffer is empty. 17 | if emitter.buffer_pos == 0 { 18 | return true 19 | } 20 | 21 | if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil { 22 | return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error()) 23 | } 24 | emitter.buffer_pos = 0 25 | return true 26 | } 27 | -------------------------------------------------------------------------------- /conf/authdata.json: -------------------------------------------------------------------------------- 1 | { 2 | "accounts": [{ 3 | "name": "bart", 4 | "arn": "aws::iam:123456789012:root", 5 | "canonicalID": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be", 6 | "displayName": "bart", 7 | "keys": { 8 | "access": "accessKey1", 9 | "secret": "verySecretKey1" 10 | } 11 | }, { 12 | "name": "lisa", 13 | "arn": "aws::iam:123456789013:root", 14 | "canonicalID": "79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2bf", 15 | "displayName": "lisa", 16 | "keys": { 17 | "access": "accessKey2", 18 | "secret": "verySecretKey2" 19 | } 20 | }] 21 | } 22 | -------------------------------------------------------------------------------- /extensions/gc/GarbageCollectorConfigValidator.js: -------------------------------------------------------------------------------- 1 | const joi = require('joi'); 2 | const { 3 | authJoi, 4 | retryParamsJoi, 5 | probeServerJoi, 6 | hostPortJoi, 7 | } = require('../../lib/config/configItems.joi'); 8 | 9 | const joiSchema = joi.object({ 10 | topic: joi.string().required(), 11 | auth: authJoi.required(), 12 | consumer: { 13 | groupId: joi.string().required(), 14 | retry: retryParamsJoi, 15 | concurrency: joi.number().greater(0).default(10), 16 | }, 17 | probeServer: probeServerJoi.default(), 18 | vaultAdmin: hostPortJoi, 19 | }); 20 | 21 | function configValidator(backbeatConfig, extConfig) { 22 | const validatedConfig = joi.attempt(extConfig, joiSchema); 23 | return validatedConfig; 24 | } 25 | 26 | module.exports = configValidator; 27 | -------------------------------------------------------------------------------- /extensions/gc/index.js: -------------------------------------------------------------------------------- 1 | const GarbageCollectorConfigValidator = 2 | require('./GarbageCollectorConfigValidator'); 3 | 4 | module.exports = { 5 | name: 'gc', 6 | version: '1.0.0', 7 | configValidator: GarbageCollectorConfigValidator, 8 | }; 9 | -------------------------------------------------------------------------------- /extensions/gc/policy.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [ 4 | { 5 | "Sid": "GarbageCollector", 6 | "Effect": "Allow", 7 | "Action": [ 8 | "s3:ReplicateObject" 9 | ], 10 | "Resource": [ 11 | "*" 12 | ] 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /extensions/index.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const path = require('path'); 3 | 4 | const extensions = {}; 5 | 6 | fs.readdirSync(__dirname).forEach(moduleDir => { 7 | const indexPath = path.join(__dirname, moduleDir, 'index.js'); 8 | 9 | if (fs.existsSync(indexPath)) { 10 | extensions[moduleDir] = require(`./${moduleDir}`); 11 | } 12 | }); 13 | 14 | module.exports = extensions; 15 | -------------------------------------------------------------------------------- /extensions/ingestion/constants.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const testIsOn = process.env.CI === 'true'; 4 | 5 | const constants = { 6 | zookeeperNamespace: 7 | testIsOn ? '/backbeattest/ingestion' : '/backbeat/ingestion', 8 | zkStatePath: '/state', 9 | zkStateProperties: ['paused', 'scheduledResume'], 10 | metricsExtension: 'ingestion', 11 | metricsTypeQueued: 'queued', 12 | metricsTypeCompleted: 'completed', 13 | metricsTypePendingOnly: 'pendingOnly', 14 | redisKeys: { 15 | opsDone: testIsOn ? 'test:bb:opsdone' : 'bb:ingestion:opsdone', 16 | bytesDone: testIsOn ? 'test:bb:bytesdone' : 'bb:ingestion:bytesdone', 17 | opsPending: testIsOn ? 'test:bb:opspending' : 'bb:ingestion:opspending', 18 | bytesPending: testIsOn ? 19 | 'test:bb:bytespending' : 'bb:ingestion:bytespending', 20 | }, 21 | }; 22 | 23 | module.exports = constants; 24 | -------------------------------------------------------------------------------- /extensions/ingestion/index.js: -------------------------------------------------------------------------------- 1 | const IngestionConfigValidator = require('./IngestionConfigValidator'); 2 | const IngestionQueuePopulator = require('./IngestionQueuePopulator'); 3 | 4 | module.exports = { 5 | name: 'ingestion', 6 | version: '1.0.0', 7 | configValidator: IngestionConfigValidator, 8 | queuePopulatorExtension: IngestionQueuePopulator, 9 | }; 10 | -------------------------------------------------------------------------------- /extensions/lifecycle/bucketProcessor/policy.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [ 4 | { 5 | "Sid": "LifecycleExpirationBucketProcessor", 6 | "Effect": "Allow", 7 | "Action": [ 8 | "s3:GetLifecycleConfiguration", 9 | "s3:GetBucketVersioning", 10 | "s3:ListBucket", 11 | "s3:ListBucketVersions", 12 | "s3:ListBucketMultipartUploads", 13 | "s3:GetObjectTagging", 14 | "s3:GetObjectVersionTagging", 15 | "s3:GetObject", 16 | "s3:GetObjectVersion" 17 | ], 18 | "Resource": [ 19 | "*" 20 | ] 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /extensions/lifecycle/conductor/policy.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [ 4 | { 5 | "Sid": "ReadAccounts", 6 | "Effect": "Allow", 7 | "Action": [ 8 | "vaultadmin:GetAccountInfo" 9 | ], 10 | "Resource": "arn:aws:iam::*:root" 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /extensions/lifecycle/conductor/policy_index_management.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [ 4 | { 5 | "Sid": "LifecycleConductorBucketIndexManagement", 6 | "Effect": "Allow", 7 | "Action": [ 8 | "s3:ReplicateObject" 9 | ], 10 | "Resource": [ 11 | "*" 12 | ] 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /extensions/lifecycle/index.js: -------------------------------------------------------------------------------- 1 | const LifecycleConfigValidator = require('./LifecycleConfigValidator'); 2 | const LifecycleOplogPopulatorUtils = require('./LifecycleOplogPopulatorUtils'); 3 | 4 | module.exports = { 5 | name: 'lifecycle', 6 | version: '1.0.0', 7 | configValidator: LifecycleConfigValidator, 8 | // we need a dynamic require to avoid a circular dependency 9 | queuePopulatorExtension: () => require('./LifecycleQueuePopulator'), 10 | oplogPopulatorUtils: LifecycleOplogPopulatorUtils, 11 | }; 12 | -------------------------------------------------------------------------------- /extensions/lifecycle/objectProcessor/policy.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [ 4 | { 5 | "Sid": "LifecycleExpirationObjectProcessor", 6 | "Effect": "Allow", 7 | "Action": [ 8 | "s3:GetObject", 9 | "s3:GetObjectVersion", 10 | "s3:DeleteObject", 11 | "s3:DeleteObjectVersion", 12 | "s3:AbortMultipartUpload", 13 | "s3:ReplicateObject" 14 | ], 15 | "Resource": [ 16 | "*" 17 | ] 18 | } 19 | ] 20 | } 21 | -------------------------------------------------------------------------------- /extensions/lifecycle/objectProcessor/policy_transition.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [ 4 | { 5 | "Sid": "LifecycleObjectTransitionProcessor", 6 | "Effect": "Allow", 7 | "Action": [ 8 | "s3:ReplicateObject" 9 | ], 10 | "Resource": [ 11 | "*" 12 | ] 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /extensions/lifecycle/util/safeJsonParse.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Parse JSON without throwing an exception 3 | * @param {String} str - The stringified json 4 | * @return {Object} - Object with any error and JSON parse value 5 | */ 6 | function safeJsonParse(str) { 7 | let result = null; 8 | try { 9 | result = JSON.parse(str); 10 | } catch (err) { 11 | return { error: err }; 12 | } 13 | return { error: null, result }; 14 | } 15 | 16 | module.exports = safeJsonParse; 17 | -------------------------------------------------------------------------------- /extensions/mongoProcessor/MongoProcessorConfigValidator.js: -------------------------------------------------------------------------------- 1 | const joi = require('joi'); 2 | const { retryParamsJoi, probeServerJoi } = require('../../lib/config/configItems.joi'); 3 | 4 | const joiSchema = joi.object({ 5 | topic: joi.string().required(), 6 | groupId: joi.string().required(), 7 | retry: retryParamsJoi, 8 | concurrency: joi.number().greater(0).default(1), 9 | probeServer: probeServerJoi.default(), 10 | circuitBreaker: joi.object().optional(), 11 | }); 12 | 13 | function configValidator(backbeatConfig, extConfig) { 14 | const validatedConfig = joi.attempt(extConfig, joiSchema); 15 | return validatedConfig; 16 | } 17 | 18 | module.exports = configValidator; 19 | -------------------------------------------------------------------------------- /extensions/mongoProcessor/constants.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | 4 | const constants = { 5 | promMetricNames: { 6 | ingestionProcessedElapsedSeconds: 's3_ingestion_mongo_processed_elapsed_seconds', 7 | ingestionKafkaPulledTotal: 's3_ingestion_kafka_messages_pulled_total', 8 | ingestionBucketTimes: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 0.75, 1, 5, 10], 9 | ingestionKafkaConsume: 's3_ingestion_kafka_consume_status_total', 10 | }, 11 | }; 12 | 13 | module.exports = constants; 14 | -------------------------------------------------------------------------------- /extensions/mongoProcessor/index.js: -------------------------------------------------------------------------------- 1 | const MongoProcessorConfigValidator = 2 | require('./MongoProcessorConfigValidator'); 3 | 4 | module.exports = { 5 | name: 'ingestion', 6 | version: '1.0.0', 7 | configValidator: MongoProcessorConfigValidator, 8 | }; 9 | -------------------------------------------------------------------------------- /extensions/notification/constants.js: -------------------------------------------------------------------------------- 1 | const constants = { 2 | extensionName: 'notification', 3 | nameFilter: { 4 | prefix: 'Prefix', 5 | suffix: 'Suffix', 6 | }, 7 | bucketNotifConfigPropName: 'notificationConfiguration', 8 | zkConfigParentNode: 'config', 9 | arn: { 10 | partition: 'scality', 11 | service: 'bucketnotif', 12 | }, 13 | authFilesFolder: 'ssl', 14 | supportedAuthTypes: ['kerberos'], 15 | deleteEvent: 's3:ObjectRemoved:Delete', 16 | eventMessageProperty: { 17 | dateTime: 'last-modified', 18 | eventType: 'originOp', 19 | region: 'dataStoreName', 20 | schemaVersion: 'md-model-version', 21 | size: 'content-length', 22 | versionId: 'versionId', 23 | }, 24 | eventVersion: '1.0', 25 | eventSource: 'scality:s3', 26 | eventS3SchemaVersion: '1.0', 27 | }; 28 | 29 | module.exports = constants; 30 | -------------------------------------------------------------------------------- /extensions/notification/destination/index.js: -------------------------------------------------------------------------------- 1 | const KafkaNotificationDestination = require('./KafkaNotificationDestination'); 2 | 3 | module.exports = { 4 | kafka: KafkaNotificationDestination, 5 | }; 6 | -------------------------------------------------------------------------------- /extensions/notification/index.js: -------------------------------------------------------------------------------- 1 | const NotificationConfigValidator = require('./NotificationConfigValidator'); 2 | const NotificationOplogPopulatorUtils = require('./NotificationOplogPopulatorUtils'); 3 | 4 | module.exports = { 5 | name: 'notification', 6 | version: '1.0.0', 7 | configValidator: NotificationConfigValidator, 8 | queuePopulatorExtension: () => require('./NotificationQueuePopulator'), 9 | oplogPopulatorUtils: NotificationOplogPopulatorUtils, 10 | }; 11 | -------------------------------------------------------------------------------- /extensions/notification/utils/safeJsonParse.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Parse JSON without throwing an exception 3 | * @param {String} str - The stringified json 4 | * @return {Object} - Object with any error and JSON parse value 5 | */ 6 | function safeJsonParse(str) { 7 | let result = null; 8 | try { 9 | result = JSON.parse(str); 10 | } catch (err) { 11 | return { error: err }; 12 | } 13 | return { error: null, result }; 14 | } 15 | 16 | module.exports = safeJsonParse; 17 | -------------------------------------------------------------------------------- /extensions/oplogPopulator/OplogPopulatorConfigValidator.js: -------------------------------------------------------------------------------- 1 | const joi = require('joi'); 2 | const { probeServerJoi } = require('../../lib/config/configItems.joi'); 3 | 4 | const joiSchema = joi.object({ 5 | topic: joi.string().required(), 6 | kafkaConnectHost: joi.string().required(), 7 | kafkaConnectPort: joi.number().required(), 8 | numberOfConnectors: joi.number().required().min(0), 9 | prefix: joi.string().optional(), 10 | probeServer: probeServerJoi.default(), 11 | connectorsUpdateCronRule: joi.string().default('*/1 * * * * *'), 12 | heartbeatIntervalMs: joi.number().default(10000), 13 | }); 14 | 15 | function configValidator(backbeatConfig, extConfig) { 16 | const validatedConfig = joi.attempt(extConfig, joiSchema); 17 | return validatedConfig; 18 | } 19 | 20 | module.exports = { 21 | OplogPopulatorConfigJoiSchema: joiSchema, 22 | OplogPopulatorConfigValidator: configValidator 23 | }; 24 | -------------------------------------------------------------------------------- /extensions/oplogPopulator/index.js: -------------------------------------------------------------------------------- 1 | const { OplogPopulatorConfigValidator } = 2 | require('./OplogPopulatorConfigValidator'); 3 | 4 | module.exports = { 5 | name: 'oplogPopulator', 6 | version: '1.0.0', 7 | configValidator: OplogPopulatorConfigValidator, 8 | }; 9 | -------------------------------------------------------------------------------- /extensions/replication/index.js: -------------------------------------------------------------------------------- 1 | const ReplicationConfigValidator = require('./ReplicationConfigValidator'); 2 | const ReplicationOplogPopulatorUtils = require('./ReplicationOplogPopulatorUtils'); 3 | 4 | module.exports = { 5 | name: 'replication', 6 | version: '1.0.0', 7 | configValidator: ReplicationConfigValidator, 8 | queuePopulatorExtension: () => require('./ReplicationQueuePopulator'), 9 | oplogPopulatorUtils: ReplicationOplogPopulatorUtils, 10 | }; 11 | -------------------------------------------------------------------------------- /extensions/replication/utils/getExtMetrics.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Get the object form to send to the CRR metrics topic. 3 | * @param {String} site - The site of the destination object 4 | * @param {Number} bytes - The size of the metrics being set in Redis 5 | * @param {ObjectQueueEntry} entry - The object queue entry for the object being 6 | * monitored 7 | * @return {Object} - The object to send to the CRR metrics topic as a message 8 | */ 9 | function getExtMetrics(site, bytes, entry) { 10 | const extMetrics = {}; 11 | extMetrics[site] = { 12 | bytes, 13 | bucketName: entry.getBucket(), 14 | objectKey: entry.getObjectKey(), 15 | versionId: entry.getEncodedVersionId(), 16 | }; 17 | return extMetrics; 18 | } 19 | 20 | module.exports = getExtMetrics; 21 | -------------------------------------------------------------------------------- /extensions/replication/utils/getLocationsFromStorageClass.js: -------------------------------------------------------------------------------- 1 | function getLocationsFromStorageClass(replicationStorageClass) { 2 | return replicationStorageClass.split(',').map(s => { 3 | if (s.endsWith(':preferred_read')) { 4 | return s.split(':')[0]; 5 | } 6 | return s; 7 | }); 8 | } 9 | 10 | module.exports = getLocationsFromStorageClass; 11 | -------------------------------------------------------------------------------- /extensions/replication/utils/getRedisClient.js: -------------------------------------------------------------------------------- 1 | const { RedisClient } = require('arsenal').metrics; 2 | const config = require('../../../lib/Config'); 3 | const werelogs = require('werelogs'); 4 | 5 | const log = new werelogs.Logger('Backbeat:RedisClient'); 6 | werelogs.configure({ 7 | level: config.log.logLevel, 8 | dump: config.log.dumpLevel, 9 | }); 10 | 11 | function getRedisClient() { 12 | const redisConfig = Object.assign({}, config.redis, { 13 | enableOfflineQueue: false, 14 | }); 15 | return new RedisClient(redisConfig, log); 16 | } 17 | 18 | module.exports = getRedisClient; 19 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | Config: require('./lib/Config'), 3 | management: require('./lib/management/index'), 4 | BackbeatConsumer: require('./lib/BackbeatConsumer'), 5 | BackbeatProducer: require('./lib/BackbeatProducer'), 6 | clients: { 7 | zookeeper: require('./lib/clients/zookeeper'), 8 | }, 9 | models: { 10 | QueueEntry: require('./lib/models/QueueEntry'), 11 | ObjectQueueEntry: require('./lib/models/ObjectQueueEntry'), 12 | }, 13 | credentials: { 14 | AccountCredentials: require('./lib/credentials/AccountCredentials'), 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /lib/clients/BackbeatClient.js: -------------------------------------------------------------------------------- 1 | const AWS = require('aws-sdk'); 2 | const Service = require('aws-sdk').Service; 3 | 4 | // for more info, see how S3 client is configured in aws-sdk 5 | // (clients/s3.js and lib/services/s3.js) 6 | 7 | AWS.apiLoader.services.backbeat = {}; 8 | Object.defineProperty(AWS.apiLoader.services.backbeat, '2017-07-01', { 9 | get: function get() { 10 | const model = require('./backbeat-2017-07-01.api.json'); 11 | return model; 12 | }, 13 | enumerable: true, 14 | configurable: true, 15 | }); 16 | const BackbeatClient = Service.defineService('backbeat', ['2017-07-01']); 17 | 18 | BackbeatClient.prototype.validateService = function validateService() { 19 | if (!this.config.region) { 20 | this.config.region = 'us-east-1'; 21 | } 22 | }; 23 | 24 | module.exports = BackbeatClient; 25 | -------------------------------------------------------------------------------- /lib/management/index.js: -------------------------------------------------------------------------------- 1 | const config = require('../Config'); 2 | const werelogs = require('werelogs'); 3 | 4 | werelogs.configure({ 5 | level: config.log.logLevel, 6 | dump: config.log.dumpLevel, 7 | }); 8 | 9 | const logger = new werelogs.Logger('management:facade'); 10 | 11 | function loadManagementBackend() { 12 | const backendName = process.env.MANAGEMENT_BACKEND; 13 | const backend = backendName === 'operator' ? 14 | 'operatorBackend' : 'pensieveBackend'; 15 | 16 | const mod = require(`./${backend}`); 17 | 18 | if (!mod) { 19 | logger.error('management backend not found', { backendName }); 20 | process.exit(1); 21 | } 22 | 23 | return mod; 24 | } 25 | 26 | module.exports = loadManagementBackend(); 27 | -------------------------------------------------------------------------------- /lib/util/OplogPopulatorUtils.js: -------------------------------------------------------------------------------- 1 | const { errors } = require('arsenal'); 2 | 3 | class OplogPopulatorUtils { 4 | /** 5 | * Get extension specific MongoDB filter 6 | * to get buckets with that have the current 7 | * extension enabled 8 | * @returns {Object} MongoDB filter 9 | */ 10 | static getExtensionMongoDBFilter() { 11 | throw errors.NotImplemented; 12 | } 13 | 14 | /** 15 | * Check if bucket has the current extension 16 | * active 17 | * @param {Object} bucketMD bucket metadata 18 | * @returns {boolean} true if the bucket has the 19 | * current extension enabled 20 | */ 21 | static isBucketExtensionEnabled(bucketMD) { // eslint-disable-line no-unused-vars 22 | throw errors.NotImplemented; 23 | } 24 | } 25 | 26 | module.exports = OplogPopulatorUtils; 27 | -------------------------------------------------------------------------------- /lib/util/entry.js: -------------------------------------------------------------------------------- 1 | const { versioning } = require('arsenal'); 2 | const { DbPrefixes } = versioning.VersioningConstants; 3 | 4 | /** 5 | * Function that strips v1 prefixes from object keys 6 | * @param {string} key entry key 7 | * @returns {string} entry key without v1 prefix 8 | */ 9 | function transformKey(key) { 10 | if (!key) { 11 | return key; 12 | } 13 | if (key.startsWith(DbPrefixes.Master)) { 14 | return key.slice(DbPrefixes.Master.length); 15 | } 16 | if (key.startsWith(DbPrefixes.Version)) { 17 | return key.slice(DbPrefixes.Version.length); 18 | } 19 | return key; 20 | } 21 | 22 | module.exports = { 23 | transformKey, 24 | }; 25 | -------------------------------------------------------------------------------- /lib/util/topic.js: -------------------------------------------------------------------------------- 1 | function withTopicPrefix(topic) { 2 | if (process.env.KAFKA_TOPIC_PREFIX) { 3 | return process.env.KAFKA_TOPIC_PREFIX + topic; 4 | } 5 | return topic; 6 | } 7 | 8 | module.exports = { 9 | withTopicPrefix, 10 | }; 11 | -------------------------------------------------------------------------------- /lib/util/versioning.js: -------------------------------------------------------------------------------- 1 | const VID_SEP = require('arsenal').versioning.VersioningConstants 2 | .VersionId.Separator; 3 | 4 | /** 5 | * @param {string} key full object key (_id in metadata) 6 | * @returns {string | null} version id 7 | */ 8 | function extractVersionId(key) { 9 | if (key.includes(VID_SEP)) { 10 | return key.split(VID_SEP)[1]; 11 | } 12 | return null; 13 | } 14 | 15 | module.exports = { 16 | extractVersionId, 17 | }; 18 | -------------------------------------------------------------------------------- /policies/queue_populator_policy.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [{ 4 | "Sid": "ReadAccounts", 5 | "Effect": "Allow", 6 | "Action": [ 7 | "vaultadmin:GetAccountInfo" 8 | ], 9 | "Resource": "arn:aws:iam::*:root" 10 | }] 11 | } 12 | -------------------------------------------------------------------------------- /policies/read_accounts.json: -------------------------------------------------------------------------------- 1 | { 2 | "Version": "2012-10-17", 3 | "Statement": [{ 4 | "Sid": "ReadAccounts", 5 | "Effect": "Allow", 6 | "Action": [ 7 | "vaultadmin:GetAccountInfo" 8 | ], 9 | "Resource": "arn:aws:iam::*:root" 10 | }] 11 | } 12 | -------------------------------------------------------------------------------- /res/backbeat-crr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scality/backbeat/cfab65dd82929b52ab496dd4a396e950800d634a/res/backbeat-crr.png -------------------------------------------------------------------------------- /res/backbeat-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scality/backbeat/cfab65dd82929b52ab496dd4a396e950800d634a/res/backbeat-logo.png -------------------------------------------------------------------------------- /res/design-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scality/backbeat/cfab65dd82929b52ab496dd4a396e950800d634a/res/design-overview.png -------------------------------------------------------------------------------- /tests/functional/utils/VaultMock.js: -------------------------------------------------------------------------------- 1 | class VaultMock { 2 | onRequest(req, res) { 3 | res.writeHead(200); 4 | res.end(JSON.stringify({ 5 | Credentials: { 6 | AccessKeyId: 'accessKeyId', 7 | SecretAccessKey: 'secretAccessKey', 8 | SessionToken: 'sessionToken', 9 | Expiration: 'expiration', 10 | }, 11 | })); 12 | } 13 | } 14 | 15 | module.exports = VaultMock; 16 | -------------------------------------------------------------------------------- /tests/functional/utils/getUrl.js: -------------------------------------------------------------------------------- 1 | const config = require('../../config.json'); 2 | 3 | function getUrl(path, options) { 4 | const defaultOptions = { 5 | host: config.server.host, 6 | port: config.server.port, 7 | method: 'GET', 8 | }; 9 | const { host, port } = options || defaultOptions; 10 | return `http://${host}:${port}${path}`; 11 | } 12 | 13 | module.exports = getUrl; 14 | -------------------------------------------------------------------------------- /tests/functional/utils/mockZookeeperClient.js: -------------------------------------------------------------------------------- 1 | const ZookeeperMock = require('zookeeper-mock'); 2 | const sinon = require('sinon'); 3 | const zookeeper = require('node-zookeeper-client'); 4 | 5 | function mockZookeeperClient(options) { 6 | const endpoint = 'fake.endpoint:2181'; 7 | const zk = new ZookeeperMock(options); 8 | const client = zk.createClient(endpoint); 9 | sinon.stub(zookeeper, 'createClient').returns(client); 10 | } 11 | 12 | module.exports = mockZookeeperClient; 13 | -------------------------------------------------------------------------------- /tests/functional/utils/timeMachine.js: -------------------------------------------------------------------------------- 1 | const lolex = require('lolex'); 2 | 3 | class TimeMachine { 4 | moveTimeForward(hours) { 5 | if (this._clock) { 6 | // in milliseconds 7 | const ms = hours * 60 * 60 * 1000; 8 | this._clock.tick(ms); 9 | } 10 | } 11 | 12 | install(now) { 13 | const currentTime = now || new Date(); 14 | this._clock = lolex.install({ 15 | now: currentTime, 16 | shouldAdvanceTime: true, 17 | }); 18 | return this._clock; 19 | } 20 | 21 | uninstall() { 22 | if (this._clock) { 23 | this._clock.uninstall(); 24 | this._clock = null; 25 | } 26 | } 27 | } 28 | 29 | module.exports = TimeMachine; 30 | -------------------------------------------------------------------------------- /tests/unit/credentials/external-creds.json: -------------------------------------------------------------------------------- 1 | { 2 | "accessKey": "ak", 3 | "secretKey": "sk" 4 | } 5 | -------------------------------------------------------------------------------- /tests/unit/credentials/utils.js: -------------------------------------------------------------------------------- 1 | 2 | function stsResponseToXML(stsResponse) { 3 | const resp = [ 4 | '', 5 | '', 6 | '', 7 | '', 8 | stsResponse.Credentials.SessionToken, 9 | '', 10 | '', 11 | stsResponse.Credentials.SecretAccessKey, 12 | '', 13 | '', 14 | new Date(stsResponse.Credentials.Expiration).toISOString(), 15 | '', 16 | '', 17 | stsResponse.Credentials.AccessKeyId, 18 | '', 19 | '', 20 | '', 21 | '', 22 | ]; 23 | return resp.join(''); 24 | } 25 | 26 | module.exports = { 27 | stsResponseToXML, 28 | }; 29 | -------------------------------------------------------------------------------- /tests/unit/lib/util/buffer.spec.js: -------------------------------------------------------------------------------- 1 | const assert = require('assert'); 2 | 3 | const { readUInt64BE } = require('../../../../lib/util/buffer'); 4 | 5 | describe('readUInt64BE', () => { 6 | it('should parse a small long number in big endian', () => { 7 | const tsBuf = Buffer.from([0, 0, 0, 0, 0, 0, 0, 3]); 8 | const value = readUInt64BE(tsBuf); 9 | assert.strictEqual(value, 3); 10 | }); 11 | 12 | it('should parse a long number greater than 2**32 in big endian', () => { 13 | // taken from an actual timestamp value from a zookeeper node 14 | const tsBuf = Buffer.from([0, 0, 1, 107, 118, 199, 180, 164]); 15 | const value = readUInt64BE(tsBuf); 16 | assert.strictEqual(value, 1561065927844); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /tests/unit/lib/util/entry.spec.js: -------------------------------------------------------------------------------- 1 | const assert = require('assert'); 2 | 3 | const { transformKey } = require('../../../../lib/util/entry'); 4 | 5 | describe('transformKey', () => { 6 | it('should not modify v0 keys', done => { 7 | const entryMasterKey = 'test-object'; 8 | const entryVersionKey = 'test-object\u0000versionId'; 9 | assert.strictEqual(transformKey(entryMasterKey), entryMasterKey); 10 | assert.strictEqual(transformKey(entryVersionKey), entryVersionKey); 11 | return done(); 12 | }); 13 | 14 | it('should strip prefix from v1 keys', done => { 15 | const entryMasterKey = '\x7fMtest-object'; 16 | const entryVersionKey = '\x7fVtest-object\u0000versionId'; 17 | assert.strictEqual(transformKey(entryMasterKey), 'test-object'); 18 | assert.strictEqual(transformKey(entryVersionKey), 'test-object\u0000versionId'); 19 | return done(); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /tests/utils/fakeLogger.js: -------------------------------------------------------------------------------- 1 | const fakeLogger = { 2 | trace: () => {}, 3 | error: console.error, // eslint-disable-line no-console 4 | info: console.log, // eslint-disable-line no-console 5 | debug: console.debug, // eslint-disable-line no-console 6 | warn: console.warn, // eslint-disable-line no-console 7 | getSerializedUids: () => {}, 8 | end: () => fakeLogger, 9 | newRequestLogger: () => fakeLogger, 10 | }; 11 | 12 | module.exports = fakeLogger; 13 | -------------------------------------------------------------------------------- /tests/utils/mockEntries.js: -------------------------------------------------------------------------------- 1 | const sourceEntry = { 2 | getBucket: () => {}, 3 | getObjectKey: () => {}, 4 | getReplicationStorageType: () => {}, 5 | getEncodedVersionId: () => {}, 6 | getLastModified: () => new Date().toJSON(), 7 | getLogInfo: () => {}, 8 | getLocation: () => ([]), 9 | getUserMetadata: () => {}, 10 | getContentType: () => {}, 11 | getContentLength: () => 0, 12 | getCacheControl: () => {}, 13 | getContentDisposition: () => {}, 14 | getContentEncoding: () => {}, 15 | getReplicationIsNFS: () => {}, 16 | getTags: () => {}, 17 | getObjectVersionedKey: () => {}, 18 | getValue: () => {}, 19 | getVersionId: () => {}, 20 | toFailedEntry: () => {}, 21 | getReplayCount: () => {}, 22 | setReplayCount: () => {}, 23 | }; 24 | 25 | module.exports = { sourceEntry }; 26 | -------------------------------------------------------------------------------- /tests/utils/wait_for_local_port.bash: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | wait_for_local_port() { 4 | local port=$1 5 | local timeout=$2 6 | local count=0 7 | local ret=1 8 | echo "waiting for BackbeatServer:$port" 9 | while [[ "$ret" -eq "1" && "$count" -lt "$timeout" ]] ; do 10 | nc -z -w 1 localhost $port 11 | ret=$? 12 | if [ ! "$ret" -eq "0" ]; then 13 | echo -n . 14 | sleep 1 15 | count=$(($count+1)) 16 | fi 17 | done 18 | 19 | echo "" 20 | 21 | if [[ "$count" -eq "$timeout" ]]; then 22 | echo "Server did not start in less than $timeout seconds. Exiting..." 23 | exit 1 24 | fi 25 | sleep 5 26 | 27 | echo "Server got ready in ~${count} seconds. Starting test now..." 28 | } 29 | 30 | wait_for_local_port $1 $2 31 | --------------------------------------------------------------------------------