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

Generated by cgit