chiark
/
gitweb
/
~yarrgweb
/
ypp-sc-tools.web-live.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'stable-3.x'
[ypp-sc-tools.web-live.git]
/
yarrg
/
Commods.pm
diff --git
a/yarrg/Commods.pm
b/yarrg/Commods.pm
index 9b190c4b3a88d5236cc1e9ff9f41058a12118be2..0f7ebd63a253919301b58c90855c42284c5295f7 100644
(file)
--- a/
yarrg/Commods.pm
+++ b/
yarrg/Commods.pm
@@
-23,6
+23,7
@@
package Commods;
use IO::File;
use HTTP::Request::Common ();
package Commods;
use IO::File;
use HTTP::Request::Common ();
+use POSIX;
use strict;
use warnings;
use strict;
use warnings;
@@
-32,7
+33,7
@@
BEGIN {
our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
$VERSION = 1.00;
@ISA = qw(Exporter);
our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
$VERSION = 1.00;
@ISA = qw(Exporter);
- @EXPORT = qw(&parse_info
1 &rsync_master
+ @EXPORT = qw(&parse_info
_clientside &fetch_with_rsync
&parse_info_serverside &parse_info_serverside_ocean
%oceans %commods %clients %routes %route_mysteries
&parse_pctb_commodmap %pctb_commodmap @pctb_commodmap
&parse_info_serverside &parse_info_serverside_ocean
%oceans %commods %clients %routes %route_mysteries
&parse_pctb_commodmap %pctb_commodmap @pctb_commodmap
@@
-40,7
+41,8
@@
BEGIN {
&pipethrough_prep &pipethrough_run
&pipethrough_run_along &pipethrough_run_finish
&pipethrough_run_gzip
&pipethrough_prep &pipethrough_run
&pipethrough_run_along &pipethrough_run_finish
&pipethrough_run_gzip
- &cgipostform);
+ &cgipostform &yarrgpostform &cgi_get_caller
+ &set_ctype_utf8);
%EXPORT_TAGS = ( );
@EXPORT_OK = qw();
%EXPORT_TAGS = ( );
@EXPORT_OK = qw();
@@
-144,7
+146,12
@@
sub parse_info_clientside () {
return unless $yarrg;
my $master= fetch_with_rsync('info');
parse_info1($master,'s');
return unless $yarrg;
my $master= fetch_with_rsync('info');
parse_info1($master,'s');
- parse_info1('_local-info.txt','s');
+ my $local= '_local-info.txt';
+ if (stat $local) {
+ parse_info1($local,'s');
+ } else {
+ die "$local $!" unless $! == &ENOENT;
+ }
}
sub fetch_with_rsync ($) {
}
sub fetch_with_rsync ($) {
@@
-160,6
+167,7
@@
sub fetch_with_rsync ($) {
$!=0; system 'rsync','-Lt','--',$remote,$local;
die "$? $!" if $! or $?;
}
$!=0; system 'rsync','-Lt','--',$remote,$local;
die "$? $!" if $! or $?;
}
+ return $local;
}
sub parse_info_maproutes ($$$) {
}
sub parse_info_maproutes ($$$) {
@@
-213,6
+221,9
@@
sub get_our_version ($$) {
chomp($version);
$aref->{"${prefix}version"}= $version;
return $aref;
chomp($version);
$aref->{"${prefix}version"}= $version;
return $aref;
+ # clientname "ypp-sc-tools"
+ # clientversion 2.1-g2e06a26 [from git-describe --tags HEAD]
+ # clientfixes "lastpage" [space separated list]
}
sub pipethrough_prep () {
}
sub pipethrough_prep () {
@@
-252,6
+263,14
@@
sub pipethrough_run_gzip ($) {
pipethrough_run($_[0],undef,'gzip','gzip');
}
pipethrough_run($_[0],undef,'gzip','gzip');
}
+sub yarrgpostform ($$) {
+ my ($ua, $form) = @_;
+ my $dest= $ENV{'YPPSC_YARRG_YARRG'};
+ get_our_version($form, 'client');
+ die unless $dest =~ m,/$,;
+ return cgipostform($ua, "${dest}commod-update-receiver", $form);
+}
+
sub cgipostform ($$$) {
my ($ua, $url, $form) = @_;
my $req= HTTP::Request::Common::POST($url,
sub cgipostform ($$$) {
my ($ua, $url, $form) = @_;
my $req= HTTP::Request::Common::POST($url,
@@
-283,7
+302,7
@@
sub cgipostform ($$$) {
$out =~ m,^Content-Type: text/plain.*\n\n, or die "$out ?";
return $';
} else {
$out =~ m,^Content-Type: text/plain.*\n\n, or die "$out ?";
return $';
} else {
- my $resp= $ua->request($
url,$
req);
+ my $resp= $ua->request($req);
die $resp->status_line unless $resp->is_success;
return $resp->content();
}
die $resp->status_line unless $resp->is_success;
return $resp->content();
}
@@
-325,4
+344,21
@@
sub check_tsv_line ($$) {
return @v;
}
return @v;
}
+sub cgi_get_caller () {
+ my $caller= $ENV{'REMOTE_ADDR'};
+ $caller= 'LOCAL' unless defined $caller;
+
+ my $fwdf= $ENV{'HTTP_X_FORWARDED_FOR'};
+ if (defined $fwdf) {
+ $fwdf =~ s/\s//g;
+ $fwdf =~ s/[^0-9.,]/?/g;
+ $caller= "$fwdf";
+ }
+ return $caller;
+}
+
+sub set_ctype_utf8 () {
+ setlocale(LC_CTYPE, "en.UTF-8");
+}
+
1;
1;