Hi Intrigeri,
Am Dienstag, 6. September 2011, 16:41:12 schrieb intrigeri:
> BTW, such regexps are starting to be complicated enough to deserve the
> use of the extended RE syntax ("x" flag).
>
> I recommend using that extended syntax to write your regexps on
> several lines and document their components along the way like I
> showed above.
Ok, I have replaced it with an extended RegEx:
(Which, indeed, makes it look a lot more readable)
#############################
$client_config =~
m{
\n # (beginning of line)
clientApp\. # (literal)
$client_app_no # (obtained above)
\.args= # (literal)
([0-9]{1,5}) #this is the port we are looking for.
#When only https is given it won't
#be here but we don't handle that case
anyway
[[:space:]] # (delimiting space)
( [0-9s:,.-] | [[:space:]] )+ #we are eating up :
#an ip4 and/or ip6 address
(comma/space separated)
#and if https is additionally given
#we also eat "-s" followed again by:
#(port, ip4, ip6, commas, spaces)
[[:space:]] \.\/webapps\/ # (literal)
[[:space:]]* # (arbitrary amount of tabs and/or
spaces)
\n # (end of line)
}x;
########################################
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..8ae29d8 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,8 @@ See https://tails.boum.org/. use Desktop::Notify; use Locale::gettext; use POSIX; +use Memoize; +memoize('get_router_port'); ### initialization setlocale(LC_MESSAGES, ""); @@ -32,9 +34,70 @@ 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; + my $router_port = 0; + + + 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."; + return $i2p_default_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."; + return $i2p_default_port; + } + + + + #Below we match something like: + # 'clientApp.$NUMBER$.args=$PORT$ ::1,127.0.0.1 ./webapps/' + # or 'clientApp.$NUMBER$.args=$PORT$ ::1 ./webapps/ + # or 'clientApp.$NUMBER$.args=$PORT$ ::1,127.0.0.1 -s 7667 ::1,127.0.0.1 ./webapps/ + $client_config =~ + m{ + \n # (beginning of line) + clientApp\. # (literal) + $client_app_no # (obtained above) + \.args= # (literal) + ([0-9]{1,5}) #this is the port we are looking for. When only https is given it won't + #be here but we don't handle that case anyway + + [[:space:]] # (delimiting space) + + ( [0-9s:,.-] | [[:space:]] )+ #we are eating up : + #an ip4 and/or ip6 address (comma/space separated) + #and if https is additionally given + #we also eat "-s" followed again by (port, ip4, ip6, commas, spaces) + + [[:space:]] \.\/webapps\/ # (literal) + [[:space:]]* # (arbitrary amount of tabs and/or spaces) + \n # (end of line) + }x; + + + + $router_port=$1; + + if (! $router_port){ + 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."; + return $i2p_default_port; + } + return $router_port; } # TODO: more perlish way to do below?
signature.asc
Description: This is a digitally signed message part.
_______________________________________________ tails-dev mailing list [email protected] https://mailman.boum.org/listinfo/tails-dev
