Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-doc
Path: blob/main/website/content/en/internal/homepage.pl
18093 views
1
#!/usr/bin/perl
2
3
# $FreeBSD$
4
5
print "* link:https://people.FreeBSD.org/homepage/[FreeBSD Developer home page list]\n";
6
exit 0;
7
8
$homepagedir = 'public_html';
9
@index = ('index.html', 'index.cgi');
10
$noindex = '.noindex';
11
12
open(P, 'getent passwd |') || die "getent passwd: $!\n";
13
undef @pages;
14
while(<P>) {
15
($login,$password,$uid,$gid,$gcos,$home,$shell) = split(/:/);
16
17
# cleanup gecos
18
$gcos =~ s/,.*//;
19
20
# disable daemons
21
next if $uid < 500;
22
next if $login eq 'nobody';
23
next if $shell =~ ~ m%/(pppd|sliplogin|nologin|nonexistent)$%;
24
25
# uucp accounts
26
next if $login =~ /^U/;
27
28
$p = $home . '/' . $homepagedir;
29
30
# user don't want be on the index
31
next if -f "$p/$noindex";
32
33
foreach (@index) {
34
if (-f "$p/$_" && -r "$p/$_") {
35
if ($_ !~ /\.cgi$/ || -x "$p/$_") {
36
push(@pages, $gcos . ':' . $login);
37
last;
38
}
39
}
40
}
41
}
42
43
close P;
44
if ($#pages < 0) {
45
#die "No users found!\n";
46
push(@pages, "Disabled:disabled");
47
}
48
49
foreach (sort @pages) {
50
($gcos, $login) = split(/:/);
51
($firstgecos, @gecos) = split(/,/, $gcos);
52
print qq{* link:https://people.FreeBSD.org/~$login/[}, $firstgecos, "] ", join(', ', @gecos), "\n";
53
}
54
55