#!/usr/bin/php # # Configuration ############################################################# # # Collections: name|Maintainer |type|url # Supported types: httpup, rsync $version = "2.7"; $collections = array ( "core|crux@crux.nu|rsync|crux.nu::ports/crux-".$version."/core/", "opt|crux@crux.nu|rsync|crux.nu::ports/crux-".$version."/opt/", "xorg|tilman@code-monkey.de|rsync|crux.nu::ports/crux-".$version."/xorg/", "contrib|crux@crux.nu|rsync|crux.nu::ports/crux-".$version."/contrib/", "gnome|jaeger@morpheus.net|rsync|morpheus.net::gnome/tags/current/", #Matt Housh "kde|alan+crux@mizrahi.com.ve|rsync|crux.nu::ports/crux-2.5/kde/", "kde4|alan+crux@mizrahi.com.ve|rsync|crux.nu::ports/crux-".$version."/kde4/", "xfce|sepen@crux.nu|rsync|crux.nu::ports/crux-".$version."/xfce/", "aba|abaumann@yahoo.com|httpup|http://www.andreasbaumann.cc/crux/ports/", #Andreas Baumann "ako|alexko256@gmail.com|httpup|http://ports.ako.serveftp.org/", #Alex Kostrewa "alan|alan+crux@mizrahi.com.ve|httpup|http://www.mizrahi.com.ve/crux/pkgs/", "aubic|ales@hushmail.com|httpup|http://crux.org.pl/ports/aubic/", "augustao|augustao@augustao.org|httpup|http://augustao.org/ports/", #Augusto Pereira "bashy|ronny.kornexl@t-online.de|httpup|http://ronny-kornexl.homepage.t-online.de/crux/ports/", #Ronny Kornexl "bdfy|jean@mosk.ru|httpup|http://bdfy.googlecode.com/svn/trunk/", #Ivan Rodionov "captlloyd|captlloyd@gmail.com|httpup|http://lloyd.is.an.evil-genius.net/crux/ports/", #Justin W. Lloyd "chw|chw@tks6.net|httpup|http://iacs.epfl.ch/~winkelma/crux_ports/", # Christoph Winkelmann "cruxab|abaranov.anton@gmail.com|httpup|http://cruxab.comlu.com/crux/ports/", #Anton Baranov "cruxpl|sirmacik@crux.org.pl|httpup|http://sirmacik.net/static/download/cruxpl-ports/", # CRUX Poland (Marcin Karpezo) "df|wyatt@prairieturtle.ca|httpup|http://home.cc.umanitoba.ca/~fonsecah/crux/ports/", # Daryl Fonseca-Holt (nthwyatt) "dokpm0|Kevin@RawFedDogs.net|httpup|http://crux.RawFedDogs.net/", #Kevin Monceaux "e17|pitillo@ono.com|rsync|lokalix.dyndns.org::ports/e17/", "ecarux|kontakt@ecarux.de|httpup|http://ecarux.de/ports/", #Hannes Mayer "falcony|falcony@users.sourceforge.net|httpup|http://falcony.googlecode.com/svn/trunk/falcony/", #Maxim Falcony "fho|holler_f@informatik.haw-hamburg.de|httpup|http://users.informatik.haw-hamburg.de/~holler_f/crux_ports/", # Fabian Holler "flaveur|grim@asu.ntu-kpi.kiev.ua|httpup|http://flaveur.googlecode.com/svn/trunk/ports/", #Oleksiy Khilkevich "f1y|dwanasciegroszy@o2.pl|httpup|http://pierwszeliceum.bedzin.pl:8080/~f1y/httpup/", #Bartosz Sobel "haikob|haiko.brandes@stud.uni-goettingen.de|httpup|http://www.stud.uni-goettingen.de/~s462320/crux/", "haskell|moritz+crux@wzff.de|rsync|rsync.wzff.de::crux-haskell/", #Moritz Wilhelmy's haskell collection "hnc|bile@landofbile.com|httpup|http://www.landofbile.com/crux_ports/", #Antonio SJ Musumeci "jaeger|jaeger@morpheus.net|rsync|morpheus.net::cruxports/", #Matt Housh "jdolan|jasonthomasdolan@yahoo.com|httpup|http://jdolan.dyndns.org/jaydolan/ports/", "jue|jue@jue.li|httpup|http://jue.li/crux/ports/", "jw|jw@smts.ch|httpup|http://jw.smts.ch/files/crux/ports/", "karpunix|sirmacik@gmail.com|httpup|http://download.sirmacik.lin4all.org/crux/ports/", # Marcin Karpezo "kp4|vs@kp4.ru|httpup|http://crux.kp4.ru/", # Vitaly Sinilin "larryn|wawrzek@gmail.com|httpup|http://wawrzek.name/Crux/Ports/", "lennart|devel@lennart.sauerbeck.org|rsync|code-monkey.de::lennarts-crux-ports/", #Lennart Sauerbeck "linoports|benemue@googlemail.com|rsync|karif.server-speed.net::linoports/", #Benedikt Muller "lxde|rotwang@crux.org.pl|httpup|http://crux.org.pl/ports/lxde/", #Bartlomeij Palmowski "malster|clover@mail.nnov.ru|httpup|http://malster.nnov.ru/ports/", "mason|msonderegger@aon.at|httpup|http://www.tip9ug.jp/who/dude/webdir/lunix/CRUX/", #Markus Sonderegger "mhedenskog|mattias@hedenskog.se|httpup|http://magog.se/crux/", "mike_attic|mike@openbunker.org|httpup|http://www.openbunker.org/crux/ports/mike_attic/", #Mikhail Kolesnik "mike|mike@openbunker.org|httpup|http://openbunker.org/crux/ports/mike/", #Mikhail Kolesnik "mono|nymacro@gmail.com|httpup|http://members.optusnet.com.au/dfmarks/crux/mono/", "mruiz|manuel.tienza@gmail.com|httpup|http://www.tienza.es/crux/ports/", #Manuel Tienza "namenlos|richard.poettler@gmail.com|httpup|http://www.sti2.at/~richardp/ports/", #Richard Poettler "nexscrp|jkr@nex.scrapping.cc|httpup|http://nex.scrapping.cc/crux/ports/", #Jonas Kramer "ninuzzo|ant@venus.deis.unical.it|httpup|http://monitor.deis.unical.it/ant/crux/", "nipul|lucas@die.net.au|httpup|http://nipul.die.net.au/ports/", #Lucas Hazel "nym|nymacro@gmail.com|httpup|http://members.optushome.com.au/dfmarks/crux/ports/", "patroclo7|patroclo7@gmail.com|httpup|http://www.patroclo7.org/crux/ports/patroclo7/", #Giorgio Lando "pitillo|pitillo@ono.com|rsync|lokalix.dyndns.org::ports/pitillo/", "predatorfreak|predatorfreak@dcaf-security.org|httpup|http://www.dcaf-security.org/ports/", #Brett Andrew Goulder "prologic|prologic@shortcircuit.net.au|httpup|http://crux.shortcircuit.net.au/", #James Mills "qba|teoqba@gmail.com|httpup|http://escher.unige.ch/~qba/crux/ports/", #Kuba Kaminski "rehabdoll|fredrik@obra.se|rsync|obra.se::ports/", #Fredrik Rinnest "rho|rho@thinkingspot.ch|httpup|http://www.thinkingspot.ch/crux/ports/", "rk|crux@roeschu.ch|httpup|http://www.roeschu.ch/ports/crux/", "roliveira|crux@roliveira.eu|httpup|http://roliveira.eu/crux/ports/", #Ricardo Oliveira "romster|monster.romster@gmail.com|httpup|http://romster.dyndns.org:8080/linux/ports/crux/romster/", #Danny Rawlins "rotwang|rotwang@crux.org.pl|httpup|http://crux.org.pl/ports/rotwang/", #Bartlomiej Palmowski "rugek|rugek@btcl.de|httpup|http://rugek.dirtyhack.net/crux-ports/rugek/", "sepen|sepen@crux.nu|rsync|sepen.mine.nu::crux/ports/sepen/", #Jose V Beneyto "sgtmcd|sgtmcd@sgtmcd.com|httpup|http://crux.sgtmcd.com/ports/", "shin|shin@sterneck.asia|httpup|http://ports.sterneck.asia/shin/", #Shin Sterneck "singular|arbor@mail.ru|httpup|http://singular.ru/ports/", "slapdash|dave-slapdash@weller-fahy.com|httpup|http://slapdash.caterva.org/", #David J. Weller-Fahy "stdevel|webmaster@stankowic-development.net|httpup|http://crux.stankowic-development.net/", #Christian Stankowic "strw|strawi@googlemail.com|httpup|http://www.gnoedi.org/~straw/crux/ports/", "syl|syl@clyl.net|rsync|rsync.clyl.net::crux/", # Pierre Chaussee "tadzik|tadzikes@gmail.com|httpup|http://mhroczny.abuser.eu/~tadzik/ports/", #Tadeus Sosnierz (irc handle: tadzik) "thenschel|thenschel@henschelsoft.de|httpup|http://www.henschelsoft.de/cruxports/", "ticklestix|npardoe@ticklestix.co.uk|httpup|http://www.ticklestix.co.uk/crux/", #Nathan Pardoe "tillb|tillbiedermann@yahoo.de|httpup|http://still2come.net/crux/ports/tillb/", #Till Biedermann "tilman|tilman@code-monkey.de|rsync|crux.nu::ports/crux-master/tilman/", "tsubasa|nickp102@gmail.com|httpup|http://tsubasa.googlecode.com/svn/trunk/tsubasa/", #Sasha Chernyavsky "uhlu|crux@uhlu.com|httpup|http://ports.uhlu.com/repository/", "vico|vico@bicisport.de|httpup|http://vico.kleinplanet.de/files/repo/", "vni|younghead@ukr.net|httpup|http://vni.org.ua/crux/ports/vni/", #Vasylchyshyn Nikolay "wzff|moritz+crux@wzff.de|rsync|rsync.wzff.de::crux-wzff/", #Moritz Wilhelmy "xen|syl@clyl.net|rsync|rsync.clyl.net::crux-xen/", # Pierre Chaussee "yhafri|ycrux@club-internet.fr|httpup|http://perso.club-internet.fr/yhafri/crux/", ); $dsn = 'sqlite:////home/crux/public_html/local/portdb.db'; # End of configuration ###################################################### $db =& DB::connect($dsn); if (DB::isError($db)) die("Cannot connect to database"); $db->setFetchMode(DB_FETCHMODE_ASSOC); # Clean existing entries $sql = "delete from ports"; $res = $db->simpleQuery($sql); if (DB::isError($res)) die("Query error (delete)"); $sql = "delete from collections"; $res = $db->simpleQuery($sql); if (DB::isError($res)) die("Query error (delete)"); $sql = "vacuum"; $res = $db->simpleQuery($sql); if (DB::isError($res)) die("Query error (delete)"); foreach ($collections as $coll) { $ports = getCollection($coll); if ($ports !== FALSE) { storeCollection($coll, $ports); } else { $fields = explode('|', $coll); echo "Errors while retrieving collection ". $fields[0]."\n"; } } function getCollection($coll) { $fields = explode('|', $coll); switch ($fields[2]) { case "httpup": return getHttpupCollection($coll); break; case "rsync": return getRsyncCollection($coll); break; default: return FALSE; } } function getRsyncCollection($coll) { $ports = array(); $out = array(); $fields = explode('|', $coll); $res = -1; exec("/usr/bin/rsync --list-only $fields[3]", $out, $res); if ($res !== 0) return FALSE; foreach ($out as $line) { if ($line[0] == "d") { $sp = explode(' ', $line); $portname = $sp[count($sp)-1]; if ($portname != ".") $ports[] = $portname; } } if (count($ports)>0) return $ports; return FALSE; } function getHttpupCollection($coll){ $ports = array(); $fields = explode('|', $coll); $lines = file($fields[3]."REPO"); if ($lines === FALSE) return FALSE; foreach ($lines as $line) { if (substr($line, 0, 2) == "d:") { $ports[] = trim(substr($line,2)); } } if (count($ports)>0) return $ports; return FALSE; } function storeCollection($coll, $ports) { global $db; $fields = explode('|', $coll); foreach ($ports as $port) { $vals = array($port, $fields[0]); $sth = $db->prepare("insert into ports values (NULL, ?, ?)"); $res = $db->execute($sth, $vals); if (DB::isError($res)) die("Query error (port)"); } $vals = explode('|', $coll); $sth = $db->prepare("insert into collections values (NULL, ?, ?, ?, ?)"); $res = $db->execute($sth, $vals); if (DB::isError($res)) die("Query error (collection)"); } ?>