]>
Commit | Line | Data |
---|---|---|
0a638396 CS |
1 | #!/usr/bin/perl |
2 | # | |
3 | # This code is distributed under the terms of the GPL | |
4 | # | |
5 | # (c) 2007-2008 marco.s - http://update-accelerator.advproxy.net | |
6 | # | |
7 | # $Id: convert,v 1.0 2007/09/12 00:00:00 marco.s Exp $ | |
8 | # | |
9 | ||
10 | use strict; | |
11 | ||
12 | my $updcache='/var/updatecache/'; | |
13 | my @metadata=(); | |
14 | my $filename=''; | |
15 | my $uuid=''; | |
16 | my $vendorid=''; | |
17 | my @cachedirs=qw(download); | |
18 | my $i=0; | |
19 | my $n=0; | |
20 | my $verbose=1; | |
21 | my $logging=1; | |
22 | my $logfile="/var/log/updatexlrator/convert.log"; | |
23 | ||
24 | if (@ARGV[0] eq '-nv') { $verbose = 0; } | |
25 | if (!-d "/var/log/updatexlrator") { $logging = 0; } | |
26 | ||
27 | &writelog("Converting cached objects from Update Accelerator 1.0 to 2.x"); | |
28 | &writelog("------------------------------------------------------------"); | |
29 | ||
30 | (-d "$updcache/metadata") || die "No version 1.0 cache found.\n"; | |
31 | ||
32 | if (`ps --no-heading -C wget`) | |
33 | { | |
34 | &writelog("WARNING: Download in progress"); | |
35 | print "\n"; | |
36 | system("killall -9 -i wget"); | |
37 | print "\n"; | |
38 | } | |
39 | ||
40 | foreach (<$updcache/metadata/*>) | |
41 | { | |
42 | $filename = substr($_,rindex($_,'/')+1,length($_)); | |
43 | if ((-f "$updcache/$filename") && (-f "$updcache/metadata/$filename")) | |
44 | { | |
45 | &writelog("$filename"); | |
46 | open (FILE,$_); | |
47 | @metadata = <FILE>; | |
48 | close FILE; | |
49 | chomp(@metadata); | |
50 | if (@metadata >= 5) | |
51 | { | |
52 | $uuid = `echo $metadata[0] | md5sum`; | |
53 | $uuid =~ s/[^0-9a-f]//g; | |
54 | $uuid =~ s/([a-f\d]{8})([a-f\d]{4})([a-f\d]{4})([a-f\d]{4})([a-f\d]{12})/$1-$2-$3-$4-$5/; | |
55 | $vendorid = $metadata[1]; | |
56 | $vendorid =~ tr/A-Z/a-z/; | |
57 | unless (-d "$updcache/$vendorid") | |
58 | { | |
59 | system("mkdir $updcache/$vendorid"); | |
60 | push(@cachedirs,$vendorid); | |
61 | } | |
62 | system("chmod 775 $updcache/$vendorid"); | |
63 | unless (-d "$updcache/$vendorid/$uuid") { system("mkdir $updcache/$vendorid/$uuid"); } | |
64 | system("chmod 775 $updcache/$vendorid/$uuid"); | |
65 | open (FILE,">$updcache/$vendorid/$uuid/source.url"); | |
66 | print FILE "$metadata[0]\n"; | |
67 | close FILE; | |
68 | open (FILE,">$updcache/$vendorid/$uuid/status"); | |
69 | print FILE "$metadata[2]\n"; | |
70 | close FILE; | |
71 | open (FILE,">$updcache/$vendorid/$uuid/checkup.log"); | |
72 | print FILE "$metadata[3]\n"; | |
73 | close FILE; | |
74 | open (FILE,">$updcache/$vendorid/$uuid/access.log"); | |
75 | for($i=4;$i<@metadata;$i++) | |
76 | { | |
77 | print FILE "$metadata[$i]\n"; | |
78 | } | |
79 | close FILE; | |
80 | system("mv $updcache/$filename $updcache/$vendorid/$uuid"); | |
81 | system("chmod 664 $updcache/$vendorid/$uuid/*"); | |
82 | $n++; | |
83 | } else { &writelog("WARNING: Insufficient metadata for $filename"); } | |
84 | } | |
85 | } | |
86 | ||
87 | if (($n) && (-d "$updcache/metadata")) { system("rm -r $updcache/metadata"); } | |
88 | ||
89 | foreach (@cachedirs) { system("chown -R nobody:squid $updcache/$_"); } | |
90 | ||
91 | if ($n) { &writelog("------------------------------------------------------------"); } | |
92 | ||
93 | $verbose=1; | |
94 | &writelog("$n objects converted."); | |
95 | ||
96 | # ------------------------------------------------------------------- | |
97 | ||
98 | sub writelog | |
99 | { | |
100 | if ($verbose) { print "$_[0]\n"; } | |
101 | if ($logging) | |
102 | { | |
103 | open (LOGFILE,">>$logfile"); | |
104 | my @now = localtime(time); | |
105 | printf LOGFILE "%04d-%02d-%02d %02d:%02d:%02d %s\n",$now[5]+1900,$now[4]+1,$now[3],$now[2],$now[1],$now[0],$_[0]; | |
106 | close LOGFILE; | |
107 | } | |
108 | } | |
109 | ||
110 | # ------------------------------------------------------------------- |