1 #!/usr/bin/php
2 <?php
3 require('DB.php');
4 # Collect port info from 3rd-party repositories into a sqlite database
5 # Written by Simone Rota <sip@crux.nu>
6 #
7 # Configuration #############################################################
8 #
9 # Collections: name|Maintainer <email>|type|url
10 # Supported types: httpup, rsync
11
12 $version = "3.2";
13
14 $collections = array (
15 "core|core-ports@crux.nu|rsync|crux.nu::ports/crux-".$version."/core/",
16 "opt|crux@crux.nu|rsync|crux.nu::ports/crux-".$version."/opt/",
17 "xorg|xorg-ports@crux.nu|rsync|crux.nu::ports/crux-".$version."/xorg/",
18 "compat-32|compat-32-ports@crux.nu|rsync|crux.nu::ports/crux-".$version."/compat-32/",
19 "contrib|crux@crux.nu|rsync|crux.nu::ports/crux-".$version."/contrib/",
20 #"kde|alan+crux@mizrahi.com.ve|rsync|crux.nu::ports/crux-2.5/kde/",
21 #"kde4|alan+crux@mizrahi.com.ve|rsync|crux.nu::ports/crux-3.0/kde4/",
22 "kde4|alan+crux@mizrahi.com.ve|rsync|crux.nu::ports/kde/kde4/",
23 "xfce|sepen@crux.nu|rsync|crux.nu::ports/crux-".$version."/xfce/",
24 "enlightenment|pitillo@ono.com|rsync|crux.nu::ports/crux-".$version."/enlightenment/",
25 "6c37|kori@openmailbox.org|httpup|https://raw.githubusercontent.com/6c37/crux-ports/3.2/", #Luiz De Milon
26 "6c37-git|kori@openmailbox.org|httpup|https://raw.githubusercontent.com/6c37/crux-ports-git/3.2/", # Luiz De Milon
27 "aba|abaumann@yahoo.com|httpup|http://www.andreasbaumann.cc/crux/ports/", #Andreas Baumann
28 "ako|alexko256@gmail.com|httpup|http://ports.ako.serveftp.org/", #Alex Kostrewa
29 "alan|alan+crux@mizrahi.com.ve|httpup|http://www.mizrahi.com.ve/crux/pkgs/",
30 "alexmat|alexmat@gmail.com|httpup|http://crux.nnto.net/", #Alexander Matviychuk
31 "alexta|oleksii.tkachuk@gmail.com|httpup|http://alexta.googlecode.com/git/", #Oleksii Tkachuk
32 "andrew|hello@andrewrose.co.uk|httpup|http://crux.andrewrose.co.uk/pkgs/", #Andrew Rose
33 "asie|kontakt@asie.pl|httpup|http://crux.asie.pl/", #Adrian Siekierka
34 "aubic|ales@hushmail.com|httpup|http://crux.org.pl/ports/aubic/",
35 "augustao|augustao@augustao.org|httpup|http://augustao.org/ports/", #Augusto Pereira
36 #"bashy|ronny.kornexl@t-online.de|httpup|http://ronny-kornexl.homepage.t-online.de/crux/ports/", #Ronny Kornexl
37 "baguette|cmburget@gmail.com|httpup|https://raw.githubusercontent.com/baguette/crux-ports/master/", #Cory Burgett
38 "bitpuffin|contact@bitpuffin.com|httpup|http://cruxports.bitpuffin.com/bitpuffin/", #Isak Andersson
39 "bdfy|jean@mosk.ru|httpup|http://bdfy.googlecode.com/svn/trunk/", #Ivan Rodionov
40 "captlloyd|captlloyd@gmail.com|httpup|http://lloyd.is.an.evil-genius.net/crux/ports/", #Justin W. Lloyd
41 "chw|chw@tks6.net|httpup|http://iacs.epfl.ch/~winkelma/crux_ports/", # Christoph Winkelmann
42 "cpmtw|wodachm@gmail.com|httpup|https://raw.githubusercontent.com/mwsoft69/cpmtw/master/", # Mitchell Wodach
43 "crshd|crshd@mail.com|httpup|http://crshd.users.anapnea.net/linux/crux/ports/", #Christian Brassat
44 "cruxab|abaranov.anton@gmail.com|httpup|http://cruxab.comlu.com/crux/ports/", #Anton Baranov
45 "cruxpl|sirmacik@crux.org.pl|httpup|http://sirmacik.net/static/download/cruxpl-ports/", # CRUX Poland (Marcin Karpezo)
46 "darthlukan|darthlukan@gmail.com|httpup|http://ports.brianctomlinson.com/", #Brian Tomlinson
47 "dbrooke|crux@dbrooke.me.uk|httpup|http://crux-ports.dbrooke.me.uk/", #David Brooke
48 "deepthought|erich@eckner.net|httpup|http://crux.eckner.net/", # Erich Eckner
49 "df|wyatt@prairieturtle.ca|httpup|http://home.cc.umanitoba.ca/~fonsecah/crux/ports/", # Daryl Fonseca-Holt (nthwyatt)
50 "dokpm0|Kevin@RawFedDogs.net|httpup|http://crux.RawFedDogs.net/", #Kevin Monceaux
51 "doom|dxm@openmailbox.org|httpup|https://raw.github.com/Doomicide/crux-ports/master/", #Maximilian Dietrich (doomicide)
52 "ecarux|kontakt@ecarux.de|httpup|http://ecarux.de/ports/", #Hannes Mayer
53 "emulators|nogagplz@gmail.com|httpup|http://crux.ster.zone/ports/emulators/", #Neville Phillips (responsible: Danny Rawlins)
54 "emulators-i686|crux@romster.me|httpup|http://crux.ster.zone/ports/emulators-i686/", #Danny Rawlins
55 "falcony|falcony@users.sourceforge.net|httpup|http://falcony.googlecode.com/svn/trunk/falcony/", #Maxim Falcony
56 "fho|holler_f@informatik.haw-hamburg.de|httpup|http://users.informatik.haw-hamburg.de/~holler_f/crux_ports/", # Fabian Holler
57 "fillo|fillo@fillo.me|httpup|http://fillo.pw/cruxports/", # Dimitry (fillo)
58 "flaveur|grim@asu.ntu-kpi.kiev.ua|httpup|http://flaveur.googlecode.com/svn/trunk/ports/", #Oleksiy Khilkevich
59 "f1y|dwanasciegroszy@o2.pl|httpup|http://pierwszeliceum.bedzin.pl:8080/~f1y/httpup/", #Bartosz Sobel
60 "haikob|haiko.brandes@stud.uni-goettingen.de|httpup|http://www.stud.uni-goettingen.de/~s462320/crux/",
61 "haskell|moritz+crux@wzff.de|rsync|rsync.wzff.de::crux-haskell/", #Moritz Wilhelmy's haskell collection
62 "hnc|bile@landofbile.com|httpup|http://www.landofbile.com/crux_ports/", #Antonio SJ Musumeci
63 "ix|arcetera@openmailbox.org|httpup|https://arcetera.moe/dl/3.2/", #Abraham Levine
64 "jaeger|jaeger@morpheus.net|rsync|morpheus.net::cruxports/", #Matt Housh
65 "jdolan|jasonthomasdolan@yahoo.com|httpup|http://jdolan.dyndns.org/jaydolan/ports/",
66 "joacim|joacim@joac.im|httpup|http://raw.github.com/joacimot/CRUX-Ports/master/", #Joacim Olsen Tangen
67 "joe9|joe9mail@gmail.com|httpup|http://crux.ster.zone/ports/joe9/", #Joe M
68 "jturner|james@calminferno.net|httpup|http://calminferno.net/crux/", #James Turner
69 "jue|jue@jue.li|httpup|http://jue.li/crux/ports/",
70 "juef|juef@openmailbox.org|httpup|http://chiselapp.com/user/juef/repository/crux-ports/doc/tip/", #Svyatoslav Mishyn
71 "j_v|jvogel4@stny.rr.com|httpup|http://stygian.me/crux/ports/", #John Vogel
72 "jw|jw@smts.ch|httpup|http://jw.smts.ch/files/crux/ports/",
73 "karpunix|sirmacik@gmail.com|httpup|http://download.sirmacik.lin4all.org/crux/ports/", # Marcin Karpezo
74 #"kori|kori@openmailbox.org|httpup|https://raw.github.com/kori/crux-ports/master/", #Kori Ayakashi
75 "kp4|vs@kp4.ru|httpup|http://crux.kp4.ru/", # Vitaly Sinilin
76 "kris|email@zero-io.net|httpup|https://raw.githubusercontent.com/krleh/ports/master/", # Kris Lehmann
77 "larryn|wawrzek@gmail.com|httpup|http://wawrzek.name/Crux/Ports/",
78 "lennart|devel@lennart.sauerbeck.org|rsync|code-monkey.de::lennarts-crux-ports/", #Lennart Sauerbeck
79 "leo-unglaub|leo@leo-unglaub.net|rsync|leo-unglaub.net::crux-ports-leo-unglaub/", # Leo Unglaub
80 "linoports|benemue@googlemail.com|rsync|karif.server-speed.net::linoports/", #Benedikt Muller
81 #"l00nix|l00nixcdoc@gmail.com|httpup|http://l00nix.com/repo/crux/", #Cody
82 "lxde|rotwang@crux.org.pl|httpup|http://crux.org.pl/ports/lxde/", #Bartlomeij Palmowski
83 "malster|clover@mail.nnov.ru|httpup|http://malster.nnov.ru/ports/",
84 "mason|msonderegger@aon.at|httpup|http://www.tip9ug.jp/who/dude/webdir/lunix/CRUX/", #Markus Sonderegger
85 "mechaniputer|beadleha@clarkson.edu|httpup|http://people.clarkson.edu/~beadleha/crux/ports/", #Herbert A. Beadle
86 "mhedenskog|mattias@hedenskog.se|httpup|http://magog.se/crux/",
87 "mike_attic|mike@openbunker.org|httpup|http://www.openbunker.org/crux/ports/mike_attic/", #Mikhail Kolesnik
88 "mike|mike@openbunker.org|httpup|http://openbunker.org/crux/ports/mike/", #Mikhail Kolesnik
89 "mikejsavage|mike@mikejsavage.co.uk|httpup|http://mikejsavage.co.uk/crux/", #Mike Savage
90 #"mono|nymacro@gmail.com|httpup|http://members.optusnet.com.au/dfmarks/crux/mono/",
91 #"mruiz|manuel.tienza@gmail.com|httpup|http://www.tienza.es/crux/ports/", #Manuel Tienza
92 #"namenlos|richard.poettler@gmail.com|httpup|http://www.sti2.at/~richardp/ports/", #Richard Poettler
93 "nexscrp|jkr@nex.scrapping.cc|httpup|http://nex.scrapping.cc/crux/ports/", #Jonas Kramer
94 "nwe|niklas@netsplit.nu|rsync|www.netsplit.nu::ports/", #Niklas Wennerstrand
95 "nilp|mytchel@openmailbox.org|httpup|http://raw.github.com/mytch444/crux-ports/master/", #Mytchel Hammond
96 "ninuzzo|ant@venus.deis.unical.it|httpup|http://monitor.deis.unical.it/ant/crux/",
97 "nipul|lucas@die.net.au|httpup|http://nipul.die.net.au/ports/", #Lucas Hazel
98 "nogagplz|nogagplz@gmail.com|httpup|http://crux.ster.zone/ports/nogagplz/", #Neville Phillips (responsible: Danny Rawlinks)
99 "nym|nymacro@gmail.com|httpup|http://members.optushome.com.au/dfmarks/crux/ports/",
100 #"omfgroflbboq|omfgroflbboq@spam4.me|httpup|https://github.com/omfgroflbbq/crux-ports/",
101 "patroclo7|patroclo7@gmail.com|httpup|http://www.patroclo7.org/crux/ports/patroclo7/", #Giorgio Lando
102 "pitillo|pitillo@ono.com|rsync|vjml.es::ports/pitillo/", #Victor Martinez
103 "pitman|mad.skipjack@mail.ru|httpup|http://raw.github.com/KonstantinLepa/crux-ports/master/", #Konstantin Lepa
104 "predatorfreak|predatorfreak@dcaf-security.org|httpup|http://www.dcaf-security.org/ports/", #Brett Andrew Goulder
105 "prologic|prologic@shortcircuit.net.au|httpup|http://crux.shortcircuit.net.au/", #James Mills
106 "qba|teoqba@gmail.com|httpup|http://escher.unige.ch/~qba/crux/ports/", #Kuba Kaminski
107 #"rehabdoll|fredrik@obra.se|rsync|obra.se::ports/", #Fredrik Rinnest
108 "rexich|bjorn@krstarica.com|httpup|http://crux.ster.zone/ports/rexich/", #Filip Rex Dimovski
109 "rho|rho@thinkingspot.ch|httpup|http://www.thinkingspot.ch/crux/ports/",
110 "rines|richard@nespithal.com|httpup|http://crux.richardnespithal.com/", #Richard Nespithal
111 "rk|crux@roeschu.ch|httpup|http://www.roeschu.ch/ports/crux/",
112 #"rmull|rmmullen@gmail.com|httpup|http://lug.bu.edu/mirror/crux/ports/", #Ryan Mullen
113 "roliveira|crux@roliveira.eu|httpup|http://roliveira.eu/crux/ports/", #Ricardo Oliveira
114 "romster|crux@romster.me|httpup|http://crux.ster.zone/ports/romster/", #Danny Rawlins
115 "rotwang|rotwang@crux.org.pl|httpup|http://crux.org.pl/ports/rotwang/", #Bartlomiej Palmowski
116 "rugek|rugek@btcl.de|httpup|http://rugek.dirtyhack.net/crux-ports/rugek/",
117 "sepen|sepen@crux.nu|rsync|init.it.cx::ports/current/sepen/", #Jose V Beneyto
118 "sgtmcd|sgtmcd@sgtmcd.com|httpup|http://crux.sgtmcd.com/ports/",
119 "shin|shin@sterneck.asia|httpup|http://ports.sterneck.asia/shin/", #Shin Sterneck
120 "singular|arbor@mail.ru|httpup|http://singular.ru/ports/",
121 "slapdash|dave-slapdash@weller-fahy.com|httpup|http://slapdash.caterva.org/", #David J. Weller-Fahy
122 "stdevel|webmaster@stankowic-development.net|httpup|http://crux.stankowic-development.net/", #Christian Stankowic
123 "strw|strawi@googlemail.com|httpup|http://www.gnoedi.org/~straw/crux/ports/",
124 "swhitton|spw@sdf.org|httpup|http://spw.sdf.org/crux/", #Sean Whitton
125 "syl|syl@clyl.net|rsync|rsync.clyl.net::crux/", # Pierre Chaussee
126 "t0b1nux|simonthoby@live.fr|httpup|https://git.framasoft.org/t0b1nux/crux-ports/raw/master/", # Simon Thoby
127 "tadzik|tadzikes@gmail.com|httpup|http://mhroczny.abuser.eu/~tadzik/ports/", #Tadeus Sosnierz (irc handle: tadzik)
128 "teatime|teatime@kyber.io|httpup|http://kyber.io/crux/ports/teatime/", #teatime@irc.kyber.io
129 "thenschel|thenschel@henschelsoft.de|httpup|http://www.henschelsoft.de/cruxports/",
130 "ticklestix|npardoe@ticklestix.co.uk|httpup|http://www.ticklestix.co.uk/crux/", #Nathan Pardoe
131 "tillb|tillbiedermann@yahoo.de|httpup|http://still2come.net/crux/ports/tillb/", #Till Biedermann
132 "tilman|tilman@code-monkey.de|rsync|code-monkey.de::tilmans-crux-ports/",
133 "timcow|timcowchip@gmail.com|httpup|https://bitbucket.org/timcowchip/crux-ports/raw/master/", #Chris Farrell
134 "tsubasa|nickp102@gmail.com|httpup|http://tsubasa.googlecode.com/svn/trunk/tsubasa/", #Sasha Chernyavsky
135 "uhlu|crux@uhlu.com|httpup|http://ports.uhlu.com/repository/",
136 "u7knv9h|u7knv9h@openmailbox.org|httpup|https://raw.githubusercontent.com/u7knv9h/CRUX-ports/master/", #F.Kiroles
137 "vico|vico@bicisport.de|httpup|http://vico.kleinplanet.de/files/repo/",
138 #"vni|younghead@ukr.net|httpup|http://vni.org.ua/crux/ports/vni/", #Vasylchyshyn Nikolay
139 "wawrzek|main@wawrzek.name|httpup|http://wawrzek.name/crux/repos/wawrzek/", # Wawrzek Niewodniczanski
140 "wildefyr|wildefur@gmail.com|httpup|http://wildefyr.net/ports/", # Wildefyr
141 "wzff|moritz+crux@wzff.de|rsync|rsync.wzff.de::crux-wzff/", #Moritz Wilhelmy
142 "xen|syl@clyl.net|rsync|rsync.clyl.net::crux-xen/", # Pierre Chaussee
143 #"yhafri|ycrux@club-internet.fr|httpup|http://perso.club-internet.fr/yhafri/crux/",
144 "z3bra|willy@mailoo.org|httpup|http://dl.z3bra.org/crux/v3.1/" #Willy Goiffon
145 );
146
147 $dsn = 'sqlite:////home/crux/public_html/local/portdb.db';
148
149 # End of configuration ######################################################
150
151 $db =& DB::connect($dsn);
152 if (DB::isError($db)) die("Cannot connect to database");
153 $db->setFetchMode(DB_FETCHMODE_ASSOC);
154
155 # Clean existing entries
156 $sql = "delete from ports";
157 $res = $db->simpleQuery($sql);
158 if (DB::isError($res)) die("Query error (delete)");
159 $sql = "delete from collections";
160 $res = $db->simpleQuery($sql);
161 if (DB::isError($res)) die("Query error (delete)");
162 $sql = "vacuum";
163 $res = $db->simpleQuery($sql);
164 if (DB::isError($res)) die("Query error (delete)");
165
166
167
168 foreach ($collections as $coll) {
169 $ports = getCollection($coll);
170 if ($ports !== FALSE) {
171 storeCollection($coll, $ports);
172 } else {
173 $fields = explode('|', $coll);
174 echo "Errors while retrieving collection ". $fields[0]."\n";
175 }
176 }
177
178 function getCollection($coll) {
179 $fields = explode('|', $coll);
180 switch ($fields[2]) {
181 case "httpup":
182 return getHttpupCollection($coll);
183 break;
184 case "rsync":
185 return getRsyncCollection($coll);
186 break;
187 default:
188 return FALSE;
189 }
190 }
191
192 function getRsyncCollection($coll) {
193 $ports = array();
194 $out = array();
195 $fields = explode('|', $coll);
196 $res = -1;
197 exec("/usr/bin/rsync --list-only $fields[3]", $out, $res);
198 if ($res !== 0)
199 return FALSE;
200 foreach ($out as $line) {
201 if ($line[0] == "d") {
202 $sp = explode(' ', $line);
203 $portname = $sp[count($sp)-1];
204 if ($portname != ".")
205 $ports[] = $portname;
206 }
207 }
208 if (count($ports)>0)
209 return $ports;
210 return FALSE;
211 }
212
213 function getHttpupCollection($coll){
214 $ports = array();
215 $fields = explode('|', $coll);
216 $lines = file($fields[3]."REPO");
217 if ($lines === FALSE)
218 return FALSE;
219 foreach ($lines as $line) {
220 if (substr($line, 0, 2) == "d:") {
221 $ports[] = trim(substr($line,2));
222 }
223 }
224 if (count($ports)>0)
225 return $ports;
226 return FALSE;
227 }
228
229 function storeCollection($coll, $ports) {
230 global $db;
231 $fields = explode('|', $coll);
232 foreach ($ports as $port) {
233 $vals = array($port, $fields[0]);
234 $sth = $db->prepare("insert into ports values (NULL, ?, ?)");
235 $res = $db->execute($sth, $vals);
236 if (DB::isError($res)) die("Query error (port)");
237 }
238 $vals = explode('|', $coll);
239 $sth = $db->prepare("insert into collections values (NULL, ?, ?, ?, ?)");
240 $res = $db->execute($sth, $vals);
241 if (DB::isError($res)) die("Query error (collection)");
242 }
243
244
245
246 ?>
|