mirror of
https://gitlab.com/t6353/sharee.bike.git
synced 2025-02-22 19:56:29 +01:00
migrate to OSM
This commit is contained in:
parent
cc4dfcd70f
commit
46f86f6c05
13 changed files with 476 additions and 59 deletions
|
@ -1985,6 +1985,7 @@ sub stations_available(){
|
||||||
my $op_return = {};
|
my $op_return = {};
|
||||||
foreach my $id (sort { $record->{$a}->{barcode} <=> $record->{$b}->{barcode} } keys (%$record)){
|
foreach my $id (sort { $record->{$a}->{barcode} <=> $record->{$b}->{barcode} } keys (%$record)){
|
||||||
$return->{$id}->{authed} = "$authed";
|
$return->{$id}->{authed} = "$authed";
|
||||||
|
$return->{$id}->{capacity} = $record->{$id}->{int05} || 1;
|
||||||
|
|
||||||
$return->{$id}->{station} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$record->{$id}->{int04}";
|
$return->{$id}->{station} = "$dbt->{operator}->{$varenv->{dbname}}->{oprefix}$record->{$id}->{int04}";
|
||||||
$return->{$id}->{uri_operator} = "$varenv->{wwwhost}";
|
$return->{$id}->{uri_operator} = "$varenv->{wwwhost}";
|
||||||
|
|
|
@ -250,7 +250,7 @@ elsif($q->param('request') eq "booking_request"){
|
||||||
($ct_bike,$ct_tariff) = $apif->fetch_bike_tariff(\%varenv,$authraw,$bike,$aowner);
|
($ct_bike,$ct_tariff) = $apif->fetch_bike_tariff(\%varenv,$authraw,$bike,$aowner);
|
||||||
|
|
||||||
my $sig_book = {
|
my $sig_book = {
|
||||||
bikeId => "$ct_bike->{txt22}",
|
bikeId => "$ct_bike->{txt22}",
|
||||||
rentalId => "",
|
rentalId => "",
|
||||||
reservationId => ""
|
reservationId => ""
|
||||||
};
|
};
|
||||||
|
@ -259,6 +259,7 @@ elsif($q->param('request') eq "booking_request"){
|
||||||
#sig reservation. not mandatory
|
#sig reservation. not mandatory
|
||||||
if($ct_bike->{int11} == 3){
|
if($ct_bike->{int11} == 3){
|
||||||
$sig_book = $si->sig_booking(\%varenv,$authraw,$ct_bike,"","reserve");
|
$sig_book = $si->sig_booking(\%varenv,$authraw,$ct_bike,"","reserve");
|
||||||
|
$sig_book->{bikeId} = "$ct_bike->{txt22}";
|
||||||
}
|
}
|
||||||
$response_book = $apif->booking_request($q,\%varenv,$authraw,$bike,$ct_bike,$ct_tariff,$aowner,$gps,$sig_book);
|
$response_book = $apif->booking_request($q,\%varenv,$authraw,$bike,$ct_bike,$ct_tariff,$aowner,$gps,$sig_book);
|
||||||
}elsif(!$ct_tariff->{barcode}){
|
}elsif(!$ct_tariff->{barcode}){
|
||||||
|
@ -360,7 +361,7 @@ elsif($q->param('request') eq "booking_cancel" || $q->param('request') eq "booki
|
||||||
$sig_book = $si->sig_booking(\%varenv,$authraw,"",$ctpos,"reserve_end");
|
$sig_book = $si->sig_booking(\%varenv,$authraw,"",$ctpos,"reserve_end");
|
||||||
($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book);
|
($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book);
|
||||||
}else{
|
}else{
|
||||||
($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,$sig_book);
|
($rows, $booking_values) = $apif->booking_update($q,\%varenv,$authraw,$aowner,"");
|
||||||
}
|
}
|
||||||
$response = {%$response, %$booking_values};
|
$response = {%$response, %$booking_values};
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ package APIsigclient;
|
||||||
#
|
#
|
||||||
#380116b5-0522-43da-ab66-477744a731a3
|
#380116b5-0522-43da-ab66-477744a731a3
|
||||||
#
|
#
|
||||||
use lib qw(/var/www/copri-bike/shareeapp-sx/src);
|
#use lib qw(/var/www/copri-bike/shareeapp-sx/src);
|
||||||
use warnings;
|
use warnings;
|
||||||
use strict;
|
use strict;
|
||||||
use POSIX;
|
use POSIX;
|
||||||
|
@ -27,6 +27,7 @@ use Lib::Config;
|
||||||
use Mod::DBtank;
|
use Mod::DBtank;
|
||||||
use Mod::Basework;
|
use Mod::Basework;
|
||||||
use Mod::APIfunc;
|
use Mod::APIfunc;
|
||||||
|
use Mod::Shareework;
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
|
|
||||||
my $q = new CGI;
|
my $q = new CGI;
|
||||||
|
@ -34,6 +35,7 @@ my $json = JSON->new->allow_nonref;
|
||||||
my $cf = new Config;
|
my $cf = new Config;
|
||||||
my $dbt = new DBtank;
|
my $dbt = new DBtank;
|
||||||
my $apif = new APIfunc;
|
my $apif = new APIfunc;
|
||||||
|
my $tk = new Shareework;
|
||||||
my $bw = new Basework;
|
my $bw = new Basework;
|
||||||
|
|
||||||
sub new {
|
sub new {
|
||||||
|
@ -69,7 +71,7 @@ sub sig_available {
|
||||||
my $authed = 0;
|
my $authed = 0;
|
||||||
my $tariff_content = {};
|
my $tariff_content = {};
|
||||||
$authed = 1 if(ref($ctadr) eq "HASH" && $ctadr->{c_id} && $ctadr->{c_id} > 0);
|
$authed = 1 if(ref($ctadr) eq "HASH" && $ctadr->{c_id} && $ctadr->{c_id} > 0);
|
||||||
(my $bike_group,my $user_group,$tariff_content,my $user_tour) = $apif->fetch_tariff($varenv->{dbname},$ctadr,$q->param('ctadrcookie'));
|
(my $bike_group,my $user_group,$tariff_content,my $user_tour) = $apif->fetch_tariff($varenv->{dbname},$ctadr,$q->param('authcookie'));
|
||||||
|
|
||||||
my $hotline_hash = {
|
my $hotline_hash = {
|
||||||
table => "contentuser",
|
table => "contentuser",
|
||||||
|
@ -103,7 +105,7 @@ sub sig_available {
|
||||||
|
|
||||||
#station (mainly using sigojson site object)
|
#station (mainly using sigojson site object)
|
||||||
my $station = "SX$resp->{site}->{id}";
|
my $station = "SX$resp->{site}->{id}";
|
||||||
if($station && looks_like_number($resp->{site}->{id}) && $resp->{site}->{status} eq "ACTIVE" && $resp->{site}->{lat} && $resp->{site}->{lon}){
|
if($station && looks_like_number($resp->{site}->{id})){
|
||||||
print FILE "Station: $station\n";
|
print FILE "Station: $station\n";
|
||||||
$response_out->{$station}->{station} = "$station";
|
$response_out->{$station}->{station} = "$station";
|
||||||
$response_out->{$station}->{authed} = "$authed";
|
$response_out->{$station}->{authed} = "$authed";
|
||||||
|
@ -113,14 +115,15 @@ sub sig_available {
|
||||||
$response_out->{$station}->{gps}->{latitude} = "$resp->{site}->{lat}" || "";
|
$response_out->{$station}->{gps}->{latitude} = "$resp->{site}->{lat}" || "";
|
||||||
$response_out->{$station}->{gps}->{longitude} = "$resp->{site}->{lon}" || "";
|
$response_out->{$station}->{gps}->{longitude} = "$resp->{site}->{lon}" || "";
|
||||||
$response_out->{$station}->{gps_radius} = "75";
|
$response_out->{$station}->{gps_radius} = "75";
|
||||||
|
|
||||||
|
#Other than Active status, should not be used to display information to a customer
|
||||||
$response_out->{$station}->{state} = "defect";
|
$response_out->{$station}->{state} = "defect";
|
||||||
if($resp->{site}->{status} eq "ACTIVE"){#?
|
if(uc($resp->{site}->{status}) eq "ACTIVE"){
|
||||||
$response_out->{$station}->{state} = "available";
|
$response_out->{$station}->{state} = "available";
|
||||||
}elsif($resp->{site}->{status} eq "MAINTANANCE"){
|
}elsif(uc($resp->{site}->{status}) eq "MAINTANANCE"){
|
||||||
$response_out->{$station}->{state} = "maintanance";
|
$response_out->{$station}->{state} = "maintanance";
|
||||||
}elsif($resp->{site}->{status} eq "OFFLINE"){
|
|
||||||
$response_out->{$station}->{state} = "defect";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$response_out->{$station}->{operator_data} = {
|
$response_out->{$station}->{operator_data} = {
|
||||||
"operator_name" => "",
|
"operator_name" => "",
|
||||||
"operator_hours" => "",
|
"operator_hours" => "",
|
||||||
|
@ -149,6 +152,7 @@ sub sig_available {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
delete $response_out->{$station} if(uc($resp->{site}->{status}) ne "ACTIVE" || !$resp->{site}->{lat} || !$resp->{site}->{lon});
|
||||||
}
|
}
|
||||||
}#end stations_available
|
}#end stations_available
|
||||||
|
|
||||||
|
@ -172,18 +176,19 @@ sub sig_available {
|
||||||
$response_out->{$bike}->{gps}->{longitude} = "$resp->{state}->{lon}" || "";
|
$response_out->{$bike}->{gps}->{longitude} = "$resp->{state}->{lon}" || "";
|
||||||
$response_out->{$bike}->{bike_charge} = "$resp->{energy_level}" || "0";
|
$response_out->{$bike}->{bike_charge} = "$resp->{energy_level}" || "0";
|
||||||
$response_out->{$bike}->{state} = "defect";
|
$response_out->{$bike}->{state} = "defect";
|
||||||
if($resp->{reservation_state} eq "RESERVED"){
|
if(uc($resp->{reservation_state}) eq "RESERVED"){
|
||||||
$response_out->{$bike}->{state} = "requested";
|
$response_out->{$bike}->{state} = "requested";
|
||||||
}elsif($resp->{reservation_state} eq "ACTIVE-RENTAL"){
|
}elsif(uc($resp->{reservation_state}) eq "ACTIVE-RENTAL"){
|
||||||
$response_out->{$bike}->{state} = "occupied";
|
$response_out->{$bike}->{state} = "occupied";
|
||||||
}elsif(!$resp->{reservation_state}){
|
}elsif(!$resp->{reservation_state}){
|
||||||
$response_out->{$bike}->{state} = "available";
|
$response_out->{$bike}->{state} = "available";
|
||||||
}
|
}
|
||||||
|
|
||||||
#$response_out->{$bike}->{lock_state} = "undefined";#?
|
#1. change can take up to 2 mins to reflect
|
||||||
#$response_out->{$bike}->{lock_state} = "locked";# I think default should be unlocked
|
#2. When a customer will start a reservation, it will always be unlock,
|
||||||
|
#Sigo software automatically handle this condition
|
||||||
$response_out->{$bike}->{lock_state} = "unlocked";
|
$response_out->{$bike}->{lock_state} = "unlocked";
|
||||||
if($resp->{state}->{locked}){
|
if($resp->{lock}->{status} eq "locked"){
|
||||||
$response_out->{$bike}->{lock_state} = "locked";
|
$response_out->{$bike}->{lock_state} = "locked";
|
||||||
}
|
}
|
||||||
$response_out->{$bike}->{system} = "sigo";
|
$response_out->{$bike}->{system} = "sigo";
|
||||||
|
@ -249,7 +254,8 @@ sub sig_available {
|
||||||
$return2copri->{$bike}->{int20} = $key;
|
$return2copri->{$bike}->{int20} = $key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete $response_out->{$bike} if($resp->{status} ne "ACTIVE");#don't view not active bikes
|
#delete if $resp->{status} ne "ACTIVE" || reservation_state ne Reserved|Active-Rental
|
||||||
|
delete $response_out->{$bike} if(uc($resp->{status}) ne "ACTIVE" || $resp->{reservation_state});#don't view not active bikes
|
||||||
}
|
}
|
||||||
}#end bikes_available
|
}#end bikes_available
|
||||||
|
|
||||||
|
@ -296,6 +302,7 @@ sub sig_booking {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#reservation end, this sig request is still not defined. maybe end by rentalId
|
#reservation end, this sig request is still not defined. maybe end by rentalId
|
||||||
|
#int10 state will be set on booking_request
|
||||||
elsif($todo eq "reserve_end"){
|
elsif($todo eq "reserve_end"){
|
||||||
$endpoint .= "reserve/end";
|
$endpoint .= "reserve/end";
|
||||||
%json = (
|
%json = (
|
||||||
|
@ -304,6 +311,7 @@ sub sig_booking {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#rental start
|
#rental start
|
||||||
|
#int10 state will be set on main booking_update
|
||||||
elsif($todo eq "rental"){
|
elsif($todo eq "rental"){
|
||||||
$endpoint .= "rental";
|
$endpoint .= "rental";
|
||||||
my $sig_bikeId = $ctpos->{txt22} || $ct_bike->{txt22};
|
my $sig_bikeId = $ctpos->{txt22} || $ct_bike->{txt22};
|
||||||
|
@ -357,12 +365,27 @@ sub sig_booking {
|
||||||
|
|
||||||
|
|
||||||
if($ctpos->{c_id}){
|
if($ctpos->{c_id}){
|
||||||
|
my $rows = 0;
|
||||||
my $update_pos = {
|
my $update_pos = {
|
||||||
table => "contenttranspos",
|
table => "contenttranspos",
|
||||||
mtime => "now()",
|
mtime => "now()",
|
||||||
owner => "169",
|
owner => "169",
|
||||||
};
|
};
|
||||||
my $rows = 0;
|
|
||||||
|
#TODO try it with user_bikes_available
|
||||||
|
#on sig api states maybe not just in time available
|
||||||
|
#check and save sig bike states
|
||||||
|
#$q->param(-name=>'request',-value=>"bikes_available");
|
||||||
|
#(my $response->{bikes},my $return2copri) = $self->sig_available($q,$varenv,$ctadr);
|
||||||
|
#my $ctrows = 0;
|
||||||
|
#$ctrows = $tk->sigbike_cupdate($return2copri);
|
||||||
|
#print FILE "<--- ctrows:$ctrows, update content state with:" . Dumper($return2copri) . "\n";
|
||||||
|
|
||||||
|
#foreach my $sid (keys (%{$return2copri})){
|
||||||
|
# $update_pos->{int10} = "$return2copri->{$sid}->{int10}" if($return2copri->{$sid}->{int10});
|
||||||
|
# $update_pos->{int20} = "$return2copri->{$sid}->{int20}" if($return2copri->{$sid}->{int20});
|
||||||
|
#}
|
||||||
|
|
||||||
$update_pos->{txt10} = "$sig_book->{reservationId}" if($sig_book->{reservationId});
|
$update_pos->{txt10} = "$sig_book->{reservationId}" if($sig_book->{reservationId});
|
||||||
$update_pos->{txt11} = "$sig_book->{rentalId}" if($sig_book->{rentalid});
|
$update_pos->{txt11} = "$sig_book->{rentalId}" if($sig_book->{rentalid});
|
||||||
$rows = $dbt->update_record($dbh,$update_pos,$ctpos);
|
$rows = $dbt->update_record($dbh,$update_pos,$ctpos);
|
||||||
|
|
208
copri4/main/src/Mod/GBFSout.pm
Executable file
208
copri4/main/src/Mod/GBFSout.pm
Executable file
|
@ -0,0 +1,208 @@
|
||||||
|
package Mod::GBFSout;
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||||
|
#
|
||||||
|
#without login only public Stations have to be viewable:
|
||||||
|
#https://shareeapp-primary.copri-bike.de/GBFSout
|
||||||
|
#
|
||||||
|
#with login and valid autcookie:
|
||||||
|
#https://shareeapp-primary.copri-bike.de/GBFSout?sessionid=a49aba2b5440be72816db2_rafo87znqx
|
||||||
|
#
|
||||||
|
#
|
||||||
|
use warnings;
|
||||||
|
use strict;
|
||||||
|
use POSIX;
|
||||||
|
use Exporter;
|
||||||
|
our @ISA = qw (Exporter);
|
||||||
|
use CGI::Cookie ();
|
||||||
|
use CGI ':standard';
|
||||||
|
use Apache2::Const -compile => qw(OK );
|
||||||
|
use Scalar::Util qw(looks_like_number);
|
||||||
|
use JSON;
|
||||||
|
use LWP::UserAgent;
|
||||||
|
|
||||||
|
use Lib::Config;
|
||||||
|
use Mod::DBtank;
|
||||||
|
use Mod::APIfunc;
|
||||||
|
use Mod::Basework;
|
||||||
|
use Data::Dumper;
|
||||||
|
my $bw = new Basework;
|
||||||
|
|
||||||
|
sub handler {
|
||||||
|
my $r = shift;
|
||||||
|
my $q = new CGI;
|
||||||
|
$q->import_names('R');
|
||||||
|
my $dbt = new DBtank;
|
||||||
|
my $apif = new APIfunc;
|
||||||
|
my $cf = new Config;
|
||||||
|
my %varenv = $cf->envonline();
|
||||||
|
|
||||||
|
my $coo = $q->cookie('domcookie') || $R::sessionid || "";
|
||||||
|
my $users_sharee = { c_id => 0 };
|
||||||
|
my $api_return = { authcookie => '' };
|
||||||
|
|
||||||
|
($api_return,$users_sharee) = $apif->auth_verify($q,$coo,"");
|
||||||
|
|
||||||
|
if($dbt->{website}->{$varenv{syshost}}->{merchant_id}){
|
||||||
|
$api_return->{authcookie} = $dbt->{website}->{$varenv{syshost}}->{merchant_id} if(!$api_return->{authcookie});
|
||||||
|
}elsif($dbt->{operator}->{$varenv{dbname}}->{merchant_id}){
|
||||||
|
$api_return->{authcookie} = $dbt->{operator}->{$varenv{dbname}}->{merchant_id} if(!$api_return->{authcookie});
|
||||||
|
}elsif($dbt->{primary}->{$varenv{dbname}}->{merchant_id}){
|
||||||
|
$api_return->{authcookie} = $dbt->{primary}->{$varenv{dbname}}->{merchant_id} if(!$api_return->{authcookie});
|
||||||
|
}
|
||||||
|
$users_sharee->{c_id} = "0" if(!$users_sharee->{c_id});
|
||||||
|
|
||||||
|
$bw->log("GBFSout handler with api_return: ",$api_return,"");
|
||||||
|
|
||||||
|
print $q->header(-type => "application/json", -charset => "utf-8", -'Access-Control-Allow-Origin' => "*");
|
||||||
|
#main
|
||||||
|
my $project = "all";
|
||||||
|
$project = $dbt->{website}->{$varenv{syshost}}->{project} if($dbt->{website}->{$varenv{syshost}}->{project});
|
||||||
|
$project = $dbt->{operator}->{$varenv{dbname}}->{project} if($dbt->{operator}->{$varenv{dbname}}->{project});
|
||||||
|
|
||||||
|
#request primary will jsonclient loop_sharees
|
||||||
|
my $uri_request = $dbt->{primary}->{sharee_primary}->{primaryApp};
|
||||||
|
#detect DMS, because this will do it directly without loop_sharees
|
||||||
|
$uri_request = $dbt->{operator}->{$varenv{dbname}}->{operatorApp} if($varenv{dbname} ne "sharee_primary" && $varenv{syshost} =~ /shareedms-/);
|
||||||
|
|
||||||
|
if($R::request eq "stations_available"){
|
||||||
|
station_information($api_return,\%varenv,$users_sharee,$uri_request,$project);
|
||||||
|
}
|
||||||
|
if($R::request eq "bikes_available"){
|
||||||
|
vehicle_status($api_return,\%varenv,$users_sharee,$uri_request,$project);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Apache2::Const::OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sub station_information {
|
||||||
|
my $authcookie = shift || { authcookie => '' };
|
||||||
|
my $varenv = shift;
|
||||||
|
my $users_sharee = shift || { c_id => 0 };
|
||||||
|
my $uri_request = shift || "";
|
||||||
|
my $project = shift || "all";
|
||||||
|
my $json = JSON->new->allow_nonref;
|
||||||
|
|
||||||
|
my $rest_stations = "request=stations_available&project=$project&authcookie=$authcookie->{authcookie}";
|
||||||
|
my $gbfs_resp = {};
|
||||||
|
my $stations_json = fetch_primary_json("",$uri_request,$rest_stations);
|
||||||
|
#decode json to hash
|
||||||
|
my $response_stations = decode_json($stations_json);
|
||||||
|
my @gbfs_stations = ();
|
||||||
|
|
||||||
|
foreach my $station (keys (%{ $response_stations->{shareejson}->{stations} })) {
|
||||||
|
#print Dumper($response_stations->{shareejson}->{stations}->{$station});
|
||||||
|
my %gbfs_station = ();
|
||||||
|
$gbfs_station{$station}{station_id} = $response_stations->{shareejson}->{stations}->{$station}->{station};
|
||||||
|
$gbfs_station{$station}{name} = Encode::encode('utf-8', Encode::decode('iso-8859-1',$response_stations->{shareejson}->{stations}->{$station}->{description}));
|
||||||
|
$gbfs_station{$station}{capacity} = $response_stations->{shareejson}->{stations}->{$station}->{capacity};
|
||||||
|
$gbfs_station{$station}{lat} = $response_stations->{shareejson}->{stations}->{$station}->{gps}->{latitude};
|
||||||
|
$gbfs_station{$station}{lon} = $response_stations->{shareejson}->{stations}->{$station}->{gps}->{longitude};
|
||||||
|
$gbfs_station{$station}{is_charging_station} = 1 if(grep(/300102/, @{$response_stations->{shareejson}->{stations}->{$station}->{station_group}}));#E-L
|
||||||
|
push (@gbfs_stations, $gbfs_station{$station});
|
||||||
|
}
|
||||||
|
|
||||||
|
$gbfs_resp = {
|
||||||
|
"last_updated" => 1653031183,
|
||||||
|
"ttl" => 10,
|
||||||
|
"version" => "2.2",
|
||||||
|
"data" => {
|
||||||
|
"stations" => [ @gbfs_stations ]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
my $jrout = $json->pretty->encode($gbfs_resp);
|
||||||
|
print $jrout;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}#end station_information
|
||||||
|
|
||||||
|
|
||||||
|
sub vehicle_status {
|
||||||
|
my $authcookie = shift || { authcookie => '' };
|
||||||
|
my $varenv = shift;
|
||||||
|
my $users_sharee = shift || { c_id => 0 };
|
||||||
|
my $uri_request = shift || "";
|
||||||
|
my $project = shift || "all";
|
||||||
|
my $json = JSON->new->allow_nonref;
|
||||||
|
|
||||||
|
my $rest_bikes = "request=bikes_available&project=$project&authcookie=$authcookie->{authcookie}";
|
||||||
|
|
||||||
|
my $gbfs_resp = {};
|
||||||
|
my $bikes_json = fetch_primary_json("",$uri_request,$rest_bikes);
|
||||||
|
#decode json to hash
|
||||||
|
my $response_bikes = decode_json($bikes_json);
|
||||||
|
my @gbfs_bikes = ();
|
||||||
|
|
||||||
|
foreach my $bike (keys (%{ $response_bikes->{shareejson}->{bikes} })) {
|
||||||
|
#if($response_bikes->{shareejson}->{bikes}->{$bike}->{station} eq "FR105"){
|
||||||
|
my %gbfs_bike = ();
|
||||||
|
$gbfs_bike{$bike}{station_id} = $response_bikes->{shareejson}->{bikes}->{$bike}->{station};
|
||||||
|
$gbfs_bike{$bike}{vehicle_id} = $response_bikes->{shareejson}->{bikes}->{$bike}->{bike};
|
||||||
|
$gbfs_bike{$bike}{vehicle_name} = Encode::encode('utf-8', Encode::decode('iso-8859-1',$response_bikes->{shareejson}->{bikes}->{$bike}->{description}));#not part of gbfs
|
||||||
|
$gbfs_bike{$bike}{vehicle_type_id} = $response_bikes->{shareejson}->{bikes}->{$bike}->{bike_group}[0];
|
||||||
|
#$gbfs_bike{$bike}{is_reserved} = 0;
|
||||||
|
#$gbfs_bike{$bike}{is_disabled} = 0;
|
||||||
|
push (@gbfs_bikes, $gbfs_bike{$bike});
|
||||||
|
#}
|
||||||
|
}
|
||||||
|
|
||||||
|
#{
|
||||||
|
#"vehicle_id":"987fd100-b822-4347-86a4-b3eef8ca8b53",
|
||||||
|
#"last_reported":1609866204,
|
||||||
|
#"is_reserved":false,
|
||||||
|
#"is_disabled":false,
|
||||||
|
#"vehicle_type_id":"def456",
|
||||||
|
#"current_range_meters":6543.0,
|
||||||
|
#"station_id":"86",
|
||||||
|
#"pricing_plan_id":"plan3"
|
||||||
|
#}
|
||||||
|
|
||||||
|
$gbfs_resp = {
|
||||||
|
"last_updated" => 1653031183,
|
||||||
|
"ttl" => 0,
|
||||||
|
"version" => "3.0",
|
||||||
|
"data" => {
|
||||||
|
"vehicles" => [ @gbfs_bikes ]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
my $jrout = $json->pretty->encode($gbfs_resp);
|
||||||
|
print $jrout;
|
||||||
|
|
||||||
|
return;
|
||||||
|
}#end vehicle_status
|
||||||
|
|
||||||
|
|
||||||
|
#requestor
|
||||||
|
sub fetch_primary_json {
|
||||||
|
my $self = shift;
|
||||||
|
my $primary_server = shift || "";
|
||||||
|
my $rest = shift || "";
|
||||||
|
my $primary_request = "$primary_server/APIjsonserver?$rest";
|
||||||
|
$bw->log("GBFS primary_request: ",$primary_request,"");
|
||||||
|
|
||||||
|
my $ua = LWP::UserAgent->new;
|
||||||
|
$ua->agent("sharee GBFSout");
|
||||||
|
|
||||||
|
my $req = HTTP::Request->new(GET => "$primary_request");
|
||||||
|
$req->content_type('application/x-www-form-urlencoded');
|
||||||
|
$req->content($rest);
|
||||||
|
|
||||||
|
#Pass request to the user agent and get a response back
|
||||||
|
my $res = $ua->request($req);
|
||||||
|
# Check the outcome of the response
|
||||||
|
if ($res->is_success) {
|
||||||
|
#print $res->content;
|
||||||
|
return $res->content;
|
||||||
|
#print $res->status_line, "\n";
|
||||||
|
}else {
|
||||||
|
return "";
|
||||||
|
#print $res->status_line, "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
1;
|
|
@ -72,18 +72,14 @@ sub handler {
|
||||||
return Apache2::Const::OK;
|
return Apache2::Const::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
sub kmlGenerator {
|
sub kmlGenerator {
|
||||||
my $authcookie = shift || { authcookie => '' };
|
my $authcookie = shift || { authcookie => '' };
|
||||||
my $varenv = shift;
|
my $varenv = shift;
|
||||||
my $users_sharee = shift || { c_id => 0 };
|
my $users_sharee = shift || { c_id => 0 };
|
||||||
$users_sharee->{c_id} = "0" if(!$users_sharee->{c_id});
|
$users_sharee->{c_id} = "0" if(!$users_sharee->{c_id});
|
||||||
|
|
||||||
my $q = new CGI;
|
|
||||||
my $dbt = new DBtank;
|
my $dbt = new DBtank;
|
||||||
my $json = JSON->new->allow_nonref;
|
my $json = JSON->new->allow_nonref;
|
||||||
my $cf = new Config;
|
|
||||||
my $lang="de";
|
|
||||||
my $dbh = "";
|
|
||||||
|
|
||||||
my $project = "all";
|
my $project = "all";
|
||||||
$project = $dbt->{website}->{$varenv->{syshost}}->{project} if($dbt->{website}->{$varenv->{syshost}}->{project});
|
$project = $dbt->{website}->{$varenv->{syshost}}->{project} if($dbt->{website}->{$varenv->{syshost}}->{project});
|
||||||
|
@ -93,9 +89,12 @@ sub kmlGenerator {
|
||||||
my $icon_red = "Open_Red.png";
|
my $icon_red = "Open_Red.png";
|
||||||
my $icon_blue = "Open_Blue.png";
|
my $icon_blue = "Open_Blue.png";
|
||||||
if($project eq "Bayern"){
|
if($project eq "Bayern"){
|
||||||
$icon_green = "LastenradBay-custom-marker-gruen.png";
|
$icon_green = "LastenradBay_Standortpfeil_gruen_03a.png";
|
||||||
$icon_red = "LastenradBay-custom-marker-rot.png";
|
$icon_red = "LastenradBay_Standortpfeil_rot_03a.png";
|
||||||
$icon_blue = "LastenradBay-custom-marker-bayblau.png";
|
$icon_blue = "LastenradBay_Standortpfeil_blau_03a.png";
|
||||||
|
#$icon_green = "LastenradBay-custom-marker-gruen.png";
|
||||||
|
#$icon_red = "LastenradBay-custom-marker-rot.png";
|
||||||
|
#$icon_blue = "LastenradBay-custom-marker-bayblau.png";
|
||||||
}
|
}
|
||||||
|
|
||||||
my $timestamp = strftime "%Y%m%d%H%M%S", localtime;
|
my $timestamp = strftime "%Y%m%d%H%M%S", localtime;
|
||||||
|
@ -225,31 +224,9 @@ sub kmlGenerator {
|
||||||
print XML "</Document>\n";
|
print XML "</Document>\n";
|
||||||
print XML "</kml>\n";
|
print XML "</kml>\n";
|
||||||
close(XML);
|
close(XML);
|
||||||
|
|
||||||
chmod 0666, "$varenv->{basedir}/xml/$kmlfile";
|
chmod 0666, "$varenv->{basedir}/xml/$kmlfile";
|
||||||
|
|
||||||
#my $update_kml = {};
|
|
||||||
#if($users_sharee->{c_id} > 0){
|
|
||||||
# $update_kml = {
|
|
||||||
# table => "contentadr",
|
|
||||||
# atime => "now()",
|
|
||||||
# c_id => $users_sharee->{c_id},
|
|
||||||
# };
|
|
||||||
#}else{
|
|
||||||
# $update_kml = {
|
|
||||||
# table => "content",
|
|
||||||
# mtime => "now()",
|
|
||||||
# c_id => "3",
|
|
||||||
# };
|
|
||||||
#}
|
|
||||||
#my $dbh_primary = $dbt->dbconnect_extern("sharee_primary");
|
|
||||||
#$dbt->update_one($dbh_primary,$update_kml,"txt20='$kmlfile'");
|
|
||||||
|
|
||||||
#print "station_hash ALL:" . Dumper($station_hash);
|
|
||||||
#print "bike_hash ALL:" . Dumper($bike_hash);
|
|
||||||
#
|
|
||||||
return $kmlfile;
|
return $kmlfile;
|
||||||
|
|
||||||
}#end kmlGenerator
|
}#end kmlGenerator
|
||||||
|
|
||||||
#requestor
|
#requestor
|
||||||
|
|
194
copri4/main/src/Tpl/Karte_osm.pm
Executable file
194
copri4/main/src/Tpl/Karte_osm.pm
Executable file
|
@ -0,0 +1,194 @@
|
||||||
|
package Karte_osm;
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
# Copyright (c) Rainer Gümpelein, TeilRad GmbH
|
||||||
|
#
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use CGI ':standard';
|
||||||
|
use Lib::Config;
|
||||||
|
use Mod::DBtank;
|
||||||
|
use Mod::APIfunc;
|
||||||
|
|
||||||
|
sub new {
|
||||||
|
my $class = shift;
|
||||||
|
my $self = {};
|
||||||
|
bless($self,$class);
|
||||||
|
return $self;
|
||||||
|
}
|
||||||
|
|
||||||
|
#Template
|
||||||
|
sub tpl(){
|
||||||
|
my $node_meta = shift;
|
||||||
|
my $users_dms = shift || "";
|
||||||
|
my $mode = shift || "";
|
||||||
|
my $varenv = shift;
|
||||||
|
my $users_sharee = shift || { c_id => 0 };
|
||||||
|
my $return = shift || "";
|
||||||
|
|
||||||
|
my $q = new CGI;
|
||||||
|
my $dbt = new DBtank;
|
||||||
|
my $apif = new APIfunc;
|
||||||
|
|
||||||
|
my $api_file = "/var/www/copri4/shareeconf/apikeys.cfg";
|
||||||
|
my $aconf = Config::General->new($api_file);
|
||||||
|
my %apikeyconf = $aconf->getall;
|
||||||
|
|
||||||
|
my $api_return = { authcookie => '' };
|
||||||
|
my $coo = $q->cookie(-name=>'domcookie') || $R::sessionid;
|
||||||
|
($api_return,$users_sharee) = $apif->auth_verify($q,$coo,"");
|
||||||
|
|
||||||
|
my $initMap = $dbt->{website}->{$varenv->{syshost}}->{initMap};
|
||||||
|
my $map_zoom = $dbt->{website}->{$varenv->{syshost}}->{map_zoom} || "10";
|
||||||
|
my $project = "all";
|
||||||
|
my $uri_request = $dbt->{primary}->{sharee_primary}->{primaryApp};
|
||||||
|
|
||||||
|
if($dbt->{website}->{$varenv->{syshost}}->{merchant_id}){
|
||||||
|
$api_return->{authcookie} = $dbt->{website}->{$varenv->{syshost}}->{merchant_id} if(!$api_return->{authcookie});
|
||||||
|
$project = $dbt->{website}->{$varenv->{syshost}}->{project} if($dbt->{website}->{$varenv->{syshost}}->{project});
|
||||||
|
$uri_request = $dbt->{website}->{$varenv->{syshost}}->{operatorWeb};
|
||||||
|
print $q->div({-class=>"content2_contact"},"Hier können Lastenfahrräder gemietet werden:"),"\n";
|
||||||
|
}elsif($dbt->{operator}->{$varenv->{dbname}}->{merchant_id}){
|
||||||
|
$api_return->{authcookie} = $dbt->{operator}->{$varenv->{dbname}}->{merchant_id} if(!$api_return->{authcookie});
|
||||||
|
$initMap = $dbt->{operator}->{$varenv->{dbname}}->{initMap} if($dbt->{operator}->{$varenv->{dbname}}->{initMap});
|
||||||
|
$map_zoom = $dbt->{operator}->{$varenv->{dbname}}->{map_zoom} if($dbt->{operator}->{$varenv->{dbname}}->{map_zoom});
|
||||||
|
$project = $dbt->{operator}->{$varenv->{dbname}}->{project} if($dbt->{operator}->{$varenv->{dbname}}->{project});
|
||||||
|
$uri_request = $dbt->{operator}->{$varenv->{dbname}}->{operatorDMS};
|
||||||
|
print $q->div({-style=>'padding-top:25px;'},""),"\n";
|
||||||
|
}elsif($dbt->{primary}->{$varenv->{dbname}}->{merchant_id}){
|
||||||
|
$api_return->{authcookie} = $dbt->{primary}->{$varenv->{dbname}}->{merchant_id} if(!$api_return->{authcookie});
|
||||||
|
$initMap = $dbt->{primary}->{$varenv->{dbname}}->{initMap} if($dbt->{primary}->{$varenv->{dbname}}->{initMap});
|
||||||
|
$uri_request = $dbt->{primary}->{$varenv->{dbname}}->{primaryDMS};
|
||||||
|
print $q->div({-style=>'padding-top:25px;'},""),"\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
my $icon_green = "Open_Green.png";
|
||||||
|
my $icon_red = "Open_Red.png";
|
||||||
|
my $icon_blue = "Open_Blue.png";
|
||||||
|
my $mapheight = "600px;";
|
||||||
|
if($project eq "Bayern"){
|
||||||
|
$icon_green = "LastenradBay_Standortpfeil_gruen_03a.png";
|
||||||
|
$icon_red = "LastenradBay_Standortpfeil_rot_03a.png";
|
||||||
|
$icon_blue = "LastenradBay_Standortpfeil_blau_03a.png";
|
||||||
|
$mapheight = "800px;" if($varenv->{syshost} !~ /shareedms-/);
|
||||||
|
}
|
||||||
|
|
||||||
|
$users_sharee->{c_id} = "0" if(!$users_sharee->{c_id});
|
||||||
|
$initMap =~ s/\s//g;
|
||||||
|
my ($lat,$lng) = split(/,/,$initMap);
|
||||||
|
|
||||||
|
print "<div style='background-color:#cccccc;width:100%;margin-top:1em;'>\n";
|
||||||
|
|
||||||
|
print<<EOF
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/leaflet\@1.8.0/dist/leaflet.css"
|
||||||
|
integrity="sha512-hoalWLoI8r4UszCkZ5kL8vayOGVae1oxXe/2A4AO6J9+580uKHDO3JdHb7NzwwzK5xr/Fs0W40kiNHxM9vyTtQ=="
|
||||||
|
crossorigin=""/>
|
||||||
|
|
||||||
|
<script src="https://unpkg.com/leaflet\@1.8.0/dist/leaflet.js"
|
||||||
|
integrity="sha512-BB3hKbKWOc9Ez/TAwyWxNXeoV9c1v6FIeYiBieIWkpLjauysF18NzgR1MBNBXf8/KABdlkX68nAhlwcDFLGPCQ=="
|
||||||
|
crossorigin=""></script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#map {
|
||||||
|
height: $mapheight
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
EOF
|
||||||
|
;
|
||||||
|
|
||||||
|
print "<div id='map'></div>\n";
|
||||||
|
|
||||||
|
print<<EOF
|
||||||
|
<script>
|
||||||
|
|
||||||
|
var map = L.map('map').setView([$lat, $lng], $map_zoom);
|
||||||
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||||
|
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
||||||
|
}).addTo(map);
|
||||||
|
|
||||||
|
var icon_green = L.icon({
|
||||||
|
iconUrl: '$varenv->{metahost}/img/$icon_green',
|
||||||
|
iconSize: [37, 41],
|
||||||
|
iconAnchor: [20, 41],
|
||||||
|
popupAnchor: [-2, -40]
|
||||||
|
//shadowUrl: 'marker-shadow.png',
|
||||||
|
//shadowSize: [68, 95],
|
||||||
|
//shadowAnchor: [22, 94]
|
||||||
|
});
|
||||||
|
var icon_red = L.icon({
|
||||||
|
iconUrl: '$varenv->{metahost}/img/$icon_red',
|
||||||
|
iconSize: [37, 41],
|
||||||
|
iconAnchor: [20, 41],
|
||||||
|
popupAnchor: [-2, -40]
|
||||||
|
});
|
||||||
|
|
||||||
|
Promise.all([
|
||||||
|
fetch(
|
||||||
|
"$uri_request/GBFSout?request=stations_available&authcookie=$api_return->{authcookie}"
|
||||||
|
),
|
||||||
|
fetch("$uri_request/GBFSout?request=bikes_available&authcookie=$api_return->{authcookie}")
|
||||||
|
]).then(async ([response1, response2]) => {
|
||||||
|
const responseData1 = await response1.json();
|
||||||
|
const responseData2 = await response2.json();
|
||||||
|
|
||||||
|
const data1 = responseData1.data.stations;
|
||||||
|
const data2 = responseData2.data.vehicles;
|
||||||
|
|
||||||
|
const layerGroup = L.featureGroup().addTo(map);
|
||||||
|
|
||||||
|
data1.forEach(({ lat, lon, name, address, station_id: stationId }) => {
|
||||||
|
let bikesonstation = '';
|
||||||
|
console.log('Station: ' + stationId , name);
|
||||||
|
|
||||||
|
data2.forEach(({ station_id, vehicle_name, vehicle_id }) => {
|
||||||
|
if(typeof station_id !== 'undefined' && station_id == stationId){
|
||||||
|
bikesonstation = bikesonstation.concat('• Verfügbar: ' + vehicle_name + ' ' + vehicle_id + '<br/>');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
console.log(bikesonstation);
|
||||||
|
|
||||||
|
//bike_array.forEach((bike, index) => {
|
||||||
|
//console.log('xxxx ' + index + ':' + bike);
|
||||||
|
//});
|
||||||
|
|
||||||
|
if(bikesonstation){
|
||||||
|
layerGroup.addLayer(
|
||||||
|
L.marker([lat, lon], { icon:icon_green }).bindPopup(
|
||||||
|
`<b>Mietradstation: \${name} \${stationId} </b><br/>
|
||||||
|
\${bikesonstation}
|
||||||
|
`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}else{
|
||||||
|
layerGroup.addLayer(
|
||||||
|
L.marker([lat, lon], { icon:icon_red }).bindPopup(
|
||||||
|
`<b>Mietradstation: \${name} \${stationId} </b><br/>
|
||||||
|
`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
map.fitBounds(layerGroup.getBounds());
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
EOF
|
||||||
|
;
|
||||||
|
|
||||||
|
print "</div>\n";
|
||||||
|
|
||||||
|
#print $q->div({-class=>"content2_legende", -style=>'font-weight:bold;'}, "• Ist ein Lastenrad an einer Mietradstation verfügbar?"),"\n";
|
||||||
|
print $q->div({-class=>"content2_legende"}, $q->img({-style=>'height:38px;', -src=>"$varenv->{metahost}/img/$icon_green"}), "Lastenrad verfügbar"),"\n";
|
||||||
|
print $q->div({-class=>"content2_legende"}, $q->img({-style=>'height:38px;', -src=>"$varenv->{metahost}/img/$icon_red"}), "Lastenrad nicht verfügbar"),"\n";
|
||||||
|
#print $q->div({-class=>"content2_legende"}, " "),"\n";
|
||||||
|
|
||||||
|
print "$initMap|$varenv->{dbname}|$api_return->{authcookie}|$users_sharee->{c_id}" if($users_dms->{u_id} == $dbt->{copri_conf}->{superu_id});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
1;
|
||||||
|
|
|
@ -36,10 +36,10 @@ my $dbh = "";
|
||||||
|
|
||||||
my $todo = $ARGV[1] || "";
|
my $todo = $ARGV[1] || "";
|
||||||
my $user_id = $ARGV[2] || "";
|
my $user_id = $ARGV[2] || "";
|
||||||
my $sig_bike_id = $ARGV[3] || "";
|
my $pos_id = $ARGV[3] || "";
|
||||||
|
|
||||||
open(FILE,">>$varenv{logdir}/APIsigclient.log");
|
open(FILE,">>$varenv{logdir}/APIsigclient.log");
|
||||||
print FILE "\n*** $now_dt 'sig_client fork with todo:$todo|user_id:$user_id|sig_bike_id:$sig_bike_id' \n";
|
print FILE "\n*** $now_dt 'sig_client fork with todo:$todo|user_id:$user_id|pos_id:$pos_id' \n";
|
||||||
|
|
||||||
#get user and bike in copri by id
|
#get user and bike in copri by id
|
||||||
my $apref = {
|
my $apref = {
|
||||||
|
@ -58,10 +58,10 @@ my $posref = {
|
||||||
fetch => "one",
|
fetch => "one",
|
||||||
ca_id => "$ctadr->{c_id}",
|
ca_id => "$ctadr->{c_id}",
|
||||||
int10 => "IN::('3','2')",
|
int10 => "IN::('3','2')",
|
||||||
txt22 => "$sig_bike_id",
|
c_id => "$pos_id",
|
||||||
};
|
};
|
||||||
my $ctpos = { c_id => 0 };
|
my $ctpos = { c_id => 0 };
|
||||||
$ctpos = $dbt->fetch_tablerecord($dbh,$posref) if($user_id =~ /^\d+$/ && $user_id > 0 && $sig_bike_id);
|
$ctpos = $dbt->fetch_tablerecord($dbh,$posref) if($user_id =~ /^\d+$/ && $user_id > 0 && $pos_id);
|
||||||
|
|
||||||
print FILE "fetched from DB ctadr:$ctadr->{c_id}|ctpos:$ctpos->{c_id}\n";
|
print FILE "fetched from DB ctadr:$ctadr->{c_id}|ctpos:$ctpos->{c_id}\n";
|
||||||
|
|
||||||
|
|
BIN
copri4/shareeapp-operator/css/favicon.ico
Normal file
BIN
copri4/shareeapp-operator/css/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
1
copri4/shareeapp-operator/src/Tpl/Karte_osm.pm
Symbolic link
1
copri4/shareeapp-operator/src/Tpl/Karte_osm.pm
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../../main/src/Tpl/Karte_osm.pm
|
|
@ -74,6 +74,12 @@
|
||||||
Allow from all
|
Allow from all
|
||||||
</Location>
|
</Location>
|
||||||
|
|
||||||
|
<Location /GBFSout>
|
||||||
|
SetHandler perl-script
|
||||||
|
PerlInitHandler Apache2::Reload
|
||||||
|
PerlResponseHandler Mod::GBFSout
|
||||||
|
</Location>
|
||||||
|
|
||||||
<Location /ajax_json>
|
<Location /ajax_json>
|
||||||
SetHandler perl-script
|
SetHandler perl-script
|
||||||
PerlInitHandler Apache2::Reload
|
PerlInitHandler Apache2::Reload
|
||||||
|
|
|
@ -343,8 +343,8 @@ EOF
|
||||||
require "Tpl/MandantConf.pm";
|
require "Tpl/MandantConf.pm";
|
||||||
$return = &MandantConf::tpl($node_meta,$users_dms,$mode,$return);
|
$return = &MandantConf::tpl($node_meta,$users_dms,$mode,$return);
|
||||||
}elsif($node_meta->{tpl_id} == 1 && $node_meta->{main_id} == 200017){
|
}elsif($node_meta->{tpl_id} == 1 && $node_meta->{main_id} == 200017){
|
||||||
require "Tpl/Karte.pm";
|
require "Tpl/Karte_osm.pm";
|
||||||
&Karte::tpl($node_meta,$users_dms,$mode,$varenv,"",$return);
|
&Karte_osm::tpl($node_meta,$users_dms,$mode,$varenv,"",$return);
|
||||||
}elsif($node_meta->{ct_table} =~ /contentpos|contentadrpos|users$/){#contentpos or contentadrpos
|
}elsif($node_meta->{ct_table} =~ /contentpos|contentadrpos|users$/){#contentpos or contentadrpos
|
||||||
require "Tpl/SubListe.pm";
|
require "Tpl/SubListe.pm";
|
||||||
$return = &SubListe::tpl($node_meta,$users_dms,$mode,$return);
|
$return = &SubListe::tpl($node_meta,$users_dms,$mode,$return);
|
||||||
|
|
|
@ -75,11 +75,11 @@ SSLCertificateKeyFile /etc/letsencrypt/live/example.tld-0003/privkey.pem
|
||||||
Allow from all
|
Allow from all
|
||||||
</Location>
|
</Location>
|
||||||
|
|
||||||
<Location /APIvelo>
|
#<Location /APIvelo>
|
||||||
SetHandler perl-script
|
# SetHandler perl-script
|
||||||
PerlInitHandler Apache2::Reload
|
# PerlInitHandler Apache2::Reload
|
||||||
PerlResponseHandler Mod::APIvelo
|
# PerlResponseHandler Mod::APIvelo
|
||||||
</Location>
|
#</Location>
|
||||||
|
|
||||||
<Location /APIjsonserver>
|
<Location /APIjsonserver>
|
||||||
SetHandler perl-script
|
SetHandler perl-script
|
||||||
|
@ -87,6 +87,12 @@ SSLCertificateKeyFile /etc/letsencrypt/live/example.tld-0003/privkey.pem
|
||||||
PerlResponseHandler Mod::APIjsonserver
|
PerlResponseHandler Mod::APIjsonserver
|
||||||
</Location>
|
</Location>
|
||||||
|
|
||||||
|
<Location /GBFSout>
|
||||||
|
SetHandler perl-script
|
||||||
|
PerlInitHandler Apache2::Reload
|
||||||
|
PerlResponseHandler Mod::GBFSout
|
||||||
|
</Location>
|
||||||
|
|
||||||
<Location /FileOut>
|
<Location /FileOut>
|
||||||
SetHandler perl-script
|
SetHandler perl-script
|
||||||
PerlInitHandler Apache2::Reload
|
PerlInitHandler Apache2::Reload
|
||||||
|
|
|
@ -188,8 +188,8 @@ sub tpl(){
|
||||||
print $q->div({-style=>"text-align:left;border:0px dotted #$fgcolor1;"},$q->ul({-id=>'TopNavi'},$lmenu0)),"\n";
|
print $q->div({-style=>"text-align:left;border:0px dotted #$fgcolor1;"},$q->ul({-id=>'TopNavi'},$lmenu0)),"\n";
|
||||||
|
|
||||||
if(($node_meta->{tpl_id} == 1 || $node_meta->{tpl_id} == 3) && $node_meta->{main_id} == 200017){
|
if(($node_meta->{tpl_id} == 1 || $node_meta->{tpl_id} == 3) && $node_meta->{main_id} == 200017){
|
||||||
require "Tpl/Karte.pm";
|
require "Tpl/Karte_osm.pm";
|
||||||
&Karte::tpl($node_meta,$users_dms,$mode,$varenv,$users_sharee,$return);
|
&Karte_osm::tpl($node_meta,$users_dms,$mode,$varenv,$users_sharee,$return);
|
||||||
}else{
|
}else{
|
||||||
$self->tplselect($node_meta,$users_dms,$mode,$varenv,$users_sharee,$return);
|
$self->tplselect($node_meta,$users_dms,$mode,$varenv,$users_sharee,$return);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue