shlist

share and manage lists between multiple people
Log | Files | Refs

commit 0159640c1ecdf3018e4671f966dd91d9adcf9a7e
parent fd895a0625368cbd6f8f5418a52b3f90ab496b55
Author: kyle <kyle@0x30.net>
Date:   Sat,  2 Jan 2016 15:42:12 -0700

pushd: move poc servers into pushd/ directory

- this is another component of the entire system, so put in one directory deep

Diffstat:
Rpushd_android -> pushd/android | 0
Apushd/ios | 141+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rserver/ssl/apn/aps.cer -> pushd/ssl/aps.cer | 0
Rserver/ssl/apn/aps.csr -> pushd/ssl/aps.csr | 0
Rserver/ssl/apn/aps.key -> pushd/ssl/aps.key | 0
Rserver/ssl/apn/aps.pem -> pushd/ssl/aps.pem | 0
Dpushd_ios | 141-------------------------------------------------------------------------------
7 files changed, 141 insertions(+), 141 deletions(-)

diff --git a/pushd_android b/pushd/android diff --git a/pushd/ios b/pushd/ios @@ -0,0 +1,141 @@ +#!/usr/bin/perl +use strict; +use warnings; + +use AnyEvent; +use AnyEvent::Socket; +use AnyEvent::Handle; +use Net::SSLeay; +use AnyEvent::TLS; + +use Protocol::HTTP2; +use Protocol::HTTP2::Client; +use Protocol::HTTP2::Constants qw(const_name); + +Net::SSLeay::initialize(); + +my $client = Protocol::HTTP2::Client->new( + on_change_state => sub { + my ( $stream_id, $previous_state, $current_state ) = @_; + printf "Stream %i changed state from %s to %s\n", + $stream_id, const_name( "states", $previous_state ), + const_name( "states", $current_state ); + }, + on_push => sub { + my ($push_headers) = @_; + + # If we accept PUSH_PROMISE + # return callback to receive promised data + # return undef otherwise + print "Server want to push some resource to us\n"; + + return sub { + my ( $headers, $data ) = @_; + print "Received promised resource\n"; + } + }, + on_error => sub { + my $error = shift; + printf "Error occured: %s\n", const_name( "errors", $error ); + } +); + +my $host = 'api.development.push.apple.com'; +my $port = 443; + +# Prepare http/2 request +$client->request( + ':scheme' => "https", + ':authority' => $host . ":" . $port, + ':path' => "/3/device/devid_goes_here", + ':method' => "POST", + # headers => [ + # 'accept' => '*/*', + # 'user-agent' => 'perl-Protocol-HTTP2/0.01', + # ], + on_done => sub { + my ( $headers, $data ) = @_; + printf "Get headers. Count: %i\n", scalar(@$headers) / 2; + printf "Get data. Length: %i\n", length($data); + print $data; + }, + + data => "hello=world&test=done", +); + +my $w = AnyEvent->condvar; + +tcp_connect $host, $port, sub { + my ($fh) = @_ or do { + print "connection failed: $!\n"; + $w->send; + return; + }; + + my $tls; + eval { + $tls = AnyEvent::TLS->new( + method => "TLSv1_2", + cert_file => 'ssl/aps.pem', + key_file => 'ssl/aps.key' + ); + + # ALPN (Net-SSLeay > 1.55, openssl >= 1.0.2) + if ( exists &Net::SSLeay::CTX_set_alpn_protos ) { + Net::SSLeay::CTX_set_alpn_protos( $tls->ctx, + [Protocol::HTTP2::ident_tls] ); + } + + # NPN (Net-SSLeay > 1.45, openssl >= 1.0.1) + elsif ( exists &Net::SSLeay::CTX_set_next_proto_select_cb ) { + Net::SSLeay::CTX_set_next_proto_select_cb( $tls->ctx, + [Protocol::HTTP2::ident_tls] ); + } + else { + die "ALPN and NPN is not supported\n"; + } + }; + if ($@) { + print "Some problem with SSL CTX: $@\n"; + $w->send; + return; + } + + my $handle; + $handle = AnyEvent::Handle->new( + fh => $fh, + tls => "connect", + tls_ctx => $tls, + autocork => 1, + on_error => sub { + $_[0]->destroy; + print "connection error\n"; + $w->send; + }, + on_eof => sub { + $handle->destroy; + $w->send; + } + ); + + # First write preface to peer + while ( my $frame = $client->next_frame ) { + $handle->push_write($frame); + } + + $handle->on_read( + sub { + my $handle = shift; + + $client->feed( $handle->{rbuf} ); + + $handle->{rbuf} = undef; + while ( my $frame = $client->next_frame ) { + $handle->push_write($frame); + } + $handle->push_shutdown if $client->shutdown; + } + ); +}; + +$w->recv; diff --git a/server/ssl/apn/aps.cer b/pushd/ssl/aps.cer Binary files differ. diff --git a/server/ssl/apn/aps.csr b/pushd/ssl/aps.csr diff --git a/server/ssl/apn/aps.key b/pushd/ssl/aps.key diff --git a/server/ssl/apn/aps.pem b/pushd/ssl/aps.pem diff --git a/pushd_ios b/pushd_ios @@ -1,141 +0,0 @@ -#!/usr/bin/perl -use strict; -use warnings; - -use AnyEvent; -use AnyEvent::Socket; -use AnyEvent::Handle; -use Net::SSLeay; -use AnyEvent::TLS; - -use Protocol::HTTP2; -use Protocol::HTTP2::Client; -use Protocol::HTTP2::Constants qw(const_name); - -Net::SSLeay::initialize(); - -my $client = Protocol::HTTP2::Client->new( - on_change_state => sub { - my ( $stream_id, $previous_state, $current_state ) = @_; - printf "Stream %i changed state from %s to %s\n", - $stream_id, const_name( "states", $previous_state ), - const_name( "states", $current_state ); - }, - on_push => sub { - my ($push_headers) = @_; - - # If we accept PUSH_PROMISE - # return callback to receive promised data - # return undef otherwise - print "Server want to push some resource to us\n"; - - return sub { - my ( $headers, $data ) = @_; - print "Received promised resource\n"; - } - }, - on_error => sub { - my $error = shift; - printf "Error occured: %s\n", const_name( "errors", $error ); - } -); - -my $host = 'api.development.push.apple.com'; -my $port = 443; - -# Prepare http/2 request -$client->request( - ':scheme' => "https", - ':authority' => $host . ":" . $port, - ':path' => "/3/device/devid_goes_here", - ':method' => "POST", - # headers => [ - # 'accept' => '*/*', - # 'user-agent' => 'perl-Protocol-HTTP2/0.01', - # ], - on_done => sub { - my ( $headers, $data ) = @_; - printf "Get headers. Count: %i\n", scalar(@$headers) / 2; - printf "Get data. Length: %i\n", length($data); - print $data; - }, - - data => "hello=world&test=done", -); - -my $w = AnyEvent->condvar; - -tcp_connect $host, $port, sub { - my ($fh) = @_ or do { - print "connection failed: $!\n"; - $w->send; - return; - }; - - my $tls; - eval { - $tls = AnyEvent::TLS->new( - method => "TLSv1_2", - cert_file => 'ssl/apn/aps.pem', - key_file => 'ssl/apn/aps.key' - ); - - # ALPN (Net-SSLeay > 1.55, openssl >= 1.0.2) - if ( exists &Net::SSLeay::CTX_set_alpn_protos ) { - Net::SSLeay::CTX_set_alpn_protos( $tls->ctx, - [Protocol::HTTP2::ident_tls] ); - } - - # NPN (Net-SSLeay > 1.45, openssl >= 1.0.1) - elsif ( exists &Net::SSLeay::CTX_set_next_proto_select_cb ) { - Net::SSLeay::CTX_set_next_proto_select_cb( $tls->ctx, - [Protocol::HTTP2::ident_tls] ); - } - else { - die "ALPN and NPN is not supported\n"; - } - }; - if ($@) { - print "Some problem with SSL CTX: $@\n"; - $w->send; - return; - } - - my $handle; - $handle = AnyEvent::Handle->new( - fh => $fh, - tls => "connect", - tls_ctx => $tls, - autocork => 1, - on_error => sub { - $_[0]->destroy; - print "connection error\n"; - $w->send; - }, - on_eof => sub { - $handle->destroy; - $w->send; - } - ); - - # First write preface to peer - while ( my $frame = $client->next_frame ) { - $handle->push_write($frame); - } - - $handle->on_read( - sub { - my $handle = shift; - - $client->feed( $handle->{rbuf} ); - - $handle->{rbuf} = undef; - while ( my $frame = $client->next_frame ) { - $handle->push_write($frame); - } - $handle->push_shutdown if $client->shutdown; - } - ); -}; - -$w->recv;