source: subversion/applications/rendering/tahwin/tah.pl @ 29599

Last change on this file since 29599 was 19926, checked in by stephankn, 10 years ago

rewrite of windows installation script to replace abandoned installer (wintah.sourceforge.net). It still contains the original windows GUI. Same as the original software this is also released under GPL. Thanks to Eddi de Pieri for creating the original version.

  • Property svn:eol-style set to native
File size: 17.0 KB
Line 
1#!perl -w
2use strict;
3use warnings;
4use Cwd;
5use Win32::GUI();
6use IPC::Open3;
7use Symbol qw(gensym);
8use IO::File;
9use Win32::Registry;
10
11use threads;
12use threads::shared;
13
14#svn co http://svn.openstreetmap.org/applications/rendering/tilesAtHome/
15
16my $dircur                                      = getcwd; $dircur =~ s/\//\\/g;
17my $dirperl                                     = "$dircur\\perl";
18my $dirinkscape                         = "$dircur\\inkscape";
19my $dirsvn                                      = "$dircur\\svn";
20my $dirpngcrush                         = "$dircur\\pngcrush";
21my $dirpngnq                            = "$dircur\\pngnq";
22my $dirzip                                      = "$dircur\\zip";
23my $dirtah                                      = "$dircur\\tilesAthome";
24my $svnserverfile                       = "$ENV{APPDATA}\\Subversion\\servers";
25my $tahauthenticationfile       = "$dirtah\\authentication.conf";
26my $tahconfigurationfile        = "$dirtah\\tilesAtHome.conf";
27my $tahauthenticationfileex     = "$dirtah\\authentication.conf.example";
28my $tahconfigurationfileex      = "$dirtah\\tilesAtHome.conf.windows";
29
30$ENV{PATH} = "$dirperl\\bin;$dirinkscape;$dirpngnq;$dirsvn\\bin;$dirpngcrush;$dirzip;$ENV{PATH}";
31
32if ( ! -f "$ENV{APPDATA}\\Subversion\\servers") {
33        my $cmdout =`"$dircur\\svn\\bin\\svn.exe" help >NUL`;
34}
35
36my $http_proxy_enabled = 0;
37my $http_proxy_exceptions = "";
38my $http_proxy_host = "";
39my $http_proxy_port = "";
40my $http_proxy_username = "";
41my $http_proxy_password = "";
42
43my $authentication_username = "";
44my $authentication_password = "";
45
46my $DecimalSeparator = "";
47
48my $console_visible = "";
49my $text_to_check = "";
50my $batikRasterizer = 0;
51
52my $tahreg;
53my $type;
54
55$::HKEY_CURRENT_USER->Create("SOFTWARE\\openstreetmap.org\\tah", $tahreg) or die "Can't create record: $^E";;
56$::HKEY_CURRENT_USER->Open("SOFTWARE\\openstreetmap.org\\tah", $tahreg) or die "Can't open proxy: $^E";
57$tahreg->QueryValueEx("http_proxy_enable", $type, $http_proxy_enabled);
58$tahreg->QueryValueEx("http_proxy_exceptions", $type, $http_proxy_exceptions);
59$tahreg->QueryValueEx("http_proxy_host", $type, $http_proxy_host);
60$tahreg->QueryValueEx("http_proxy_port", $type, $http_proxy_port);
61$tahreg->QueryValueEx("http_proxy_username", $type, $http_proxy_username);
62$tahreg->QueryValueEx("http_proxy_password", $type, $http_proxy_password);
63$tahreg->QueryValueEx("authentication_username", $type, $authentication_username);
64$tahreg->QueryValueEx("authentication_password", $type, $authentication_password);
65$tahreg->QueryValueEx("console_visible", $type, $console_visible);
66$tahreg->QueryValueEx("batikRasterizer", $type, $batikRasterizer);
67$tahreg->Close();
68
69#$::HKEY_LOCAL_MACHINE->SetValue("proxy_enable", REG_BINARY, 0);
70#$::HKEY_LOCAL_MACHINE->SetValue("proxy_enable", REG_SZ, 0);
71
72$::HKEY_CURRENT_USER->Open("Control\ Panel\\International", $tahreg) or die "Can't open International Settings: $^E";
73$tahreg->QueryValueEx("sDecimal", $type, $DecimalSeparator);
74$tahreg->Close();
75
76my $DOS = Win32::GUI::GetPerlWindow();
77Win32::GUI::Hide($DOS) if (! $console_visible);
78
79# Primarily a 2 column layout:
80my $col1_width = 235;
81my $col2_width = 255;
82
83my $padding = 10;
84my $margin = 10;
85
86my $col1_left       = 0;
87my $col1_gb_left    = $col1_left + $padding;
88my $col1_ctrl_left  = $col1_gb_left + $padding;
89my $col1_gb_right   = $col1_left + $col1_width - ($padding/2);  # collapse padding between columns
90my $col1_ctrl_right = $col1_gb_right - $padding;
91
92my $col2_left       = $col1_width;
93my $col2_gb_left    = $col2_left + ($padding/2);
94my $col2_ctrl_left  = $col2_gb_left + $padding;
95my $col2_gb_right   = $col2_left + $col2_width - $padding;
96my $col2_ctrl_right = $col2_gb_right - $padding;
97
98my $row1_gb_top = 0;  # no padding at top
99
100my $desk = Win32::GUI::GetDesktopWindow();
101my $dw = Win32::GUI::Width($desk);
102my $dh = Win32::GUI::Height($desk);
103my $w = 400;
104my $h = 496;
105
106my $x = ($dw - $w) / 2;
107my $y = ($dh - $h) / 2;
108
109my $main = Win32::GUI::Window->new(
110        -name  => 'Main',
111        -title => 'tiles@Home for Windows (eddi_<at>_dpeddi.com)',
112        -size  => [ $w,$h ],
113        -resizable   => 0,
114        -maximizebox => 0,
115        -left  => $x,
116        -top => $y
117);
118
119my $px = $main->AddGroupbox(
120        -name  => "PX",
121        -title => "&Proxy Settings",
122        -left  => $col1_gb_left,
123        -top   => $row1_gb_top,
124        -width => $col2_gb_right - $col1_gb_left,
125        -group => 1,
126);
127
128$main->AddCheckbox(
129        -name    => "PXCB",
130        -text    => "Use proxy",
131        -left    => $col1_ctrl_left,
132        -top     => 20,
133        -onClick => \&toggle_proxy,
134#       -tabstop => 1,
135);
136$main->PXCB->Checked($http_proxy_enabled);
137
138$main->AddTextfield(
139        -name     => "PXPO",
140        -text     => $http_proxy_port,
141        -prompt   => [ "port", 30 ],
142        -left     => $col2_ctrl_right - 70,
143        -top      => 20,
144        -width    => 40,
145        -height   => 20,
146#       -tabstop  => 1,
147);
148
149$main->AddTextfield(
150        -name     => "PXHO",
151        -text     => $http_proxy_host,
152        -prompt   => [ "host", 30 ],
153        -left     => $col1_ctrl_left + $main->PXCB->Width() + $padding,
154        -top      => 20,
155        -width    => $col2_ctrl_right - $col1_ctrl_left - $main->PXCB->Width() - $main->PXPO->Width() - 70 - ( $padding * 2 ),
156        -height   => 20,
157#       -tabstop  => 1,
158);
159
160my $row1_gb_bottom = $main->PXCB->Top() + $main->PXCB->Height();
161my $row2_gb_top = $row1_gb_bottom + $padding;
162
163$main->AddTextfield(
164        -name     => "PXUS",
165        -text     => $http_proxy_username,
166        -prompt   => [ "username", 50 ],
167        -left     => $col1_ctrl_left,
168        -top      => $row2_gb_top,
169        -width    => $col1_gb_right - $col1_ctrl_left - 60,
170        -height   => 20,
171#       -tabstop  => 1,
172);
173$main->AddTextfield(
174        -name     => "PXPA",
175        -text     => $http_proxy_password,
176        -prompt   => [ "password", 50 ],
177        -left     => $col2_ctrl_left,
178        -top      => $row2_gb_top,
179        -width    => $col2_gb_right - $col2_ctrl_left - 60,
180        -height   => 20,
181        -password => 1,
182#       -tabstop  => 1,
183);
184
185my $row2_gb_bottom = $main->PXUS->Top() + $main->PXUS->Height();
186my $row3_gb_top = $row2_gb_bottom + $padding;
187
188$main->AddTextfield(
189        -name     => "PXEX",
190        -text     => $http_proxy_exceptions,
191        -prompt   => [ "exceptions", 50 ],
192        -left     => $col1_ctrl_left,
193        -top      => $row3_gb_top,
194        -width    => $col2_gb_right - $col1_ctrl_left - 60,
195        -height   => 20,
196#       -tabstop  => 1,
197);
198
199my $row3_gb_bottom = $main->PXEX->Top() + $main->PXEX->Height();
200my $row4_gb_top = $row3_gb_bottom + $padding;
201
202my $au = $main->AddGroupbox(
203        -name  => "AU",
204        -title => "&Authentication Settings",
205        -left  => $col1_gb_left,
206        -top   => $row4_gb_top,
207        -width => $col2_gb_right - $col1_gb_left,
208        -group => 1,
209);
210
211$main->AddTextfield(
212        -name     => "AUUS",
213        -text     => $authentication_username,
214        -prompt   => [ "username", 50 ],
215        -left     => $col1_ctrl_left,
216        -top      => $row4_gb_top + 20,
217        -width    => $col1_gb_right - $col1_ctrl_left - 60,
218        -height   => 20,
219#       -tabstop  => 1,
220);
221$main->AddTextfield(
222        -name     => "AUPA",
223        -text     => $authentication_password,
224        -prompt   => [ "password", 50 ],
225        -left     => $col2_ctrl_left,
226        -top      => $row4_gb_top + 20,
227        -width    => $col2_gb_right - $col2_ctrl_left - 60,
228        -height   => 20,
229        -password => 1,
230#       -tabstop  => 1,
231);
232
233my $row4_gb_bottom = $main->AUUS->Top() + $main->AUUS->Height();
234my $row5_gb_top = $row4_gb_bottom + $padding;
235
236my $tah = $main->AddGroupbox(
237        -name  => "TAH",
238        -title => "&Application",
239        -left  => $col1_gb_left,
240        -top   => $row5_gb_top,
241        -width => $col2_gb_right - $col1_gb_left,
242        -group => 1,
243);
244
245$main->AddButton(
246        -name  => "TAHB1",
247        -text  => "update tah",
248        -left  => $col1_ctrl_left + 1 * ( $col1_ctrl_right - $col1_ctrl_left - 2 * $padding ) / 6 - 30,
249        -width => 60,
250        -top   => $row5_gb_top,
251        -onClick => \&start_svn,
252);
253
254$main->AddButton(
255        -name  => "TAHB2",
256        -text  => "start tah",
257        -left  => $col1_ctrl_left + 3 * ( $col1_ctrl_right - $col1_ctrl_left + 2 * $padding ) / 6 - 30,
258        -width => 60,
259        -top   => $row5_gb_top,
260        -onClick => \&start_tah,
261);
262
263$main->AddButton(
264        -name  => "TAHB3",
265        -text  => "stop tah",
266        -left  => $col1_ctrl_left + 5 * ( $col1_ctrl_right - $col1_ctrl_left + 2 * $padding ) / 6 - 30,
267        -width => 60,
268        -top   => $row5_gb_top,
269        -onClick => \&stop_tah,
270);
271
272$main->AddCombobox(
273        -name         => "BCB",
274        -dropdownlist => 1,
275        -left         => $col2_ctrl_left,
276        -top          => $row5_gb_top,
277        -width        => 110,
278        -height       => 80,
279#       -onChange     => sub { change_balloon("icon" => $_[0]->Text()); },
280        -tabstop      => 1,
281);
282$main->BCB->Add('tilesGen.pl loop', 'tilesGen.pl upload', 'tilesGen.pl ...');
283$main->BCB->SetCurSel(0);
284
285$main->AddTextfield(
286        -name     => "BCBP",
287        -text     => "",
288        -left     => $col2_ctrl_right - $main->BCB->Width(),
289        -top      => $row5_gb_top,
290        -width    => $col2_ctrl_right - $col2_ctrl_left - $main->BCB->Width(),
291        -height   => 20,
292);
293
294my $row5_gb_bottom = $main->TAHB1->Top() + $main->TAHB1->Height();
295my $row6_gb_top = $row5_gb_bottom + $padding;
296
297$main->AddCheckbox(
298        -name    => "SCCB",
299        -text    => "Show console window (DO NOT CLOSE IT)",
300        -left    => $col1_ctrl_left,
301        -top     => $row6_gb_top,
302        -onClick => \&toggle_console,
303);
304$main->SCCB->Checked($console_visible);
305
306my $row6_gb_bottom = $main->SCCB->Top() + $main->SCCB->Height();
307my $row7_gb_top = $row6_gb_bottom + $padding;
308
309$main->AddTextfield(
310        -name => 'LB',
311        -left     => $col1_ctrl_left,
312        -width    => $col2_ctrl_right - $col1_ctrl_left,
313        -top      => $row7_gb_top,
314        -height   => 240,
315        -multiline   => 1,
316        -autovscroll => 1,
317        -vscroll   => 1,
318        -readonly => 1,
319        -onChange => \&check_full,
320);
321
322my $row7_gb_bottom = $main->LB->Top() + $main->LB->Height();
323my $row8_gb_top = $row7_gb_bottom + $padding;
324
325$main->PX->Height($row3_gb_bottom - $row1_gb_top + $padding);
326$main->AU->Height($row7_gb_bottom - $row4_gb_top + $padding);
327my $sb = $main->AddStatusBar();
328
329my $icon = new Win32::GUI::Icon('tah.ico');
330my $ni = $main->AddNotifyIcon(
331    -name => "NI",
332    -icon => $icon,
333    -tip => "tiles\@Home",
334);
335
336my $ncw = $main->Width() - $main->ScaleWidth();
337my $nch = $main->Height() - $main->ScaleHeight();
338$main->Resize($ncw + $col1_width + $col2_width,
339$nch + $main->PX->Top() + $main->PX->Height() + $main->AU->Height() + $padding + 20);
340
341&toggle_proxy;
342$main->TAHB3->Enable(0);
343
344$main->Show(); #read registry if yes show
345Win32::GUI::Dialog();
346
347Win32::GUI::Show($DOS);
348
349undef $main;
350exit(0);
351
352sub Main_Terminate {
353        &configure_proxy;
354        &configure_authentication;
355        return -1;
356}
357
358sub Main_Resize {
359        $sb->Move( 0, ($main->ScaleHeight() - $sb->Height()) );
360        $sb->Resize( $main->ScaleWidth(), $sb->Height() );
361        $sb->Text( "Window size: " . $main->Width() . "x" . $main->Height() );
362        return 0;
363}
364
365sub Main_Minimize {
366    $main->Disable();
367    $main->Hide();
368    return 1;
369}
370
371sub NI_Click {
372    $main->Enable();
373    $main->Show();
374    return 1;
375}
376
377sub toggle_console {
378        $console_visible =         $main->SCCB->Checked;
379        if ($console_visible) {
380                Win32::GUI::Show($DOS);
381        } else {
382                Win32::GUI::Hide($DOS);
383        }
384
385}
386
387sub toggle_proxy {
388        my $pxcb_state =        $main->PXCB->Checked;
389
390        $main->PXHO->Enable($pxcb_state);
391        $main->PXPO->Enable($pxcb_state);
392        $main->PXUS->Enable($pxcb_state);
393        $main->PXPA->Enable($pxcb_state);
394        $main->PXEX->Enable($pxcb_state);
395}
396
397sub check_full {
398        $text_to_check = $main->LB->Text;
399
400        if (length($text_to_check) > ($main->LB->LimitText) * 3 / 4) {
401                $main->LB->Text(substr($text_to_check,(($main->LB->LimitText)-($main->LB->LimitText)%2)/2));
402        };
403}
404
405sub thread_tah {
406
407        my $item = $main->BCB->GetCurSel();
408    my $cmd = "\"".$dirperl."\\bin\\perl.exe\" ".$main->BCB->GetLBText($item);
409#       print $item;
410    if ($item == 2) {
411            $cmd =~ s/\.\.\.//;
412            $cmd .= $main->BCBP->Text();
413    }
414
415        chdir $dirtah;
416        select STDERR; $| = 1;      # make unbuffered
417        select STDOUT; $| = 1;      # make unbuffered
418        select PH; $| = 1;      # make unbuffered
419        my $pid = open3(gensym, \*PH, ">&STDOUT", $cmd);
420        #my $pid = open3(gensym, \*PH, \*PH, $cmd);
421        $main->LB->Text("Processing...\r\n");
422        while( <PH> ) {
423#           print "$_";
424                s/[\r\n]*$//;
425                $main->LB->Append("$_\r\n");
426                $main->LB->SendMessage (0x115, 7, 0);
427                $main->DoEvents() >= 0 or die "Window was closed during processing";
428                #sleep 1;
429        }
430        waitpid($pid, 0);
431        $main->LB->Append("Completed!");
432        $main->DoEvents();
433        #sleep 1;
434        $main->TAHB1->Enable(1);
435        $main->TAHB2->Enable(1);
436        $main->TAHB3->Enable(0);
437}
438
439sub start_tah {
440        &configure_proxy;
441        &configure_authentication;
442
443        open(F,"<$tahconfigurationfileex");
444        my @rows=<F>;
445        s/[\r\n]+//g foreach(@rows);
446        close(F);
447
448        open(F,">$tahconfigurationfile");
449        my $configstr = "";
450        foreach (@rows) {
451                $configstr = $_;
452                $configstr =~ s/\\subversion/\\svn\\bin/;
453                $configstr =~ s/c:\\program files/$dircur/;
454                $configstr =~ s/c:\\temp/$dircur\\tmp/;
455                $configstr =~ s/zip.exe/7za.exe/;
456                $configstr =~ s/7zipWin=0/7zipWin=1/;
457
458                $configstr =~ s/\# InkscapeLocale = german/InkscapeLocale = german/ if ($DecimalSeparator !~ /\./);
459
460                $configstr =~ s/Rasterizer=Inkscape/Rasterizer=Batik/ if ($batikRasterizer);
461
462                #print "$configstr\n";
463                print F "$configstr\n";
464        }
465        close(F);
466
467        $main->TAHB1->Enable(0);
468        $main->TAHB2->Enable(0);
469        $main->TAHB3->Enable(1);
470
471        unlink "$dirtah/stopfile.txt";
472
473        threads->new(\&thread_tah);
474
475}
476
477sub thread_stop {
478        #$main->TAHB1->Enable(1);
479        #$main->TAHB2->Enable(1);
480        #$main->TAHB3->Enable(0);
481}
482
483sub stop_tah {
484        $main->TAHB3->Enable(0);
485        open(FILE, ">$dirtah/stopfile.txt");
486        close(FILE);
487        #threads->new(\&thread_stop);
488}
489
490sub thread_svn {
491        my $cmd = "\"$dirsvn\\bin\\svn.exe\" up";
492        chdir $dirtah;
493        select STDERR; $| = 1;      # make unbuffered
494        select STDOUT; $| = 1;      # make unbuffered
495        my $pid = open3(gensym, \*PH, ">&STDOUT", $cmd);
496        #my $pid = open3(gensym, \*PH, \*PH, $cmd);
497        $main->LB->Text("Processing...\r\n");
498        while( <PH> ) {
499#           print "$_";
500                s/[\r\n]*$//;
501                $main->LB->Append("$_\r\n");
502                $main->LB->SendMessage (0x115, 7, 0);
503                $main->DoEvents() >= 0 or die "Window was closed during processing";
504                #sleep 1;
505        }
506        waitpid($pid, 0);
507        $main->LB->Append("Completed!");
508        $main->TAHB1->Enable(1);
509        $main->TAHB2->Enable(1);
510        $main->TAHB3->Enable(0);
511
512}
513sub start_svn {
514        $main->TAHB1->Enable(0);
515        $main->TAHB2->Enable(0);
516
517        threads->new(\&thread_svn);
518}
519
520sub configure_proxy {
521
522        my $tahreg;
523        my $type;
524        my $garbage;
525
526        $http_proxy_enabled = $main->PXCB->Checked;
527        $http_proxy_exceptions = $main->PXEX->Text;
528        $http_proxy_host = $main->PXHO->Text;
529        $http_proxy_port = $main->PXPO->Text;
530        $http_proxy_username = $main->PXUS->Text;
531        $http_proxy_password = $main->PXPA->Text;
532
533        $::HKEY_CURRENT_USER->Open("SOFTWARE\\openstreetmap.org\\tah", $tahreg) or die "Can't open proxy: $^E";
534        $tahreg->SetValueEx("http_proxy_enable", $garbage, REG_SZ, $http_proxy_enabled);
535        $tahreg->SetValueEx("http_proxy_exceptions", $garbage, REG_SZ, $http_proxy_exceptions);
536        $tahreg->SetValueEx("http_proxy_host", $garbage, REG_SZ, $http_proxy_host);
537        $tahreg->SetValueEx("http_proxy_port", $garbage, REG_SZ, $http_proxy_port);
538        $tahreg->SetValueEx("http_proxy_username", $garbage, REG_SZ, $http_proxy_username);
539        $tahreg->SetValueEx("http_proxy_password", $garbage, REG_SZ, $http_proxy_password);
540        $tahreg->Close();
541
542        open(F,"<$svnserverfile");
543        my @servers=<F>;
544        s/[\r\n]+//g foreach(@servers);
545        close(F);
546
547#       my $found_global = 0;
548#       foreach (@servers) {
549#               $found_global=0 if (/^\[/);
550#               $found_global=1 if (/\[global\]/);
551#               if ($found_global == 1) {
552#                       print $_."\n";
553#                       if (/^([\#\ ]*)http-proxy-host\s*=\s*(.*)/) {
554#                               $http_proxy_enabled = 0 if ($1 =~ /^\#/);
555#                               $http_proxy_host = $2;
556#                       }
557#                       $http_proxy_exceptions = $1     if (/^.*http-proxy-exceptions\s*=\s*(.*)$/);
558#                       $http_proxy_port = $1                   if (/^.*http-proxy-port\s*=\s*(.*)$/);
559#                       $http_proxy_username = $1               if (/^.*http-proxy-username\s*=\s*(.*)$/);
560#                       $http_proxy_password = $1               if (/^.*http-proxy-password\s*=\s*(.*)$/);
561#               }
562#       }
563
564        open(F,">$svnserverfile");
565        my $pound = "# ";
566        my $configstr = "";
567        my $found_global = 0;
568        $pound = "" if $http_proxy_enabled;
569        foreach (@servers) {
570                $configstr = $_;
571                $found_global=0 if (/^\[/);
572                $found_global=1 if (/\[global\]/);
573                if ($found_global == 1) {
574                        $configstr = $pound.$1.$http_proxy_exceptions   if (/^.*(http-proxy-exceptions\s*=\s*)(.*)$/);
575                        $configstr = $pound.$1.$http_proxy_host if (/^.*(http-proxy-host\s*=\s*)(.*)$/);
576                        $configstr = $pound.$1.$http_proxy_port if (/^.*(http-proxy-port\s*=\s*)(.*)$/);
577                        $configstr = $pound.$1.$http_proxy_username     if (/^.*(http-proxy-username\s*=\s*)(.*)$/);
578                        $configstr = $pound.$1.$http_proxy_password     if (/^.*(http-proxy-password\s*=\s*)(.*)$/);
579                }
580                #print "$configstr\r\n";
581                print F "$configstr\r\n";
582        }
583        close(F);
584
585        if ($http_proxy_enabled) {
586                $main->LB->Append("Exporting http_proxy...\r\n");
587                $ENV{http_proxy}="http://$http_proxy_username:$http_proxy_password\@$http_proxy_host:$http_proxy_port/";
588        } else {
589                delete $ENV{http_proxy};
590        }
591}
592
593sub configure_authentication {
594
595        my $tahreg;
596        my $type;
597        my $garbage;
598
599        $authentication_username = $main->AUUS->Text;
600        $authentication_password = $main->AUPA->Text;
601
602        $::HKEY_CURRENT_USER->Open("SOFTWARE\\openstreetmap.org\\tah", $tahreg) or die "Can't open proxy: $^E";
603        $tahreg->SetValueEx("authentication_username", $garbage, REG_SZ, $authentication_username);
604        $tahreg->SetValueEx("authentication_password", $garbage, REG_SZ, $authentication_password);
605        $tahreg->SetValueEx("console_visible", $garbage, REG_SZ, $console_visible);
606        $tahreg->Close();
607
608        open(F,"<$tahauthenticationfileex");
609        my @rows=<F>;
610        s/[\r\n]+//g foreach(@rows);
611        close(F);
612
613        open(F,">$tahauthenticationfile");
614        my $configstr = "";
615        foreach (@rows) {
616                $configstr = $_;
617                $configstr = $1.$authentication_username        if (/^.*(UploadUsername\s*=\s*)(.*)$/);
618                $configstr = $1.$authentication_password        if (/^.*(UploadPassword\s*=\s*)(.*)$/);
619                #print "$configstr\n";
620                print F "$configstr\n";
621        }
622        close(F);
623
624}
625
626__END__
Note: See TracBrowser for help on using the repository browser.