Hi, the git-diff with the new patch is attached. I think I managed to fix everything you told me to. I am still not sure about the errorhandling part (Do you think it is OK to inline that the way I did?) .
If there is anything else I can do to make it better just let me know.
Cheers,
Cryptkiddy
diff --git a/config/chroot_local-includes/usr/local/bin/tails-start-i2p b/config/chroot_local-includes/usr/local/bin/tails-start-i2p index 716d05d..9ec2c61 100755 --- a/config/chroot_local-includes/usr/local/bin/tails-start-i2p +++ b/config/chroot_local-includes/usr/local/bin/tails-start-i2p @@ -25,6 +25,7 @@ See https://tails.boum.org/. use Desktop::Notify; use Locale::gettext; use POSIX; +use feature "state"; ### initialization setlocale(LC_MESSAGES, ""); @@ -32,11 +33,56 @@ textdomain("tails-i2p-notify-user"); ### helper subs -# TODO: get router port (default 7657) from /etc/i2p/clients.config sub get_router_port { - return 7657; + # gets router port from /etc/i2p/clients.config . If this fails we return I2P default port (7657). + my $i2p_default_port = 7657; + state $router_port = 0; + + + if($router_port) { + # If we found the Port before there should be no need to recheck it. + return $router_port; + } + + + my $conffile; + if(! open($conffile, "<", "/etc/i2p/clients.config")) { + warn "Can not open i2p config file '/etc/i2p/client.config'.". + " Using default port ".$i2p_default_port." for I2P webinterface instead."; + $router_port = $i2p_default_port; + return $router_port; + } + my $client_config = join("", <$conffile>); + close($conffile); + + my $client_app_no; + my $regex = '\nclientApp\.([0-9]+)\.main=net\.i2p\.router\.web\.RouterConsoleRunner\n'; + #we are trying to get $NUMBER$ from >>clientApp.$NUMBER$.main=net.i2p.router.web.RouterConsoleRunner<< + if(! (($client_app_no) = ($client_config =~ m/$regex/))) { + warn "RegEx checking 'clientApp.[0-9].main=net.i2p.router.web.RouterConsoleRunner' didn't match.". + "Can not find port in '/etc/i2p/client.config'." . + " Using default port ".$i2p_default_port." for I2P webinterface instead."; + $router_port = $i2p_default_port; + return $router_port; + } + + $regex = '\nclientApp\.' . $client_app_no . '\.args=([0-9]{1,5})\ [0-9s:,. \-]+ \.\/webapps\/[\s]*\n'; + # 'clientApp.$NUMBER$.args=$PORT$ ::1,127.0.0.1 ./webapps/' + # $PORT$ ::1 ./webapps/ + # $PORT$ ::1,127.0.0.1 -s 7667 ::1,127.0.0.1 ./webapps/ + #here $NUMBER$ is the one we obtained above and $PORT$ is what we want to get + #doesn't match if only https port is given. + if (! (($router_port) = ($client_config =~ m/$regex/))) { + warn "RegEx checking 'clientApp.".$client_app_no.".args= [...]' didn't match.". + "Can not find port in '/etc/i2p/client.config'." . + " Using default port ".$i2p_default_port." for I2P webinterface instead."; + $router_port = $i2p_default_port; + return $router_port; + } + return $router_port; } + # TODO: more perlish way to do below? # TODO: use netstat -p, check that a child of i2psvc runs the router console sub router_status {
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ tails-dev mailing list [email protected] https://boum.org/mailman/listinfo/tails-dev
