├── README.md
├── analytics
├── analytics.php.net.conf
├── installed-packages.txt
└── users
├── archive-matomo-data
├── backup-bugsweb
├── backup-main
├── backup-pear
├── backup-pecl
├── backup-thisbox
├── backup-wiki-php-net
├── bk2
├── README.md
├── apache2
│ └── monitoring.php.net.conf
├── install-config.sh
└── installed-packages.txt
├── boxen
├── analytics
├── bk2
├── bugs
├── downloads.php.net
├── euk2.php.net
├── lists.php.net
├── main.php.net
└── svn2.php.net
├── bugs.php.net
└── additional.mysql.cnf
├── build-docs-lang-rsync
├── build-docs-rsync
├── build-manual
├── build-pear-manual
├── check-fails
├── check-ssh-connectivity
├── create-system-users.sh
├── create_aliases.sh
├── cron-box
├── cron-box-crontab
├── downloads.php.net
└── apache2
│ ├── downloads.php.net.conf
│ └── shared.php.net.conf
├── email-assigned-bugsweb
├── export_phpmasterdb_aliases.sh
├── gen-ide-json.php
├── gen-phpweb-sqlite-db.php
├── install-colobus
├── install-docweb-jpgraph
├── install-iptables-config
├── lists
├── README.md
├── apache2
│ └── news.php.net.conf
├── colobus
│ └── config
├── install-config.sh
├── postfix
│ ├── aliases
│ └── main.cf
├── supervisor
│ └── colobus.conf
├── sync-mlmmj-and-colobus.php
└── users
├── main.php.net
└── apache2
│ └── sites-available
│ ├── gcov.php.net.conf
│ ├── lxr.php.net.conf
│ ├── main.php.net.conf
│ └── status.php.net.conf
├── maintain-main
├── maintain-master-dns.php
├── maintain-pear
├── no-feedback-bugsweb
├── php-web4
└── nginx
│ ├── mime.types
│ ├── nginx.conf
│ └── sites-available
│ └── www.php.net
├── php.net.zone
├── populate-rsync.sh
├── process-main-zone-file
├── prune-backups
├── rsync.php.net
├── README.md
├── cronjobs.root
└── rsynd.conf
├── runone
├── shared-config
├── 20-sudo-nopassword
└── iptables.conf
├── svn2
├── apache2
│ ├── conf-available
│ │ └── remote-ip-log.conf
│ └── sites-available
│ │ ├── conf.php.net.conf
│ │ ├── conf2.php.net.conf
│ │ ├── doc.php.net.conf
│ │ ├── gtk.php.net.conf
│ │ ├── people.php.net.conf
│ │ ├── pres.php.net.conf
│ │ ├── pres2.php.net.conf
│ │ └── talks.php.net.conf
├── installed-packages.txt
└── users
├── update-analytics-web
├── update-bugsweb
├── update-colobus-archive
├── update-cvs-mail-aliases
├── update-distributions
├── update-docs-sources
├── update-docs-translation-status
├── update-docweb
├── update-download-area
├── update-downloads
├── update-everything
├── update-gtkweb
├── update-letsencrypt
├── update-manuals
├── update-mirrors
├── update-newsweb
├── update-pearweb-manuals
├── update-peclweb
├── update-peopleweb
├── update-phd-docs
├── update-phpweb-backend
├── update-phpweb-manuals
├── update-qaweb
├── update-shared
├── update-systems
├── update-talksweb
├── update-time
└── update-win-pkg-cache
/README.md:
--------------------------------------------------------------------------------
1 | This repository holds configuration files and documentation about the systems
2 | used for the PHP.net infrastructure.
3 |
4 | These systems are maintained collectively by the subscribers to the systems@php.net
5 | mailing list.
6 |
7 | This repository is available in `/local/systems` on each physical/virtual host
8 | (aka *boxen*). Most major packages (Apache, MariaDB, Postfix, etc) needed by
9 | services on that boxen are installed using distribution packages.
10 |
11 |
12 |
13 |
17 |
18 | ## Boxen configuration
19 |
20 | All[^wip] hosts use `cron-box-crontab` as the crontab for the root user,
21 | which is configured to run tasks every five minutes, hourly, daily, weekly,
22 | and monthly. The configuration for each boxen can be found in the file
23 | `boxen/$(hostname)`.
24 |
25 | Configuration for the services on all[^wip] hosts is stored in a directory
26 | in this repository named `$(hostname)`, and a script called
27 | `$(hostname)/install-config.sh` will symlink them into place and restart the
28 | appropriate services.
29 |
30 | The standard `cron-box` setup will alert systems@php.net when errors are
31 | encountered.
32 |
33 | ## Tasks
34 |
35 | All of the jobs run through cron are stored in this repository, mostly as
36 | shell scripts, and they are currently all located in the top level.
37 |
38 | ## Secrets
39 |
40 | Secrets, tokens, and other configuration may be stored in `/local/this-box` on
41 | the individual boxen, in which case the `backup-thisbox` task should be
42 | included in the daily `cron-box` tasks for that boxen.
43 |
44 | [^wip]: Once they've all been configured, which is a work in progress right now.
45 |
--------------------------------------------------------------------------------
/analytics/analytics.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | Options FollowSymLinks
3 | AllowOverride None
4 | Require all granted
5 |
6 |
7 |
8 | ServerAdmin webmaster@php.net
9 | ServerName analytics.php.net
10 |
11 | Redirect permanent / https://analytics.php.net
12 |
13 | RewriteEngine On
14 | RewriteCond %{HTTPS} off
15 | RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
16 |
17 | # Logfiles
18 | ErrorLog /var/log/apache2/analytics.php.net-error.log
19 | CustomLog /var/log/apache2/analytics.php.net-access.log combined
20 |
21 | ErrorDocument 404 /index.php
22 | RewriteCond %{SERVER_NAME} =analytics.php.net
23 | RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
24 |
25 |
26 |
27 |
28 | ServerAdmin webmaster@php.net
29 |
30 | ServerName analytics.php.net
31 |
32 | # Indexes + Directory Root.
33 | DirectoryIndex index.php
34 | DocumentRoot /var/www/analytics/www/
35 |
36 | RewriteEngine On
37 |
38 | # Logfiles
39 | ErrorLog /var/log/apache2/analytics.php.net-error.log
40 | CustomLog /var/log/apache2/analytics.php.net-access.log combined
41 |
42 | ErrorDocument 404 /index.php
43 |
44 | # Possible values include: debug, info, notice, warn, error, crit,
45 | # alert, emerg.
46 | LogLevel warn
47 |
48 | # SSL Engine Switch:
49 | # Enable/Disable SSL for this virtual host.
50 | SSLEngine on
51 | SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
52 | SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
53 | SSLHonorCipherOrder on
54 | SSLCertificateFile /etc/letsencrypt/live/analytics.php.net/fullchain.pem
55 | SSLCertificateKeyFile /etc/letsencrypt/live/analytics.php.net/privkey.pem
56 | Include /etc/letsencrypt/options-ssl-apache.conf
57 |
58 |
59 |
--------------------------------------------------------------------------------
/analytics/installed-packages.txt:
--------------------------------------------------------------------------------
1 | apache2
2 | certbot
3 | git
4 | mariadb-client
5 | mariadb-server
6 | net-tools
7 | php-fpm
8 | php-gd
9 | php-mysql
10 | php-xml
11 | python3-certbot-apache
12 |
--------------------------------------------------------------------------------
/analytics/users:
--------------------------------------------------------------------------------
1 | # Username : Name : GitHub Username
2 | derick:Derick Rethans:derickr
3 |
--------------------------------------------------------------------------------
/archive-matomo-data:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | HOUR=`date +%H`
4 | php /var/www/analytics/www/console core:archive --url=https://analytics.php.net 2>/var/log/matomo-archive-error-${HOUR}.log >/var/log/matomo-archive-${HOUR}.log
5 | chown -R www-data:www-data /var/www/analytics
6 |
--------------------------------------------------------------------------------
/backup-bugsweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id: backup-pear,v 1.4 2007/06/09 18:21:52 mj Exp $
3 |
4 | # Backup the PECL services
5 |
6 | basedir=/local/backups
7 | dir=php-bugsweb-$date
8 |
9 | cd $basedir
10 | mkdir $dir || exit 1
11 | mkdir $dir/php-bugs-patches || exit 1
12 | mkdir $dir/php-bugs || exit 1
13 |
14 | #
15 | # Apache configuration
16 | #
17 | cp /etc/apache2/sites-available/bugs.conf $dir/
18 |
19 | #
20 | # Database
21 | #
22 | nice -n 15 mysqldump --quote-names --quick phpbugsdb > $dir/phpbugs.sql
23 |
24 | #
25 | # Patches in the bug tracker
26 | #
27 | cp -r /srv/bugs.php.net/uploads $basedir/$dir/php-bugs-patches/
28 |
29 | #
30 | # Compress the whole stuff in a gzipped tar archive
31 | #
32 | tar cf - $dir | gzip -9 > $basedir/$dir.tar.gz
33 |
34 | #
35 | # cleanup
36 | #
37 | rm -r $dir
38 |
--------------------------------------------------------------------------------
/backup-main:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id$
3 |
4 | # Backup the main service
5 |
6 | dir=main-$date
7 |
8 | mkdir -p /local/backups
9 | cd /local/backups
10 | mkdir $dir || exit 1
11 |
12 | mysqldump -u nobody -Q phpmasterdb > $dir/phpmasterdb.sql
13 | cp -r /etc/apache2 $dir
14 |
15 | rm -f /local/backups/main-$date.tar.bz2
16 | tar cf - $dir | bzip2 -9 > /local/backups/main-$date.tar.bz2
17 |
18 | rm -rf $dir
19 |
20 |
--------------------------------------------------------------------------------
/backup-pear:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id$
3 |
4 | # Backup the PEAR/PECL services
5 |
6 | basedir=/local/backups
7 | dir=pear-$date
8 |
9 | cd $basedir
10 | mkdir $dir || exit 1
11 | mkdir $dir/packages || exit 1
12 | mkdir $dir/pearweb-rest || exit 1
13 | mkdir $dir/bug-patches || exit 1
14 |
15 | #
16 | # Apache configuration
17 | #
18 | cp /etc/httpd/conf/*.conf $dir/
19 |
20 | #
21 | # Database
22 | #
23 | nice -n 15 mysqldump --quote-names -u pear --password=pear --quick pear > $dir/pear.sql
24 |
25 | #
26 | # Packages
27 | #
28 | for file in /home/pear/packages/*.tgz; do
29 | cp $file $dir/packages/`basename $file`
30 | done
31 |
32 | #
33 | # REST files
34 | #
35 | cp -r /home/pear/pearweb/rest $basedir/$dir/pearweb-rest
36 |
37 | #
38 | # Patches in the bug tracker
39 | #
40 | cp -r /home/pear/pearweb/patches $basedir/$dir/bug-patches/
41 |
42 | #
43 | # Compress the whole stuff in a gzipped tar archive
44 | #
45 | tar cf - $dir | gzip -9 > $basedir/$dir.tar.gz
46 |
47 | #
48 | # cleanup
49 | #
50 | rm -r $dir
51 |
--------------------------------------------------------------------------------
/backup-pecl:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id: backup-pear,v 1.4 2007/06/09 18:21:52 mj Exp $
3 |
4 | # Backup the PECL services
5 |
6 | basedir=/local/backups
7 | dir=pecl-$date
8 |
9 | cd $basedir
10 | mkdir $dir || exit 1
11 | mkdir $dir/packages || exit 1
12 | mkdir $dir/peclweb-rest || exit 1
13 |
14 | #
15 | # Apache configuration
16 | #
17 | cp /local/httpd/conf/pecl.php.net.conf $dir/
18 | cp /etc/crontab $dir/
19 |
20 | #
21 | # rrdtool stuff
22 | #
23 | cp -r /local/rrdtool $dir/
24 |
25 | #
26 | # Database
27 | #
28 | nice -n -20 mysqldump --quote-names --quick pear > $dir/pecl.sql
29 |
30 | #
31 | # Packages
32 | #
33 | for file in /var/lib/pear/*.tgz; do
34 | cp $file $dir/packages/`basename $file`
35 | done
36 |
37 | #
38 | # REST files
39 | #
40 | cp -r /var/lib/peclweb/rest $basedir/$dir/peclweb-rest
41 |
42 | #
43 | # Compress the whole stuff in a gzipped tar archive
44 | #
45 | tar cf - $dir | gzip -9 > $basedir/$dir.tar.gz
46 |
47 | #
48 | # cleanup
49 | #
50 | rm -r $dir
51 |
--------------------------------------------------------------------------------
/backup-thisbox:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id$
3 |
4 | # Backup the "this-box" state; tokens, keys etc.
5 | cd /local
6 | mkdir -p backups
7 | tar cf - this-box | bzip2 -9 > backups/thisbox-`hostname`-$date.tar.bz2
8 |
--------------------------------------------------------------------------------
/backup-wiki-php-net:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id$
3 |
4 | # Backup the Wiki data: pages and media
5 | # The wiki code itself is in CVS
6 | #
7 | # config
8 | WIKIPATH="/home/web/wiki.php.net/public_html" # path to your wiki, no symbolic are links allowed!
9 | BACKUPPATH="/local/this-box/wiki.php.net" # where do you save the backups?
10 | DAILY_DATA_BACKUPS="2" # keep this amount data backups
11 | DAILY_MEDIA_BACKUPS="2" # and media backups
12 | # no more config
13 |
14 | # creates $1, if not existant
15 | checkDir()
16 | {
17 | if [ ! -d "${BACKUPPATH}/$1" ]
18 | then
19 | mkdir -p "${BACKUPPATH}/$1"
20 | fi
21 | }
22 |
23 | # 1 -> path
24 | # 2 -> name
25 | # 3 -> number of backups
26 | rotateDir()
27 | {
28 | for i in `seq $(($3 - 1)) -1 1`
29 | do
30 | if [ -f "$1/$2.$i.tar.bz2" ]
31 | then
32 | mv "$1/$2.$i.tar.bz2" "$1/$2.$((i + 1)).tar.bz2"
33 | fi
34 | done
35 | }
36 |
37 |
38 | # make sure everything exists
39 | checkDir "data"
40 | checkDir "data/archive"
41 | checkDir "data/daily"
42 |
43 | checkDir "media"
44 | checkDir "media/archive"
45 | checkDir "media/daily"
46 |
47 | # first step: rotate daily.
48 | rotateDir "${BACKUPPATH}/data/daily" "data" "$DAILY_DATA_BACKUPS"
49 | rotateDir "${BACKUPPATH}/media/daily" "media" "$DAILY_MEDIA_BACKUPS"
50 |
51 | # then create our backup
52 | # --exclude is not accepted for Linksys NSLU2 box, any alternative?
53 | tar --exclude=".*" -cjf "/tmp/data.1.tar.bz2" -C "${WIKIPATH}" "data"
54 | tar --exclude=".*" -cjf "/tmp/media.1.tar.bz2" -C "${WIKIPATH}" "data/media"
55 |
56 |
57 | # for debian etch, replace "media" by "data/media" in line above
58 | # and add --excude="media" to first tar line
59 |
60 |
61 | # create an archive backup?
62 | if [ `date +%d` == "01" ]
63 | then
64 | cp "/tmp/data.1.tar.bz2" "${BACKUPPATH}/data/archive/data-"`date +%m-%d-%Y`".tar.bz2"
65 | cp "/tmp/media.1.tar.bz2" "${BACKUPPATH}/media/archive/media-"`date +%m-%d-%Y`".tar.bz2"
66 | fi
67 |
68 | # add them to daily.
69 | mv "/tmp/data.1.tar.bz2" "${BACKUPPATH}/data/daily"
70 | mv "/tmp/media.1.tar.bz2" "${BACKUPPATH}/media/daily"
71 |
--------------------------------------------------------------------------------
/bk2/README.md:
--------------------------------------------------------------------------------
1 | ## Hostname
2 | * bk2
3 |
4 | ## Sponsor
5 | * [Bauer + Kirch GmbH](http://www.bauer-kirch.de/)
6 |
7 | ## Contact
8 | * mj@php.net
9 |
10 | ## Access
11 | * mj
12 | * jimw
13 | * derick
14 |
15 | ## Specs
16 | * Debian GNU/Linux 12 (bookworm)
17 | * Memory: 2GB
18 | * Disk: 20GB
19 |
20 | ## Services
21 | * (none yet)
22 |
23 | ## Aliases
24 | * monitoring.php.net
25 |
--------------------------------------------------------------------------------
/bk2/apache2/monitoring.php.net.conf:
--------------------------------------------------------------------------------
1 | # Default HTTP/HTTPS redirects to https://monitoring.php.net
2 |
3 | RewriteEngine On
4 | RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
5 | RewriteRule ^(.*)$ https://monitoring.php.net/$1 [R=301,L]
6 |
7 |
8 | ServerName bk2.php.net
9 |
10 | SSLEngine on
11 | SSLCertificateFile /etc/letsencrypt/live/bk2.php.net/fullchain.pem
12 | SSLCertificateKeyFile /etc/letsencrypt/live/bk2.php.net/privkey.pem
13 |
14 | RedirectMatch ^/(.*)$ https://monitoring.php.net/$1
15 |
16 | Protocols h2 http/1.1
17 | Header always set Strict-Transport-Security "max-age=63072000"
18 |
19 |
20 |
21 | ServerName monitoring.php.net
22 |
23 | ServerAdmin systems@php.net
24 | DocumentRoot /var/www/html
25 |
26 | # Using Icinga for now
27 | RedirectMatch ^/$ /icingaweb2/
28 |
29 | ErrorLog ${APACHE_LOG_DIR}/error.log
30 | CustomLog ${APACHE_LOG_DIR}/access.log combined
31 |
32 | SSLEngine on
33 | SSLCertificateFile /etc/letsencrypt/live/bk2.php.net/fullchain.pem
34 | SSLCertificateKeyFile /etc/letsencrypt/live/bk2.php.net/privkey.pem
35 |
36 | Protocols h2 http/1.1
37 | Header always set Strict-Transport-Security "max-age=63072000"
38 |
39 |
40 | SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 -TLSv1.2
41 | SSLHonorCipherOrder off
42 | SSLSessionTickets off
43 |
44 | SSLUseStapling On
45 | SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
46 |
47 | # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
48 |
--------------------------------------------------------------------------------
/bk2/install-config.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # exit if something fails
4 | set -e
5 |
6 | if [ "$(id -u)" != "0" ]; then
7 | echo $0 must be run as root
8 | exit 1
9 | fi
10 |
11 | ts=$(date +"%Y-%m-%d-%T")
12 | backup=/tmp/systems-$ts
13 |
14 | echo -n "Backing up existing files to $backup..."
15 |
16 | mkdir -p $backup
17 |
18 | crontab -u root -l > $backup/crontab
19 |
20 | echo "done."
21 |
22 | echo -n "Putting new configuration into place..."
23 |
24 | crontab -u root - < /local/systems/cron-box-crontab
25 |
26 | # apache2
27 | rm -f /etc/apache2/sites-enabled/*.conf
28 | ln -s -t /etc/apache2/sites-enabled /local/systems/bk2/apache2/*.conf
29 | service apache2 reload
30 |
31 | echo "done."
32 |
--------------------------------------------------------------------------------
/bk2/installed-packages.txt:
--------------------------------------------------------------------------------
1 | git
2 |
--------------------------------------------------------------------------------
/boxen/analytics:
--------------------------------------------------------------------------------
1 | # $Id$
2 |
3 | # Service configuration for analytics.php.net
4 |
5 | export CONTINENT="us"
6 |
7 | HOURLY="update-systems update-analytics-web archive-matomo-data"
8 | DAILY="update-time"
9 | WEEKLY=""
10 | MONTHLY=""
11 |
--------------------------------------------------------------------------------
/boxen/bk2:
--------------------------------------------------------------------------------
1 | # $Id$
2 |
3 | # Service configuration for bk2
4 |
5 | export CONTINENT="eu"
6 |
7 | MINUTELY=""
8 | HOURLY="update-systems"
9 | DAILY="update-time backup-thisbox prune-backups"
10 | WEEKLY=""
11 | MONTHLY=""
12 |
--------------------------------------------------------------------------------
/boxen/bugs:
--------------------------------------------------------------------------------
1 | # $Id$
2 |
3 | # Service configuration for bugs.php.net
4 |
5 | export CONTINENT="us"
6 |
7 | HOURLY="update-systems backup-bugsweb update-bugsweb"
8 | DAILY="update-time backup-bugsweb prune-backups"
9 | WEEKLY="email-assigned-bugsweb no-feedback-bugsweb update-letsencrypt"
10 | MONTHLY=""
11 |
--------------------------------------------------------------------------------
/boxen/downloads.php.net:
--------------------------------------------------------------------------------
1 | # $Id$
2 |
3 | # Service configuration for downloads.php.net
4 |
5 | MINUTELY=""
6 | HOURLY="update-systems update-downloads update-shared"
7 | DAILY=""
8 | WEEKLY=""
9 |
10 |
--------------------------------------------------------------------------------
/boxen/euk2.php.net:
--------------------------------------------------------------------------------
1 | # Service configuration for euk2.php.net
2 |
3 | export CONTINENT="europe"
4 |
5 | #HOURLY="update-systems update-docs-sources build-docs-snapshots update-phd-docs"
6 | HOURLY="update-systems"
7 | DAILY="update-time "
8 | WEEKLY=""
9 | MONTHLY=""
10 |
11 |
--------------------------------------------------------------------------------
/boxen/lists.php.net:
--------------------------------------------------------------------------------
1 | # $Id$
2 |
3 | # Service configuration for qa.php.net
4 |
5 | export CONTINENT="us"
6 |
7 | MINUTELY="update-colobus-archive"
8 | HOURLY="update-systems update-qaweb update-newsweb"
9 | DAILY="update-time backup-thisbox prune-backups"
10 | WEEKLY=""
11 | MONTHLY="update-letsencrypt"
12 |
--------------------------------------------------------------------------------
/boxen/main.php.net:
--------------------------------------------------------------------------------
1 | # $Id$
2 |
3 | # Service configuration for main.php.net
4 |
5 | MINUTELY=""
6 | HOURLY="maintain-main"
7 | DAILY="backup-thisbox backup-main prune-backups"
8 | WEEKLY="maintain-main"
9 |
10 |
--------------------------------------------------------------------------------
/boxen/svn2.php.net:
--------------------------------------------------------------------------------
1 | # $Id$
2 |
3 | # Service configuration for svn (svn.php.net)
4 |
5 | export CONTINENT="us"
6 |
7 | MINUTELY=""
8 | HOURLY="update-systems update-gtkweb update-peopleweb update-talksweb update-docweb update-docs-sources update-docs-translation-status update-phd-docs"
9 | DAILY="update-time backup-thisbox prune-backups"
10 | WEEKLY=""
11 | MONTHLY=""
12 |
--------------------------------------------------------------------------------
/bugs.php.net/additional.mysql.cnf:
--------------------------------------------------------------------------------
1 | [mysqld]
2 | ft_min_word_len=3
3 | default-time-zone='+00:00'
4 |
5 | [myisamchk]
6 | ft_min_word_len=3
7 |
8 |
--------------------------------------------------------------------------------
/build-docs-lang-rsync:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | echo "Building for " $1
4 | date
5 |
6 | echo "Removing old dirs"
7 | rm -rf html php output
8 | date
9 |
10 | echo "Running configure"
11 | php8.2 /local/repos/phpdoc-git/doc-base/configure.php --with-lang=$1 --disable-libxml-check --disable-segfault-speed || exit 1
12 | date
13 |
14 | echo "Running test and build"
15 | php8.2 /local/repos/phpdoc/phd/render.php --color false --package PHP --format php --format xhtml --format bigxhtml --format tocfeed -d /local/repos/phpdoc-git/doc-base/.manual.xml || exit 2
16 | date
17 |
18 | cd output
19 |
20 | echo "Moving the TOC feed to correct folder"
21 | mv php-tocfeed php-web/feeds
22 |
23 | echo "Zipping downloadable manuals"
24 | gzip -9 php-bigxhtml.html -c > php_manual_$1.html.gz
25 | tar -czf php_manual_$1.tar.gz php-chunked-xhtml
26 | date
27 |
28 | echo "Copying manuals to correct place"
29 | cp -p php_manual_$1.html.gz /local/mirrors/phpweb/distributions/manual/
30 | if [ $? -eq 0 ]; then
31 | cp -p php_manual_$1.tar.gz /local/mirrors/phpweb/distributions/manual/
32 | else
33 | echo "FAILED COPYING html.gz INTO DISTRO/MANUAL FOLDER"
34 | fi
35 | date
36 |
37 | echo "Copying to rsync space"
38 | cp -rp php-web /local/mirrors/phpweb/manual
39 | if [ $? -eq 0 ]; then
40 | cd /local/mirrors/phpweb/manual
41 | rm -rf $1; mv php-web $1
42 | else
43 | echo "FAILED COPYING php-web TO THE MANUAL FOLDER"
44 | fi
45 | date
46 |
47 | echo "Done"
48 |
--------------------------------------------------------------------------------
/build-docs-rsync:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Update PhD
4 | GIT_FETCH="git fetch --quiet origin"
5 | GIT_RESET="git reset --quiet --hard origin/master"
6 | cd /local/repos/phpdoc/phd
7 | $GIT_FETCH && $GIT_RESET >/tmp/log-phd 2>&1
8 |
9 |
10 | BASE_DIR=/local/repos/phpdoc-git
11 |
12 | assertUpToDateRepo() {
13 | if [ ! -d $BASE_DIR/$1 ]; then
14 | git clone https://github.com/php/doc-$2.git $BASE_DIR/$1
15 | fi
16 | git -C $BASE_DIR/$1 fetch origin && git -C $BASE_DIR/$1 reset --hard origin/master > /tmp/log-git-$i 2>&1
17 | }
18 |
19 | langs=`php8.2 -r 'include "/local/mirrors/phpweb/include/languages.inc"; echo implode( " ", array_keys( $ACTIVE_ONLINE_LANGUAGES ) );'`;
20 |
21 | if [ ! -d $BASE_DIR ]; then
22 | mkdir $BASE_DIR;
23 | fi
24 |
25 | # Update the core module it self
26 | assertUpToDateRepo doc-base base
27 |
28 | # All translations depend on english being up2date
29 | assertUpToDateRepo en en
30 |
31 | cd $BASE_DIR
32 |
33 | for i in $langs; do
34 | # Update the translation files
35 | assertUpToDateRepo $i $i
36 | /bin/bash /local/systems/build-docs-lang-rsync $i >>/tmp/log-$i 2>&1;
37 | done
38 |
39 | # Build manual lookup db
40 | php8.2 /local/systems/gen-phpweb-sqlite-db.php /local/mirrors/phpweb/backend/manual-lookup.sqlite /local/mirrors/phpweb /manual >/dev/null
41 |
42 |
--------------------------------------------------------------------------------
/build-manual:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | PATH=/usr/local/bin:$PATH
4 |
5 | if [ $# != 5 ]; then
6 | echo usage: $0 phpdocdirectory destdirectory langcode workdirectory destdirectory2
7 | exit 1
8 | fi
9 |
10 | PHPDOC=$1
11 | DEST=$2
12 | LANG=$3
13 | DIR=$4
14 | DEST2=$5
15 |
16 | echo -n ">>> starting build at: "
17 | date
18 |
19 | echo ">>> making work directory ... "
20 | mkdir $DIR
21 | cd $DIR || exit 1
22 |
23 | echo ">>> running ./configure --with-lang=$LANG ... "
24 | $PHPDOC/configure --with-lang=$LANG --with-zendapi=/local/mirrors/ZendAPI || exit 1
25 |
26 | #if [ "$LANG" != "en" ]; then
27 | # echo ">>> running make revcheck.html and copying to revcheck.html.gz ... "
28 | # make revcheck.html && gzip -c -9 revcheck.html > $DEST/revcheck.html.gz
29 | #fi
30 |
31 | echo ">>> running make test_man_gen ... "
32 | make test_man_gen || exit 1
33 |
34 | echo ">>> running make mirror-files ... "
35 | make mirror-files || exit 1
36 | if [ ! -f html/index.html -o ! -f php/index.php ]; then
37 | echo make failed, even though it claimed to work
38 | exit 1
39 | fi
40 |
41 | echo ">>> running make extra-mirror-files ... "
42 | make extra-mirror-files
43 |
44 | echo ">>> copying php version ... "
45 | (cd php; rsync -rlpvC --delete --delete-after --exclude build.log.gz --exclude revcheck.html.gz . $DEST) || exit 1
46 | (cd $DEST; ln -sf index.php manual.php) || exit 1
47 |
48 | echo ">>> copying standalone versions ... "
49 | rsync -rlpvC *.bz2 *.pdb $DEST2 || exit 1
50 |
51 | echo -n ">>> finished build at: "
52 | date
53 |
54 | echo ">>> success!"
55 | exit 0
56 |
--------------------------------------------------------------------------------
/build-pear-manual:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | PATH=/usr/local/bin:$PATH
4 |
5 | if [ $# != 5 ]; then
6 | echo usage: $0 phpdocdirectory destdirectory langcode workdirectory destdirectory2
7 | exit 1
8 | fi
9 |
10 | PHPDOC=$1
11 | DEST=$2
12 | LANG=$3
13 | DIR=$4
14 | DEST2=$5
15 |
16 | echo -n ">>> starting build at: "
17 | date
18 |
19 | echo ">>> making work directory ... "
20 | cp -r $PHPDOC $DIR
21 | cd $DIR || exit 1
22 |
23 | echo ">>> running ./configure --with-lang=$LANG ... "
24 | ./configure --with-lang=$LANG || exit 1
25 |
26 | echo ">>> running make html ... "
27 | make html || exit 1
28 |
29 | echo ">>> running make phpweb ... "
30 | make pearweb || exit 1
31 |
32 | echo ">>> running make mirror-files ... "
33 | make mirror-files || exit 1
34 |
35 | echo ">>> copying html version ... "
36 | rsync -rlpvC --delete --delete-after html/ $DEST/html/ || exit 1
37 |
38 | echo ">>> copying php version ... "
39 | (cd pearweb; rsync -rlpvC --delete --delete-after --exclude build.log --exclude html . $DEST) || exit 1
40 |
41 | echo ">>> copying standalone versions ... "
42 | rsync -rlpvC *.gz *.bz2 *.zip $DEST2 || exit 1
43 |
44 | echo -n ">>> finished build at: "
45 | date
46 |
47 | echo ">>> success!"
48 | exit 0
49 |
--------------------------------------------------------------------------------
/check-fails:
--------------------------------------------------------------------------------
1 | #! /bin/sh
2 |
3 | ME=`hostname`
4 | SMTP_FROM=systems@php.net
5 | SMTP_TO=systems@php.net
6 | SMTP_SUBJECT="php.net systems: failed jobs on $ME"
7 | SMTP_INTRO="please check /var/log/php-cron-box.log on $ME for details"
8 |
9 | FAIL_LOGFILE=/var/log/php-cron-box.fail
10 |
11 | if ! test -r $FAIL_LOGFILE; then
12 | exit 0
13 | fi
14 |
15 | (echo $SMTP_INTRO; echo; cat $FAIL_LOGFILE) | \
16 | mail -s "$SMTP_SUBJECT" -r $SMTP_FROM -- $SMTP_TO
17 |
18 | rm -f $FAIL_LOGFILE
19 |
--------------------------------------------------------------------------------
/check-ssh-connectivity:
--------------------------------------------------------------------------------
1 | #! /bin/sh
2 |
3 | jumphosts="php-jump2-old.php.net php-jump2.php.net php-jump3.php.net"
4 |
5 | # we only check IPv4 connectivity for now
6 |
7 | servers=`egrep "^[a-z0-9].*\s+IN\s+A\s+" php.net.zone|while read a b c d e; do echo $a=$d; done`
8 |
9 | old_IFS=$IFS
10 | for entry in $servers; do
11 | IFS==
12 | set $entry
13 | IFS=$old_IFS
14 | hostname=$1
15 | ip=$2
16 |
17 | echo -n $hostname $ip
18 | for jump in $jumphosts; do
19 | out=`ssh \
20 | -o PreferredAuthentications=publickey \
21 | -oStrictHostKeyChecking=no \
22 | -oConnectTimeout=3 \
23 | -oProxyJump=$jump:9022 \
24 | $ip \
25 | id 2>&1`
26 |
27 | r=
28 | case "$out" in
29 | *refused*) r=PORT-22-REFUSED;;
30 | Permission*) r=NO-LOGIN;;
31 | *timed*) r=PORT-22-FIREWALLED;;
32 | uid*) r=OK;;
33 | *) r="???"; echo "UKNOWN RESULT: $out";;
34 | esac
35 |
36 | echo -n " $r"
37 | done
38 |
39 | echo
40 | done
41 |
--------------------------------------------------------------------------------
/create-system-users.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | DIR=$(dirname $(realpath ${BASH_SOURCE[0]}))
4 |
5 | # Configure sudoers to require no password for these users
6 | cp "$DIR/shared-config/20-sudo-nopassword" /etc/sudoers.d
7 |
8 | # Find users file
9 | HOSTNAME=$( hostname )
10 | if [ -f "$DIR/$HOSTNAME/users" ]; then
11 | USERS_FILE="$DIR/$HOSTNAME/users"
12 | else
13 | HOSTNAME=$( hostname -s )
14 | if [ -f "$DIR/$HOSTNAME/users" ]; then
15 | USERS_FILE="$DIR/$HOSTNAME/users"
16 | fi
17 | fi
18 |
19 | if [ "$USERS_FILE" = "" ]; then
20 | echo "Can't find users file"
21 | exit -1
22 | fi
23 |
24 | echo Using $USERS_FILE to create users.
25 |
26 | while IFS= read -r line; do
27 | if [ "${line:0:1}" = "#" ]; then
28 | continue
29 | fi
30 |
31 | echo
32 |
33 | USER=$( echo $line | cut -d ":" -f 1 )
34 | NAME=$( echo $line | cut -d ":" -f 2 )
35 | GHUB=$( echo $line | cut -d ":" -f 3 )
36 |
37 | if id "$USER" >/dev/null 2>&1; then
38 | echo "$USER: found, adding to sudo group"
39 | usermod $USER -a -G sudo
40 | else
41 | echo "$USER: not found, creating"
42 | useradd $USER -c "$NAME" -G sudo -m -s /bin/bash
43 | fi
44 |
45 |
46 | echo -n "- Downloading SSH keys from GitHub: "
47 | TMP_KEY_FILE="/tmp/tmp-$USER-key"
48 | wget -q -O $TMP_KEY_FILE "https://github.com/$GHUB.keys"
49 | if [ ! -f $TMP_KEY_FILE ]; then
50 | echo "FAIL"
51 | continue
52 | else
53 | echo "OK"
54 |
55 | # Copy ssh keys and set permissions
56 | mkdir -p /home/$USER/.ssh
57 |
58 | chown $USER:$USER /home/$USER/.ssh
59 | chmod 0700 /home/$USER/.ssh
60 |
61 | cp $TMP_KEY_FILE /home/$USER/.ssh/authorized_keys
62 |
63 | chown $USER:$USER /home/$USER/.ssh/authorized_keys
64 | chmod 0600 /home/$USER/.ssh/authorized_keys
65 |
66 | # Remove tmp key
67 | rm $TMP_KEY_FILE
68 | fi
69 | done < $USERS_FILE
70 |
--------------------------------------------------------------------------------
/create_aliases.sh:
--------------------------------------------------------------------------------
1 | #! /bin/sh
2 | #
3 | # creates aliases.
4 |
5 | . /etc/profile
6 |
7 | a=/etc/aliases
8 | p=/etc/aliases-03phpmasterdb
9 |
10 | # dont copy+paste the next line, it contains a TAB
11 | tail -n +2 /home/emailsync/aliases |sed "s, ,: ," > $p.new
12 |
13 | if ! test -s $p.new; then
14 | exit 1
15 | fi
16 |
17 | mv $p.new $p
18 |
19 | cat $a-* > $a.new
20 |
21 | if ! test -s $a.new; then
22 | exit 1
23 | fi
24 |
25 | if diff $a.new $a >/dev/null; then
26 | rm -f $a.new
27 | exit 0
28 | fi
29 |
30 | diff -u $a $a.new | mail -s "changes to php-smtp2:aliases" systems@php.net
31 |
32 | # give it time to deliver the email
33 |
34 | sleep 10
35 |
36 | mv $a.new $a
37 |
38 | newaliases
39 |
--------------------------------------------------------------------------------
/cron-box:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id$
3 | # Run the cron for a box
4 |
5 | FAIL_LOGFILE=/var/log/php-cron-box.fail
6 |
7 | LOGFILE=/var/log/php-cron-box.log
8 |
9 | exec >> $LOGFILE
10 | exec 2>&1
11 | exec > $FAIL_LOGFILE
22 | }
23 |
24 | # pull in details for this box
25 | . /local/systems/boxen/`hostname`
26 |
27 | usage()
28 | {
29 | echo "cron-box (monthly|weekly|daily|hourly|minutely|startup)"
30 | }
31 |
32 | cd /local/systems
33 | PATH="/local/systems:/usr/local/bin:$PATH"
34 |
35 | case "$1" in
36 | monthly)
37 | WHAT=$MONTHLY
38 | date=`date +"%Y%m%d-month%m"`
39 | ;;
40 | weekly)
41 | WHAT=$WEEKLY
42 | date=`date +"%Y%m%d-week%V"`
43 | ;;
44 | daily)
45 | WHAT=$DAILY
46 | date=`date +"%Y%m%d"`
47 | WHAT="$WHAT check-fails"
48 | ;;
49 | hourly)
50 | WHAT=$HOURLY
51 | date=`date +"%Y%m%d-%H:00"`
52 | ;;
53 | minutely)
54 | WHAT=$MINUTELY
55 | date=`date +"%Y%m%d-%H:%M"`
56 | ;;
57 | startup)
58 | WHAT=$BOOT
59 | date=`date +"%Y%m%d"`
60 | ;;
61 | *)
62 | usage
63 | exit 1
64 | ;;
65 | esac
66 |
67 | # export the date for backup scripts
68 | how=$1
69 | export how
70 | export date
71 |
72 | for svc in $WHAT ; do
73 |
74 | # Alert systems@php.net if there's a possible zombie process here.
75 | if test -x /tmp/.$svc.runone.pid; then
76 | echo "I tried to run the $1 process on $svc, but found that /tmp/.$svc.runone.pid exists." \
77 | | mail -s "Possible Zombie Process on `hostname`" systems@php.net -- -fnoreply@php.net;
78 | fi;
79 |
80 | if test -x /local/systems/$svc ; then
81 | echo
82 | echo "`now` running $svc"
83 | runone /tmp/.$svc.runone.pid /local/systems/$svc
84 | ERR=$?
85 |
86 | if test "$ERR" != "0"; then
87 | log_fail $svc $ERR
88 | fi
89 | else
90 | echo "Something is wrong. /local/systems/$svc on `hostname` is not executable." \
91 | | mail -s "Broken cronjob on `hostname`" systems@php.net -- -fnoreply@php.net
92 | fi
93 | done
94 |
95 |
--------------------------------------------------------------------------------
/cron-box-crontab:
--------------------------------------------------------------------------------
1 | # vim:ft=crontab
2 | # php.net service maintenance to be installed as root's crontab
3 | # crontab -u root - < /local/systems/cron-box-crontab
4 | */5 * * * * nice -10 /local/systems/cron-box minutely
5 | 01 * * * * nice -10 /local/systems/cron-box hourly
6 | 00 0 * * * nice -10 /local/systems/cron-box daily
7 | 22 4 * * 0 nice -10 /local/systems/cron-box weekly
8 | 42 4 1 * * nice -10 /local/systems/cron-box monthly
9 |
10 |
--------------------------------------------------------------------------------
/downloads.php.net/apache2/downloads.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | # Host and Document Root
3 | ServerName downloads.php.net
4 | Redirect / https://downloads.php.net/
5 |
6 | # Logging
7 | ErrorLog ${APACHE_LOG_DIR}/downloads.php.net-error.log
8 | CustomLog ${APACHE_LOG_DIR}/downloads.php.net-access.log combined
9 |
10 |
11 |
12 | # Host and Document Root
13 | ServerName downloads.php.net
14 | DocumentRoot /local/www/sites/downloads.php.net/public
15 |
16 |
17 | Options FollowSymLinks MultiViews
18 | AllowOverride None
19 | Require all granted
20 |
21 |
22 | # Logging
23 | ErrorLog ${APACHE_LOG_DIR}/downloads.php.net-error.log
24 | CustomLog ${APACHE_LOG_DIR}/downloads.php.net-access.log combined
25 |
26 | # TLS Configuration through Let's Encrypt
27 | Include /etc/letsencrypt/options-ssl-apache.conf
28 |
29 | SSLCertificateFile /etc/letsencrypt/live/downloads.php.net/fullchain.pem
30 | SSLCertificateKeyFile /etc/letsencrypt/live/downloads.php.net/privkey.pem
31 |
32 | # Property Specific Changes
33 | RewriteEngine On
34 | RewriteRule ^/$ https://php.net/ [L]
35 |
36 | # Handle Authorization Header
37 | RewriteCond %{HTTP:Authorization} .
38 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
39 |
40 | # Send all api requests to index.php
41 | RewriteCond %{REQUEST_URI} ^/api
42 | RewriteCond %{REQUEST_FILENAME} !-d
43 | RewriteCond %{REQUEST_FILENAME} !-f
44 | RewriteRule ^ index.php [L]
45 |
46 |
47 | SetHandler application/x-httpd-php-source
48 | # Deny access to raw php sources by default
49 | # To re-enable it's recommended to enable access to the files
50 | # only in specific virtual host or directory
51 | Require all granted
52 |
53 |
54 |
55 | ErrorDocument 404 /redirect.php
56 |
57 |
58 | # Secret Environment Variables
59 | Include /local/this-box/apache.conf
60 |
61 |
--------------------------------------------------------------------------------
/downloads.php.net/apache2/shared.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | ServerAdmin systems@php.net
3 | ServerName shared.php.net
4 |
5 | DocumentRoot /local/www/sites/shared.php.net
6 |
7 |
8 | Options FollowSymLinks MultiViews
9 | AllowOverride None
10 | Require all granted
11 |
12 |
13 |
14 | Header set Access-Control-Allow-Origin "*"
15 |
16 |
17 | # Logging
18 | ErrorLog ${APACHE_LOG_DIR}/shared.php.net-error.log
19 | CustomLog ${APACHE_LOG_DIR}/shared.php.net-access.log combined
20 |
21 | ExpiresActive On
22 | ExpiresDefault "access plus 1 month"
23 |
24 |
25 |
26 |
27 | ServerAdmin systems@php.net
28 | ServerName shared.php.net
29 |
30 | DocumentRoot /local/www/sites/shared.php.net
31 |
32 | Options FollowSymLinks MultiViews
33 | AllowOverride None
34 | Require all granted
35 |
36 |
37 |
38 | Header set Access-Control-Allow-Origin "*"
39 |
40 |
41 | # Logging
42 | ErrorLog ${APACHE_LOG_DIR}/shared.php.net-error.log
43 | CustomLog ${APACHE_LOG_DIR}/shared.php.net-access.log combined
44 |
45 | ExpiresActive On
46 | ExpiresDefault "access plus 1 month"
47 |
48 | SSLEngine on
49 |
50 | # A self-signed (snakeoil) certificate can be created by installing
51 | # the ssl-cert package. See
52 | # /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
53 | # If both key and certificate are stored in the same file, only the
54 | # SSLCertificateFile directive is needed.
55 | #SSLCertificateFile /local/this-box/wildcard-php.net.crt
56 | #SSLCertificateKeyFile /local/this-box/wildcard-php.net.key
57 | #SSLCertificateFile /local/this-box/STAR_php_net.crt
58 | #SSLCertificateKeyFile /local/this-box/STAR_php_net.key
59 | SSLCertificateFile /local/this-box/star_php_net_2019.crt
60 | SSLCertificateKeyFile /local/this-box/star_php_net_2019.crt
61 |
62 | # Server Certificate Chain:
63 | # Point SSLCertificateChainFile at a file containing the
64 | # concatenation of PEM encoded CA certificates which form the
65 | # certificate chain for the server certificate. Alternatively
66 | # the referenced file can be the same as SSLCertificateFile
67 | # when the CA certificates are directly appended to the server
68 | # certificate for convinience.
69 | #SSLCertificateChainFile /local/this-box/wildcard-php.net.GODADDY-CA.crt
70 | #SSLCertificateChainFile /local/this-box/wildcard-php.net.cabundle
71 | #SSLCertificateChainFile /local/this-box/STAR_php_net.ca-bundle
72 |
73 |
74 | SSLOptions +StdEnvVars
75 |
76 |
77 | SSLOptions +StdEnvVars
78 |
79 |
80 | BrowserMatch "MSIE [2-6]" \
81 | nokeepalive ssl-unclean-shutdown \
82 | downgrade-1.0 force-response-1.0
83 | # MSIE 7 and newer should be able to use keepalive
84 | BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
85 |
86 |
87 | SetHandler server-status
88 | Allow from all
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/email-assigned-bugsweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | /srv/bugs.php.net/scripts/cron/email-assigned
3 |
--------------------------------------------------------------------------------
/export_phpmasterdb_aliases.sh:
--------------------------------------------------------------------------------
1 | #! /bin/sh
2 |
3 | . /etc/profile
4 |
5 | d=aliases
6 |
7 | echo "select username,email from users where enable = 1 and email != '' order by username" | \
8 | mysql -u nobody phpmasterdb | \
9 | ssh mailout.php.net "cat - > $d.new && test -s $d.new && mv $d.new $d"
10 |
--------------------------------------------------------------------------------
/gen-ide-json.php:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | getFunctionList();
40 |
41 |
42 | $json_arr = array();
43 | foreach ($functions as $function_name) {
44 |
45 | // @todo fix source so trim() isn't needed
46 | $function_name = trim($function_name);
47 |
48 | $function = $api->getFunctionByName($function_name);
49 | $prototype = (string) $function;
50 |
51 | // @todo fix this. Replaces class.method with class::method
52 | // @todo fix this? Replaces NULL with null, to remain consistent
53 | $function_name_fixed = str_replace('.', '::', (string) $function_name);
54 | $prototype = str_replace($function_name, $function_name_fixed, $prototype);
55 | $prototype = str_replace('NULL', 'null', $prototype);
56 |
57 | // Some contain new lines, let's remove them
58 | $purpose = str_replace("\n", '', (string) $function->getPurpose());
59 | // @todo fix bug when return description contains tables (example: variant_and())
60 | $return = str_replace("\n", '', (string) $function->getReturnDescription());
61 |
62 | // Some 'function names' contain spaces, like 'Constants for PDO_4D'
63 | // @todo fix this bug in the source
64 | if (false !== strpos($function_name_fixed, ' ')) {
65 | continue;
66 | }
67 |
68 | /* Define our array structure for json. Example entries:
69 | [strlen] = Array
70 | (
71 | [id] => function.strlen
72 | [purpose] => Get string length
73 | [prototype] => int strlen(string $string)
74 | [return] => The length of the string on success, and 0 if the string is empty.
75 | [versions] => PHP 4, PHP 5
76 | )
77 | [HttpRequest::addHeaders] => Array
78 | (
79 | [id] => function.httprequest-addheaders
80 | [purpose] => Add headers
81 | [prototype] => bool HttpRequest::addHeaders(array $headers)
82 | [return] => Returns TRUE on success or FALSE on failure.
83 | [versions] =>
84 | )
85 | */
86 |
87 | // @todo Describe (implement?) other options like ->getParams(), ->getSeeAlsoEntries(), ->getChangelogEntries()
88 | $json_arr[$function_name_fixed] = array(
89 |
90 | // Example usage: php.net/$id works
91 | 'id' => (string) $function->getManualId(),
92 |
93 | 'purpose' => (string) $purpose,
94 |
95 | 'prototype' => (string) $prototype,
96 |
97 | // Return description. It contains text (including tables) so may be large and odd
98 | 'return' => (string) $return,
99 |
100 | // @todo This appears empty for class::method's -- why?
101 | 'versions' => (string) $function->getVersion(),
102 | );
103 | }
104 |
105 | $json_text = json_encode($json_arr);
106 | if (!$json_text) {
107 | echo 'Fatal Error: Could not create valid json.' . PHP_EOL;
108 | echo 'Information: json array has count of ' . count($json_arr) . PHP_EOL;
109 | exit;
110 | }
111 | $fn = str_replace('LANG', $lang, FILENAME_JSON);
112 |
113 | if (strlen($json_text) > 1000000) {
114 |
115 | if (!file_put_contents($fn, $json_text)) {
116 | echo 'Fatal Error: Could not save JSON to ' . $fn . PHP_EOL;
117 | exit;
118 | }
119 | }
120 |
121 |
--------------------------------------------------------------------------------
/gen-phpweb-sqlite-db.php:
--------------------------------------------------------------------------------
1 | setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
35 |
36 | $sql = "CREATE TABLE fs (
37 | lang char(5) not null,
38 | prefix char(32) not null,
39 | keyword char(128) not null,
40 | name varchar(238) not null,
41 | prio int not null
42 | );";
43 |
44 | try {
45 | $res = $dbh->query( $sql );
46 | $res = $dbh->query( 'CREATE INDEX map ON fs (lang,keyword)' );
47 | } catch ( PDOException $e ) {
48 | echo 'Error: Cannot create db table. Here is the error message: ' . $e->getMessage() . PHP_EOL;
49 | exit;
50 | }
51 |
52 | if (empty($DOCUMENT_ROOT) || empty($MANUAL_PREFIX) || empty($db_name)) {
53 | echo 'Usage:' . PHP_EOL;
54 | echo ' php gen-phpweb-sqlite-db.php database DOCUMENT_ROOT MANUAL_PREFIX [implied_lang]' . PHP_EOL;
55 | echo ' php gen-phpweb-sqlite-db.php database /local/Web/sites/phpweb /manual' . PHP_EOL;
56 | exit;
57 | }
58 |
59 | $dbh->beginTransaction();
60 |
61 | if ($implied_lang !== false) {
62 | scan($DOCUMENT_ROOT . $MANUAL_PREFIX, $implied_lang);
63 | } else {
64 | scan_langs($DOCUMENT_ROOT . $MANUAL_PREFIX);
65 | }
66 |
67 | $dbh->commit();
68 | exit(0);
69 |
70 | function scan($dir, $lang)
71 | {
72 | global $dbh;
73 | global $s;
74 | global $DOCUMENT_ROOT_LEN;
75 | static $sections = array(
76 | 'book.', 'ref.', 'function.', 'class.', 'feature-',
77 | 'control-structures.', 'language.',
78 | 'about.', 'faq.', 'features.',
79 | );
80 |
81 | $count = 0;
82 | echo "Lang: $lang\n";
83 |
84 | $d = opendir($dir);
85 | if (!$d) {
86 | return;
87 | }
88 |
89 | while (($f = readdir($d)) !== false) {
90 |
91 | // Directories to skip
92 | $skips = array('.git', '.svn', 'feeds', 'images', 'toc', '.', '..');
93 | if (in_array($f, $skips)) {
94 | continue;
95 | }
96 |
97 | $file = $dir . DIRECTORY_SEPARATOR . $f;
98 |
99 | if (is_dir($file)) {
100 | scan($file, $lang);
101 | } else {
102 | /* which section/prefix does this fall under ? */
103 | $prefix = "";
104 | $keyword = $f;
105 |
106 | // Get filepath relative to the manual/
107 | $doc_rel = substr($file, $DOCUMENT_ROOT_LEN);
108 |
109 | // Keyword is filename minus the extension
110 | $x = strrpos($keyword, '.');
111 | if ($x !== false) {
112 | $keyword = substr($keyword, 0, $x);
113 | }
114 |
115 | // Skip PHP 4 domxml (book.domxml). It uses function. syntax, unlike book.dom
116 | if (0 === strpos($keyword, 'function.dom') && false === strpos($keyword, 'simplexml')) {
117 | continue;
118 | }
119 | if (0 === strpos($keyword, 'function.xpath') || 0 === strpos($keyword, 'function.xptr')) {
120 | continue;
121 | }
122 |
123 | /* Example:
124 | - section: book.
125 | - keyword: about.formats
126 | - f: about.formats.php
127 | - doc_rel: /en/about.formats.php
128 | - x: 13
129 | */
130 | foreach ($sections as $prio => $section) {
131 | /* Example:
132 | - before: keyword: about.formats prefix: section: about. f: about.formats.php
133 | - after: keyword: formats prefix: about. section: about. f: about.formats.php
134 | */
135 | if (!strncmp($f, $section, strlen($section))) {
136 | $keyword = substr($keyword, strlen($section));
137 | $prefix = $section;
138 | break;
139 | }
140 | }
141 |
142 | // Hack until PhD generates ids from the DocBook files, and error.php uses them
143 | // $hackme contains class [method] prefixes with their function counterparts
144 | $hackme = array(
145 | 'mysqli-result.' => 'mysqli-',
146 | 'mysqli.' => 'mysqli-',
147 | );
148 | foreach ($hackme as $class => $procedural) {
149 | if (false !== strpos($keyword, $class)) {
150 | $tmp = str_replace($class, $procedural, $keyword);
151 | $dbh->exec("INSERT INTO fs (lang, prefix, keyword, name, prio) values ('$lang', '$prefix', '$tmp', '$doc_rel', " . ($prio+5).")");
152 | $dbh->exec("INSERT INTO fs (lang, prefix, keyword, name, prio) values ('$lang', '$prefix', '". metaphone($tmp) ."', '$doc_rel', " . ($prio+15).")");
153 | break;
154 | }
155 | }
156 |
157 | ++$count;
158 |
159 | $dbh->exec("INSERT INTO fs (lang, prefix, keyword, name, prio) values ('$lang', '$prefix', '$keyword', '$doc_rel', $prio)");
160 | $dbh->exec("INSERT INTO fs (lang, prefix, keyword, name, prio) values ('$lang', '$prefix', '" . metaphone($keyword) . "', '$doc_rel', ".($prio+10).")");
161 |
162 | }
163 | }
164 | closedir($d);
165 |
166 | echo "Added entries for $count files\n";
167 | echo "\n";
168 | }
169 |
170 | function scan_langs($root)
171 | {
172 | global $skip_dirs;
173 |
174 | $d = opendir($root);
175 | if (!$d) {
176 | return;
177 | }
178 | readdir($d); readdir($d);
179 | while (($f = readdir($d)) !== false) {
180 | if ($f === '.svn') {
181 | continue;
182 | }
183 | if ($f === '.git') {
184 | continue;
185 | }
186 | $file = $root . DIRECTORY_SEPARATOR . $f;
187 |
188 | if (is_dir($file)) {
189 | scan($file, $f);
190 | }
191 | }
192 | closedir($d);
193 | }
194 |
195 |
--------------------------------------------------------------------------------
/install-colobus:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | # "$@" passed to rsync so --dry-run works.
5 |
6 | VERSION=${VERSION:-2.5}
7 |
8 | DESTINATION=${DESTINATION:-/local/colobus}
9 | WORKDIR=/tmp/install-colobus.$$
10 | URL="https://github.com/jimwins/colobus/archive/refs/tags/${VERSION}.tar.gz"
11 |
12 | mkdir -p ${WORKDIR}
13 | cd ${WORKDIR}
14 | curl -s -L -o install.tgz ${URL}
15 | tar zxf install.tgz
16 | rsync -aC "$@" --delete --delete-after colobus-${VERSION}/ ${DESTINATION}/
17 | rm -rf ${WORKDIR}
18 |
--------------------------------------------------------------------------------
/install-docweb-jpgraph:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | # Download JpGraph v4.4.2 and drop it where we need it
5 |
6 | TMPFILE=/tmp/download.$$
7 | DESTDIR=/local/Web/sites/doc.php.net/include
8 |
9 | wget -O ${TMPFILE} 'https://jpgraph.net/download/download.php?p=57'
10 |
11 | mkdir -p ${DESTDIR}/jpgraph
12 | tar zxvf ${TMPFILE} -C ${DESTDIR}/jpgraph --strip-components=1
13 |
--------------------------------------------------------------------------------
/install-iptables-config:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | if [ ! -f /local/systems/shared-config/iptables.conf ]; then
5 | echo $0: unable to find iptables.conf in /local/systems/shared-config
6 | exit 1
7 | fi
8 |
9 | cat /local/systems/shared-config/iptables.conf | iptables-restore
10 |
--------------------------------------------------------------------------------
/lists/README.md:
--------------------------------------------------------------------------------
1 | ## Hostname
2 | * qa.php.net
3 |
4 | ## Sponsor
5 | * [Digital Ocean](https://www.digitalocean.com/)
6 |
7 | ## Contact
8 | * systems@php.net
9 |
10 | ## Access
11 | * rasmus
12 | * derick
13 | * pollita
14 | * sas
15 | * heiglandreas
16 | * jimw
17 |
18 | ## Specs
19 | * Debian GNU/Linux 12 (bookworm)
20 | * Memory: 8GB
21 | * Disk: 160GB
22 |
23 | ## Services
24 | * mailing lists (Postfix, mlmmj)
25 | * news server (colobus)
26 | * web interface for news server
27 |
28 | ## Aliases
29 | * lists.php.net
30 | * news.php.net
31 | * news-web-origin.php.net
32 |
--------------------------------------------------------------------------------
/lists/apache2/news.php.net.conf:
--------------------------------------------------------------------------------
1 | #
2 | # Edit this file in https://github.com/php/systems repo!
3 | #
4 |
5 | # Not sure why these IPs are blocked, probably badly-behaved bots
6 | # TODO: figure out a better way to handle this, possibly automate it
7 | #
8 |
9 |
10 |
11 | #
12 | # news.php.net and lists.php.net redirect to news-web.php.net so the archives
13 | # get protection from Myra (those hostnames are directly accessible because of
14 | # SMTP and NNTP)
15 | #
16 |
17 | ServerName news.php.net
18 | Redirect / http://news-web.php.net/
19 |
20 |
21 |
22 | ServerName lists.php.net
23 | Redirect / http://news-web.php.net/
24 |
25 | RewriteEngine on
26 | RewriteCond %{SERVER_NAME} =lists.php.net
27 | RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
28 |
29 |
30 | #
31 | # news-web.php.net using mod_php, fronted by Myra
32 | #
33 |
34 | ServerName news-web.php.net
35 | ServerAdmin webmaster@php.net
36 | DocumentRoot /var/www/news.php.net
37 | DirectoryIndex index.php
38 |
39 | ErrorLog ${APACHE_LOG_DIR}/news.php.net-error.log
40 | CustomLog ${APACHE_LOG_DIR}/news.php.net-access.log combined
41 | LogLevel warn
42 |
43 | RewriteEngine on
44 | RewriteRule ^/(php.+)/start/([0-9]+) /group.php?group=$1&i=$2 [L]
45 | RewriteRule ^/(php.+)/([0-9]+) /article.php?group=$1&article=$2 [L]
46 | RewriteRule ^/(php[^/]+)(/)?$ /group.php?group=$1 [L]
47 | RewriteRule ^/(svn.+)/start/([0-9]+) /group.php?group=$1&i=$2 [L]
48 | RewriteRule ^/(svn.+)/([0-9]+) /article.php?group=$1&article=$2 [L]
49 | RewriteRule ^/(svn[^/]+)(/)?$ /group.php?group=$1 [L]
50 | RewriteRule ^/(ug.+)/start/([0-9]+) /group.php?group=$1&i=$2 [L]
51 | RewriteRule ^/(ug.+)/([0-9]+) /article.php?group=$1&article=$2 [L]
52 | RewriteRule ^/(ug[^/]+)(/)?$ /group.php?group=$1 [L]
53 |
54 |
55 | Options Indexes FollowSymLinks MultiViews ExecCGI
56 | AllowOverride None
57 |
58 | Require not blacklisted-ips
59 | Require all granted
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/lists/colobus/config:
--------------------------------------------------------------------------------
1 | ##
2 | # Edit this file in https://github.com/php/systems repo!
3 | #
4 |
5 | # vim:sw=2 ts=2 et:
6 |
7 | # might not always be the same machine, use fqdn for safety
8 | smtp_ip => lists.php.net
9 |
10 | # servername is used in some of the server's output
11 | servername => news.php.net
12 |
13 | # timeout is in seconds
14 | timeout => 90
15 | idle_timeout => 30
16 |
17 | # disallow specific nntp commands
18 | disallow => ihave,xindex
19 |
20 | # dsn for connecting to database
21 | dsn => DBI:MariaDB:database=colobus;host=127.0.0.1
22 | # dbuser and dbpass are defined in this include file
23 | include => /local/this-box/colobus.config
24 |
25 | # newsgroups
26 | #
27 | # the fields used are:
28 | # - num = the number of the newsgroup (must be unique)
29 | # - path = path to ezmlm directory for the mailing list corresponding
30 | # to this newsgroup (only num and archive/ need to be readable)
31 | # - mail = mail address to send posts to (leave out to disallow posting)
32 | # - desc = description to show for this newsgroup
33 | # - first = first post in group (in case your archive doesn't start at 1)
34 | # - moderated = moderated group (some newsreaders display this specially)
35 | # - recommend = recommend this group to new subscribers (not many
36 | # clients pay attention to this information)
37 | # - hidden = don't show in listings
38 |
39 | group php.announce {
40 | num => 1
41 | path => /var/spool/mlmmj/php-announce
42 | mail => php-announce@lists.php.net
43 | desc => Announcements of new PHP releases
44 | moderated
45 | recommend
46 | }
47 |
48 | group php.beta {
49 | num => 2
50 | path => /var/spool/mlmmj/php-beta
51 | desc => Discussion about beta releases (no longer active, see php.qa)
52 | }
53 |
54 | group php.bugs {
55 | num => 3
56 | path => /var/spool/mlmmj/php-bugs
57 | desc => Automated mailings from the bug/issue trackers
58 | mail => php-bugs@lists.php.net
59 | followup => php.internals
60 | }
61 |
62 | group php.cvs {
63 | num => 4
64 | path => /var/spool/mlmmj/php-cvs
65 | desc => Automated mailings from the PHP source repository
66 | mail => php-cvs@lists.php.net
67 | followup => php.internals
68 | }
69 |
70 | group php.db {
71 | num => 5
72 | path => /var/spool/mlmmj/php-db
73 | mail => php-db@lists.php.net
74 | desc => Using databases with PHP
75 | }
76 |
77 | group php.dev {
78 | num => 6
79 | path => /var/spool/mlmmj/php-dev
80 | desc => Developing the PHP language and runtime (list deprecated, use internals@lists.php.net)
81 | }
82 |
83 | group php.doc {
84 | num => 7
85 | path => /var/spool/mlmmj/phpdoc
86 | first => 969332401
87 | mail => phpdoc@lists.php.net
88 | desc => Writing and translating the PHP documentation
89 | }
90 |
91 | group php.doc.bugs {
92 | num => 94
93 | path => /var/spool/mlmmj/doc-bugs
94 | mail => doc-bugs@lists.php.net
95 | desc => Automated mailings from the documentation bug/issue trackers
96 | }
97 |
98 | group php.doc.cvs {
99 | num => 95
100 | path => /var/spool/mlmmj/doc-cvs
101 | mail => doc-cvs@lists.php.net
102 | desc => Changes to the main documentation repositories (doc-base, phd, doc-en)
103 | }
104 |
105 | group php.doc.chm {
106 | num => 8
107 | path => /var/spool/mlmmj/php-doc-chm
108 | desc => Developing the Windows Help (CHM) format of the documentation
109 | }
110 |
111 | group php.doc.web {
112 | num => 9
113 | path => /var/spool/mlmmj/doc-web
114 | mail => doc-web@lists.php.net
115 | desc => Developing the PHP documentation website (http://doc.php.net)
116 | }
117 |
118 | group php.doc.ar {
119 | num => 10
120 | path => /var/spool/mlmmj/doc-ar
121 | desc => Creating the Arabic documentation translation
122 | }
123 | group php.doc.bg {
124 | num => 11
125 | path => /var/spool/mlmmj/doc-bg
126 | desc => Creating the Bulgarian documentation translation
127 | }
128 | group php.doc.cs {
129 | num => 12
130 | path => /var/spool/mlmmj/doc-cs
131 | desc => Creating the Czech documentation translation
132 | }
133 | group php.doc.da {
134 | num => 13
135 | path => /var/spool/mlmmj/doc-da
136 | desc => Creating the Danish documentation translation
137 | }
138 | group php.doc.de {
139 | num => 14
140 | path => /var/spool/mlmmj/doc-de
141 | mail => doc-de@lists.php.net
142 | desc => Creating the German documentation translation
143 | }
144 | group php.doc.es {
145 | num => 15
146 | path => /var/spool/mlmmj/doc-es
147 | mail => doc-es@lists.php.net
148 | desc => Creating the Spanish documentation translation
149 | }
150 | group php.doc.el {
151 | num => 16
152 | path => /var/spool/mlmmj/doc-el
153 | desc => Creating the Greek documentation translation
154 | }
155 | group php.doc.fa {
156 | num => 17
157 | path => /var/spool/mlmmj/doc-fa
158 | desc => Creating the Farsi documentation translation
159 | }
160 | group php.doc.fi {
161 | num => 18
162 | path => /var/spool/mlmmj/doc-fi
163 | desc => Creating the Finnish documentation translation
164 | }
165 | group php.doc.fr {
166 | num => 19
167 | path => /var/spool/mlmmj/doc-fr
168 | mail => doc-fr@lists.php.net
169 | desc => Creating the French documentation translation
170 | }
171 | group php.doc.he {
172 | num => 20
173 | path => /var/spool/mlmmj/doc-he
174 | desc => Creating the Hebrew documentation translation
175 | }
176 | group php.doc.hk {
177 | num => 21
178 | path => /var/spool/mlmmj/doc-hk
179 | desc => Creating the Chinese (HK) documentation translation
180 | }
181 | group php.doc.hu {
182 | num => 22
183 | path => /var/spool/mlmmj/doc-hu
184 | desc => Creating the Hungarian documentation translation
185 | }
186 | group php.doc.id {
187 | num => 23
188 | path => /var/spool/mlmmj/doc-id
189 | desc => Creating the Indonesian documentation translation
190 | }
191 | group php.doc.it {
192 | num => 24
193 | path => /var/spool/mlmmj/doc-it
194 | mail => doc-it@lists.php.net
195 | desc => Creating the Italian documentation translation
196 | }
197 | group php.doc.ja {
198 | num => 25
199 | path => /var/spool/mlmmj/doc-ja
200 | mail => doc-ja@lists.php.net
201 | desc => Creating the Japanese documentation translation
202 | }
203 | group php.doc.kr {
204 | num => 26
205 | path => /var/spool/mlmmj/doc-kr
206 | desc => Creating the Korean documentation translation
207 | }
208 | group php.doc.lt {
209 | num => 27
210 | path => /var/spool/mlmmj/doc-lt
211 | desc => Creating the Lithuanian documentation translation
212 | }
213 | group php.doc.nl {
214 | num => 28
215 | path => /var/spool/mlmmj/doc-nl
216 | desc => Creating the Dutch documentation translation
217 | }
218 | group php.doc.no {
219 | num => 93
220 | path => /var/spool/mlmmj/doc-no
221 | desc => Creating the Norwegian documentation translation
222 | }
223 | group php.doc.pl {
224 | num => 29
225 | path => /var/spool/mlmmj/doc-pl
226 | mail => doc-pl@lists.php.net
227 | desc => Creating the Polish documentation translation
228 | }
229 | group php.doc.pt {
230 | num => 30
231 | path => /var/spool/mlmmj/doc-pt
232 | desc => Creating the Portuguese documentation translation
233 | }
234 | group php.doc.pt-br {
235 | num => 31
236 | path => /var/spool/mlmmj/doc-pt-br
237 | mail => doc-pt-br@lists.php.net
238 | desc => Creating the Brazilian Portuguese documentation translation
239 | }
240 | group php.doc.ro {
241 | num => 32
242 | path => /var/spool/mlmmj/doc-ro
243 | desc => Creating the Romanian documentation translation
244 | }
245 | group php.doc.ru {
246 | num => 33
247 | path => /var/spool/mlmmj/doc-ru
248 | mail => doc-ru@lists.php.net
249 | desc => Creating the Russian documentation translation
250 | }
251 | group php.doc.se {
252 | num => 103
253 | path => /var/spool/mlmmj/doc-se
254 | desc => Creating the Serbian documentation translation
255 | }
256 | group php.doc.sk {
257 | num => 34
258 | path => /var/spool/mlmmj/doc-sk
259 | desc => Creating the Slovak documentation translation
260 | }
261 | group php.doc.sl {
262 | num => 35
263 | path => /var/spool/mlmmj/doc-sl
264 | desc => Creating the Slovenian documentation translation
265 | }
266 | group php.doc.sv {
267 | num => 36
268 | path => /var/spool/mlmmj/doc-sv
269 | desc => Creating the Swedish documentation translation
270 | }
271 | group php.doc.tr {
272 | num => 37
273 | path => /var/spool/mlmmj/doc-tr
274 | mail => doc-tr@lists.php.net
275 | desc => Creating the Turkish documentation translation
276 | }
277 | group php.doc.tw {
278 | num => 38
279 | path => /var/spool/mlmmj/doc-tw
280 | desc => Creating the Taiwanese documentation translation
281 | }
282 | group php.doc.zh {
283 | num => 39
284 | path => /var/spool/mlmmj/doc-zh
285 | mail => doc-zh@lists.php.net
286 | desc => Creating the Chinese documentation translation
287 | }
288 |
289 | group php.evangelism {
290 | num => 40
291 | path => /var/spool/mlmmj/php-evangelism
292 | desc => Moderated discussion list about the promotion and evangelism of PHP
293 | moderated
294 | }
295 |
296 | group php.embed.cvs {
297 | num => 41
298 | path => /var/spool/mlmmj/embed-cvs
299 | desc => CVS commits for the embedded PHP module
300 | }
301 |
302 | group php.embed.dev {
303 | num => 42
304 | path => /var/spool/mlmmj/embed-dev
305 | desc => Discussion for the embedded PHP module
306 | }
307 |
308 | group php.general {
309 | num => 43
310 | path => /var/spool/mlmmj/php-general
311 | mail => php-general@lists.php.net
312 | desc => General discussions about PHP
313 | }
314 |
315 | group php.general.bg {
316 | num => 44
317 | path => /var/spool/mlmmj/general-bg
318 | desc => General discussions about PHP, in Bulgarian
319 | }
320 |
321 | group php.general.es {
322 | num => 45
323 | path => /var/spool/mlmmj/php-es
324 | mail => php-es@lists.php.net
325 | desc => General discussions about PHP, in Spanish
326 | }
327 |
328 | group php.gtk {
329 | num => 46
330 | path => /var/spool/mlmmj/php-gtk
331 | desc => Developing and using the PHP-GTK extension (no longer active, see php.gtk.*)
332 | }
333 |
334 | group php.gtk.cvs {
335 | num => 47
336 | path => /var/spool/mlmmj/php-gtk-cvs
337 | desc => Automated mailings from commits to the PHP-GTK CVS repository
338 | }
339 |
340 | group php.gtk.dev {
341 | num => 48
342 | path => /var/spool/mlmmj/php-gtk-dev
343 | desc => Developing the PHP-GTK extension
344 | }
345 |
346 | group php.gtk.doc {
347 | num => 49
348 | path => /var/spool/mlmmj/php-gtk-doc
349 | desc => Writing and translating the PHP-GTK documentation
350 | }
351 |
352 | group php.gtk.general {
353 | num => 50
354 | path => /var/spool/mlmmj/php-gtk-general
355 | desc => Using the PHP-GTK extension
356 | }
357 |
358 | group php.gtk.webmaster {
359 | num => 51
360 | path => /var/spool/mlmmj/php-gtk-webmaster
361 | desc => Developing and maintaining http://gtk.php.net/
362 | }
363 |
364 | group php.i18n {
365 | num => 52
366 | path => /var/spool/mlmmj/php-i18n
367 | mail => php-i18n@lists.php.net
368 | desc => Internationalization (i18n), localization (l10n), and PHP
369 | }
370 |
371 | group php.install {
372 | num => 53
373 | path => /var/spool/mlmmj/php-install
374 | mail => php-install@lists.php.net
375 | desc => Installing and configuring PHP
376 | }
377 |
378 | group php.internals {
379 | num => 54
380 | path => /var/spool/mlmmj/internals
381 | mail => internals@lists.php.net
382 | desc => Developing the PHP language and runtime
383 | }
384 |
385 | group php.kb {
386 | num => 55
387 | path => /var/spool/mlmmj/php-kb
388 | desc => Regular updates from the PHP Knowledge Base (no longer active)
389 | }
390 |
391 | group php.lang {
392 | num => 56
393 | path => /var/spool/mlmmj/php-lang
394 | desc => Developing a specification of the PHP language
395 | }
396 |
397 | group php.doc.license {
398 | num => 57
399 | path => /var/spool/mlmmj/doc-license
400 | mail => doc-license@lists.php.net
401 | desc => Discussing license issues with the documentation
402 | }
403 |
404 | group php.migration {
405 | num => 58
406 | path => /var/spool/mlmmj/php-migration
407 | desc => Migrating from PHP 3 to PHP 4 (no longer active)
408 | }
409 |
410 | group php.mirrors {
411 | num => 59
412 | path => /var/spool/mlmmj/php-mirrors
413 | desc => Developing and maintaining http://www.php.net/ and mirrors
414 | }
415 |
416 | group php.notes {
417 | num => 60
418 | path => /var/spool/mlmmj/php-notes
419 | desc => Automated mailings from user annotations to the manual
420 | mail => php-notes@lists.php.net
421 | followup => php.doc
422 | }
423 |
424 | group php.pear {
425 | num => 61
426 | path => /var/spool/mlmmj/php-pear
427 | desc => Developing and using PEAR (no longer active, see php.pear.*)
428 | }
429 |
430 | group php.pear.bot {
431 | num => 62
432 | path => /var/spool/mlmmj/pearbot
433 | desc => An IRC bot developed in PHP
434 | }
435 |
436 | group php.pear.comments {
437 | num => 63
438 | path => /var/spool/mlmmj/pear-comments
439 | desc => PEAR Package Comments Review
440 | }
441 |
442 | group php.pear.cvs {
443 | num => 64
444 | path => /var/spool/mlmmj/pear-cvs
445 | mail => pear-cvs@lists.php.net
446 | desc => Automated mailings from commits to the PEAR CVS repository
447 | }
448 |
449 | group php.pear.dev {
450 | num => 65
451 | path => /var/spool/mlmmj/pear-dev
452 | mail => pear-dev@lists.php.net
453 | desc => Developing the PHP Extension and Application Repository
454 | }
455 |
456 | group php.pear.doc {
457 | num => 66
458 | path => /var/spool/mlmmj/pear-doc
459 | mail => pear-doc@lists.php.net
460 | desc => Documenting the PHP Extension and Application Repository
461 | }
462 |
463 | group php.pear.general {
464 | num => 67
465 | path => /var/spool/mlmmj/pear-general
466 | mail => pear-general@lists.php.net
467 | desc => Using the PHP Extension and Application Repository
468 | }
469 |
470 | group php.pear.qa {
471 | num => 68
472 | path => /var/spool/mlmmj/pear-qa
473 | mail => pear-qa@lists.php.net
474 | desc => Discussing the PEAR Quality Assurance Initiative
475 | }
476 |
477 | group php.pear.webmaster {
478 | num => 69
479 | path => /var/spool/mlmmj/pear-webmaster
480 | mail => pear-webmaster@lists.php.net
481 | desc => Developing and maintaining http://pear.php.net/
482 | }
483 |
484 | group php.pear.core {
485 | num => 70
486 | path => /var/spool/mlmmj/pear-core
487 | mail => pear-core@lists.php.net
488 | desc => Core developers of the PHP Extension and Application Repository
489 | }
490 |
491 | group php.pecl.cvs {
492 | num => 71
493 | path => /var/spool/mlmmj/pecl-cvs
494 | mail => pecl-cvs@lists.php.net
495 | desc => Automated mailings from commits to the PECL source repositories
496 | }
497 |
498 | group php.pecl.dev {
499 | num => 72
500 | path => /var/spool/mlmmj/pecl-dev
501 | mail => pecl-dev@lists.php.net
502 | desc => Discussion list for PECL projects
503 | }
504 |
505 | group php.pres {
506 | num => 73
507 | path => /var/spool/mlmmj/pres
508 | mail => pres@lists.php.net
509 | desc => Writing PHP presentations and the presentation tool
510 | }
511 |
512 | group php.qa {
513 | num => 74
514 | path => /var/spool/mlmmj/php-qa
515 | mail => php-qa@lists.php.net
516 | desc => Assuring the quality of PHP releases
517 | }
518 |
519 |
520 | group php.qa.reports {
521 | num => 75
522 | path => /var/spool/mlmmj/qa-reports
523 | desc => make test QA reports.
524 | }
525 |
526 | group php.smarty.cvs {
527 | num => 76
528 | path => /var/spool/mlmmj/smarty-cvs
529 | desc => Automated mailings from commits to the Smarty CVS repository
530 | }
531 |
532 | group php.smarty.dev {
533 | num => 77
534 | path => /var/spool/mlmmj/smarty-dev
535 | desc => Developing the Smarty template engine
536 | }
537 |
538 | group php.smarty.general {
539 | num => 78
540 | path => /var/spool/mlmmj/smarty-general
541 | desc => Using the Smarty template engine to develop websites
542 | }
543 |
544 | group php.soap {
545 | num => 79
546 | path => /var/spool/mlmmj/soap
547 | desc => Developing the PHP SOAP implementation
548 | }
549 |
550 | group php.template {
551 | num => 80
552 | path => /var/spool/mlmmj/php-template
553 | desc => Developing a template system for PHP (no longer active)
554 | }
555 |
556 | group php.test {
557 | num => 81
558 | path => /var/spool/mlmmj/php-test
559 | mail => php-test@lists.php.net
560 | desc => Used for testing the mailing lists and news server
561 | }
562 |
563 | group php.xml.dev {
564 | num => 82
565 | path => /var/spool/mlmmj/php-xml-dev
566 | desc => The development of the PHP XML API
567 | }
568 |
569 | group php.version4 {
570 | num => 84
571 | path => /var/spool/mlmmj/php4beta
572 | desc => Discussion about PHP 4 (no longer active, see php.general)
573 | }
574 |
575 | group php.windows {
576 | num => 85
577 | path => /var/spool/mlmmj/php-windows
578 | mail => php-windows@lists.php.net
579 | desc => Using PHP on Windows operating systems
580 | }
581 |
582 | group php.zend-engine.cvs {
583 | num => 86
584 | path => /var/spool/mlmmj/zend-engine-cvs
585 | desc => Automated mailings from commits to the Zend Engine CVS modules
586 | }
587 |
588 | group php.doc.ca {
589 | num => 87
590 | path => /var/spool/mlmmj/doc-ca
591 | desc => Creating the Catalan documentation translation
592 | }
593 |
594 | group php.gd.cvs {
595 | num => 88
596 | path => /var/spool/mlmmj/gd-cvs
597 | desc => Automated mailings from commits to the GD CVS repository
598 | }
599 |
600 | group php.gd.devel {
601 | num => 89
602 | path => /var/spool/mlmmj/gd-devel
603 | mail => gd-devel@lists.php.net
604 | desc => Developing libgd (https://www.libgd.org)
605 | }
606 |
607 | group php.gd.bugs {
608 | num => 90
609 | path => /var/spool/mlmmj/gd-bugs
610 | desc => GD Bugs Mailinglist
611 | }
612 |
613 | group php.qa.primary-tester {
614 | num => 91
615 | path => /var/spool/mlmmj/primary-qa-tester
616 | desc => News for primary QA testers
617 | moderated
618 | }
619 |
620 | group php.apc.dev {
621 | num => 92
622 | path => /var/spool/mlmmj/apc-dev
623 | desc => APC Development Mailinglist
624 | }
625 |
626 | group php.webmaster {
627 | num => 96
628 | path => /var/spool/mlmmj/php-webmaster
629 | mail => php-webmaster@lists.php.net
630 | desc => Discussing and maintaining the php.net web sites
631 | }
632 |
633 | group php.on.dlr {
634 | num => 97
635 | path => /var/spool/mlmmj/php-on-dlr
636 | desc => Implementing PHP on the DLR
637 | }
638 |
639 | group php.objc {
640 | num => 98
641 | path => /var/spool/mlmmj/php-objc
642 | desc => An Objective-C bridge for PHP
643 | }
644 |
645 | group php.pdo {
646 | num => 99
647 | path => /var/spool/mlmmj/pdo
648 | desc => PHP Data Objects
649 | }
650 |
651 | group php.pear.bugs {
652 | num => 100
653 | path => /var/spool/mlmmj/pear-bugs
654 | desc => PEAR Bugs
655 | }
656 |
657 | group php.internals.win {
658 | num => 101
659 | path => /var/spool/mlmmj/internals-win
660 | mail => internals-win@lists.php.net
661 | desc => Windows Internals
662 | }
663 |
664 | group svn.migration {
665 | num => 102
666 | path => /var/spool/mlmmj/svn-migration
667 | desc => Subversion Migration Project
668 | }
669 |
670 | group ug.admins {
671 | num => 104
672 | path => /var/spool/mlmmj/ug-admins
673 | mail => ug-admins@lists.php.net
674 | desc => Usergroup Coordination
675 | }
676 |
677 | group php.gsoc {
678 | num => 105
679 | path => /var/spool/mlmmj/gsoc
680 | desc => Google Summer Of Code and PHP
681 | }
682 |
683 | group php.standards {
684 | num => 106
685 | path => /var/spool/mlmmj/standards
686 | mail => standards@lists.php.net
687 | desc => PHP Naming Standardization
688 | }
689 |
690 | group php.doc.sr {
691 | num => 107
692 | path => /var/spool/mlmmj/doc-sr
693 | desc => Creating the Serbian documentation translation
694 | }
695 |
696 | group php.git-pulls {
697 | num => 108
698 | path => /var/spool/mlmmj/git-pulls
699 | mail => git-pulls@lists.php.net
700 | desc => Automated mailings about pull requests to the PHP source
701 | }
702 |
703 | group php.standards.cvs {
704 | num => 109
705 | path => /var/spool/mlmmj/standards-vcs
706 | mail => standards-vcs@lists.php.net
707 | desc => Automated mailings from commits to the PHP Language Specification
708 | }
709 |
710 | group php.doc.uk {
711 | num => 110
712 | path => /var/spool/mlmmj/doc-uk
713 | mail => doc-uk@lists.php.net
714 | desc => Creating the Ukranian documentation translation
715 | }
716 |
717 | # last number is 110, next number to use is 111 - please keep this line
718 | # at the bottom and update accordingly
719 |
--------------------------------------------------------------------------------
/lists/install-config.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # exit if something fails
4 | set -e
5 |
6 | if [ "$(id -u)" != "0" ]; then
7 | echo $0 must be run as root
8 | exit 1
9 | fi
10 |
11 | ts=$(date +"%Y-%m-%d-%T")
12 | backup=/tmp/systems-$ts
13 |
14 | echo -n "Backing up existing files to $backup..."
15 |
16 | mkdir -p $backup/apache2 $backup/colobus $backup/postfix $backup/supervisor
17 |
18 | crontab -u root -l > $backup/crontab
19 |
20 | # only back up files if they aren't a symlink
21 |
22 | [ ! -h /etc/apache2/sites-available/news.php.net ] && \
23 | cp /etc/apache2/sites-available/news.php.net $backup/apache2/news.php.net.conf
24 |
25 | [ ! -h /local/colobus/config ] && cp /local/colobus/config $backup/colobus/config
26 |
27 | cp /etc/supervisor/conf.d/* $backup/supervisor/
28 |
29 | [ ! -h /etc/aliases ] && \
30 | cp /etc/aliases $backup/postfix/aliases
31 | [ ! -h /etc/postfix/main.cf ] && \
32 | cp /etc/aliases $backup/postfix/main.cf
33 |
34 | echo "done."
35 |
36 | if [ ! -f /local/systems/lists/colobus/config ]; then
37 | echo $0: new config not available, not loading it
38 | exit 1
39 | fi
40 |
41 | echo -n "Putting new configuration into place..."
42 |
43 | crontab -u root - < /local/systems/cron-box-crontab
44 |
45 | # apache2
46 | rm -f /etc/apache2/sites-enabled/*.conf
47 | ln -s -t /etc/apache2/sites-enabled /local/systems/lists/apache2/*.conf
48 | service apache2 reload
49 |
50 | # postfix
51 | rm -f /etc/aliases /etc/postfix/main.cf
52 | ln -s /local/systems/lists/postfix/aliases /etc/aliases
53 | ln -s /local/systems/lists/postfix/main.cf /etc/postfix
54 | newaliases
55 | service postfix reload
56 |
57 | # supervisor
58 | rm -f /etc/supervisor/conf.d/*.conf
59 | ln -s -t /etc/supervisor/conf.d /local/systems/lists/supervisor/*.conf
60 | service supervisor restart
61 |
62 | echo "done."
63 |
--------------------------------------------------------------------------------
/lists/postfix/aliases:
--------------------------------------------------------------------------------
1 | #
2 | # Edit this file in https://github.com/php/systems repo!
3 | #
4 |
5 | # /etc/aliases
6 | mailer-daemon: postmaster
7 | postmaster: root
8 | nobody: root
9 | hostmaster: root
10 | usenet: root
11 | news: root
12 | webmaster: root
13 | www: root
14 | ftp: root
15 | abuse: root
16 | noc: root
17 | security: root
18 |
19 | # mailinglists
20 | adt-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/adt-cvs/"
21 | apc-dev: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/apc-dev/"
22 | chek-admins: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/chek-admins/"
23 | doc-ar.orig: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-ar.orig/"
24 | doc-ar: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-ar/"
25 | doc-bg: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-bg/"
26 | doc-bugs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-bugs/"
27 | doc-ca: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-ca/"
28 | doc-cs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-cs/"
29 | doc-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-cvs/"
30 | doc-da: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-da/"
31 | doc-de: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-de/"
32 | doc-el: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-el/"
33 | doc-es: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-es/"
34 | doc-fa: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-fa/"
35 | doc-fi: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-fi/"
36 | doc-fr: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-fr/"
37 | doc-he: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-he/"
38 | doc-hk: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-hk/"
39 | doc-hu: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-hu/"
40 | doc-id: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-id/"
41 | doc-it: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-it/"
42 | doc-ja: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-ja/"
43 | doc-kr: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-kr/"
44 | doc-license: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-license/"
45 | doc-lt: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-lt/"
46 | doc-nl: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-nl/"
47 | doc-no: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-no/"
48 | doc-pl: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-pl/"
49 | doc-pt-br: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-pt-br/"
50 | doc-pt: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-pt/"
51 | doc-ro: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-ro/"
52 | doc-ru: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-ru/"
53 | doc-se: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-se/"
54 | doc-sk: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-sk/"
55 | doc-sl: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-sl/"
56 | doc-sr: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-sr/"
57 | doc-sv: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-sv/"
58 | doc-tr: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-tr/"
59 | doc-tw: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-tw/"
60 | doc-uk: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-uk/"
61 | doc-web: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-web/"
62 | doc-zh: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/doc-zh/"
63 | embed-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/embed-cvs/"
64 | embed-dev: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/embed-dev/"
65 | gd-bugs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/gd-bugs/"
66 | gd-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/gd-cvs/"
67 | gd-devel: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/gd-devel/"
68 | general-bg: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/general-bg/"
69 | git-pulls: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/git-pulls/"
70 | gsoc: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/gsoc/"
71 | internals: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/internals/"
72 | internals-win: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/internals-win/"
73 | jitterbug: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/jitterbug/"
74 | network-status: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/network-status/"
75 | pcg: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pcg/"
76 | pdo-commits: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pdo-commits/"
77 | pdo: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pdo/"
78 | pearbot: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pearbot/"
79 | pear-bugs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pear-bugs/"
80 | pear-comments: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pear-comments/"
81 | pear-core: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pear-core/"
82 | pear-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pear-cvs/"
83 | pear-dev: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pear-dev/"
84 | pear-doc: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pear-doc/"
85 | pear-general: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pear-general/"
86 | pear-qa: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pear-qa/"
87 | pear-webmaster: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pear-webmaster/"
88 | pecl-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pecl-cvs/"
89 | pecl-dev: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pecl-dev/"
90 | php4beta: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php4beta/"
91 | php-announce: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-announce/"
92 | php-beta: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-beta/"
93 | php-bugs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-bugs/"
94 | php-build-alarm: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-build-alarm/"
95 | php-cvs-daily: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-cvs-daily/"
96 | php-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-cvs/"
97 | php-db: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-db/"
98 | php-dev: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-dev/"
99 | php-doc-chm: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-doc-chm/"
100 | phpdoc: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/phpdoc/"
101 | php-es: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-es/"
102 | php-evangelism: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-evangelism/"
103 | php-example: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-example/"
104 | php-general.baq: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-general.baq/"
105 | php-general: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-general/"
106 | php-gtk-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-gtk-cvs/"
107 | php-gtk-dev: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-gtk-dev/"
108 | php-gtk-doc: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-gtk-doc/"
109 | php-gtk-general: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-gtk-general/"
110 | php-gtk: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-gtk/"
111 | php-gtk-webmaster: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-gtk-webmaster/"
112 | php-i18n: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-i18n/"
113 | php-install: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-install/"
114 | php-kb: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-kb/"
115 | php-lang: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-lang/"
116 | php-migration: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-migration/"
117 | php-mirrors: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-mirrors/"
118 | php-notes: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-notes/"
119 | php-objc: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-objc/"
120 | php-on-dlr: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-on-dlr/"
121 | php-pear: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-pear/"
122 | php-qa: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-qa/"
123 | php-template: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-template/"
124 | php-test2: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-test2/"
125 | php-test: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-test/"
126 | php-webmaster: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-webmaster/"
127 | php-windows: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-windows/"
128 | php-xml-dev: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/php-xml-dev/"
129 | pres: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/pres/"
130 | primary-qa-tester: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/primary-qa-tester/"
131 | qa-reports: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/qa-reports/"
132 | rs-admins: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/rs-admins/"
133 | smarty-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/smarty-cvs/"
134 | smarty-dev: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/smarty-dev/"
135 | smarty-general: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/smarty-general/"
136 | soap: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/soap/"
137 | standards: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/standards/"
138 | standards-vcs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/standards-vcs/"
139 | svn-migration: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/svn-migration/"
140 | ug-admins: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/ug-admins/"
141 | zend-engine-cvs: "|/usr/bin/mlmmj-receive -L /var/spool/mlmmj/zend-engine-cvs/"
142 |
--------------------------------------------------------------------------------
/lists/postfix/main.cf:
--------------------------------------------------------------------------------
1 | #
2 | # Edit this file in https://github.com/php/systems repo!
3 | #
4 |
5 | #
6 | # This only changes defaults or makes explicit things we really count on
7 | #
8 | # We assume 3.6-era defaults, see http://www.postfix.org/COMPATIBILITY_README.html
9 | compatibility_level = 3.6
10 |
11 | # no need to 'biff' users when mail is delivered
12 | biff = no
13 |
14 | # enable bad sender restrictions
15 | smtpd_sender_restrictions =
16 | check_sender_access hash:/etc/postfix/bad_sender
17 |
18 | # TLS parameters
19 | smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
20 | smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
21 | smtpd_tls_security_level=may
22 | smtp_tls_CApath=/etc/ssl/certs
23 | smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
24 |
25 | # Just /etc/aliases, no NIS
26 | alias_maps = hash:/etc/aliases
27 |
28 | # Our origin and destinations we accept
29 | myorigin = php.net
30 | mydestination = $myhostname, lists.php.net, localhost
31 |
32 | # We relay everything going out through php-smtp4-ip4.php.net
33 | relayhost = php-smtp4-ip4.php.net
34 |
35 | # We only really trust localhost
36 | mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
37 |
38 | # IMPORTANT, this is what mlmmj expects for things like +subscribe
39 | recipient_delimiter = +
40 |
41 | # This is smaller than default, not sure why
42 | mailbox_size_limit = 10240000
43 |
--------------------------------------------------------------------------------
/lists/supervisor/colobus.conf:
--------------------------------------------------------------------------------
1 | [program:colobus]
2 | directory=/local/colobus
3 | command=/local/colobus/run /local/systems/lists/colobus/config
4 | autostart=true
5 | autorestart=true
6 | stdout_logfile=/var/log/colobus.out.log
7 | stderr_logfile=/var/log/colobus.err.log
8 |
--------------------------------------------------------------------------------
/lists/sync-mlmmj-and-colobus.php:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | (.+)$/', $line, $match)) {
30 | $k = trim($match[1]);
31 | $v = trim($match[2]);
32 |
33 | if (strtolower($k) == 'include') {
34 | /*
35 | * We don't actually handle include, we don't need it here.
36 | [ $more_config, $more_groups ] = read_config($v);
37 | $config += $more_config;
38 | $groups += $more_groups;
39 | */
40 | continue;
41 | }
42 |
43 | if (isset($group)) {
44 | $groups[$group][$k] = $v;
45 | } else {
46 | $config[$k] = $v;
47 | }
48 | }
49 |
50 | if (preg_match('/group\s*(\S+)\s*\{/i', $line, $match)) {
51 | $group = $match[1];
52 | }
53 | }
54 |
55 | return [ $config, $groups ];
56 | }
57 |
58 | $should_be_active = [];
59 |
60 | foreach (array_keys($groups) as $name) {
61 | $path = $groups[$name]['path'];
62 | if (array_key_exists('mail', $groups[$name]) || array_key_exists('followup', $groups[$name])) {
63 | $should_be_active[$path] = 1;
64 | }
65 | }
66 |
67 | if (!count($should_be_active)) {
68 | die("No active groups, aborting\n");
69 | }
70 |
71 | $spool = '/var/spool/mlmmj';
72 |
73 | $dh = opendir($spool)
74 | or die("Can't open spool directory '{$spool}'\n");
75 |
76 | while ($file = readdir($dh)) {
77 | if (str_starts_with($file, '.')) {
78 | continue;
79 | }
80 |
81 | $path = $spool . "/" . $file;
82 |
83 | if (array_key_exists($path, $should_be_active)) {
84 | if (file_exists($path . "/control/access")) {
85 | unlink($path . "/control/access");
86 | unlink($path . "/control/closedlistsub");
87 | echo "{$path} opened\n";
88 | }
89 | } else {
90 | if (!file_exists($path . "/control/access")) {
91 | touch($path . "/control/access");
92 | touch($path . "/control/closedlistsub");
93 | echo "{$path} closed\n";
94 | }
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/lists/users:
--------------------------------------------------------------------------------
1 | # Username : Name : GitHub Username
2 | derick:Derick Rethans:derickr
3 | jimw:Jim Winstead:jimwins
4 |
--------------------------------------------------------------------------------
/main.php.net/apache2/sites-available/gcov.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | ServerName gcov.php.net
3 |
4 | RewriteEngine On
5 | RewriteRule (.*) https://app.codecov.io/gh/php/php-src [R=301,L]
6 |
7 | CustomLog /var/log/apache2/gcov.php.net.access.log combined
8 | ErrorLog /var/log/apache2/gcov.php.net.error.log
9 |
10 |
11 |
12 |
13 | ServerAdmin webmaster@php.net
14 | ServerName gcov.php.net
15 |
16 | Protocols h2 http/1.1
17 |
18 | SSLEngine on
19 |
20 | SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
21 | SSLHonorCipherOrder off
22 |
23 | RewriteEngine On
24 | RewriteRule (.*) https://heap.space [R=301,L]
25 |
26 | CustomLog /var/log/apache2/gcov.php.net.access.log combined
27 | ErrorLog /var/log/apache2/gcov.php.net.error.log
28 | Include /etc/letsencrypt/options-ssl-apache.conf
29 | SSLCertificateFile /etc/letsencrypt/live/lxr.php.net/fullchain.pem
30 | SSLCertificateKeyFile /etc/letsencrypt/live/lxr.php.net/privkey.pem
31 |
32 |
--------------------------------------------------------------------------------
/main.php.net/apache2/sites-available/lxr.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | ServerName lxr.php.net
3 |
4 | RewriteEngine On
5 | RewriteRule (.*) https://heap.space [R=301,L]
6 |
7 | CustomLog /var/log/apache2/lxr.php.net.access.log combined
8 | ErrorLog /var/log/apache2/lxr.php.net.error.log
9 |
10 |
11 |
12 |
13 | ServerAdmin webmaster@php.net
14 | ServerName lxr.php.net
15 |
16 | Protocols h2 http/1.1
17 |
18 | SSLEngine on
19 |
20 | SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
21 | SSLHonorCipherOrder off
22 |
23 | RewriteEngine On
24 | RewriteRule (.*) https://heap.space [R=301,L]
25 |
26 | CustomLog /var/log/apache2/lxr.php.net.access.log combined
27 | ErrorLog /var/log/apache2/lxr.php.net.error.log
28 | Include /etc/letsencrypt/options-ssl-apache.conf
29 | SSLCertificateFile /etc/letsencrypt/live/lxr.php.net/fullchain.pem
30 | SSLCertificateKeyFile /etc/letsencrypt/live/lxr.php.net/privkey.pem
31 |
32 |
--------------------------------------------------------------------------------
/main.php.net/apache2/sites-available/main.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | ServerName main.php.net
3 | ServerAlias master.php.net
4 |
5 | RewriteEngine On
6 | RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
7 | RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
8 |
9 |
10 |
11 | ServerAdmin webmaster@php.net
12 | ServerName main.php.net
13 | ServerAlias master.php.net
14 |
15 | DocumentRoot /local/mirrors/php-main-web/public
16 |
17 |
18 | Options All +FollowSymLinks -Indexes
19 | AllowOverride All
20 | Require all granted
21 |
22 |
23 | RewriteEngine on
24 | RewriteRule ^/note/edit/([0-9]+)$ /manage/user-notes.php?action=edit+$1 [R]
25 | RewriteRule ^/note/(reject|delete)/([0-9]+)$ /manage/user-notes.php?action=$1+$2&report=yes [R]
26 | RewriteRule ^/note/delete/([0-9]+)/(.*)$ /manage/user-notes.php?action=delete+$1&report=yes&reason=$2 [R]
27 |
28 | # If requested resource exists as a file or directory, go to it
29 | #RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
30 | #RewriteCond %{DOCUMENT_ROOT}/$1 -d
31 | #RewriteRule (.*) - [L]
32 | # Requested resource does not exist, rewrite if it exists in /public
33 | #RewriteCond %{DOCUMENT_ROOT}/public/$1 -f [OR]
34 | #RewriteCond %{DOCUMENT_ROOT}/public/$1 -d
35 | #RewriteRule (.*) /public/$1 [L]
36 |
37 | # for the GITHUB_SECRET and BUGS_MAGIC_COOKIE secret variables
38 | Include /local/this-box/apache.conf
39 |
40 | Protocols h2 http/1.1
41 |
42 | SSLEngine on
43 | #SSLCertificateFile /local/this-box/certificate_2021.crt
44 | #SSLCertificateKeyFile /local/this-box/WILDCARD.php.net.key
45 | #SSLCertificateChainFile /local/this-box/chain_2021.crt
46 |
47 | SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
48 | SSLHonorCipherOrder off
49 | Include /etc/letsencrypt/options-ssl-apache.conf
50 | SSLCertificateFile /etc/letsencrypt/live/lxr.php.net/fullchain.pem
51 | SSLCertificateKeyFile /etc/letsencrypt/live/lxr.php.net/privkey.pem
52 |
53 |
--------------------------------------------------------------------------------
/main.php.net/apache2/sites-available/status.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | ServerName status.php.net
3 |
4 | RewriteEngine On
5 | RewriteRule (.*) https://php.net [R=301,L]
6 |
7 | CustomLog /var/log/apache2/status.php.net.access.log combined
8 | ErrorLog /var/log/apache2/status.php.net.error.log
9 |
10 |
11 |
12 |
13 | ServerAdmin webmaster@php.net
14 | ServerName status.php.net
15 |
16 | Protocols h2 http/1.1
17 |
18 | SSLEngine on
19 |
20 | SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
21 | SSLHonorCipherOrder off
22 |
23 | RewriteEngine On
24 | RewriteRule (.*) https://php.net [R=301,L]
25 |
26 | CustomLog /var/log/apache2/status.php.net.access.log combined
27 | ErrorLog /var/log/apache2/status.php.net.error.log
28 | Include /etc/letsencrypt/options-ssl-apache.conf
29 | SSLCertificateFile /etc/letsencrypt/live/lxr.php.net/fullchain.pem
30 | SSLCertificateKeyFile /etc/letsencrypt/live/lxr.php.net/privkey.pem
31 |
32 |
--------------------------------------------------------------------------------
/maintain-main:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id$
3 | # Do whatever we need to do to run the "main" facilities
4 |
5 | /local/systems/update-systems
6 | rsync -qavzC --timeout=600 --delete --delete-after --filter='P github-config.php' rsync.php.net::php-main-web /local/mirrors/php-main-web
7 |
8 | #php -r '
9 | #$token=rtrim(file_get_contents("/local/this-box/CVSPASSTOKEN"));
10 | #include "/local/mirrors/php-main-web/fetch/cvspasswd.php";
11 | #' > /repository/CVSROOT/passwd
12 |
13 | #/usr/local/bin/php /local/mirrors/php-main-web/scripts/mirror-test
14 |
15 | /local/systems/process-main-zone-file
16 |
17 | if test "$how" = "weekly" ; then
18 | php /local/mirrors/php-main-web/scripts/email-note-summaries
19 | php /local/mirrors/php-main-web/scripts/event-weekly-email
20 | php /local/mirrors/php-main-web/scripts/remove-low-rated-notes
21 | fi
22 |
--------------------------------------------------------------------------------
/maintain-master-dns.php:
--------------------------------------------------------------------------------
1 | /dev/null
17 | fi
18 |
--------------------------------------------------------------------------------
/no-feedback-bugsweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | /srv/bugs.php.net/scripts/cron/no-feedback
3 |
--------------------------------------------------------------------------------
/php-web4/nginx/mime.types:
--------------------------------------------------------------------------------
1 |
2 | types {
3 | text/html html htm shtml;
4 | text/css css;
5 | text/xml xml;
6 | image/gif gif;
7 | image/jpeg jpeg jpg;
8 | application/javascript js;
9 | application/atom+xml atom;
10 | application/rss+xml rss;
11 | text/javascript mjs;
12 |
13 | text/mathml mml;
14 | text/plain txt;
15 | text/vnd.sun.j2me.app-descriptor jad;
16 | text/vnd.wap.wml wml;
17 | text/x-component htc;
18 |
19 | image/avif avif;
20 | image/png png;
21 | image/svg+xml svg svgz;
22 | image/tiff tif tiff;
23 | image/vnd.wap.wbmp wbmp;
24 | image/webp webp;
25 | image/x-icon ico;
26 | image/x-jng jng;
27 | image/x-ms-bmp bmp;
28 |
29 | font/woff woff;
30 | font/woff2 woff2;
31 |
32 | application/java-archive jar war ear;
33 | application/json json;
34 | application/mac-binhex40 hqx;
35 | application/msword doc;
36 | application/pdf pdf;
37 | application/postscript ps eps ai;
38 | application/rtf rtf;
39 | application/vnd.apple.mpegurl m3u8;
40 | application/vnd.google-earth.kml+xml kml;
41 | application/vnd.google-earth.kmz kmz;
42 | application/vnd.ms-excel xls;
43 | application/vnd.ms-fontobject eot;
44 | application/vnd.ms-powerpoint ppt;
45 | application/vnd.oasis.opendocument.graphics odg;
46 | application/vnd.oasis.opendocument.presentation odp;
47 | application/vnd.oasis.opendocument.spreadsheet ods;
48 | application/vnd.oasis.opendocument.text odt;
49 | application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
50 | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
51 | application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
52 | application/vnd.wap.wmlc wmlc;
53 | application/wasm wasm;
54 | application/x-7z-compressed 7z;
55 | application/x-cocoa cco;
56 | application/x-java-archive-diff jardiff;
57 | application/x-java-jnlp-file jnlp;
58 | application/x-makeself run;
59 | application/x-perl pl pm;
60 | application/x-pilot prc pdb;
61 | application/x-rar-compressed rar;
62 | application/x-redhat-package-manager rpm;
63 | application/x-sea sea;
64 | application/x-shockwave-flash swf;
65 | application/x-stuffit sit;
66 | application/x-tcl tcl tk;
67 | application/x-x509-ca-cert der pem crt;
68 | application/x-xpinstall xpi;
69 | application/xhtml+xml xhtml;
70 | application/xspf+xml xspf;
71 | application/zip zip;
72 |
73 | application/octet-stream bin exe dll;
74 | application/octet-stream deb;
75 | application/octet-stream dmg;
76 | application/octet-stream iso img;
77 | application/octet-stream msi msp msm;
78 |
79 | audio/midi mid midi kar;
80 | audio/mpeg mp3;
81 | audio/ogg ogg;
82 | audio/x-m4a m4a;
83 | audio/x-realaudio ra;
84 |
85 | video/3gpp 3gpp 3gp;
86 | video/mp2t ts;
87 | video/mp4 mp4;
88 | video/mpeg mpeg mpg;
89 | video/quicktime mov;
90 | video/webm webm;
91 | video/x-flv flv;
92 | video/x-m4v m4v;
93 | video/x-mng mng;
94 | video/x-ms-asf asx asf;
95 | video/x-ms-wmv wmv;
96 | video/x-msvideo avi;
97 | }
98 |
--------------------------------------------------------------------------------
/php-web4/nginx/nginx.conf:
--------------------------------------------------------------------------------
1 | user www-data;
2 | worker_processes 4;
3 | pid /run/nginx.pid;
4 | include /etc/nginx/modules-enabled/*.conf;
5 |
6 | events {
7 | worker_connections 768;
8 | multi_accept on;
9 | }
10 |
11 | http {
12 |
13 | ##
14 | # Basic Settings
15 | ##
16 |
17 | sendfile on;
18 | tcp_nopush on;
19 | tcp_nodelay on;
20 | keepalive_timeout 3600;
21 | types_hash_max_size 2048;
22 | server_tokens off;
23 |
24 | # server_names_hash_bucket_size 64;
25 | # server_name_in_redirect off;
26 |
27 | include /etc/nginx/mime.types;
28 | default_type application/octet-stream;
29 |
30 | ##
31 | # SSL Settings
32 | ##
33 |
34 | ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
35 | ssl_prefer_server_ciphers on;
36 |
37 | ##
38 | # Logging Settings
39 | ##
40 | log_format combined_realip '$http_x_forwarded_for - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
41 |
42 | #access_log /var/log/nginx/access.log combined_realip;
43 | #error_log /var/log/nginx/error.log combined_realip;
44 |
45 | access_log /var/log/nginx/access.log combined_realip;
46 | error_log /var/log/nginx/error.log;
47 |
48 | ##
49 | # Gzip Settings
50 | ##
51 |
52 | # gzip on;
53 |
54 | # gzip_vary on;
55 | # gzip_proxied any;
56 | # gzip_comp_level 6;
57 | # gzip_buffers 16 8k;
58 | # gzip_http_version 1.1;
59 | # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
60 |
61 | ##
62 | # Virtual Host Configs
63 | ##
64 |
65 | include /etc/nginx/conf.d/*.conf;
66 | include /etc/nginx/sites-enabled/*;
67 | }
68 |
69 |
70 | #mail {
71 | # # See sample authentication script at:
72 | # # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
73 | #
74 | # # auth_http localhost/auth.php;
75 | # # pop3_capabilities "TOP" "USER";
76 | # # imap_capabilities "IMAP4rev1" "UIDPLUS";
77 | #
78 | # server {
79 | # listen localhost:110;
80 | # protocol pop3;
81 | # proxy on;
82 | # }
83 | #
84 | # server {
85 | # listen localhost:143;
86 | # protocol imap;
87 | # proxy on;
88 | # }
89 | #}
90 |
--------------------------------------------------------------------------------
/php-web4/nginx/sites-available/www.php.net:
--------------------------------------------------------------------------------
1 | ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
2 |
3 | ssl_session_cache shared:SSL:10m;
4 |
5 | ssl_session_timeout 1440m;
6 |
7 | server {
8 | listen 45.112.84.4:80;
9 | listen [2a02:cb43:8000::1101]:80;
10 |
11 | server_name php.net www.php.net secure.php.net;
12 |
13 | return 301 https://www.php.net$request_uri;
14 | }
15 |
16 | server {
17 | listen 45.112.84.4:443 ssl http2;
18 | listen [2a02:cb43:8000::1101]:443 ssl http2;
19 |
20 | ssl_certificate /etc/ssl/private/star_php_net_2019.all;
21 | ssl_certificate_key /etc/ssl/private/star_php_net_2019.all;
22 |
23 | server_name php.net secure.php.net;
24 |
25 | return 301 https://www.php.net$request_uri;
26 | }
27 |
28 | server {
29 | listen 45.112.84.4:443 ssl http2;
30 | listen [2a02:cb43:8000::1101]:443 ssl http2;
31 |
32 | ssl_certificate /etc/ssl/private/star_php_net_2019.all;
33 | ssl_certificate_key /etc/ssl/private/star_php_net_2019.all;
34 |
35 | server_name www.php.net;
36 |
37 | root /var/www/www.php.net;
38 |
39 | # temp test
40 | keepalive_timeout 3600;
41 | keepalive_requests 10000000;
42 |
43 | location ~ \.php$ {
44 | if (!-f /var/www/www.php.net$uri) {
45 | return 404;
46 | }
47 |
48 | include snippets/fastcgi-php.conf;
49 |
50 | fastcgi_pass unix:/run/php/php8.2-fpm.sock;
51 | fastcgi_intercept_errors on;
52 |
53 | fastcgi_param MIRROR_LANGUAGE "en";
54 | fastcgi_param MIRROR_STATS "0";
55 | }
56 |
57 | location / {
58 | index index.php index.html;
59 | try_files $uri $uri/ $uri.php;
60 | }
61 |
62 | error_page 401 = /error.php;
63 | error_page 403 = /error.php;
64 | error_page 404 = /error.php;
65 | }
66 |
--------------------------------------------------------------------------------
/php.net.zone:
--------------------------------------------------------------------------------
1 | ; vim:ft=bindzone noet ts=7:
2 | ; $Id$
3 | $ORIGIN .
4 | $TTL 300 ; 5 minutes
5 | php.net. IN SOA ns1.php.net. admin.easydns.com. (
6 | @SERIAL@ ; serial
7 | 16384 ; refresh (4 hours 33 minutes 4 seconds)
8 | 2048 ; retry (34 minutes 8 seconds)
9 | 1048576 ; expire (1 week 5 days 3 hours 16 minutes 16 seconds)
10 | 2560 ; minimum (42 minutes 40 seconds)
11 | )
12 | IN A 185.85.0.29 ; php-web4 via myra proxy
13 | IN AAAA 2a02:cb40:200::1ad ; php-web4 via myra proxy
14 | IN NS dns3.easydns.org.
15 | IN NS dns1.easydns.com.
16 | IN NS dns2.easydns.net.
17 | IN NS dns4.easydns.info.
18 | $ORIGIN php.net.
19 |
20 | ; ax4z is a shortcut domain for CNAMEs by myracloud -- noc@myracloud.com
21 |
22 | ;------------ Services - these are alphabetical by the primary name of the service.
23 |
24 | ; Each service should have ${SERVICE}-origin pointing to a host machine
25 | ; (see the 'Physical boxen' section below), ${SERVICE} should be a CNAME to
26 | ; a Myra hostname that pulls from that origin.
27 |
28 | ; analytics - Matomo for collecting stats on php.net properties
29 | ; analytics-origin is name of host, see Digital Ocean section
30 | analytics IN CNAME analytics-origin.php.net.
31 |
32 | ; bugs database, mostly read-only now
33 | ; bugs-origin is name of host, see Digital Ocean section
34 | bugs IN CNAME bugs-php-net.ax4z.com.
35 |
36 | ; doc.php.net, managing the documentation project
37 | doc-origin IN CNAME svn2.php.net.
38 | doc IN CNAME doc-php-net.ax4z.com.
39 |
40 | ; downloads -- used by release managers for QA builds and windows downloads
41 | downloads IN CNAME downloads-php-net.ax4z.com.
42 |
43 | ; gtk project is abandoned, but old site lives on
44 | gtk-origin IN CNAME svn2.php.net.
45 | gtk IN CNAME gtk-php-net.ax4z.com.
46 |
47 | ; Jump boxes for login to .php.net servers
48 | americas.jump IN CNAME php-jump4.php.net.
49 | europe.jump IN CNAME php-jump2.php.net.
50 |
51 | ; mailing lists, MX is configured down below; lists can't be a CNAME due to MX/TXT records
52 | lists IN A 104.236.36.140
53 | IN AAAA 2604:a880:800:10::2d6:2001
54 | lists-origin IN CNAME lists.php.net.
55 |
56 | ; main holds backend systems for user notes, @php.net user management
57 | ; main-origin is name of host, see Digital Ocean section
58 | main IN CNAME main-origin.php.net.
59 | ; these two names can probably be retired
60 | mail IN CNAME main.php.net.
61 | master IN CNAME main.php.net.
62 |
63 | ; monitoring host for the php.net infrastructure
64 | monitoring-origin IN CNAME bk2.php.net.
65 | monitoring IN CNAME monitoring-origin.php.net.
66 |
67 | ; museum is a static archive of all releases
68 | ; museum.internal is name of host, see Digital Ocean section
69 | museum IN CNAME museum-php-net.ax4z.com.
70 |
71 | ; NNTP server, do NOT switch to CDN
72 | news IN CNAME lists.php.net.
73 | ; HTTP view of mailing lists
74 | news-web-origin IN CNAME lists.php.net.
75 | news-web IN CNAME news--web-php-net.ax4z.com.
76 |
77 | ; PEAR
78 | pear-origin IN CNAME euk3.php.net.
79 | pear IN CNAME pear-origin.php.net.
80 | download.pear IN CNAME euk3.php.net.
81 |
82 | ; PECL
83 | ; pecl-origin is name of host, see Digital Ocean section
84 | pecl IN CNAME pecl-origin.php.net.
85 |
86 | ; people.php.net user directory
87 | people-origin IN CNAME svn2.php.net.
88 | people IN CNAME people-php-net.ax4z.com.
89 |
90 | ; old qa.php.net website, which besides robots.txt now redirects to other locations (only)
91 | qa IN CNAME qa-php-net.ax4z.com.
92 |
93 | ; rsync is used for distributing lots of things
94 | ; not behind Myra because only accessed via rsync
95 | rsync IN CNAME sc3.php.net.
96 | ; Geodispersion of rsync; regional rsync nodes (RRNs)
97 | americas.rsync IN CNAME rsync.php.net.
98 | asia.rsync IN CNAME rsync.php.net.
99 | europe.rsync IN CNAME rsync.php.streamservice.nl.
100 |
101 | ; shared is important, most php.net sites rely on it for styles, etc.
102 | shared IN CNAME shared-php-net.ax4z.com.
103 |
104 | ; Network Health Status Page
105 | status-origin IN CNAME main.php.net.
106 | status IN CNAME status-origin.php.net.
107 |
108 | ; talks is our preferred name now, old aliases should redirect
109 | talks-origin IN CNAME svn2.php.net.
110 | talks IN CNAME talks-php-net.ax4z.com.
111 | conf IN CNAME conf-php-net.ax4z.com.
112 | conf2 IN CNAME conf2-php-net.ax4z.com.
113 | pres IN CNAME pres-php-net.ax4z.com.
114 | pres2 IN CNAME pres2-php-net.ax4z.com.
115 |
116 | ; wiki is used for project documentation and RFCs
117 | ; wiki.internal is name of host, see Digital Ocean section
118 | wiki IN CNAME wiki-php-net.ax4z.com.
119 |
120 | ; windows.php.net is configured entirely as a physical host below
121 |
122 | ; www is kind of a big deal
123 | www-origin IN CNAME php-web4.php.net.
124 | www 300 IN CNAME www-php-net.ax4z.com.
125 |
126 | ;------------ Old hostnames that just get redirected (or retired?)
127 |
128 | ; https://heap.space
129 | lxr IN CNAME main.php.net.
130 | ; https://app.codecov.io/gh/php/php-src
131 | gcov IN CNAME main.php.net.
132 | ; these redirect to www.php.net - could just use STAR-php-net.ax4z.com?
133 | secure IN CNAME secure-php-net.ax4z.com.
134 | static IN CNAME static-php-net.ax4z.com.
135 |
136 | ;------------ MX (mail) records
137 |
138 | ; MX and related entries for php.net
139 | @ 30 IN MX 0 php-smtp4-ip4.php.net.
140 | mailout IN CNAME php-smtp4.php.net.
141 |
142 | php.net. IN TXT "v=spf1 ip4:140.211.15.143 ip4:45.112.84.5 ip4:142.93.197.176 ip6:2604:a880:400:d0::1c74:1001 ip6:2a02:cb43:8000::1102 ip4:157.90.121.187 ip6:2a01:4f8:1c1e:416d::1 ~all"
143 |
144 | ; DKIM key mail for php.net
145 | mx._domainkey.php.net. IN TXT "t=y; g=; k=rsa; p=MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhANg8QYJB/6O2nGfNk1td5uRl1MMqETEAv/Jyv3wGPpoW7drSEVa7RsuZBgut/koWyJIpe0TWQRSSk+N6E0lNxkMwZVBSDU+HOpeO4+khXWtsq9Mv9BsAbPbf8VrgP5VsLQIDAQAB"
146 | mail._domainkey.php.net. IN TXT ( "v=DKIM1; h=sha256; k=rsa; s=email; "
147 | "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoTM+yKcObXSpuy9sAQP3pXM0kGg2Kbt6Uqf57ZGY7iNBrN/FB3w+xuYm8Ofk947N/dixNxCzhJ0yJ675m2fQap+EmBWke02OIl3jnqNccVuSpYTbIDQlsDDfQWrXKRgL6tA6l2WidxsosB5lf6IrIYXBWxTYJAB+aWuiJyFe+tfFZWnlPId7mFnda5PEpl3itg1xIbqLJgIhxZ"
148 | "nZWwKg3/SJR1067tT4VuMw7fLJCMy1exDK2HMjWTUVMsJDJh/cv28M86GwkKDZjiHpBKXXVLeJeti9Iua/seYFt0Id7/A3wtu7IPHHTFLMqb4b1j5djWpNwwtcRTVPFN24CI9wYwIDAQAB" )
149 | _dmarc.php.net. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@php.net;"
150 |
151 | ; MX and related entries for lists.php.net
152 | lists.php.net. IN MX 0 php-smtp4-ip4.php.net.
153 | lists.php.net. IN TXT "v=spf1 a mx ip4:45.112.84.5 ip6:2a02:cb43:8000::1102 ~all" ; ip4/6 of php-smtp4.php.net
154 |
155 | ; DMARC and DKIM key mail for lists.php.net
156 | _dmarc.lists.php.net. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@php.net;"
157 | mail._domainkey.lists.php.net. IN TXT ( "v=DKIM1; h=sha256; k=rsa; s=email; "
158 | "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtwBTcZalhSYtt2cyx+XD9CnvcelfnkEthOe1wFFKg+6YAwoVazJysjYszOtAuNhBN3Uo2cpEUqDX0hx36hp0f92Xhcb8Mg4hkPEgDBWUnMjd3re23x85yD4VIQWt7lZGMYiVdfDYVPL/utYzVJ3HkMnhJW9CvTjaurKfE/dyeSeu1/BSSbe55y5k4axVdOYyJ/QEbqK5+C3Hmb"
159 | "Ku4DtkNpOijhgL/9vRXPAznasXB1IEDvQ/sySBxtJ51HCLpteTBabQ4T5A8pRsphOjJYSoSQ3OwD9k2H1m2Whcu0GTC0J1PkPiOZENprOKdqMP3ej4b6eZB1lkxiYpRccWd1m9TQIDAQAB" )
160 |
161 | ;------------ Text records for external services
162 |
163 | ; Let's Encrypt ACME challenge
164 | _acme-challenge.php.net. IN CNAME _acme--challenge-php-net.ax4z.com.
165 |
166 | ; Verification for Google's Postmaster Tools and Search Console Tools
167 | php.net. IN TXT "google-site-verification=O6K8miDfoyFI4IjIQ13207kl978tUNg1HYv3G-bLabo"
168 |
169 | ;------------ Physical boxen
170 |
171 | ; Myracloud, contact sascha@schumann.net and noc@myracloud.com
172 | php-web4 IN A 45.112.84.4
173 | php-web4 IN AAAA 2a02:cb43:8000::1101
174 |
175 | php-smtp4 IN A 45.112.84.5
176 | php-smtp4-ip4 IN A 45.112.84.5
177 | php-smtp4 IN AAAA 2a02:cb43:8000::1102
178 |
179 | ; Jump servers, contact sascha@schumann.net, noc@myracloud.com
180 | php-jump2 IN A 116.203.146.57
181 | php-jump2 IN AAAA 2a01:4f8:c2c:3b3f::1
182 |
183 | php-jump4 IN A 45.112.84.7
184 | php-jump4 IN AAAA 2a02:cb43:8000::1104
185 |
186 | ; sinnerg.nl VMs
187 | svn2 IN A 91.199.167.250
188 |
189 | ; OS Groups
190 | windows IN A 83.137.149.15
191 | windows IN AAAA 2a01:1b0:7999:419::7
192 | windows IN TYPE257 \# 22 000569737375656C657473656E63727970742E6F7267
193 | windows IN TYPE257 \# 12 0009697373756577696C643B
194 |
195 | ; Server Central/Deft, used for rsync. (contact: systems, or derick)
196 | sc3 IN A 50.31.206.54
197 |
198 | ; eUKhost LTD. (contact Philip)
199 | euk2 IN A 109.203.109.170
200 | euk3 IN A 109.203.101.62
201 |
202 | ; Bauer + Kirch GmbH (contact mj)
203 | bk2 IN A 157.90.121.187
204 |
205 | ; DigitalOcean - PHP Project (contact: systems or derick)
206 | bugs-origin IN A 206.189.200.141
207 | IN AAAA 2604:a880:400:d1::24b:3001
208 | pecl-origin IN A 104.236.228.160
209 | IN AAAA 2604:a880:800:10::621:6001
210 | ; qa IN A 104.236.36.140
211 | ; IN AAAA 2604:a880:800:10::2d6:2001
212 | downloads-origin IN A 104.236.32.144
213 | IN AAAA 2604:a880:800:10::2dd:1
214 | main-origin IN A 142.93.197.176
215 | IN AAAA 2604:a880:400:d0::1c74:1001
216 | analytics-origin IN A 167.71.2.31
217 | IN AAAA 2a03:b0c0:2:d0::1865:c001
218 |
219 | ; DigitalOcean - New Infrastructure (contact: systems or derick)
220 | ; These will become the new origins
221 | jump-ams-1.internal IN A 24.144.78.237
222 | jump-sfo-1.internal IN A 209.38.118.252
223 |
224 | service0-ams.internal IN A 167.172.35.139
225 | museum.internal IN CNAME service0-ams.internal.php.net.
226 |
227 | service1-ams.internal IN A 165.22.201.73
228 | wiki.internal IN CNAME service1-ams.internal.php.net.
229 |
230 | service2-ams.internal IN A 206.189.2.9
231 | downloads.internal IN CNAME service2-ams.internal.php.net.
232 | shared.internal IN CNAME service2-ams.internal.php.net.
233 | qa.internal IN CNAME service2-ams.internal.php.net.
234 | talks.internal IN CNAME service2-ams.internal.php.net.
235 |
236 | ; Deprecated
237 | conf.internal IN CNAME service2-ams.internal.php.net.
238 | conf2.internal IN CNAME service2-ams.internal.php.net.
239 | pres.internal IN CNAME service2-ams.internal.php.net.
240 | pres2.internal IN CNAME service2-ams.internal.php.net.
241 |
242 | ; Misc stuff
243 | localhost IN A 127.0.0.1
244 |
245 | ; scaffolding for the unit tests
246 | mx1.tests.php.net. IN MX 10 127.0.0.1.
247 | mx2.tests.php.net. IN MX 10 10.0.0.10.
248 | mx2.tests.php.net. IN MX 20 10.0.0.20.
249 |
250 | ; mirrors - these all just redirect to www.php.net now
251 | $TTL 3600 ; 1 hour
252 | am.php.net. IN CNAME STAR-php-net.ax4z.com.
253 | am1.php.net. IN CNAME STAR-php-net.ax4z.com.
254 | ar.php.net. IN CNAME STAR-php-net.ax4z.com.
255 | ar2.php.net. IN CNAME STAR-php-net.ax4z.com.
256 | at.php.net. IN CNAME STAR-php-net.ax4z.com.
257 | at1.php.net. IN CNAME STAR-php-net.ax4z.com.
258 | at2.php.net. IN CNAME STAR-php-net.ax4z.com.
259 | au.php.net. IN CNAME STAR-php-net.ax4z.com.
260 | au1.php.net. IN CNAME STAR-php-net.ax4z.com.
261 | au2.php.net. IN CNAME STAR-php-net.ax4z.com.
262 | ba.php.net. IN CNAME STAR-php-net.ax4z.com.
263 | ba1.php.net. IN CNAME STAR-php-net.ax4z.com.
264 | bd.php.net. IN CNAME STAR-php-net.ax4z.com.
265 | bd1.php.net. IN CNAME STAR-php-net.ax4z.com.
266 | be.php.net. IN CNAME STAR-php-net.ax4z.com.
267 | be2.php.net. IN CNAME STAR-php-net.ax4z.com.
268 | bg2.php.net. IN CNAME STAR-php-net.ax4z.com.
269 | br.php.net. IN CNAME STAR-php-net.ax4z.com.
270 | br1.php.net. IN CNAME STAR-php-net.ax4z.com.
271 | br2.php.net. IN CNAME STAR-php-net.ax4z.com.
272 | ca.php.net. IN CNAME STAR-php-net.ax4z.com.
273 | ca1.php.net. IN CNAME STAR-php-net.ax4z.com.
274 | ca3.php.net. IN CNAME STAR-php-net.ax4z.com.
275 | ch.php.net. IN CNAME STAR-php-net.ax4z.com.
276 | ch1.php.net. IN CNAME STAR-php-net.ax4z.com.
277 | cl.php.net. IN CNAME STAR-php-net.ax4z.com.
278 | cl1.php.net. IN CNAME STAR-php-net.ax4z.com.
279 | cn.php.net. IN CNAME STAR-php-net.ax4z.com.
280 | cn2.php.net. IN CNAME STAR-php-net.ax4z.com.
281 | cz.php.net. IN CNAME STAR-php-net.ax4z.com.
282 | cz1.php.net. IN CNAME STAR-php-net.ax4z.com.
283 | cz2.php.net. IN CNAME STAR-php-net.ax4z.com.
284 | de.php.net. IN CNAME STAR-php-net.ax4z.com.
285 | de1.php.net. IN CNAME STAR-php-net.ax4z.com.
286 | de2.php.net. IN CNAME STAR-php-net.ax4z.com.
287 | dk.php.net. IN CNAME STAR-php-net.ax4z.com.
288 | dk1.php.net. IN CNAME STAR-php-net.ax4z.com.
289 | dk2.php.net. IN CNAME STAR-php-net.ax4z.com.
290 | ee.php.net. IN CNAME STAR-php-net.ax4z.com.
291 | ee1.php.net. IN CNAME STAR-php-net.ax4z.com.
292 | es.php.net. IN CNAME STAR-php-net.ax4z.com.
293 | es1.php.net. IN CNAME STAR-php-net.ax4z.com.
294 | fi.php.net. IN CNAME STAR-php-net.ax4z.com.
295 | fi1.php.net. IN CNAME STAR-php-net.ax4z.com.
296 | fi2.php.net. IN CNAME STAR-php-net.ax4z.com.
297 | fr.php.net. IN CNAME STAR-php-net.ax4z.com.
298 | fr2.php.net. IN CNAME STAR-php-net.ax4z.com.
299 | hk.php.net. IN CNAME STAR-php-net.ax4z.com.
300 | hk1.php.net. IN CNAME STAR-php-net.ax4z.com.
301 | hk2.php.net. IN CNAME STAR-php-net.ax4z.com.
302 | id.php.net. IN CNAME STAR-php-net.ax4z.com.
303 | id1.php.net. IN CNAME STAR-php-net.ax4z.com.
304 | ie.php.net. IN CNAME STAR-php-net.ax4z.com.
305 | ie1.php.net. IN CNAME STAR-php-net.ax4z.com.
306 | ie2.php.net. IN CNAME STAR-php-net.ax4z.com.
307 | il.php.net. IN CNAME STAR-php-net.ax4z.com.
308 | il1.php.net. IN CNAME STAR-php-net.ax4z.com.
309 | in.php.net. IN CNAME STAR-php-net.ax4z.com.
310 | in1.php.net. IN CNAME STAR-php-net.ax4z.com.
311 | in2.php.net. IN CNAME STAR-php-net.ax4z.com.
312 | in3.php.net. IN CNAME STAR-php-net.ax4z.com.
313 | ir.php.net. IN CNAME STAR-php-net.ax4z.com.
314 | ir1.php.net. IN CNAME STAR-php-net.ax4z.com.
315 | ir2.php.net. IN CNAME STAR-php-net.ax4z.com.
316 | is.php.net. IN CNAME STAR-php-net.ax4z.com.
317 | is1.php.net. IN CNAME STAR-php-net.ax4z.com.
318 | is2.php.net. IN CNAME STAR-php-net.ax4z.com.
319 | it.php.net. IN CNAME STAR-php-net.ax4z.com.
320 | it1.php.net. IN CNAME STAR-php-net.ax4z.com.
321 | it2.php.net. IN CNAME STAR-php-net.ax4z.com.
322 | jm.php.net. IN CNAME STAR-php-net.ax4z.com.
323 | jm2.php.net. IN CNAME STAR-php-net.ax4z.com.
324 | jp.php.net. IN CNAME STAR-php-net.ax4z.com.
325 | jp1.php.net. IN CNAME STAR-php-net.ax4z.com.
326 | jp2.php.net. IN CNAME STAR-php-net.ax4z.com.
327 | kr1.php.net. IN CNAME STAR-php-net.ax4z.com.
328 | li.php.net. IN CNAME STAR-php-net.ax4z.com.
329 | li1.php.net. IN CNAME STAR-php-net.ax4z.com.
330 | lt.php.net. IN CNAME STAR-php-net.ax4z.com.
331 | lt1.php.net. IN CNAME STAR-php-net.ax4z.com.
332 | lu.php.net. IN CNAME STAR-php-net.ax4z.com.
333 | lu1.php.net. IN CNAME STAR-php-net.ax4z.com.
334 | lv.php.net. IN CNAME STAR-php-net.ax4z.com.
335 | lv1.php.net. IN CNAME STAR-php-net.ax4z.com.
336 | md.php.net. IN CNAME STAR-php-net.ax4z.com.
337 | md1.php.net. IN CNAME STAR-php-net.ax4z.com.
338 | mx.php.net. IN CNAME STAR-php-net.ax4z.com.
339 | mx1.php.net. IN CNAME STAR-php-net.ax4z.com.
340 | mx2.php.net. IN CNAME STAR-php-net.ax4z.com.
341 | my.php.net. IN CNAME STAR-php-net.ax4z.com.
342 | my1.php.net. IN CNAME STAR-php-net.ax4z.com.
343 | nc.php.net. IN CNAME STAR-php-net.ax4z.com.
344 | nc1.php.net. IN CNAME STAR-php-net.ax4z.com.
345 | nl.php.net. IN CNAME STAR-php-net.ax4z.com.
346 | nl1.php.net. IN CNAME STAR-php-net.ax4z.com.
347 | nl3.php.net. IN CNAME STAR-php-net.ax4z.com.
348 | no.php.net. IN CNAME STAR-php-net.ax4z.com.
349 | no1.php.net. IN CNAME STAR-php-net.ax4z.com.
350 | no2.php.net. IN CNAME STAR-php-net.ax4z.com.
351 | nz.php.net. IN CNAME STAR-php-net.ax4z.com.
352 | nz2.php.net. IN CNAME STAR-php-net.ax4z.com.
353 | pa.php.net. IN CNAME STAR-php-net.ax4z.com.
354 | pa1.php.net. IN CNAME STAR-php-net.ax4z.com.
355 | pl.php.net. IN CNAME STAR-php-net.ax4z.com.
356 | pl1.php.net. IN CNAME STAR-php-net.ax4z.com.
357 | ro.php.net. IN CNAME STAR-php-net.ax4z.com.
358 | ro1.php.net. IN CNAME STAR-php-net.ax4z.com.
359 | ru.php.net. IN CNAME STAR-php-net.ax4z.com.
360 | ru2.php.net. IN CNAME STAR-php-net.ax4z.com.
361 | se.php.net. IN CNAME STAR-php-net.ax4z.com.
362 | se1.php.net. IN CNAME STAR-php-net.ax4z.com.
363 | se2.php.net. IN CNAME STAR-php-net.ax4z.com.
364 | sg.php.net. IN CNAME STAR-php-net.ax4z.com.
365 | sg2.php.net. IN CNAME STAR-php-net.ax4z.com.
366 | si.php.net. IN CNAME STAR-php-net.ax4z.com.
367 | si1.php.net. IN CNAME STAR-php-net.ax4z.com.
368 | si2.php.net. IN CNAME STAR-php-net.ax4z.com.
369 | th.php.net. IN CNAME STAR-php-net.ax4z.com.
370 | th1.php.net. IN CNAME STAR-php-net.ax4z.com.
371 | tr.php.net. IN CNAME STAR-php-net.ax4z.com.
372 | tr1.php.net. IN CNAME STAR-php-net.ax4z.com.
373 | tr2.php.net. IN CNAME STAR-php-net.ax4z.com.
374 | tw1.php.net. IN CNAME STAR-php-net.ax4z.com.
375 | tw.php.net. IN CNAME STAR-php-net.ax4z.com.
376 | tw2.php.net. IN CNAME STAR-php-net.ax4z.com.
377 | tz.php.net. IN CNAME STAR-php-net.ax4z.com.
378 | tz1.php.net. IN CNAME STAR-php-net.ax4z.com.
379 | ua1.php.net. IN CNAME STAR-php-net.ax4z.com.
380 | ua2.php.net. IN CNAME STAR-php-net.ax4z.com.
381 | uk.php.net. IN CNAME STAR-php-net.ax4z.com.
382 | uk1.php.net. IN CNAME STAR-php-net.ax4z.com.
383 | uk3.php.net. IN CNAME STAR-php-net.ax4z.com.
384 | us.php.net. IN CNAME STAR-php-net.ax4z.com.
385 | us1.php.net. IN CNAME STAR-php-net.ax4z.com.
386 | us2.php.net. IN CNAME STAR-php-net.ax4z.com.
387 | us3.php.net. IN CNAME STAR-php-net.ax4z.com.
388 | vn.php.net. IN CNAME STAR-php-net.ax4z.com.
389 | vn1.php.net. IN CNAME STAR-php-net.ax4z.com.
390 | za.php.net. IN CNAME STAR-php-net.ax4z.com.
391 | za1.php.net. IN CNAME STAR-php-net.ax4z.com.
392 |
--------------------------------------------------------------------------------
/populate-rsync.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | mkdir -p /local/repos
4 | mkdir -p /local/mirrors
5 | mkdir -p /local/repos/phpdoc
6 |
7 | cd /local/repos
8 | git clone https://github.com/php/web-php.git phpweb
9 | git clone https://github.com/php/phd.git phpdoc/phd
10 |
11 | cd /local/mirrors
12 | git clone https://github.com/php/web-doc-editor.git doc-editor
13 | git clone https://github.com/php/web-doc.git docweb
14 | git clone https://github.com/php/web-pecl.git peclweb
15 | git clone https://github.com/php/web-analytics.git php-analytics-web
16 | git clone https://github.com/php/web-bugs.git php-bugs-web
17 | git clone https://github.com/php/web-downloads.git php-downloads-web
18 | git clone https://github.com/php/web-gcov.git php-gcov-web
19 | git clone https://github.com/php/doc-gtk.git php-gtk-doc
20 | git clone https://github.com/php/web-gtk.git php-gtk-web
21 | git clone https://github.com/php/web-master.git php-main-web
22 | git clone https://github.com/php/web-master.git php-master-web
23 | git clone https://github.com/php/web-news.git php-news-web
24 | git clone https://github.com/php/web-people.git php-people-web
25 | git clone https://github.com/php/web-shared.git php-shared
26 | git clone https://github.com/php/web-wiki.git php-wiki
27 | git clone https://github.com/php/web-qa.git qaweb
28 | git clone https://github.com/php/web-shared.git shared
29 | git clone https://github.com/php/systems.git systems
30 | git clone https://github.com/php/web-pres2.git talks
31 |
32 | for i in php-main-web docweb php-people-web qaweb php-gcov-web php-master-web php-news-web php-bugs-web php-gtk-web talks; do
33 | cd /local/mirrors/$i
34 | git clone https://github.com/php/web-shared.git shared
35 | done
36 |
--------------------------------------------------------------------------------
/process-main-zone-file:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | file=/tmp/.dns.$$
4 |
5 | if php /local/systems/maintain-master-dns.php > $file ; then
6 | if /usr/bin/named-checkzone php.net $file ; then
7 | cp -f $file /local/mirrors/php-main-web/public/fetch/php.net.zone
8 | mv -f $file /etc/bind/db.php.net
9 | systemctl reload bind9
10 | fi
11 | fi
12 |
--------------------------------------------------------------------------------
/prune-backups:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id$
3 | # Backup pruning
4 | find /local/backups/ -mtime +7 -exec rm -r {} \;
5 |
--------------------------------------------------------------------------------
/rsync.php.net/README.md:
--------------------------------------------------------------------------------
1 |
2 | Every hour systems/update-everything is executed which does:
3 | systems/update-mirrors
4 | Updates the entire SVN checkout
5 |
6 | systems/update-phpweb-backend
7 | php-main-web/scripts/update-backend
8 | Creates phpweb/include/mirrors.inc (http://php-main-web/fetch/mirrors.php)
9 | Creates phpweb/include/countries.inc (http://php-main-web/fetch/countries.php)
10 | Creates phpweb/include/events.csv (http://php-main-web/fetch/events.php)
11 |
12 | Creates phpweb/include/pregen-events.inc (php-main-web/scripts/event_listing)
13 |
14 | Does some ip-country stuff (php-main-web/scripts/ip-to-country)
15 |
16 | Creates phpweb/include/pregen-news.inc & phpweb/feed.atom (php-main-web/scripts/pregen_news)
17 |
18 | Creates phpweb/news.rss && phpweb/conferences/news.rss (php-main-web/scripts/rss_parser)
19 |
20 | Creates phpweb/include/pregen-confs.inc (php-main-web/scripts/conference_teaser)
21 |
22 | Creates: (php-main-web/scripts/php_version)
23 | phpweb/include/version.inc
24 | phpweb/include/releases.inc
25 | phpweb/releases.atom
26 |
27 | Creates phpweb/reST/cache/* (php-main-web/scripts/rest_render)
28 |
29 | Creates phpweb/mirrorkit.tgz
30 |
31 | Copies CHMs from the "manual-chms" rsync module
32 |
33 | php-main-web/scripts/update-user-notes
34 |
35 | Creates phpweb/include/last_updated.inc
36 |
--------------------------------------------------------------------------------
/rsync.php.net/cronjobs.root:
--------------------------------------------------------------------------------
1 | # DO NOT EDIT THIS FILE - edit the master and reinstall.
2 | # (/tmp/crontab.HcsXIC/crontab installed on Wed Feb 7 11:57:38 2024)
3 | # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
4 | # Edit this file to introduce tasks to be run by cron.
5 | #
6 | # Each task to run has to be defined through a single line
7 | # indicating with different fields when the task will be run
8 | # and what command to run for the task
9 | #
10 | # To define the time you can provide concrete values for
11 | # minute (m), hour (h), day of month (dom), month (mon),
12 | # and day of week (dow) or use '*' in these fields (for 'any').
13 | #
14 | # Notice that tasks will be started based on the cron's system
15 | # daemon's notion of time and timezones.
16 | #
17 | # Output of the crontab jobs (including errors) is sent through
18 | # email to the user the crontab file belongs to (unless redirected).
19 | #
20 | # For example, you can run a backup of all your user accounts
21 | # at 5 a.m every week with:
22 | # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
23 | #
24 | # For more information see the manual pages of crontab(5) and cron(8)
25 | #
26 | # m h dom mon dow command
27 | TOKEN="NOT THE ACTUAL TOKEN"
28 | TOKEN_FLICKR="NOT THE ACTUAL TOKEN"
29 |
30 | # crontab for updates...
31 |
32 | 0,10,20,30,40,50 0-22 * * * /local/systems/update-everything > /dev/null
33 |
34 | 0 */2 * * * /local/systems/build-docs-rsync
35 |
36 | 10 9 * * 5 php /local/repos/phpdoc-git/doc-base/scripts/fetch-chms.php
37 |
--------------------------------------------------------------------------------
/rsync.php.net/rsynd.conf:
--------------------------------------------------------------------------------
1 | log file = /var/log/rsyncd.log
2 | lock file = /var/run/rsyncd.lock
3 | timeout = 1800
4 | read only = true
5 | # the generic uid should be nobody. otherwise, an exploit will lead
6 | # to direct privilege escalation.
7 | uid = nobody
8 | gid = nogroup
9 |
10 | [phpweb]
11 | path = /local/mirrors/phpweb
12 | comment = PHP Web Site (Approximately 1G)
13 | hosts deny = 62.234.27.113
14 | include = distributions/*.exe
15 |
16 | [php-gtk-web]
17 | path = /local/mirrors/php-gtk-web
18 | comment = PHP-GTK Website
19 |
20 | [peclweb]
21 | path = /local/mirrors/peclweb
22 | comment = PECL Website
23 |
24 | [qaweb]
25 | path = /local/mirrors/qaweb
26 | comment = PHP QA Website
27 |
28 | [docweb]
29 | path = /local/mirrors/docweb
30 | comment = PHP doc Website
31 |
32 | [doc-editor]
33 | path = /local/mirrors/doc-editor
34 | comment = PHP doc editor
35 |
36 | [php-bugs-web]
37 | path = /local/mirrors/php-bugs-web
38 | comment = PHP Bugs Website
39 |
40 | [php-master-web]
41 | path = /local/mirrors/php-master-web
42 | comment = PHP Master Website
43 |
44 | [php-main-web]
45 | path = /local/mirrors/php-main-web
46 | comment = PHP Main Website
47 |
48 | [php-people-web]
49 | path = /local/mirrors/php-people-web
50 | comment = PHP People Website
51 |
52 | [php-news-web]
53 | path = /local/mirrors/php-news-web
54 | comment = PHP News Website
55 |
56 | [php-gcov-web]
57 | path = /local/mirrors/php-gcov-web
58 | comment = PHP Gcov Website
59 |
60 | [talks]
61 | path = /local/mirrors/talks
62 | comment = PHP Presentations
63 |
64 | [wiki]
65 | path = /local/mirrors/php-wiki
66 | comment = PHP Wiki
67 |
68 | [systems]
69 | path = /local/mirrors/systems
70 | comment = PHP Internal Systems configurations
71 |
72 | [php-shared]
73 | path = /local/mirrors/php-shared
74 | comment = PHP Shared website templates/styles/scripts
75 |
76 | [php-analytics-web]
77 | path = /local/mirrors/php-analytics-web
78 | comment = PHP Analytics Website
79 |
80 | [php-downloads-web]
81 | path = /local/mirrors/php-downloads-web
82 | comment = PHP Downloads Website
83 |
--------------------------------------------------------------------------------
/runone:
--------------------------------------------------------------------------------
1 | #!/usr/bin/perl -w
2 | use strict;
3 |
4 | die "usage: $0 lockfile command [arg ...]\n"
5 | unless @ARGV >= 2;
6 |
7 | my $lockfile = shift;
8 |
9 | if (-e $lockfile) {
10 | open FILE, "<$lockfile"
11 | or die "unable to open file '$lockfile' for reading: $!\n";
12 | my $pid = ;
13 | if (kill 0, $pid) {
14 | # only warn when the lock is more than an hour old
15 | print "already running, pid $pid\n"
16 | if (stat _)[9] < time() - 3600;
17 | exit(99);
18 | }
19 | close FILE;
20 | }
21 |
22 | open FILE, ">$lockfile"
23 | or die "unable to open file '$lockfile' for writing: $!\n";
24 | print FILE $$;
25 | close FILE;
26 |
27 | system @ARGV;
28 | my $err = $? >> 8; # perl wtf
29 | unlink $lockfile;
30 |
31 | exit($err);
32 |
--------------------------------------------------------------------------------
/shared-config/20-sudo-nopassword:
--------------------------------------------------------------------------------
1 | # Allow members of group sudo to execute any command without specifying their password
2 | %sudo ALL=(ALL) NOPASSWD: ALL
3 |
--------------------------------------------------------------------------------
/shared-config/iptables.conf:
--------------------------------------------------------------------------------
1 | # Generated by iptables-save v1.8.9 (nf_tables) on Tue Jul 30 11:01:37 2024
2 | *raw
3 | :PREROUTING ACCEPT [116987909:15570482967]
4 | :OUTPUT ACCEPT [100653555:117594101415]
5 | :myrain - [0:0]
6 | -A PREROUTING -i eth0 -j myrain
7 | # php-jump2.php.net / europe.jump.php.net
8 | -A myrain -s 116.203.146.57/32 -p tcp -m tcp --dport 22 -j ACCEPT
9 | # php-jump4.php.net / americas.jump.php.net
10 | -A myrain -s 45.112.84.7/32 -p tcp -m tcp --dport 22 -j ACCEPT
11 | -A myrain -p tcp -m tcp --dport 22 -j DROP
12 | COMMIT
13 | # Completed on Tue Jul 30 11:01:37 2024
14 | # Generated by iptables-save v1.8.9 (nf_tables) on Tue Jul 30 11:01:37 2024
15 | *filter
16 | :INPUT ACCEPT [116988838:15570569335]
17 | :FORWARD ACCEPT [0:0]
18 | :OUTPUT ACCEPT [100653579:117594102569]
19 | COMMIT
20 | # Completed on Tue Jul 30 11:01:37 2024
21 |
--------------------------------------------------------------------------------
/svn2/apache2/conf-available/remote-ip-log.conf:
--------------------------------------------------------------------------------
1 |
2 | RemoteIPHeader X-Forwarded-For
3 | RemoteIPTrustedProxy 80.90.5.137
4 |
5 |
--------------------------------------------------------------------------------
/svn2/apache2/sites-available/conf.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | # Host and Document Root
3 | ServerName conf.php.net
4 | Redirect / https://talks.php.net/
5 |
6 | # Logging
7 | ErrorLog ${APACHE_LOG_DIR}/conf.php.net-error.log
8 | CustomLog ${APACHE_LOG_DIR}/conf.php.net-access.log combined
9 |
10 |
11 |
12 | # Host and Document Root
13 | ServerName conf.php.net
14 | Redirect / https://talks.php.net/
15 |
16 | # Self signed certificate for Myra
17 | SSLCertificateFile /etc/ssl/php/myra-STAR-php-net.crt
18 | SSLCertificateKeyFile /etc/ssl/php/myra-STAR-php-net.key
19 |
20 | # Logging
21 | ErrorLog ${APACHE_LOG_DIR}/conf.php.net-error.log
22 | CustomLog ${APACHE_LOG_DIR}/conf.php.net-access.log combined
23 |
24 |
--------------------------------------------------------------------------------
/svn2/apache2/sites-available/conf2.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | # Host and Document Root
3 | ServerName conf2.php.net
4 | Redirect / https://talks.php.net/
5 |
6 | # Logging
7 | ErrorLog ${APACHE_LOG_DIR}/conf2.php.net-error.log
8 | CustomLog ${APACHE_LOG_DIR}/conf2.php.net-access.log combined
9 |
10 |
11 |
12 | # Host and Document Root
13 | ServerName conf2.php.net
14 | Redirect / https://talks.php.net/
15 |
16 | # Self signed certificate for Myra
17 | SSLCertificateFile /etc/ssl/php/myra-STAR-php-net.crt
18 | SSLCertificateKeyFile /etc/ssl/php/myra-STAR-php-net.key
19 |
20 | # Logging
21 | ErrorLog ${APACHE_LOG_DIR}/conf2.php.net-error.log
22 | CustomLog ${APACHE_LOG_DIR}/conf2.php.net-access.log combined
23 |
24 |
--------------------------------------------------------------------------------
/svn2/apache2/sites-available/doc.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | # Host and Document Root
3 | ServerName doc.php.net
4 |
5 | Redirect / https://doc.php.net/
6 |
7 | # Logging
8 | ErrorLog ${APACHE_LOG_DIR}/doc.php.net-error.log
9 | CustomLog ${APACHE_LOG_DIR}/doc.php.net-access.log combined
10 |
11 |
12 |
13 | # Host and Document Root
14 | ServerName doc.php.net
15 | DocumentRoot /local/Web/sites/doc.php.net/www
16 |
17 | DirectoryIndex index.php index.html
18 | Options +FollowSymLinks -MultiViews
19 |
20 |
21 | Require all granted
22 |
23 |
24 | # Logging
25 | ErrorLog ${APACHE_LOG_DIR}/doc.php.net-error.log
26 | CustomLog ${APACHE_LOG_DIR}/doc.php.net-access.log combined
27 |
28 | # Self signed certificate for Myra
29 | SSLCertificateFile /etc/ssl/php/myra-STAR-php-net.crt
30 | SSLCertificateKeyFile /etc/ssl/php/myra-STAR-php-net.key
31 |
32 | # Property Specific Changes
33 | SetEnv BASE_DOCS_PATH /local/src/phpdoc/base/docs
34 | SetEnv PHPDOC_GIT_DIR /local/src/phpdoc
35 | SetEnv SQLITE_DIR /local/Web/sites/doc.php.net/sqlite
36 |
37 | RewriteEngine On
38 | RewriteRule ^/tutorial(.*)\.php$ /guide$1.md [R]
39 | RewriteRule ^/tutorial(.*)$ /guide$1 [R]
40 | RewriteRule ^/guide$ /guide/ [R]
41 | RewriteRule ^/guide(/(.*))$ %{DOCUMENT_ROOT}/guide.php?chapter=$2 [L]
42 |
43 | ErrorDocument 404 /error.php
44 | ErrorDocument 403 /error.php
45 |
46 |
--------------------------------------------------------------------------------
/svn2/apache2/sites-available/gtk.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | # Host and Document Root
3 | ServerName gtk.php.net
4 | Redirect / https://gtk.php.net/
5 |
6 | # Logging
7 | ErrorLog ${APACHE_LOG_DIR}/gtk.php.net-error.log
8 | CustomLog ${APACHE_LOG_DIR}/gtk.php.net-access.log combined
9 |
10 |
11 |
12 | # Host and Document Root
13 | ServerName gtk.php.net
14 | DocumentRoot /local/Web/sites/php-gtk-web
15 |
16 |
17 | Require all granted
18 |
19 |
20 | # Logging
21 | ErrorLog ${APACHE_LOG_DIR}/gtk.php.net-error.log
22 | CustomLog ${APACHE_LOG_DIR}/gtk.php.net-access.log combined
23 |
24 | # Self signed certificate for Myra
25 | SSLCertificateFile /etc/ssl/php/myra-STAR-php-net.crt
26 | SSLCertificateKeyFile /etc/ssl/php/myra-STAR-php-net.key
27 |
28 | # Property Specific Changes
29 | php_value error_reporting 0
30 | php_value register_globals 1
31 |
32 | php_value include_path .:/local/Web/sites/php-gtk-web/include
33 | php_value auto_prepend_file prepend.php
34 |
35 | DirectoryIndex index.php index.html
36 |
37 | Redirect /manual/index.php https://gtk.php.net/manual/en/index.php
38 |
39 |
40 | Require all denied
41 |
42 |
43 |
--------------------------------------------------------------------------------
/svn2/apache2/sites-available/people.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | # Host and Document Root
3 | ServerName people.php.net
4 | Redirect / https://people.php.net/
5 |
6 | # Logging
7 | ErrorLog ${APACHE_LOG_DIR}/people.php.net-error.log
8 | CustomLog ${APACHE_LOG_DIR}/people.php.net-access.log combined
9 |
10 |
11 |
12 | # Host and Document Root
13 | ServerName people.php.net
14 | DocumentRoot /local/Web/sites/php-people-web
15 |
16 |
17 | Require all granted
18 |
19 |
20 | # Logging
21 | ErrorLog ${APACHE_LOG_DIR}/people.php.net-error.log
22 | CustomLog ${APACHE_LOG_DIR}/people.php.net-access.log combined
23 |
24 | # Self signed certificate for Myra
25 | SSLCertificateFile /etc/ssl/php/myra-STAR-php-net.crt
26 | SSLCertificateKeyFile /etc/ssl/php/myra-STAR-php-net.key
27 |
28 | # Property Specific Changes
29 | php_value filter.default special_chars
30 |
31 | RewriteEngine On
32 | RewriteCond %{REQUEST_FILENAME} !-f
33 | RewriteCond %{REQUEST_FILENAME} !-d
34 | RewriteRule ^/?([^/\.]+)/?$ /user.php?username=$1 [L,QSA]
35 |
36 | # Secret Environment Variables
37 | Include /local/this-box/apache.conf
38 |
39 |
--------------------------------------------------------------------------------
/svn2/apache2/sites-available/pres.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | # Host and Document Root
3 | ServerName pres.php.net
4 | Redirect / https://talks.php.net/
5 |
6 | # Logging
7 | ErrorLog ${APACHE_LOG_DIR}/pres.php.net-error.log
8 | CustomLog ${APACHE_LOG_DIR}/pres.php.net-access.log combined
9 |
10 |
11 |
12 | # Host and Document Root
13 | ServerName pres.php.net
14 | Redirect / https://talks.php.net/
15 |
16 | # Self signed certificate for Myra
17 | SSLCertificateFile /etc/ssl/php/myra-STAR-php-net.crt
18 | SSLCertificateKeyFile /etc/ssl/php/myra-STAR-php-net.key
19 |
20 | # Logging
21 | ErrorLog ${APACHE_LOG_DIR}/pres.php.net-error.log
22 | CustomLog ${APACHE_LOG_DIR}/pres.php.net-access.log combined
23 |
24 |
--------------------------------------------------------------------------------
/svn2/apache2/sites-available/pres2.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | # Host and Document Root
3 | ServerName pres2.php.net
4 | Redirect / https://talks.php.net/
5 |
6 | # Logging
7 | ErrorLog ${APACHE_LOG_DIR}/pres2.php.net-error.log
8 | CustomLog ${APACHE_LOG_DIR}/pres2.php.net-access.log combined
9 |
10 |
11 |
12 | # Host and Document Root
13 | ServerName pres2.php.net
14 | Redirect / https://talks.php.net/
15 |
16 | # Self signed certificate for Myra
17 | SSLCertificateFile /etc/ssl/php/myra-STAR-php-net.crt
18 | SSLCertificateKeyFile /etc/ssl/php/myra-STAR-php-net.key
19 |
20 | # Logging
21 | ErrorLog ${APACHE_LOG_DIR}/pres2.php.net-error.log
22 | CustomLog ${APACHE_LOG_DIR}/pres2.php.net-access.log combined
23 |
24 |
--------------------------------------------------------------------------------
/svn2/apache2/sites-available/talks.php.net.conf:
--------------------------------------------------------------------------------
1 |
2 | # Host and Document Root
3 | ServerName talks.php.net
4 |
5 | Redirect / https://talks.php.net/
6 |
7 | # Logging
8 | ErrorLog ${APACHE_LOG_DIR}/talks.php.net-error.log
9 | CustomLog ${APACHE_LOG_DIR}/talks.php.net-access.log combined
10 |
11 |
12 |
13 | # Host and Document Root
14 | ServerName talks.php.net
15 | DocumentRoot /local/Web/sites/talks.php.net
16 |
17 | DirectoryIndex index.php
18 | Options +FollowSymLinks -MultiViews
19 |
20 |
21 | Require all granted
22 |
23 |
24 | # Logging
25 | ErrorLog ${APACHE_LOG_DIR}/talks.php.net-error.log
26 | CustomLog ${APACHE_LOG_DIR}/talks.php.net-access.log combined
27 |
28 | # Self signed certificate for Myra
29 | SSLCertificateFile /etc/ssl/php/myra-STAR-php-net.crt
30 | SSLCertificateKeyFile /etc/ssl/php/myra-STAR-php-net.key
31 |
32 | # Property Specific Changes
33 | php_value include_path .:/local/Web/sites/talks.php.net:/usr/share/php
34 | php_admin_flag register_globals on
35 | php_value error_reporting 7
36 | php_value session.cache_limiter private
37 | php_value filter.default special_chars
38 | php_value display_errors Off
39 |
40 |
41 | ForceType application/x-httpd-php
42 |
43 |
44 |
45 | AddType application/x-httpd-php-source .phps
46 | php_admin_flag engine on
47 |
48 |
49 | Require all granted
50 |
51 |
52 |
53 |
54 | AddType application/x-httpd-php-source .phps
55 | php_admin_flag engine on
56 |
57 | Require all granted
58 |
59 |
60 |
61 |
62 | AddType application/x-httpd-php-source .phps
63 | RewriteEngine On
64 | RewriteBase /
65 |
66 | # Redirect to /presentations/.html if it exists
67 | RewriteCond %{DOCUMENT_ROOT}/presentations/%{REQUEST_URI}.html -f
68 | RewriteRule ^(.+) %{DOCUMENT_ROOT}/presentations/$1.html [L]
69 |
70 | RewriteCond %{REQUEST_FILENAME} !-f
71 | RewriteRule ^([^\.\?/]+)$ /index.php/$1 [QSA]
72 |
73 |
74 |
75 | php_admin_flag engine off
76 |
77 |
78 |
79 | php_admin_flag engine on
80 |
81 |
82 | ErrorDocument 404 /index.php
83 | ErrorDocument 403 /index.php
84 |
85 |
86 |
--------------------------------------------------------------------------------
/svn2/installed-packages.txt:
--------------------------------------------------------------------------------
1 | php-gd
2 | php-sqlite3
3 |
--------------------------------------------------------------------------------
/svn2/users:
--------------------------------------------------------------------------------
1 | # Username : Name : GitHub Username
2 | derick:Derick Rethans:derickr
3 | jimw:Jim Winstead:jimwins
4 |
--------------------------------------------------------------------------------
/update-analytics-web:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # backup copy of config.ini.php
4 | DATE=`date "+%Y-%m-%d-%H:%I"`
5 |
6 | cp /var/www/analytics/www/config/config.ini.php /local/backup/config.ini.php-${DATE}
7 |
8 | rsync -aC --delete --delete-after --include "core" \
9 | rsync.php.net::php-analytics-web /var/www/analytics
10 |
11 | # replace salt in /var/www/analytics/www/config/config.ini.php
12 | SALT=`cat /local/this-box/matomo.env.salt`
13 | cat /var/www/analytics/www/config/config.ini.php | sed "s/PLACEHOLDERFORSALT-REPLACEDONDEPLOY/${SALT}/" > /tmp/config.ini.php && mv /tmp/config.ini.php /var/www/analytics/www/config/config.ini.php
14 |
15 | chown -R www-data:www-data /var/www/analytics
16 |
17 | ln -s /local/this-box/DBIP-City.mmdb /var/www/analytics/www/misc
18 |
--------------------------------------------------------------------------------
/update-bugsweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rsync -aC --delete --delete-after --exclude=logs --exclude=uploads --exclude=local_config.php \
4 | rsync.php.net::php-bugs-web /srv/bugs.php.net
5 | chown -R www-data.www-data /srv/bugs.php.net
6 |
7 | # update the mysql config file
8 | rsync -az /local/systems/bugs.php.net/additional.mysql.cnf /etc/mysql/conf.d/additional.mysql.cnf
9 |
--------------------------------------------------------------------------------
/update-colobus-archive:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | cd /local/colobus && ./colobus-archive -c /local/systems/lists/colobus/config -a 2&1> /dev/null
4 |
--------------------------------------------------------------------------------
/update-cvs-mail-aliases:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | FILE=~alias/cvsusers.txt
4 |
5 | wget -q -T 30 -O $FILE~ http://main.php.net/fetch/cvsforwarding.php?token=$TOKEN
6 |
7 | if test $? -eq 0 -a -s $FILE~; then
8 | mv $FILE~ $FILE
9 | else
10 | echo failed to update $FILE
11 | rm -f $FILE~
12 | exit 1
13 | fi
14 |
15 | setforward ~alias/cvsusers.cdb ~alias/cvsusers.tmp < ~alias/cvsusers.txt
16 |
--------------------------------------------------------------------------------
/update-distributions:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | cd /home/dsp/php-distributions && git checkout master && git fetch origin && git reset --hard origin/master
3 | rsync -avzr --exclude=".git" /home/dsp/php-distributions/ /local/mirrors/phpweb/distributions
4 |
--------------------------------------------------------------------------------
/update-docs-sources:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | mkdir -p /local/src/phpdoc
5 | cd /local/src/phpdoc
6 |
7 | # We rely on include/languages.inc from the web-php repo to know what
8 | # languages we want to keep track of
9 | rsync rsync.php.net::phpweb/include/languages.inc .
10 |
11 | langs=`/usr/bin/php -r 'include "languages.inc"; echo implode( " ", array_keys( $LANGUAGES ) );'`;
12 | langs="base $langs"
13 |
14 | for i in phd; do
15 | if [ -d /local/src/phpdoc/$i ]; then
16 | cd /local/src/phpdoc/$i
17 | echo -n "updating $i: "
18 | git fetch origin && git reset --hard origin/master
19 | else
20 | cd /local/src/phpdoc
21 | echo -n "cloning $i: "
22 | git clone https://github.com/php/phd.git phd
23 | fi
24 | done
25 |
26 | for lang in $langs; do
27 | cd /local/src/phpdoc
28 | lang=$(echo ${lang} | tr '[:upper:]' '[:lower:]')
29 | if [ -d ${lang} ]; then
30 | cd ${lang}
31 | echo -n "updating ${lang}: "
32 | git fetch origin && git reset --hard origin/master
33 | else
34 | echo -n "cloning ${lang}: "
35 | git clone https://github.com/php/doc-${lang}.git ${lang}
36 | fi
37 | done
38 |
--------------------------------------------------------------------------------
/update-docs-translation-status:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | cd /local/src/phpdoc
5 |
6 | langs=`/usr/bin/php -r 'include "languages.inc"; echo implode( " ", array_keys( $LANGUAGES ) );'`;
7 | langs=$(echo ${langs} | tr 'A-Z' 'a-z')
8 |
9 | export SQLITE_DIR=/local/Web/sites/doc.php.net/sqlite
10 |
11 | mkdir -p ${SQLITE_DIR}
12 |
13 | echo "Generating PHP database"
14 | php -q base/scripts/translation/genrevdb.php ${SQLITE_DIR}/status.sqlite.tmp ${langs}
15 | mv ${SQLITE_DIR}/status.sqlite.tmp ${SQLITE_DIR}/status.sqlite
16 | echo "... done."
17 |
--------------------------------------------------------------------------------
/update-docweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rsync -qavz --timeout=600 --delete --delete-after \
4 | --exclude include/jpgraph --exclude sqlite \
5 | --exclude www/images/revcheck --exclude www/phd/docs \
6 | rsync.php.net::docweb /local/Web/sites/doc.php.net
7 | # make sure directories for generated content exist
8 | mkdir -p /local/Web/sites/doc.php.net/sqlite
9 | mkdir -p /local/Web/sites/doc.php.net/www/images/revcheck
10 | mkdir -p /local/Web/sites/doc.php.net/www/phd/docs
11 |
--------------------------------------------------------------------------------
/update-download-area:
--------------------------------------------------------------------------------
1 | #! /bin/sh
2 |
3 | cd /local/Web/sites/downloads.php.net || exit 1
4 |
5 | for dir in *; do
6 | if test -d $dir; then
7 | cd $dir
8 | rm -f .new.md5 .new.index
9 | echo "" > .new.index
10 | touch .new.md5
11 | for i in *.zip *.bz2 *.gz *.xz; do
12 | if test -r "$i"; then
13 | hash=`/sbin/md5 "$i"`
14 | time=`stat -f "%Sm" -t "%Y-%m-%d %H:%M %z" $i`
15 | size=`du -sh $i | awk '{print $1}'`
16 | echo "- $i ($time) - $size
$hash " >> .new.index
17 | echo $hash >> .new.md5
18 | fi
19 | done
20 | echo "
" >> .new.index
21 |
22 | /usr/sbin/chown $dir .new.md5 .new.index
23 | mv .new.index index.html
24 | mv .new.md5 md5sums.txt
25 | cd ..
26 | fi
27 | done
28 |
--------------------------------------------------------------------------------
/update-downloads:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rsync -azC --timeout=600 --delete --delete-after --exclude=vendor rsync.php.net::php-downloads-web /local/www/sites/downloads.php.net
4 |
--------------------------------------------------------------------------------
/update-everything:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | /local/systems/update-mirrors && \
4 | /local/systems/update-phpweb-backend
5 |
--------------------------------------------------------------------------------
/update-gtkweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rsync -aC --timeout=600 --delete --exclude=configuration.inc --exclude=logs --exclude=.git rsync.php.net::php-gtk-web /local/Web/sites/php-gtk-web
4 |
--------------------------------------------------------------------------------
/update-letsencrypt:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | certbot renew
3 |
--------------------------------------------------------------------------------
/update-manuals:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | /local/systems/update-php-gtk-web-manuals
3 | /local/systems/update-pearweb-manuals
4 | # do phpdoc last, since it takes the longest.
5 | /local/systems/update-phpweb-manuals
6 |
--------------------------------------------------------------------------------
/update-mirrors:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | GIT_FETCH="git fetch --quiet origin"
4 | GIT_RESET="git reset --quiet --hard origin/master"
5 | GIT_RESET_MAIN="git reset --quiet --hard origin/main"
6 |
7 | # Update in its own dedicate checkout first
8 | # It'll be moved to /local/mirrors/phpweb in update-phpweb-backend
9 | for i in phpweb; do
10 | cd /local/repos/$i
11 | $GIT_FETCH && $GIT_RESET
12 | git submodule update
13 | done
14 |
15 | # Websites needing the 'shared' module
16 | for i in docweb php-people-web qaweb php-gcov-web php-master-web php-news-web php-bugs-web php-gtk-web talks; do
17 | cd /local/mirrors/$i
18 | $GIT_FETCH && $GIT_RESET;
19 | (cd shared && $GIT_FETCH && $GIT_RESET)
20 | done
21 |
22 | # For sites where master has been renamed to main, and need the 'shared' module
23 | for i in php-main-web; do
24 | cd /local/mirrors/$i
25 | $GIT_FETCH && $GIT_RESET_MAIN;
26 | (cd shared && $GIT_FETCH && $GIT_RESET)
27 | done
28 |
29 | # For sites where the default branch is 'main', and do not use the 'shared' module
30 | for i in php-analytics-web php-downloads-web; do
31 | cd /local/mirrors/$i
32 | $GIT_FETCH && $GIT_RESET_MAIN;
33 | done
34 |
35 | # The wikibox is special. doesn't do full module rsync :(
36 | cd /local/mirrors/php-wiki/dokuwiki
37 | $GIT_FETCH && $GIT_RESET;
38 | (cd shared && $GIT_FETCH && $GIT_RESET)
39 |
40 | # Other stuffs
41 | for i in systems doc-editor php-shared talks talks/presentations php-gtk-doc peclweb; do
42 | cd /local/mirrors/$i
43 | $GIT_FETCH && $GIT_RESET;
44 | done
45 |
46 | # Systems scripts were dropped down a level at some point.
47 | cd /local/systems;
48 | $GIT_FETCH && $GIT_RESET;
49 |
--------------------------------------------------------------------------------
/update-newsweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rsync -qavzC --timeout=600 --delete --delete-after --exclude=reports/db --exclude=pulls/config.php rsync.php.net::php-news-web /var/www/news.php.net
4 |
--------------------------------------------------------------------------------
/update-pearweb-manuals:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # lynx is dumb.
4 | TERM=vt100
5 | export TERM
6 |
7 | # this rebuilds all of the manuals on sunday, or just the ones
8 | # that have changed in the last day on other days
9 |
10 | TMPDIR=/local/tmp
11 | BASE=/local/mirrors/peardoc
12 |
13 | dow=`date +"%w"`
14 | len=`echo $BASE | wc -c`
15 | len=`expr $len + 1`
16 |
17 | if [ -z "$1" -o "$1" == "-f" ]; then
18 | if [ "$dow" -ne 0 -a "$1" != "-f" ]; then
19 | pred="-mtime 1"
20 | else
21 | pred="-maxdepth 1 -type d"
22 | fi
23 |
24 | # for a in `find $BASE $pred | cut -c 23- | sed -e 's:/.*$::' | sort | uniq`; do
25 | for a in `find $BASE $pred | cut -c $len- | sort | uniq`; do
26 | if [ -f $BASE/$a/language-defs.ent ]; then
27 | do="$do $a"
28 | fi
29 | done
30 | else
31 | do="$@"
32 | fi
33 |
34 | if test -z "$do"; then
35 | exit
36 | fi
37 |
38 | echo $do | mail -s "rebuilding peardoc: $do" derick@php.net
39 |
40 | for a in $do; do
41 | mkdir -p /local/mirrors/pearweb/public_html/manual/$a
42 | /local/systems/build-pear-manual /local/mirrors/peardoc \
43 | /local/mirrors/pearweb/public_html/manual/$a $a $TMPDIR/build-pear-$a \
44 | /local/mirrors/pearweb/public_html/distributions/manual \
45 | > $TMPDIR/build-pear-$a.log 2>&1
46 | mv $TMPDIR/build-pear-$a.log /local/mirrors/pearweb/public_html/manual/$a/build.log
47 | rm -rf $TMPDIR/build-pear-$a
48 | done
49 |
--------------------------------------------------------------------------------
/update-peclweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # Updates (pear|pecl).php.net from rsync
4 | #
5 | # public_html/rest must be excluded because these are symlinks on the
6 | # destination machine pointing to the static XML files for the installer.
7 | #
8 | # 4 * * * * root /usr/local/www/update 2&1>/dev/null
9 | #
10 | # $Id$
11 |
12 | /usr/bin/rsync -aC --delete --delete-after --exclude=logs --exclude=public_html/rest --exclude=public_html/packages \
13 | rsync.php.net::peclweb /local/www/sites/pecl.php.net
14 |
--------------------------------------------------------------------------------
/update-peopleweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rsync -aC --delete --exclude=configuration.inc --exclude=logs --exclude=.git rsync.php.net::php-people-web /local/Web/sites/php-people-web
4 |
--------------------------------------------------------------------------------
/update-phd-docs:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # build the phd docs using phd itself. inception.
4 |
5 | cd /local/src/phpdoc/phd
6 |
7 | php render.php \
8 | --docbook docs/phd-guide/phd-guide.xml \
9 | --output '/local/Web/sites/doc.php.net/www/phd/docs/' \
10 | --format 'bigxhtml' \
11 | --outputfilename 'index.html' \
12 | --verbose 0
13 |
--------------------------------------------------------------------------------
/update-phpweb-backend:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # phpweb has some hardcoded files in the repo for development purposes
4 | # these need to be overwritten by the update-backend script to fetch new content
5 | /local/mirrors/php-main-web/scripts/update-backend /local/repos/phpweb
6 | rsync -qrltDvzC --exclude=".git" --exclude="manual/en" /local/repos/phpweb/ /local/mirrors/phpweb
7 |
8 | if ls /local/mirrors/manual-chms/*.chm > /dev/null 2> /dev/null; then
9 | for i in /local/mirrors/manual-chms/*.chm; do
10 | cp -p $i /local/mirrors/phpweb/distributions/manual
11 | done
12 | fi
13 |
14 | # get manual notes
15 | mkdir -p /local/mirrors/manual-notes.new
16 | /local/mirrors/php-main-web/scripts/update-user-notes \
17 | /local/mirrors/manual-notes.new
18 | if [ $? -eq 0 ]; then
19 | rm -rf /local/mirrors/manual-notes
20 | mv /local/mirrors/manual-notes.new /local/mirrors/manual-notes
21 | else
22 | rm -rf /local/mirrors/manual-notes.new
23 | fi
24 |
25 | find /local/mirrors/manual-notes -type f | \
26 | xargs head -1 -q | cut -d '|' -f 2 | sort \
27 | > /local/mirrors/manual-notes/sections
28 |
29 | date +"%s" > /local/mirrors/manual-notes/last-updated
30 |
31 | rsync -a --delete --delete-after \
32 | /local/mirrors/manual-notes/ /local/mirrors/phpweb/backend/notes/
33 |
34 | DATE=`date +"%s"`
35 | echo "" \
36 | > /local/mirrors/phpweb/include/last_updated.inc
37 |
38 |
39 |
--------------------------------------------------------------------------------
/update-phpweb-manuals:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # lynx is dumb.
4 | TERM=vt100
5 | export TERM
6 |
7 | # this rebuilds all of the manuals on sunday, or just the ones
8 | # that have changed in the last day on other days
9 |
10 | TMPDIR=/local/tmp
11 | BASE=/local/mirrors/phpdoc
12 |
13 | dow=`date +"%w"`
14 | len=`echo $BASE | wc -c`
15 | len=`expr $len + 1`
16 |
17 | if [ -z "$1" -o "$1" == "-f" ]; then
18 | if [ "$dow" -ne 5 -a "$1" != "-f" ]; then
19 | pred="-mtime 1"
20 | else
21 | pred="-maxdepth 1 -type d"
22 | fi
23 |
24 | for a in `find $BASE $pred | cut -c $len- | sort | uniq`; do
25 | if [ -f $BASE/$a/language-defs.ent ]; then
26 | do="$do $a"
27 | fi
28 | done
29 | else
30 | do="$@"
31 | fi
32 |
33 | if test -z "$do"; then
34 | exit
35 | fi
36 |
37 | echo $do | mail -s "rebuilding phpdoc: $do" derick@php.net
38 |
39 | for a in $do; do
40 | if [ -d /local/mirrors/phpdoc/$a ]; then
41 | mkdir -p /local/mirrors/phpweb/manual/$a
42 | /local/systems/build-manual /local/mirrors/phpdoc \
43 | /local/mirrors/phpweb/manual/$a $a $TMPDIR/build-$a \
44 | /local/mirrors/phpweb/distributions/manual \
45 | > $TMPDIR/build-$a.log 2>&1
46 | grep -v '^Warning: Unknown character' $TMPDIR/build-$a.log | \
47 | gzip -c -9 > /local/mirrors/phpweb/manual/$a/build.log.gz
48 | rm -f /local/mirrors/phpweb/manual/$a/build.log
49 | rm -rf $TMPDIR/build-$a $TMPDIR/build-$a.log
50 | fi
51 | done
52 |
--------------------------------------------------------------------------------
/update-qaweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rsync -qavzC --timeout=600 --delete --delete-after --exclude=reports/db --exclude=pulls/config.php rsync.php.net::qaweb /var/www/qa.php.net
4 |
5 |
--------------------------------------------------------------------------------
/update-shared:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rsync -azC --timeout=600 --delete --delete-after rsync.php.net::php-shared /local/www/sites/shared.php.net
4 |
--------------------------------------------------------------------------------
/update-systems:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | # $Id$
3 | # Update systems checkout under /local/systems
4 |
5 | . /etc/profile
6 |
7 | cd /local/systems || exit 1
8 |
9 | if test -d .git && test -x /usr/bin/git; then
10 | # master.php.net
11 | git pull -q
12 | else
13 | # pb12.pair.com
14 | rsync -qazC --timeout=600 --delete --delete-after rsync.php.net::systems /local/systems
15 | fi
16 |
--------------------------------------------------------------------------------
/update-talksweb:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rsync -aC --exclude=config.php --exclude=logs --exclude=.git rsync.php.net::talks /local/Web/sites/talks.php.net
4 |
--------------------------------------------------------------------------------
/update-time:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # sync system time using the NTP pool.
4 |
5 | . /etc/profile
6 | . /local/systems/boxen/`hostname`
7 |
8 | NTP_PARAMS=-s
9 | NTP_SERVER=${CONTINENT}.pool.ntp.org
10 |
11 | # try ntp using source port 123, and if that fails try an unprivileged port
12 | #
13 | ntpdate $NTP_PARAMS $NTP_SERVER || ntpdate $NTP_PARAMS -u $NTP_SERVER
14 |
--------------------------------------------------------------------------------
/update-win-pkg-cache:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | sudo -u nobody php /usr/local/www/peclweb/cron/update-win-pkg-cache.php
3 |
--------------------------------------------------------------------------------