summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/misc/tokens.pl
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-07-24 09:54:23 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-07-24 09:54:44 +0000
commit836b47cb7e99a977c5a23b059ca1d0b5065d310e (patch)
tree1604da8f482d02effa033c94a84be42bc0c848c3 /web/server/h2o/libh2o/misc/tokens.pl
parentReleasing debian version 1.44.3-2. (diff)
downloadnetdata-836b47cb7e99a977c5a23b059ca1d0b5065d310e.tar.xz
netdata-836b47cb7e99a977c5a23b059ca1d0b5065d310e.zip
Merging upstream version 1.46.3.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'web/server/h2o/libh2o/misc/tokens.pl')
-rwxr-xr-xweb/server/h2o/libh2o/misc/tokens.pl234
1 files changed, 0 insertions, 234 deletions
diff --git a/web/server/h2o/libh2o/misc/tokens.pl b/web/server/h2o/libh2o/misc/tokens.pl
deleted file mode 100755
index 1fcf173fa..000000000
--- a/web/server/h2o/libh2o/misc/tokens.pl
+++ /dev/null
@@ -1,234 +0,0 @@
-#! /usr/bin/perl
-
-# Copyright (c) 2014 DeNA Co., Ltd.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to
-# deal in the Software without restriction, including without limitation the
-# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-# sell copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-use strict;
-use warnings;
-use List::Util qw(max);
-use List::MoreUtils qw(uniq);
-use Text::MicroTemplate qw(render_mt);
-
-use constant LICENSE => << 'EOT';
-/*
- * Copyright (c) 2014 DeNA Co., Ltd.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-EOT
-
-my %tokens;
-my @hpack;
-
-while (my $line = <DATA>) {
- chomp $line;
- my ($hpack_index, $proxy_should_drop_for_req, $proxy_should_drop_for_res, $is_init_header_special, $http2_should_reject, $copy_for_push_request, $dont_compress, $name, $value) =
- split /\s+/, $line, 9;
- next unless $name ne '';
- $tokens{$name} = [ $hpack_index, $proxy_should_drop_for_req, $proxy_should_drop_for_res, $is_init_header_special, $http2_should_reject, $copy_for_push_request, $dont_compress ]
- unless defined $tokens{$name};
- if ($hpack_index != 0) {
- $hpack[$hpack_index - 1] = [ $name, $value ];
- }
-}
-
-my @tokens = map { [ $_, @{$tokens{$_}} ] } uniq sort keys %tokens;
-
-# generate token.h
-open my $fh, '>', 'include/h2o/token.h'
- or die "failed to open include/h2o/token.h:$!";
-print $fh render_mt(<< 'EOT', \@tokens, LICENSE)->as_string;
-? my ($tokens, $license) = @_;
-<?= $license ?>
-/* DO NOT EDIT! generated by tokens.pl */
-#ifndef h2o__token_h
-#define h2o__token_h
-
-? for my $i (0..$#$tokens) {
-#define <?= normalize_name($tokens->[$i][0]) ?> (h2o__tokens + <?= $i ?>)
-? }
-
-#endif
-EOT
-close $fh;
-
-# generate token_table.h
-open $fh, '>', 'lib/core/token_table.h'
- or die "failed to open lib/core/token_table.h:$!";
-print $fh render_mt(<< 'EOT', \@tokens, LICENSE)->as_string;
-? my ($tokens, $license) = @_;
-<?= $license ?>
-/* DO NOT EDIT! generated by tokens.pl */
-h2o_token_t h2o__tokens[] = {
-? for my $i (0..$#$tokens) {
- { { H2O_STRLIT("<?= $tokens->[$i][0] ?>") }, <?= join(", ", map { $tokens->[$i][$_] } (1..$#{$tokens->[$i]})) ?> }<?= $i == $#$tokens ? '' : ',' ?>
-? }
-};
-size_t h2o__num_tokens = <?= scalar @$tokens ?>;
-
-const h2o_token_t *h2o_lookup_token(const char *name, size_t len)
-{
- switch (len) {
-? for my $len (uniq sort { $a <=> $b } map { length $_->[0] } @$tokens) {
- case <?= $len ?>:
- switch (name[<?= $len - 1 ?>]) {
-? my @tokens_of_len = grep { length($_->[0]) == $len } @$tokens;
-? for my $end (uniq sort map { substr($_->[0], length($_->[0]) - 1) } @tokens_of_len) {
- case '<?= $end ?>':
-? my @tokens_of_end = grep { substr($_->[0], length($_->[0]) - 1) eq $end } @tokens_of_len;
-? for my $token (@tokens_of_end) {
- if (memcmp(name, "<?= substr($token->[0], 0, length($token->[0]) - 1) ?>", <?= length($token->[0]) - 1 ?>) == 0)
- return <?= normalize_name($token->[0]) ?>;
-? }
- break;
-? }
- }
- break;
-? }
- }
-
- return NULL;
-}
-EOT
-close $fh;
-
-# generate hpack_static_table.h
-open $fh, '>', 'lib/http2/hpack_static_table.h'
- or die "failed to open lib/hpack_static_table.h:$!";
-print $fh render_mt(<< 'EOT', \@hpack, LICENSE)->as_string;
-? my ($entries, $license) = @_;
-<?= $license ?>
-/* automatically generated by tokens.pl */
-
-static const struct st_h2o_hpack_static_table_entry_t h2o_hpack_static_table[<?= scalar @$entries ?>] = {
-? for my $i (0..$#$entries) {
- { <?= normalize_name($entries->[$i][0]) ?>, { H2O_STRLIT("<?= $entries->[$i][1] || "" ?>") } }<?= $i == $#$entries ? "" : "," ?>
-? }
-};
-EOT
-close $fh;
-
-sub normalize_name {
- my $n = shift;
- $n =~ s/^://;
- $n =~ s/-/_/g;
- $n =~ tr/a-z/A-Z/;
- "H2O_TOKEN_$n";
-}
-
-# The table below is used to generate h2o__tokens in lib/core/token_table.h
-#
-# Meaning of the fields:
-# - HTTP/2 static table index (non-zero if present)
-# - Proxy should drop in request
-# - Proxy should drop in response
-# - Is init header special
-# - HTTP/2 should reject
-# - Copy for push request
-# - Disable compression (non-zero)
-
-__DATA__
-1 0 0 0 0 0 0 :authority
-2 0 0 0 0 0 0 :method GET
-3 0 0 0 0 0 0 :method POST
-4 0 0 0 0 0 0 :path /
-5 0 0 0 0 0 0 :path /index.html
-6 0 0 0 0 0 0 :scheme http
-7 0 0 0 0 0 0 :scheme https
-8 0 0 0 0 0 0 :status 200
-9 0 0 0 0 0 0 :status 204
-10 0 0 0 0 0 0 :status 206
-11 0 0 0 0 0 0 :status 304
-12 0 0 0 0 0 0 :status 400
-13 0 0 0 0 0 0 :status 404
-14 0 0 0 0 0 0 :status 500
-15 0 0 0 0 1 0 accept-charset
-16 0 0 0 0 1 0 accept-encoding gzip, deflate
-17 0 0 0 0 1 0 accept-language
-18 0 0 0 0 0 0 accept-ranges
-19 0 0 0 0 1 0 accept
-20 0 0 0 0 0 0 access-control-allow-origin
-21 0 0 0 0 0 0 age
-22 0 0 0 0 0 0 allow
-23 0 0 0 0 0 0 authorization
-24 0 0 0 0 0 0 cache-control
-25 0 0 0 0 0 0 content-disposition
-26 0 0 0 0 0 0 content-encoding
-27 0 0 0 0 0 0 content-language
-28 0 0 1 0 0 0 content-length
-29 0 0 0 0 0 0 content-location
-30 0 0 0 0 0 0 content-range
-31 0 0 0 0 0 0 content-type
-32 0 0 0 0 0 1 cookie
-33 0 1 0 0 0 0 date
-34 0 0 0 0 0 0 etag
-35 0 0 1 0 0 0 expect
-36 0 0 0 0 0 0 expires
-37 0 0 0 0 0 0 from
-38 0 0 1 1 0 0 host
-39 0 0 0 0 0 0 if-match
-40 0 0 0 0 0 0 if-modified-since
-41 0 0 0 0 0 0 if-none-match
-42 0 0 0 0 0 0 if-range
-43 0 0 0 0 0 0 if-unmodified-since
-44 0 0 0 0 0 0 last-modified
-45 0 0 0 0 0 0 link
-46 0 0 0 0 0 0 location
-47 0 0 0 0 0 0 max-forwards
-48 1 0 0 0 0 0 proxy-authenticate
-49 1 0 0 0 0 0 proxy-authorization
-50 0 0 0 0 0 0 range
-51 0 0 0 0 0 0 referer
-52 0 0 0 0 0 0 refresh
-53 0 0 0 0 0 0 retry-after
-54 0 0 0 0 0 0 server
-55 0 0 0 0 0 1 set-cookie
-56 0 0 0 0 0 0 strict-transport-security
-57 1 1 1 1 0 0 transfer-encoding
-58 0 0 0 0 1 0 user-agent
-59 0 0 0 0 0 0 vary
-60 0 0 0 0 0 0 via
-61 0 0 0 0 0 0 www-authenticate
-0 1 1 0 1 0 0 connection
-0 0 0 0 0 0 0 x-reproxy-url
-0 1 1 1 1 0 0 upgrade
-0 1 0 0 1 0 0 http2-settings
-0 1 0 0 1 0 0 te
-0 1 1 0 0 0 0 keep-alive
-0 0 0 0 0 0 0 x-forwarded-for
-0 0 0 0 0 0 0 x-traffic
-0 0 0 0 0 0 0 cache-digest
-0 0 0 0 0 0 0 x-compress-hint