├── 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 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 | --------------------------------------------------------------------------------