summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhishek Amit <andrd@gentoo.org>2003-07-20 12:17:56 +0000
committerAbhishek Amit <andrd@gentoo.org>2003-07-20 12:17:56 +0000
commita31a0b56ff2b7c96d7c9261500afa2ee5ab73799 (patch)
tree311c9e656844570d2e3ed13cd29fbca0477e28cc /users/andrd
parentAdd m.mascherpa as italian translator (diff)
downloadgentoo-a31a0b56ff2b7c96d7c9261500afa2ee5ab73799.tar.gz
gentoo-a31a0b56ff2b7c96d7c9261500afa2ee5ab73799.tar.bz2
gentoo-a31a0b56ff2b7c96d7c9261500afa2ee5ab73799.zip
Should generate devlist.xml file by pulling data from ldap server
Diffstat (limited to 'users/andrd')
-rw-r--r--users/andrd/genlist.pl94
1 files changed, 94 insertions, 0 deletions
diff --git a/users/andrd/genlist.pl b/users/andrd/genlist.pl
new file mode 100644
index 0000000000..563104a3cd
--- /dev/null
+++ b/users/andrd/genlist.pl
@@ -0,0 +1,94 @@
+#!/usr/bin/perl
+
+use Net::LDAP;
+use IO;
+my $output = new IO::File(">devlist.xml");
+
+use XML::Writer;
+my $writer = new XML::Writer( OUTPUT => $output );
+
+sub create_section{
+ my ($section_name)=@_;
+ $writer->startTag('section');
+ $writer->dataElement('title',$section_name);
+ $writer->startTag('body');
+ $writer->startTag('table');
+#make header row
+ $writer->startTag('tr');
+ $writer->dataElement('th','Username');
+ $writer->dataElement('th','Name');
+ $writer->dataElement('th','Location');
+ $writer->dataElement('th','Areas of responsibility');
+ $writer->endTag();
+}
+sub create_row{
+ my ($entry)=@_;
+ $writer->startTag('tr');
+ $writer->dataElement('ti',$entry->get('uid'));
+ $writer->dataElement('ti',$entry->get('cn'));
+ $writer->dataElement('ti',$entry->get($loc_attr));
+ $writer->dataElement('ti',$entry->get($resp_attr));
+ $writer->endTag();
+}
+sub end_section{
+ $writer->endTag('table');
+ $writer->endTag('body');
+ $writer->endTag('section');
+}
+my $admin = q[]; #Labbeled as admin, but just needs read privs
+my $ad_pw = q[]; #Password for said account
+my $lsvr = q[eagle.gentoo.org]; #LDAP Server
+my $org = q[dc=gentoo,dc=org]; #Base DN
+my $loc_attr = q[geocos]; #Holds location informaion used in devlist
+my $resp_attr = q[responsibilites]; #Responsibilites of developer listed on devlist.xml, obviously not in any standard schema, but we need a custom one to hold this and subdivision informaion
+my $section_attr = q[section]; #Soecfies which section of the page the developer falls under
+
+my $ldap = Net::LDAP->new($lsvr) or die "error connecting to $lsvr: $@";
+
+#enable ssl/tls before we transmit passwords
+start_tls(verify => 'none'); #should be changed to require and all certs should be accessible
+
+$ldap->bind($admin, password => $ad_pw);
+
+my %sections;
+my $results = $ldap->search ( # Retrive all entries from the database
+ filter => "(& ($org))"
+ );
+
+if($results->code) {
+ die "received LDAP error: @{[$results->error]};
+}
+
+#let's start making the devlist
+#basic header information
+$writer->xmlDecl( 'UTF-8' );
+$writer->pi('xml-stylesheet href="/xsl/guide.xsl" type="text/xsl"');
+$writer->startTag('mainpage', 'id'=>'devlist');
+$writer->dataElement('title','Gentoo Linux Developers');
+
+#author(possily mention autogeneration?)
+$writer->startTag('author','title'=>'Editor');
+$writer->startTag('mail','link'=>'andrd@gentoo.org');
+$writer->charachters('Abhishek Amit');
+$writer->endTag();
+$writer->endTag();
+
+#date
+$writer->dataElement('version','Current');
+my $gm = gmtime( );
+$writer->dataElement('date',$gm->mday . ' ' . $gm->mon . ' ' . $gm->year);
+#start of real document
+$writer->startTag('chapter');
+
+foreach my $entry ($results->all_entries) {
+ push @{ $sections{$entry->get($section_element)} } $entry;
+ for $section ( keys %sections){
+ create_section($section);
+ for $i ( 0 .. $#{ $sections{$section} } ) {
+ create_row($sections{$family}[$i]);
+ }
+ end_section();
+ }
+}
+$writer->end();
+$ldap->unbind; # Unbind and close connection