├── .ruby-version
├── .gitignore
├── recipes
├── files
│ ├── var
│ │ ├── www
│ │ │ └── git.ruby-lang.org
│ │ │ │ └── robots.txt
│ │ └── git
│ │ │ ├── .gitconfig
│ │ │ └── .ssh
│ │ │ └── authorized_keys
│ ├── etc
│ │ ├── systemd
│ │ │ └── system
│ │ │ │ ├── apache2.service.d
│ │ │ │ └── override.conf
│ │ │ │ ├── git-sync-check.timer
│ │ │ │ └── git-sync-check.service
│ │ ├── cgitrc
│ │ ├── apache2
│ │ │ ├── sites-available
│ │ │ │ ├── svn.ruby-lang.org.conf
│ │ │ │ └── git.ruby-lang.org.conf
│ │ │ └── conf-available
│ │ │ │ └── cgit.conf
│ │ ├── sudoers
│ │ ├── postfix
│ │ │ └── main.cf
│ │ └── locale.gen
│ ├── home
│ │ └── git-sync
│ │ │ └── .ssh
│ │ │ └── authorized_keys
│ └── usr
│ │ └── share
│ │ └── cgit
│ │ └── ruby.png
├── postfix.rb
├── cgit.rb
├── default.rb
├── git-user.rb
├── git-sync-user.rb
├── git-sync-check.rb
└── apache2.rb
├── bin
├── hocho
├── update-git-ruby-lang-org.sh
├── prohibit-merge-commits.rb
├── update-ruby.sh
├── check-email-and-refname.rb
└── git-sync-check.rb
├── Gemfile
├── .github
├── dependabot.yml
└── workflows
│ ├── test.yml
│ └── deploy.yml
├── hosts.yml
├── Rakefile
├── hocho.yml
├── hooks
├── pre-receive.sh
└── update.sh
├── Gemfile.lock
├── README.md
├── license.txt
├── test
└── test-pre-receive.rb
└── config
└── email.yml
/.ruby-version:
--------------------------------------------------------------------------------
1 | 3.2.7
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | repos/*
2 | /test/wc.orig/
3 | /test/repos.orig/
4 |
--------------------------------------------------------------------------------
/recipes/files/var/www/git.ruby-lang.org/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow: /
3 |
--------------------------------------------------------------------------------
/recipes/postfix.rb:
--------------------------------------------------------------------------------
1 | remote_file '/etc/postfix/main.cf' do
2 | mode '644'
3 | owner 'root'
4 | end
5 |
--------------------------------------------------------------------------------
/bin/hocho:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | prefix=()
3 |
4 | export SUDO_PASSWORD=
5 | exec "${prefix[@]}" bundle exec hocho "$@"
6 |
--------------------------------------------------------------------------------
/recipes/files/etc/systemd/system/apache2.service.d/override.conf:
--------------------------------------------------------------------------------
1 | [Service]
2 | PrivateTmp=false
3 | Restart=always
4 |
--------------------------------------------------------------------------------
/recipes/files/home/git-sync/.ssh/authorized_keys:
--------------------------------------------------------------------------------
1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJWzYmv0cH2HnvHe7jdluQ1GcOStHohoas4XHYZR4EQF
2 |
--------------------------------------------------------------------------------
/recipes/files/usr/share/cgit/ruby.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ruby/git.ruby-lang.org/master/recipes/files/usr/share/cgit/ruby.png
--------------------------------------------------------------------------------
/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 |
3 | gem 'rake'
4 | gem 'test-unit'
5 | gem 'hocho'
6 | gem 'ed25519'
7 | gem 'bcrypt_pbkdf'
8 | gem 'nkf'
9 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: 'github-actions'
4 | directory: '/'
5 | schedule:
6 | interval: 'weekly'
7 |
--------------------------------------------------------------------------------
/hosts.yml:
--------------------------------------------------------------------------------
1 | git.ruby-lang.org:
2 | properties:
3 | sudo_required: true
4 | run_list:
5 | - recipes/default.rb
6 | ssh_options:
7 | user: admin
8 |
--------------------------------------------------------------------------------
/recipes/cgit.rb:
--------------------------------------------------------------------------------
1 | remote_file "/etc/cgitrc" do
2 | mode "644"
3 | owner "root"
4 | end
5 |
6 | remote_file "/usr/share/cgit/ruby.png" do
7 | mode "644"
8 | owner "root"
9 | end
10 |
--------------------------------------------------------------------------------
/recipes/files/var/git/.gitconfig:
--------------------------------------------------------------------------------
1 | [user]
2 | name = git
3 | email = svn-admin@ruby-lang.org
4 | [push]
5 | default = matching
6 | [pull]
7 | rebase = true
8 | [merge]
9 | renameLimit = 0
10 |
--------------------------------------------------------------------------------
/Rakefile:
--------------------------------------------------------------------------------
1 | require 'bundler/setup'
2 | require 'rake/testtask'
3 |
4 | Rake::TestTask.new do |t|
5 | t.libs << 'lib' << 'test'
6 | t.test_files = Dir.glob('test/**/*.rb')
7 | end
8 |
9 | task default: :test
10 |
--------------------------------------------------------------------------------
/recipes/files/etc/systemd/system/git-sync-check.timer:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Timer for git-sync-check.service
3 |
4 | [Timer]
5 | OnCalendar=*:0/10
6 | Unit=git-sync-check.service
7 |
8 | [Install]
9 | WantedBy=timers.target
10 |
--------------------------------------------------------------------------------
/bin/update-git-ruby-lang-org.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh -eux
2 | # This is executed as `sudo -u git /home/git/git.ruby-lang.org/bin/update-git-ruby-lang-org.sh`
3 | # by ruby/git.ruby-lang.org/.github/workflows/deploy.yml.
4 |
5 | git -C /home/git/git.ruby-lang.org pull origin master
6 |
--------------------------------------------------------------------------------
/recipes/files/etc/systemd/system/git-sync-check.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=Verify sync status between GitHub and cgit
3 |
4 | [Service]
5 | Type=simple
6 | ExecStart=/home/git/git.ruby-lang.org/bin/git-sync-check.rb
7 | User=git
8 |
9 | [Install]
10 | WantedBy=multi-user.target
11 |
--------------------------------------------------------------------------------
/recipes/default.rb:
--------------------------------------------------------------------------------
1 | package 'cgit'
2 | package 'certbot'
3 | package 'ruby'
4 | package 'postfix'
5 | package 'gpg'
6 | package 'rsync'
7 |
8 | include_recipe 'apache2'
9 | include_recipe 'postfix'
10 | include_recipe 'cgit'
11 | include_recipe 'git-user'
12 | include_recipe 'git-sync-user'
13 | include_recipe 'git-sync-check'
14 |
15 | remote_file '/etc/sudoers'
16 | remote_file '/etc/locale.gen'
17 |
--------------------------------------------------------------------------------
/recipes/files/etc/cgitrc:
--------------------------------------------------------------------------------
1 | #
2 | # cgit config
3 | # see cgitrc(5) for details
4 |
5 | css=/cgit-css/cgit.css
6 | logo=/cgit-css/ruby.png
7 | root-title=The Ruby Language git repositories
8 |
9 | cache-size=1000
10 | branch-sort=age
11 | enable-index-owner=0
12 | virtual-root=/
13 | enable-http-clone=1
14 |
15 | repo.url=ruby.git
16 | repo.path=/var/git/ruby.git
17 | repo.desc=The Ruby Programming Language
18 |
--------------------------------------------------------------------------------
/bin/prohibit-merge-commits.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 |
3 | require "open3"
4 |
5 | ARGV.each_slice(3) do |oldrev, newrev, refname|
6 | out, _err, status = Open3.capture3("git", "rev-list", "--parents", "#{oldrev}..#{newrev}")
7 | if status.success?
8 | out.lines.each do |s|
9 | if s.split.size >= 3
10 | STDERR.puts "A merge commit is prohibited."
11 | exit 1
12 | end
13 | end
14 | end
15 | end
16 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | name: test
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 |
8 | jobs:
9 | build:
10 | name: Test
11 | runs-on: ubuntu-latest
12 | steps:
13 | - uses: actions/checkout@v6
14 | - name: Set up Ruby
15 | uses: ruby/setup-ruby@v1
16 | with:
17 | ruby-version: 3.4
18 | bundler-cache: true
19 | - name: Run test
20 | run: bundle exec rake test
21 |
--------------------------------------------------------------------------------
/hocho.yml:
--------------------------------------------------------------------------------
1 | property_providers:
2 | - add_default:
3 | properties:
4 | preferred_driver: mitamae
5 |
6 | driver_options:
7 | mitamae:
8 | mitamae_path: /usr/local/bin/mitamae
9 | mitamae_options: ['--log-level', 'info']
10 | mitamae_prepare_script: |
11 | wget -O /usr/local/bin/mitamae https://github.com/itamae-kitchen/mitamae/releases/download/v1.12.7/mitamae-x86_64-linux &&
12 | chmod +x /usr/local/bin/mitamae
13 |
--------------------------------------------------------------------------------
/recipes/git-user.rb:
--------------------------------------------------------------------------------
1 | user "git" do
2 | shell "/usr/bin/git-shell"
3 | home "/var/git"
4 | end
5 |
6 | # We put files used by git here. However, this is NOT git's $HOME.
7 | directory "/home/git" do
8 | owner "git"
9 | group "git"
10 | mode "0755"
11 | end
12 |
13 | remote_file "/var/git/.ssh/authorized_keys" do
14 | mode "600"
15 | owner "git"
16 | end
17 |
18 | remote_file "/var/git/.gitconfig" do
19 | mode "644"
20 | owner "git"
21 | end
22 |
--------------------------------------------------------------------------------
/recipes/git-sync-user.rb:
--------------------------------------------------------------------------------
1 | user "git-sync" do
2 | shell "/bin/bash"
3 | home "/home/git-sync"
4 | end
5 |
6 | directory "/home/git-sync" do
7 | owner "git-sync"
8 | group "git-sync"
9 | mode "0755"
10 | end
11 |
12 | directory "/home/git-sync/.ssh" do
13 | owner "git-sync"
14 | group "git-sync"
15 | mode "0700"
16 | end
17 |
18 | remote_file "/home/git-sync/.ssh/authorized_keys" do
19 | owner "git-sync"
20 | group "git-sync"
21 | mode "600"
22 | end
23 |
--------------------------------------------------------------------------------
/recipes/git-sync-check.rb:
--------------------------------------------------------------------------------
1 | execute 'systemctl daemon-reload' do
2 | action :nothing
3 | end
4 |
5 | remote_file '/etc/systemd/system/git-sync-check.service' do
6 | mode '644'
7 | owner 'root'
8 | notifies :run, 'execute[systemctl daemon-reload]'
9 | end
10 |
11 | remote_file '/etc/systemd/system/git-sync-check.timer' do
12 | mode '644'
13 | owner 'root'
14 | notifies :run, 'execute[systemctl daemon-reload]'
15 | end
16 |
17 | service 'git-sync-check.timer' do
18 | action :start
19 | end
20 |
21 | link '/etc/systemd/system/timers.target.wants/git-sync-check.timer' do
22 | to '/etc/systemd/system/git-sync-check.timer'
23 | end
24 |
--------------------------------------------------------------------------------
/.github/workflows/deploy.yml:
--------------------------------------------------------------------------------
1 | name: deploy
2 | on:
3 | push:
4 | branches:
5 | - master
6 | jobs:
7 | deploy:
8 | runs-on: ubuntu-latest
9 | if: ${{ github.repository == 'ruby/git.ruby-lang.org' }}
10 | steps:
11 | - name: Sync git.ruby-lang.org
12 | run: |
13 | mkdir -p ~/.ssh
14 | echo "$RUBY_GIT_SYNC_PRIVATE_KEY" > ~/.ssh/id_ed25519
15 | chmod 600 ~/.ssh/id_ed25519
16 | ssh-keyscan -t ed25519 git.ruby-lang.org >> ~/.ssh/known_hosts
17 | ssh -i ~/.ssh/id_ed25519 git-sync@git.ruby-lang.org "sudo -u git /home/git/git.ruby-lang.org/bin/update-git-ruby-lang-org.sh"
18 | env:
19 | RUBY_GIT_SYNC_PRIVATE_KEY: ${{ secrets.RUBY_GIT_SYNC_PRIVATE_KEY }}
20 |
--------------------------------------------------------------------------------
/hooks/pre-receive.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | set -o pipefail
3 | # This script is executed by `git@git.ruby-lang.org:ruby.git/hooks/pre-receive`.
4 | # Its outputs are logged to `/tmp/pre-receive.log`.
5 |
6 | # script parameters
7 | ruby_git="/var/git/ruby.git"
8 | ruby_commit_hook="$(cd "$(dirname $0)"; cd ..; pwd)"
9 |
10 | function log() {
11 | echo -e "[$$: $(date "+%Y-%m-%d %H:%M:%S %Z")] $1"
12 | }
13 |
14 | log "### start ###"
15 | log "SVN_ACCOUNT_NAME: ${SVN_ACCOUNT_NAME:-}"
16 | log "args: $*"
17 |
18 | log "==> prohibit merge commits"
19 | "${ruby_commit_hook}/bin/prohibit-merge-commits.rb" $* || exit 1
20 |
21 | log "==> check email and refname"
22 | "${ruby_commit_hook}/bin/check-email-and-refname.rb" $* || exit 1
23 |
24 | log "### end ###\n"
25 |
--------------------------------------------------------------------------------
/recipes/files/etc/apache2/sites-available/svn.ruby-lang.org.conf:
--------------------------------------------------------------------------------
1 |
2 | ServerName svn.ruby-lang.org
3 | ServerAdmin webmaster@ruby-lang.org
4 |
5 | # for let's encrypt
6 | DocumentRoot /var/www/svn.ruby-lang.org
7 |
8 | RedirectMatch permanent ^/(?!.well-known)(.*) https://git.ruby-lang.org/$1
9 |
10 |
11 |
12 | ServerName svn.ruby-lang.org
13 | ServerAdmin webmaster@ruby-lang.org
14 |
15 | SSLEngine on
16 | SSLCertificateFile /etc/letsencrypt/live/svn.ruby-lang.org/fullchain.pem
17 | SSLCertificateKeyFile /etc/letsencrypt/live/svn.ruby-lang.org/privkey.pem
18 |
19 | RedirectMatch permanent ^/(?!.well-known)(.*) https://git.ruby-lang.org/$1
20 |
21 |
--------------------------------------------------------------------------------
/hooks/update.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | set -o pipefail
3 | # This script is executed by `git@git.ruby-lang.org:ruby.git/hooks/update`.
4 | # Its outputs are logged to `/tmp/update.log`.
5 |
6 | refname="$1"
7 | oldrev="$2"
8 | newrev="$3"
9 |
10 | # Cancel impact of SSH Agent Forwarding to git push by matzbot
11 | unset SSH_AUTH_SOCK
12 |
13 | function log() {
14 | echo -e "[$$: $(date "+%Y-%m-%d %H:%M:%S %Z")] $1"
15 | }
16 |
17 | log "### start ###"
18 | log "SVN_ACCOUNT_NAME: ${SVN_ACCOUNT_NAME:-}"
19 | log "args: $*"
20 |
21 | log "==> git push github ($newrev:$refname)"
22 | if ! git push github "$newrev:$refname"; then
23 | if [ "$refname" = "refs/heads/master" ]; then
24 | nohup /home/git/git.ruby-lang.org/bin/update-ruby.sh master > /dev/null 2>&1 &
25 | fi
26 | exit 1
27 | fi
28 |
29 | log "### end ###\n"
30 |
--------------------------------------------------------------------------------
/recipes/files/etc/apache2/sites-available/git.ruby-lang.org.conf:
--------------------------------------------------------------------------------
1 |
2 | ServerName git.ruby-lang.org
3 | ServerAdmin webmaster@ruby-lang.org
4 |
5 | # for let's encrypt
6 | DocumentRoot /var/www/git.ruby-lang.org
7 |
8 | RedirectMatch permanent ^/(?!.well-known)(.*) https://git.ruby-lang.org/$1
9 |
10 |
11 |
12 | ServerName git.ruby-lang.org
13 | ServerAdmin webmaster@ruby-lang.org
14 |
15 | SSLEngine on
16 | SSLCertificateFile /etc/letsencrypt/live/git.ruby-lang.org-0001/fullchain.pem
17 | SSLCertificateKeyFile /etc/letsencrypt/live/git.ruby-lang.org-0001/privkey.pem
18 |
19 | TimeOut 300
20 |
21 | # Alias /robots.txt "/var/www/git.ruby-lang.org/robots.txt"
22 | DocumentRoot /var/www/git.ruby-lang.org
23 |
24 |
--------------------------------------------------------------------------------
/recipes/files/etc/sudoers:
--------------------------------------------------------------------------------
1 | #
2 | # This file MUST be edited with the 'visudo' command as root.
3 | #
4 | # Please consider adding local content in /etc/sudoers.d/ instead of
5 | # directly modifying this file.
6 | #
7 | # See the man page for details on how to write a sudoers file.
8 | #
9 | Defaults env_reset
10 | Defaults mail_badpass
11 | Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
12 |
13 | # Host alias specification
14 |
15 | # User alias specification
16 |
17 | # Cmnd alias specification
18 |
19 | # User privilege specification
20 | root ALL=(ALL:ALL) ALL
21 | git-sync ALL=(ALL:ALL) NOPASSWD: /home/git/git.ruby-lang.org/bin/update-git-ruby-lang-org.sh
22 | git-sync ALL=(ALL:ALL) NOPASSWD: /home/git/git.ruby-lang.org/bin/update-ruby.sh
23 |
24 | # Allow members of group sudo to execute any command
25 | %sudo ALL=(ALL:ALL) NOPASSWD: ALL
26 |
27 | # See sudoers(5) for more information on "@include" directives:
28 |
29 | @includedir /etc/sudoers.d
30 |
--------------------------------------------------------------------------------
/Gemfile.lock:
--------------------------------------------------------------------------------
1 | GEM
2 | remote: https://rubygems.org/
3 | specs:
4 | ansi (1.5.0)
5 | base64 (0.3.0)
6 | bcrypt_pbkdf (1.1.1)
7 | ed25519 (1.4.0)
8 | hashie (5.0.0)
9 | hocho (0.3.8)
10 | hashie
11 | itamae
12 | net-ssh (>= 4.1.0)
13 | thor
14 | itamae (1.14.1)
15 | ansi
16 | hashie
17 | schash (~> 0.1.0)
18 | specinfra (>= 2.64.0, < 3.0.0)
19 | thor (>= 1.0.0)
20 | net-scp (4.1.0)
21 | net-ssh (>= 2.6.5, < 8.0.0)
22 | net-ssh (7.3.0)
23 | net-telnet (0.2.0)
24 | nkf (0.2.0)
25 | power_assert (2.0.5)
26 | rake (13.3.0)
27 | schash (0.1.2)
28 | sfl (2.3)
29 | specinfra (2.94.1)
30 | base64
31 | net-scp
32 | net-ssh (>= 2.7)
33 | net-telnet
34 | sfl
35 | test-unit (3.7.0)
36 | power_assert
37 | thor (1.4.0)
38 |
39 | PLATFORMS
40 | ruby
41 |
42 | DEPENDENCIES
43 | bcrypt_pbkdf
44 | ed25519
45 | hocho
46 | nkf
47 | rake
48 | test-unit
49 |
50 | BUNDLED WITH
51 | 2.7.0
52 |
--------------------------------------------------------------------------------
/bin/update-ruby.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash -eu
2 | # This is executed as `sudo -u git /home/git/git.ruby-lang.org/bin/update-ruby.sh`
3 | # by ruby/ruby/.github/workflows/post_push.yml.
4 | # This is also triggered on master branch's update hook failure.
5 |
6 | # Cancel impact from git hook
7 | unset GIT_DIR
8 |
9 | # Cancel impact from LANG=C set by apache2
10 | export LANG=en_US.UTF-8
11 |
12 | ruby_repo="/var/git/ruby.git"
13 | ruby_branch="$(basename "$1")"
14 | ruby_workdir="/data/git.ruby-lang.org/update-ruby"
15 |
16 | # Initialize working directory only if missing
17 | if [ ! -d "$ruby_workdir" ]; then
18 | git clone "file://${ruby_repo}" "$ruby_workdir"
19 | git -C "$ruby_workdir" remote add github https://github.com/ruby/ruby
20 | fi
21 |
22 | set -eux
23 |
24 | # Sync: GitHub -> ruby_workdir -> cgit
25 | # By doing this way, we can make sure all git hooks are performed on sync-ed commits.
26 | git -C "$ruby_workdir" fetch github "$ruby_branch"
27 | SVN_ACCOUNT_NAME=git git -C "$ruby_workdir" push origin "github/${ruby_branch}:${ruby_branch}"
28 |
--------------------------------------------------------------------------------
/recipes/apache2.rb:
--------------------------------------------------------------------------------
1 | execute 'systemctl daemon-reload' do
2 | action :nothing
3 | end
4 |
5 | directory '/etc/systemd/system/apache2.service.d' do
6 | mode '755'
7 | owner 'root'
8 | end
9 |
10 | remote_file '/etc/systemd/system/apache2.service.d/override.conf' do
11 | mode '644'
12 | owner 'root'
13 | notifies :run, 'execute[systemctl daemon-reload]'
14 | notifies :restart, 'service[apache2]'
15 | end
16 |
17 | service 'apache2' do
18 | action :nothing
19 | end
20 |
21 | remote_file '/var/www/git.ruby-lang.org/robots.txt' do
22 | mode '644'
23 | owner 'root'
24 | end
25 |
26 | remote_file '/etc/apache2/conf-available/cgit.conf' do
27 | mode '644'
28 | owner 'root'
29 | notifies :reload, 'service[apache2]'
30 | end
31 |
32 | %w[git svn].each do |subdomain|
33 | remote_file "/etc/apache2/sites-available/#{subdomain}.ruby-lang.org.conf" do
34 | mode '644'
35 | owner 'root'
36 | notifies :reload, 'service[apache2]'
37 | end
38 |
39 | link "/etc/apache2/sites-enabled/#{subdomain}.ruby-lang.org.conf" do
40 | to "../sites-available/#{subdomain}.ruby-lang.org.conf"
41 | end
42 | end
43 |
44 | %w[ssl cgid].each do |mod|
45 | %w[conf load].each do |ext|
46 | link "/etc/apache2/mods-enabled/#{mod}.#{ext}" do
47 | to "../mods-available/#{mod}.#{ext}"
48 | end
49 | end
50 | end
51 |
--------------------------------------------------------------------------------
/recipes/files/etc/postfix/main.cf:
--------------------------------------------------------------------------------
1 | # See /usr/share/postfix/main.cf.dist for a commented, more complete version
2 |
3 |
4 | # Debian specific: Specifying a file name will cause the first
5 | # line of that file to be used as the name. The Debian default
6 | # is /etc/mailname.
7 | #myorigin = /etc/mailname
8 |
9 | smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
10 | biff = no
11 |
12 | # appending .domain is the MUA's job.
13 | append_dot_mydomain = no
14 |
15 | # Uncomment the next line to generate "delayed mail" warnings
16 | #delay_warning_time = 4h
17 |
18 | readme_directory = no
19 |
20 | # See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
21 | # fresh installs.
22 | compatibility_level = 2
23 |
24 |
25 |
26 | # TLS parameters
27 | smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
28 | smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
29 | smtpd_tls_security_level=may
30 |
31 | smtp_tls_CApath=/etc/ssl/certs
32 | smtp_tls_security_level=may
33 | smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
34 |
35 |
36 | smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
37 | myhostname = git.ruby-lang.org
38 | alias_maps = hash:/etc/aliases
39 | alias_database = hash:/etc/aliases
40 | myorigin = /etc/mailname
41 | mydestination = $myhostname, git.ruby-lang.org, localhost.ruby-lang.org, , localhost
42 | relayhost =
43 | mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
44 | mailbox_size_limit = 0
45 | recipient_delimiter = +
46 | inet_interfaces = all
47 | inet_protocols = all
48 | smtp_address_preference = ipv4
49 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # git.ruby-lang.org 
2 |
3 | ## Features
4 |
5 | On each commit of Ruby's Git repository, following git hooks are triggered:
6 |
7 | ### pre-receive
8 |
9 | * Verify committer email from `SVN_ACCOUNT_NAME` associated to SSH key used for `git push`
10 | * Reject merge commits (ask @mame about why)
11 |
12 | ### update
13 |
14 | * Sync ruby.git to GitHub
15 |
16 | ## The directory structure of `git.ruby-lang.org`
17 |
18 | * `/data/git/ruby.git`: Bare Git repository of ruby
19 | * `hooks/pre-receive`: Run `/home/git/git.ruby-lang.org/hooks/pre-receive.sh`
20 | * `hooks/update`: Run `/home/git/git.ruby-lang.org/hooks/update.sh`
21 | * `/home/git/git.ruby-lang.org`: Cloned Git repository of git.ruby-lang.org
22 |
23 | ### Notes
24 |
25 | * There's a symlink `/var/git` -> `/data/git`.
26 | * User `git`'s `$HOME` is NOT `/home/git` but `/var/git`.
27 |
28 | ## How to deploy `ruby/git.ruby-lang.org`
29 |
30 | ### Authentication
31 |
32 | * We use only `admin` user for `git.ruby-lang.org`'s SSH access.
33 | * You should contact @hsbt, @mame or @k0kubun for accessing `git.ruby-lang.org`.
34 |
35 | ### recipes
36 |
37 | ```bash
38 | # dry-run
39 | bin/hocho apply -n git.ruby-lang.org
40 |
41 | # apply
42 | bin/hocho apply git.ruby-lang.org
43 | ```
44 |
45 | ### TODO for recipes for git.ruby-lang.org
46 |
47 | * How to store `ssh_host_key*` and `sshd_config` safely?
48 | * How to write a recipe to mount data volume for bare git repository?
49 | * How to write a recipe for mackerel with the host key of git.ruby-lang.org?
50 |
51 | ## License
52 |
53 | [Ruby License](./license.txt)
54 |
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | Ruby is copyrighted free software by Yukihiro Matsumoto .
2 | You can redistribute it and/or modify it under either the terms of the
3 | 2-clause BSDL (see the file BSDL), or the conditions below:
4 |
5 | 1. You may make and give away verbatim copies of the source form of the
6 | software without restriction, provided that you duplicate all of the
7 | original copyright notices and associated disclaimers.
8 |
9 | 2. You may modify your copy of the software in any way, provided that
10 | you do at least ONE of the following:
11 |
12 | a) place your modifications in the Public Domain or otherwise
13 | make them Freely Available, such as by posting said
14 | modifications to Usenet or an equivalent medium, or by allowing
15 | the author to include your modifications in the software.
16 |
17 | b) use the modified software only within your corporation or
18 | organization.
19 |
20 | c) give non-standard binaries non-standard names, with
21 | instructions on where to get the original software distribution.
22 |
23 | d) make other distribution arrangements with the author.
24 |
25 | 3. You may distribute the software in object code or binary form,
26 | provided that you do at least ONE of the following:
27 |
28 | a) distribute the binaries and library files of the software,
29 | together with instructions (in the manual page or equivalent)
30 | on where to get the original distribution.
31 |
32 | b) accompany the distribution with the machine-readable source of
33 | the software.
34 |
35 | c) give non-standard binaries non-standard names, with
36 | instructions on where to get the original software distribution.
37 |
38 | d) make other distribution arrangements with the author.
39 |
40 | 4. You may modify and include the part of the software into any other
41 | software (possibly commercial). But some files in the distribution
42 | are not written by the author, so that they are not under these terms.
43 |
44 | For the list of those files and their copying conditions, see the
45 | file LEGAL.
46 |
47 | 5. The scripts and library files supplied as input to or produced as
48 | output from the software do not automatically fall under the
49 | copyright of the software, but belong to whomever generated them,
50 | and may be sold commercially, and may be aggregated with this
51 | software.
52 |
53 | 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
54 | IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
55 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
56 | PURPOSE.
57 |
--------------------------------------------------------------------------------
/bin/check-email-and-refname.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # This script is hooked by pre-receive hook of ruby.git to:
3 | # * Make sure the pusher uses his/her "committer email", based on `config/email.yml`.
4 | # * Prohibit creating topic branches on ruby.git.
5 |
6 | require "open3"
7 | require "yaml"
8 |
9 | ADMIN_USERS = [
10 | "git",
11 | "hsbt",
12 | "k0kubun",
13 | "naruse",
14 | ]
15 | STABLE_BRANCH_MAINTAINERS = [
16 | "k0kubun",
17 | "nagachika",
18 | ]
19 | PUSHABLE_REFNAMES = [
20 | "refs/heads/master",
21 | "refs/notes/commits",
22 | "refs/notes/log-fix",
23 | ]
24 |
25 | def is_pushable_stable_branch?(refname)
26 | %r{\Arefs/heads/ruby_(\d+)_(\d+)\Z} =~ refname and (($1 == "2" and $2.to_i >= 7) or ($1.to_i >= 3))
27 | end
28 |
29 | def is_pushable_stable_tag?(refname)
30 | %r{\Arefs/tags/v(\d+)_(\d+)_(\d+)\Z} =~ refname and (($1 == "2" and $2.to_i >= 7) or ($1.to_i >= 3))
31 | end
32 |
33 | def is_pushable_by_branch_maintainer?(refname)
34 | is_pushable_stable_branch?(refname) || is_pushable_stable_tag?(refname)
35 | end
36 |
37 | SVN_TO_EMAILS = YAML.safe_load(File.read(File.expand_path('../config/email.yml', __dir__)))
38 | LOG_FILE = "/home/git/email.log"
39 |
40 | svn_account_name = ENV["SVN_ACCOUNT_NAME"]
41 | if svn_account_name.nil?
42 | STDERR.puts "Failed to identify your ssh key."
43 | STDERR.puts "Maybe ~git/.ssh/authorized_keys is broken."
44 | STDERR.puts "Please contact on ruby-core@ruby-lang.org."
45 | exit 1
46 | end
47 |
48 | exit 0 if ADMIN_USERS.include?(svn_account_name)
49 |
50 | emails = SVN_TO_EMAILS[svn_account_name]
51 |
52 | ARGV.each_slice(3) do |oldrev, newrev, refname|
53 | # `/var/git-svn/ruby` uses `remote.cgit.url=git@git.ruby-lang.org:ruby.git`.
54 | # ~git/.ssh/id_rsa.pub is registered as `SVN_ACCOUNT_NAME=git` in authorized_keys.
55 | unless PUSHABLE_REFNAMES.include?(refname) || svn_account_name == "git" || # git-svn
56 | (is_pushable_by_branch_maintainer?(refname) && STABLE_BRANCH_MAINTAINERS.include?(svn_account_name)) # stable maintainer
57 | STDERR.puts "You pushed '#{newrev}' to '#{refname}', but you can push commits "\
58 | "to only '#{PUSHABLE_REFNAMES.join("', '")}'. (svn_account_name: #{svn_account_name})"
59 | exit 1
60 | end
61 |
62 | out, = Open3.capture2("git", "log", "--first-parent", "--pretty=format:%H %ce", oldrev + ".." + newrev)
63 |
64 | out.each_line do |s|
65 | commit, git_committer_email = s.strip.split(" ", 2)
66 | if emails
67 | if emails == git_committer_email || emails.include?(git_committer_email)
68 | # OK
69 | else
70 | STDERR.puts "The git committer email (#{git_committer_email}) does not seem to be #{svn_account_name}'s email (#{emails.join(', ')})."
71 | STDERR.puts "Please see https://github.com/ruby/git.ruby-lang.org/blob/master/config/email.yml"
72 | STDERR.puts "and send PR, or contact on ruby-core@ruby-lang.org."
73 | exit 1 # NG
74 | end
75 | else
76 | if Time.now > Time.new(2020, 1, 1)
77 | STDERR.puts "Your ssh key is unknown."
78 | STDERR.puts "Please see https://github.com/ruby/git.ruby-lang.org/blob/master/config/email.yml"
79 | STDERR.puts "and send PR, or contact on ruby-core@ruby-lang.org."
80 | exit 1 # NG
81 | else
82 | # Until the last of 2019, we record the association of SVN_ACCOUNT_NAME and GIT_COMMITTER_EMAIL.
83 | open(LOG_FILE, "a") do |f|
84 | f.puts "#{ commit } #{ refname } #{ svn_account_name } #{ git_committer_email }"
85 | end
86 | end
87 | end
88 | end
89 | end
90 |
--------------------------------------------------------------------------------
/test/test-pre-receive.rb:
--------------------------------------------------------------------------------
1 | require "test/unit"
2 | require "open3"
3 | require "tmpdir"
4 | require "fileutils"
5 |
6 | class TestPreReceive < Test::Unit::TestCase
7 | def setup
8 | @svn_account_name = "mame"
9 |
10 | # setup bare repository
11 | @bare_dir = Dir.mktmpdir
12 | git("init", "--bare", chdir: @bare_dir)
13 |
14 | # setup working copy
15 | @working_copy = Dir.mktmpdir
16 | git("clone", @bare_dir, @working_copy)
17 |
18 | # make the first commit
19 | make_commit("mame", "mame@ruby-lang.org", "init")
20 | git("push")
21 |
22 | # deploy the pre-receive hook
23 | pre_receive = File.join(@bare_dir, "hooks/pre-receive")
24 | pre_receive_sh = File.join(@bare_dir, "hooks/pre-receive.sh")
25 |
26 | File.write(pre_receive, <<~END)
27 | #!/bin/bash
28 |
29 | args=""
30 | while read arg
31 | do
32 | args="$args $arg"
33 | done
34 | export args
35 |
36 | # Do not use `2>&1` here so that we can show STDERR to pusher.
37 | exec #{ pre_receive_sh } $args \
38 | >> /tmp/pre-receive.log
39 | END
40 | File.chmod(0755, pre_receive)
41 |
42 | pre_receive_sh = File.join(@bare_dir, "hooks/pre-receive.sh")
43 | src = File.read(File.join(__dir__, "../hooks/pre-receive.sh"))
44 | src = src.sub(/^ruby_git=.*/) { "ruby_git=#{ @bare_dir }" }
45 | src = src.sub(/^ruby_commit_hook=.*/) { "ruby_commit_hook=#{ File.join(__dir__, "..") }" }
46 | File.write(pre_receive_sh, src)
47 | File.chmod(0755, pre_receive_sh)
48 | end
49 |
50 | def teardown
51 | FileUtils.remove_entry(@bare_dir) if @bare_dir
52 | FileUtils.remove_entry(@working_copy) if @working_copy
53 | end
54 |
55 | def test_check_right_svn_account
56 | make_commit("mame", "mame@ruby-lang.org", "test")
57 | git("push")
58 | end
59 |
60 | def test_check_wrong_svn_account
61 | make_commit("foo", "foo@example.com", "test")
62 | err = git("push") rescue $!
63 | assert_match(
64 | /The git committer email \(foo@example\.com\) does not seem to be mame's email \(mame@ruby-lang\.org\)\./,
65 | err.message
66 | )
67 | end
68 |
69 | def test_push_multiple_commits
70 | make_commit("mame", "mame@ruby-lang.org", "test-1")
71 | make_commit("mame", "mame@ruby-lang.org", "test-2")
72 | make_commit("mame", "mame@ruby-lang.org", "test-3")
73 | git("push")
74 | end
75 |
76 | def test_push_multiple_commits_including_wrong_committer
77 | make_commit("foo", "foo@example.com", "evil-commit")
78 | make_commit("mame", "mame@ruby-lang.org", "test")
79 | err = git("push") rescue $!
80 | assert_match(
81 | /The git committer email \(foo@example\.com\) does not seem to be mame's email \(mame@ruby-lang\.org\)\./,
82 | err.message
83 | )
84 | end
85 |
86 | def test_prohibit_merge_commit
87 | # .-- c -- d -- e
88 | # / /
89 | # init -- a -- b --'
90 | make_commit("mame", "mame@ruby-lang.org", "a")
91 | git("branch", "topic")
92 | make_commit("mame", "mame@ruby-lang.org", "b")
93 | git("checkout", "topic")
94 | make_commit("mame", "mame@ruby-lang.org", "c")
95 | git("checkout", "master")
96 | git("merge", "topic", "-m", "d")
97 | make_commit("mame", "mame@ruby-lang.org", "e")
98 | err = git("push") rescue $!
99 | assert_match(
100 | /A merge commit is prohibited\./,
101 | err.message
102 | )
103 | end
104 |
105 | private
106 |
107 | def git(*cmd, chdir: @working_copy)
108 | env = { "SVN_ACCOUNT_NAME" => @svn_account_name }
109 | out, status = Open3.capture2e(env, "git", *cmd, chdir: chdir)
110 | unless status.success?
111 | raise "git #{ cmd.join(" ") }\n" + out
112 | end
113 | end
114 |
115 | def make_commit(user, email, file)
116 | git("config", "--local", "user.name", user)
117 | git("config", "--local", "user.email", email)
118 | File.write(File.join(@working_copy, file), file)
119 | git("add", file)
120 | git("commit", "-m", file)
121 | end
122 | end
123 |
--------------------------------------------------------------------------------
/bin/git-sync-check.rb:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env ruby
2 | # This is executed by `/etc/systemd/system/git-sync-check.service` as User=git
3 | # which is triggered every 10 minutes by `/etc/systemd/system/git-sync-check.timer`.
4 |
5 | require 'json'
6 | require 'net/http'
7 | require 'uri'
8 |
9 | module Git
10 | # cgit bare repository
11 | GIT_DIR = '/var/git/ruby.git'
12 |
13 | # This is retried because ls-remote of GitHub sometimes fails
14 | Error = Class.new(StandardError)
15 |
16 | class << self
17 | def show_ref
18 | git('show-ref')
19 | end
20 |
21 | def ls_remote(remote)
22 | git('ls-remote', remote)
23 | end
24 |
25 | private
26 |
27 | def git(*cmd)
28 | out = IO.popen({ 'GIT_DIR' => GIT_DIR }, ['git', *cmd], &:read)
29 | unless $?.success?
30 | raise Git::Error.new("Failed to execute: git #{cmd.join(' ')}")
31 | end
32 | out
33 | end
34 | end
35 | end
36 |
37 | module Slack
38 | WEBHOOK_URL = File.read(File.expand_path('~git/config/slack-webhook-alerts')).chomp
39 | NOTIFY_CHANNELS = [
40 | "C5FCXFXDZ", # alerts
41 | "CR2QGFCAE", # alerts-emoji
42 | ]
43 |
44 | class << self
45 | def notify(message)
46 | attachment = {
47 | title: 'bin/git-sync-check.rb',
48 | title_link: 'https://github.com/ruby/git.ruby-lang.org/blob/master/bin/git-sync-check.rb',
49 | text: message,
50 | color: 'danger',
51 | }
52 |
53 | payload = { username: 'ruby/git.ruby-lang.org', attachments: [attachment] }
54 | NOTIFY_CHANNELS.each do |channel|
55 | resp = post(WEBHOOK_URL, payload: payload.merge(channel: channel))
56 | puts "#{resp.code} (#{resp.body}) -- #{payload.to_json} (channel: #{channel})"
57 | end
58 | end
59 |
60 | private
61 |
62 | def post(url, payload:)
63 | uri = URI.parse(url)
64 | http = Net::HTTP.new(uri.host, uri.port)
65 | http.use_ssl = (uri.scheme == 'https')
66 | http.start do
67 | req = Net::HTTP::Post.new(uri.path)
68 | req.set_form_data({ payload: payload.to_json })
69 | http.request(req)
70 | end
71 | end
72 | end
73 | end
74 |
75 | module GitSyncCheck
76 | class Errors < StandardError
77 | attr_reader :errors
78 |
79 | def initialize(errors)
80 | @errors = errors
81 | super('git-sync-check failed')
82 | end
83 | end
84 |
85 | def self.check_consistency
86 | # Quickly finish collecting facts to avoid a race condition as much as possible.
87 | ls_remote = Git.ls_remote('github')
88 | show_ref = Git.show_ref
89 |
90 | # Start digesting the data after the collection.
91 | remote_refs = Hash[ls_remote.lines.map { |l| rev, ref = l.chomp.split("\t"); [ref, rev] }]
92 | local_refs = Hash[show_ref.lines.map { |l| rev, ref = l.chomp.split(' '); [ref, rev] }]
93 |
94 | # Remove refs which are not to be checked here.
95 | refs = remote_refs.keys | local_refs.keys
96 | refs.delete('HEAD') # show-ref does not show it
97 | refs.delete('refs/notes/commits') # it seems too complicated to recover its inconsistency
98 | remote_refs.keys.each { |ref| refs.delete(ref) if ref.match(%r[\Arefs/pull/\d+/\w+\z]) } # pull requests
99 |
100 | # Check consistency
101 | errors = {}
102 | refs.each do |ref|
103 | remote_rev = remote_refs[ref]
104 | local_rev = local_refs[ref]
105 |
106 | if remote_rev != local_rev
107 | errors[ref] = [remote_rev, local_rev]
108 | end
109 | end
110 |
111 | unless errors.empty?
112 | raise Errors.new(errors)
113 | end
114 | end
115 | end
116 |
117 | attempts = 3
118 | begin
119 | GitSyncCheck.check_consistency
120 | puts 'SUCCUESS: Everything is consistent.'
121 | rescue GitSyncCheck::Errors => e
122 | attempts -= 1
123 | if attempts > 0
124 | # Automatically fix inconsistency if it's master, but never sync random new branches.
125 | ref = 'refs/heads/master'
126 | if e.errors.key?(ref)
127 | remote_rev, local_rev = e.errors['refs/heads/master']
128 | puts "Fixing inconsistency ref:#{ref.inspect} remote:#{remote_rev.inspect} local:#{local_rev.inspect}"
129 | unless system('/home/git/git.ruby-lang.org/bin/update-ruby.sh', File.basename(ref))
130 | raise "Failed to execute update-ruby.sh for #{ref}"
131 | end
132 | end
133 | sleep 5
134 | retry
135 | end
136 |
137 | message = "FAILURE: Following inconsistencies are found.\n"
138 | e.errors.each do |ref, (remote_rev, local_rev)|
139 | message << "ref:#{ref.inspect} remote:#{remote_rev.inspect} local:#{local_rev.inspect}\n"
140 | end
141 | # Slack.notify(message)
142 | puts message
143 | rescue Git::Error => e
144 | attempts -= 1
145 | if attempts > 0
146 | puts "Retrying #{e.class}: #{e.message} (remaining attempts: #{attempts})"
147 | sleep 5
148 | retry
149 | end
150 | Slack.notify("#{e.class}: #{e.message}\n#{e.backtrace.join("\n")}")
151 | rescue => e
152 | Slack.notify("#{e.class}: #{e.message}\n#{e.backtrace.join("\n")}")
153 | end
154 |
--------------------------------------------------------------------------------
/config/email.yml:
--------------------------------------------------------------------------------
1 | # This is the correspondence table between "committer email" of Git commits and
2 | # SVN_ACCOUNT_NAME (set in ~git/.ssh/authorized_keys for each SSH key).
3 | # See `bin/check-email-and-refname.rb` for details.
4 | #
5 | # You can add a new email address but DO NOT DELETE already-registered email address.
6 | # This association will be used for committer identification of the ruby repository.
7 | #
8 | a_matsuda:
9 | - ronnie@dio.jp
10 | # aamine
11 | # akira
12 | # akiyoshi
13 | akr:
14 | - akr@fsij.org
15 | alanwu:
16 | - alanwu@ruby-lang.org
17 | # arai
18 | # arton
19 | aycabta:
20 | - aycabta@gmail.com
21 | ayumin:
22 | - ayumu.aizawa@gmail.com
23 | # azav
24 | burdettelamar:
25 | - burdettelamar@yahoo.com
26 | - burdettelamar@ruby-lang.org
27 | byroot:
28 | - jean.boussier@gmail.com
29 | - byroot@ruby-lang.org
30 | # chad
31 | # charliesome
32 | # dave
33 | # davidflanagan
34 | # dblack
35 | # drbrain
36 | duerst:
37 | - duerst@it.aoyama.ac.jp
38 | # eban
39 | # emboss
40 | eightbitraptor:
41 | - eightbitraptor@ruby-lang.org
42 | - matt@eightbitraptor.com
43 | eileencodes:
44 | - eileencodes@gmail.com
45 | eregon:
46 | - eregontp@gmail.com
47 | - eregon@ruby-lang.org
48 | # evan
49 | # funny_falcon
50 | git:
51 | - svn-admin@ruby-lang.org
52 | glass:
53 | - glass.saga@gmail.com
54 | # gogotanaka
55 | # gotoken
56 | # gotoyuzo
57 | # gsinclair
58 | # H_Konishi
59 | headius:
60 | - headius@headius.com
61 | # hone
62 | hsbt:
63 | - hsbt@ruby-lang.org
64 | ima1zumi:
65 | - mariimaizumi5@gmail.com
66 | # iwamatsu
67 | jaruga:
68 | - jaruga@ruby-lang.org
69 | # jeg2
70 | jemma:
71 | - jemmaissroff@gmail.com
72 | jeremy:
73 | - code@jeremyevans.net
74 | jhawthorn:
75 | - john@hawthorn.email
76 | - jhawthorn@ruby-lang.org
77 | # jim
78 | kddnewton:
79 | - kddnewton@gmail.com
80 | k0kubun:
81 | - takashikkbn@gmail.com
82 | # kanemoto
83 | katei:
84 | - kateinoigakukun@gmail.com
85 | # katsu
86 | kazu:
87 | - zn@mbf.nifty.com
88 | # keiju
89 | # kjtsanaktsidis:
90 | # - ktsanaktsidis@zendesk.com
91 | # - kj@kjtsanaktsidis.id.au
92 | knu:
93 | - knu@idaemons.org
94 | ko1:
95 | - ko1@atdot.net
96 | kosaki:
97 | - kosaki.motohiro@gmail.com
98 | # kosako
99 | kou:
100 | - kou@cozmixng.org
101 | - kou@clear-code.com
102 | # kouji
103 | # ksaito
104 | ktsj:
105 | - kazuki@callcc.net
106 | # luislavena
107 | luke-gru:
108 | - luke.gru@gmail.com
109 | - luke-gru@ruby-lang.org
110 | makenowjust:
111 | - make.just.on@gmail.com
112 | mame:
113 | - mame@ruby-lang.org
114 | marcandre:
115 | - github@marc-andre.ca
116 | - marcandre@ruby-lang.org
117 | matz:
118 | - matz@ruby.or.jp
119 | max:
120 | - ruby@bernsteinbear.com
121 | maximecb:
122 | - maximecb@ruby-lang.org
123 | - maxime.chevalierboisvert@shopify.com
124 | # michal
125 | # mneumann
126 | # moonwolf
127 | mrkn:
128 | - mrkn@ruby-lang.org
129 | - mrkn@mrkn.jp
130 | - muraken@gmail.com
131 | nagachika:
132 | - nagachika@ruby-lang.org
133 | # nagai
134 | # nahi
135 | # nari
136 | naruse:
137 | - naruse@airemix.jp
138 | ngoto:
139 | - ngotogenome@gmail.com
140 | nobu:
141 | - nobu@ruby-lang.org
142 | normal:
143 | - normal@ruby-lang.org
144 | # ntalbott
145 | # ocean
146 | odaira:
147 | - rodaira@us.ibm.com
148 | okkez:
149 | - okkez000@gmail.com
150 | ono-max:
151 | - onoto1998@gmail.com
152 | peter.zhu:
153 | - peter@peterzhu.ca
154 | - peter.zhu@ruby-lang.org
155 | pocke:
156 | - kuwabara@pocke.me
157 | rhe:
158 | - k@rhe.jp
159 | # ryan
160 | samuel:
161 | - samuel.williams@oriontransfer.co.nz
162 | schneems:
163 | - richard.schneeman@gmail.com
164 | # seki
165 | # ser
166 | # shigek
167 | shioimm:
168 | - shioi.mm@gmail.com
169 | shirosaki:
170 | - h.shirosaki@gmail.com
171 | shugo:
172 | - shugo@ruby-lang.org
173 | shyouhei:
174 | - shyouhei@ruby-lang.org
175 | # siena
176 | # sonots
177 | sorah:
178 | - her@sorah.jp
179 | - sorah@cookpad.com
180 | soutaro:
181 | - matsumoto@soutaro.com
182 | st0012:
183 | - stan001212@gmail.com
184 | stomar:
185 | - sto.mar@web.de
186 | # suke
187 | tadd:
188 | - tad.a.digger@gmail.com
189 | - tadd@ruby-lang.org
190 | # tadf
191 | tagomoris:
192 | - tagomoris@gmail.com
193 | takano32:
194 | - takano32@gmail.com
195 | - takano32@ruby-lang.org
196 | # tarui
197 | # technorama
198 | tenderlove:
199 | - aaron.patterson@gmail.com
200 | - tenderlove@ruby-lang.org
201 | # tmm1
202 | tompng:
203 | - tomoyapenguin@gmail.com
204 | # toyoshim
205 | # ts
206 | # ttate
207 | # uema2
208 | usa:
209 | - usa@ruby-lang.org
210 | # wanabe
211 | watson1978:
212 | - watson1978@gmail.com
213 | # wakou
214 | # why
215 | # wew
216 | # wyhaines
217 | # xibbar
218 | ydah:
219 | - t.yudai92@gmail.com
220 | yugui:
221 | - yugui@yugui.jp
222 | yui-knk:
223 | - yui-knk@ruby-lang.org
224 | yuki:
225 | - yk.nishijima@gmail.com
226 | zenspider:
227 | - ryand-github@zenspider.com
228 | - ryand-ruby@zenspider.com
229 | - zenspider@gmail.com
230 | # zsombor
231 | zverok:
232 | - zverok.offline@gmail.com
233 | - zverok@ruby-lang.org
234 | zzak:
235 | - zzak@hey.com
236 | - zzakscott@gmail.com
237 |
--------------------------------------------------------------------------------
/recipes/files/etc/locale.gen:
--------------------------------------------------------------------------------
1 | # This file lists locales that you wish to have built. You can find a list
2 | # of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
3 | # user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
4 | # this file, you need to rerun locale-gen.
5 |
6 |
7 | # aa_DJ ISO-8859-1
8 | # aa_DJ.UTF-8 UTF-8
9 | # aa_ER UTF-8
10 | # aa_ER@saaho UTF-8
11 | # aa_ET UTF-8
12 | # af_ZA ISO-8859-1
13 | # af_ZA.UTF-8 UTF-8
14 | # agr_PE UTF-8
15 | # ak_GH UTF-8
16 | # am_ET UTF-8
17 | # an_ES ISO-8859-15
18 | # an_ES.UTF-8 UTF-8
19 | # anp_IN UTF-8
20 | # ar_AE ISO-8859-6
21 | # ar_AE.UTF-8 UTF-8
22 | # ar_BH ISO-8859-6
23 | # ar_BH.UTF-8 UTF-8
24 | # ar_DZ ISO-8859-6
25 | # ar_DZ.UTF-8 UTF-8
26 | # ar_EG ISO-8859-6
27 | # ar_EG.UTF-8 UTF-8
28 | # ar_IN UTF-8
29 | # ar_IQ ISO-8859-6
30 | # ar_IQ.UTF-8 UTF-8
31 | # ar_JO ISO-8859-6
32 | # ar_JO.UTF-8 UTF-8
33 | # ar_KW ISO-8859-6
34 | # ar_KW.UTF-8 UTF-8
35 | # ar_LB ISO-8859-6
36 | # ar_LB.UTF-8 UTF-8
37 | # ar_LY ISO-8859-6
38 | # ar_LY.UTF-8 UTF-8
39 | # ar_MA ISO-8859-6
40 | # ar_MA.UTF-8 UTF-8
41 | # ar_OM ISO-8859-6
42 | # ar_OM.UTF-8 UTF-8
43 | # ar_QA ISO-8859-6
44 | # ar_QA.UTF-8 UTF-8
45 | # ar_SA ISO-8859-6
46 | # ar_SA.UTF-8 UTF-8
47 | # ar_SD ISO-8859-6
48 | # ar_SD.UTF-8 UTF-8
49 | # ar_SS UTF-8
50 | # ar_SY ISO-8859-6
51 | # ar_SY.UTF-8 UTF-8
52 | # ar_TN ISO-8859-6
53 | # ar_TN.UTF-8 UTF-8
54 | # ar_YE ISO-8859-6
55 | # ar_YE.UTF-8 UTF-8
56 | # as_IN UTF-8
57 | # ast_ES ISO-8859-15
58 | # ast_ES.UTF-8 UTF-8
59 | # ayc_PE UTF-8
60 | # az_AZ UTF-8
61 | # az_IR UTF-8
62 | # be_BY CP1251
63 | # be_BY.UTF-8 UTF-8
64 | # be_BY@latin UTF-8
65 | # bem_ZM UTF-8
66 | # ber_DZ UTF-8
67 | # ber_MA UTF-8
68 | # bg_BG CP1251
69 | # bg_BG.UTF-8 UTF-8
70 | # bhb_IN.UTF-8 UTF-8
71 | # bho_IN UTF-8
72 | # bho_NP UTF-8
73 | # bi_VU UTF-8
74 | # bn_BD UTF-8
75 | # bn_IN UTF-8
76 | # bo_CN UTF-8
77 | # bo_IN UTF-8
78 | # br_FR ISO-8859-1
79 | # br_FR.UTF-8 UTF-8
80 | # br_FR@euro ISO-8859-15
81 | # brx_IN UTF-8
82 | # bs_BA ISO-8859-2
83 | # bs_BA.UTF-8 UTF-8
84 | # byn_ER UTF-8
85 | # ca_AD ISO-8859-15
86 | # ca_AD.UTF-8 UTF-8
87 | # ca_ES ISO-8859-1
88 | # ca_ES.UTF-8 UTF-8
89 | # ca_ES@euro ISO-8859-15
90 | # ca_ES@valencia UTF-8
91 | # ca_FR ISO-8859-15
92 | # ca_FR.UTF-8 UTF-8
93 | # ca_IT ISO-8859-15
94 | # ca_IT.UTF-8 UTF-8
95 | # ce_RU UTF-8
96 | # chr_US UTF-8
97 | # cmn_TW UTF-8
98 | # crh_UA UTF-8
99 | # cs_CZ ISO-8859-2
100 | # cs_CZ.UTF-8 UTF-8
101 | # csb_PL UTF-8
102 | # cv_RU UTF-8
103 | # cy_GB ISO-8859-14
104 | # cy_GB.UTF-8 UTF-8
105 | # da_DK ISO-8859-1
106 | # da_DK.UTF-8 UTF-8
107 | # de_AT ISO-8859-1
108 | # de_AT.UTF-8 UTF-8
109 | # de_AT@euro ISO-8859-15
110 | # de_BE ISO-8859-1
111 | # de_BE.UTF-8 UTF-8
112 | # de_BE@euro ISO-8859-15
113 | # de_CH ISO-8859-1
114 | # de_CH.UTF-8 UTF-8
115 | # de_DE ISO-8859-1
116 | # de_DE.UTF-8 UTF-8
117 | # de_DE@euro ISO-8859-15
118 | # de_IT ISO-8859-1
119 | # de_IT.UTF-8 UTF-8
120 | # de_LI.UTF-8 UTF-8
121 | # de_LU ISO-8859-1
122 | # de_LU.UTF-8 UTF-8
123 | # de_LU@euro ISO-8859-15
124 | # doi_IN UTF-8
125 | # dsb_DE UTF-8
126 | # dv_MV UTF-8
127 | # dz_BT UTF-8
128 | # el_CY ISO-8859-7
129 | # el_CY.UTF-8 UTF-8
130 | # el_GR ISO-8859-7
131 | # el_GR.UTF-8 UTF-8
132 | # el_GR@euro ISO-8859-7
133 | # en_AG UTF-8
134 | # en_AU ISO-8859-1
135 | # en_AU.UTF-8 UTF-8
136 | # en_BW ISO-8859-1
137 | # en_BW.UTF-8 UTF-8
138 | # en_CA ISO-8859-1
139 | # en_CA.UTF-8 UTF-8
140 | # en_DK ISO-8859-1
141 | # en_DK.ISO-8859-15 ISO-8859-15
142 | # en_DK.UTF-8 UTF-8
143 | # en_GB ISO-8859-1
144 | # en_GB.ISO-8859-15 ISO-8859-15
145 | # en_GB.UTF-8 UTF-8
146 | # en_HK ISO-8859-1
147 | # en_HK.UTF-8 UTF-8
148 | # en_IE ISO-8859-1
149 | # en_IE.UTF-8 UTF-8
150 | # en_IE@euro ISO-8859-15
151 | # en_IL UTF-8
152 | # en_IN UTF-8
153 | # en_NG UTF-8
154 | # en_NZ ISO-8859-1
155 | # en_NZ.UTF-8 UTF-8
156 | # en_PH ISO-8859-1
157 | # en_PH.UTF-8 UTF-8
158 | # en_SC.UTF-8 UTF-8
159 | # en_SG ISO-8859-1
160 | # en_SG.UTF-8 UTF-8
161 | # en_US ISO-8859-1
162 | # en_US.ISO-8859-15 ISO-8859-15
163 | en_US.UTF-8 UTF-8
164 | # en_ZA ISO-8859-1
165 | # en_ZA.UTF-8 UTF-8
166 | # en_ZM UTF-8
167 | # en_ZW ISO-8859-1
168 | # en_ZW.UTF-8 UTF-8
169 | # eo UTF-8
170 | # es_AR ISO-8859-1
171 | # es_AR.UTF-8 UTF-8
172 | # es_BO ISO-8859-1
173 | # es_BO.UTF-8 UTF-8
174 | # es_CL ISO-8859-1
175 | # es_CL.UTF-8 UTF-8
176 | # es_CO ISO-8859-1
177 | # es_CO.UTF-8 UTF-8
178 | # es_CR ISO-8859-1
179 | # es_CR.UTF-8 UTF-8
180 | # es_CU UTF-8
181 | # es_DO ISO-8859-1
182 | # es_DO.UTF-8 UTF-8
183 | # es_EC ISO-8859-1
184 | # es_EC.UTF-8 UTF-8
185 | # es_ES ISO-8859-1
186 | # es_ES.UTF-8 UTF-8
187 | # es_ES@euro ISO-8859-15
188 | # es_GT ISO-8859-1
189 | # es_GT.UTF-8 UTF-8
190 | # es_HN ISO-8859-1
191 | # es_HN.UTF-8 UTF-8
192 | # es_MX ISO-8859-1
193 | # es_MX.UTF-8 UTF-8
194 | # es_NI ISO-8859-1
195 | # es_NI.UTF-8 UTF-8
196 | # es_PA ISO-8859-1
197 | # es_PA.UTF-8 UTF-8
198 | # es_PE ISO-8859-1
199 | # es_PE.UTF-8 UTF-8
200 | # es_PR ISO-8859-1
201 | # es_PR.UTF-8 UTF-8
202 | # es_PY ISO-8859-1
203 | # es_PY.UTF-8 UTF-8
204 | # es_SV ISO-8859-1
205 | # es_SV.UTF-8 UTF-8
206 | # es_US ISO-8859-1
207 | # es_US.UTF-8 UTF-8
208 | # es_UY ISO-8859-1
209 | # es_UY.UTF-8 UTF-8
210 | # es_VE ISO-8859-1
211 | # es_VE.UTF-8 UTF-8
212 | # et_EE ISO-8859-1
213 | # et_EE.ISO-8859-15 ISO-8859-15
214 | # et_EE.UTF-8 UTF-8
215 | # eu_ES ISO-8859-1
216 | # eu_ES.UTF-8 UTF-8
217 | # eu_ES@euro ISO-8859-15
218 | # eu_FR ISO-8859-1
219 | # eu_FR.UTF-8 UTF-8
220 | # eu_FR@euro ISO-8859-15
221 | # fa_IR UTF-8
222 | # ff_SN UTF-8
223 | # fi_FI ISO-8859-1
224 | # fi_FI.UTF-8 UTF-8
225 | # fi_FI@euro ISO-8859-15
226 | # fil_PH UTF-8
227 | # fo_FO ISO-8859-1
228 | # fo_FO.UTF-8 UTF-8
229 | # fr_BE ISO-8859-1
230 | # fr_BE.UTF-8 UTF-8
231 | # fr_BE@euro ISO-8859-15
232 | # fr_CA ISO-8859-1
233 | # fr_CA.UTF-8 UTF-8
234 | # fr_CH ISO-8859-1
235 | # fr_CH.UTF-8 UTF-8
236 | # fr_FR ISO-8859-1
237 | # fr_FR.UTF-8 UTF-8
238 | # fr_FR@euro ISO-8859-15
239 | # fr_LU ISO-8859-1
240 | # fr_LU.UTF-8 UTF-8
241 | # fr_LU@euro ISO-8859-15
242 | # fur_IT UTF-8
243 | # fy_DE UTF-8
244 | # fy_NL UTF-8
245 | # ga_IE ISO-8859-1
246 | # ga_IE.UTF-8 UTF-8
247 | # ga_IE@euro ISO-8859-15
248 | # gd_GB ISO-8859-15
249 | # gd_GB.UTF-8 UTF-8
250 | # gez_ER UTF-8
251 | # gez_ER@abegede UTF-8
252 | # gez_ET UTF-8
253 | # gez_ET@abegede UTF-8
254 | # gl_ES ISO-8859-1
255 | # gl_ES.UTF-8 UTF-8
256 | # gl_ES@euro ISO-8859-15
257 | # gu_IN UTF-8
258 | # gv_GB ISO-8859-1
259 | # gv_GB.UTF-8 UTF-8
260 | # ha_NG UTF-8
261 | # hak_TW UTF-8
262 | # he_IL ISO-8859-8
263 | # he_IL.UTF-8 UTF-8
264 | # hi_IN UTF-8
265 | # hif_FJ UTF-8
266 | # hne_IN UTF-8
267 | # hr_HR ISO-8859-2
268 | # hr_HR.UTF-8 UTF-8
269 | # hsb_DE ISO-8859-2
270 | # hsb_DE.UTF-8 UTF-8
271 | # ht_HT UTF-8
272 | # hu_HU ISO-8859-2
273 | # hu_HU.UTF-8 UTF-8
274 | # hy_AM UTF-8
275 | # hy_AM.ARMSCII-8 ARMSCII-8
276 | # ia_FR UTF-8
277 | # id_ID ISO-8859-1
278 | # id_ID.UTF-8 UTF-8
279 | # ig_NG UTF-8
280 | # ik_CA UTF-8
281 | # is_IS ISO-8859-1
282 | # is_IS.UTF-8 UTF-8
283 | # it_CH ISO-8859-1
284 | # it_CH.UTF-8 UTF-8
285 | # it_IT ISO-8859-1
286 | # it_IT.UTF-8 UTF-8
287 | # it_IT@euro ISO-8859-15
288 | # iu_CA UTF-8
289 | # ja_JP.EUC-JP EUC-JP
290 | # ja_JP.UTF-8 UTF-8
291 | # ka_GE GEORGIAN-PS
292 | # ka_GE.UTF-8 UTF-8
293 | # kab_DZ UTF-8
294 | # kk_KZ PT154
295 | # kk_KZ.RK1048 RK1048
296 | # kk_KZ.UTF-8 UTF-8
297 | # kl_GL ISO-8859-1
298 | # kl_GL.UTF-8 UTF-8
299 | # km_KH UTF-8
300 | # kn_IN UTF-8
301 | # ko_KR.EUC-KR EUC-KR
302 | # ko_KR.UTF-8 UTF-8
303 | # kok_IN UTF-8
304 | # ks_IN UTF-8
305 | # ks_IN@devanagari UTF-8
306 | # ku_TR ISO-8859-9
307 | # ku_TR.UTF-8 UTF-8
308 | # kw_GB ISO-8859-1
309 | # kw_GB.UTF-8 UTF-8
310 | # ky_KG UTF-8
311 | # lb_LU UTF-8
312 | # lg_UG ISO-8859-10
313 | # lg_UG.UTF-8 UTF-8
314 | # li_BE UTF-8
315 | # li_NL UTF-8
316 | # lij_IT UTF-8
317 | # ln_CD UTF-8
318 | # lo_LA UTF-8
319 | # lt_LT ISO-8859-13
320 | # lt_LT.UTF-8 UTF-8
321 | # lv_LV ISO-8859-13
322 | # lv_LV.UTF-8 UTF-8
323 | # lzh_TW UTF-8
324 | # mag_IN UTF-8
325 | # mai_IN UTF-8
326 | # mai_NP UTF-8
327 | # mfe_MU UTF-8
328 | # mg_MG ISO-8859-15
329 | # mg_MG.UTF-8 UTF-8
330 | # mhr_RU UTF-8
331 | # mi_NZ ISO-8859-13
332 | # mi_NZ.UTF-8 UTF-8
333 | # miq_NI UTF-8
334 | # mjw_IN UTF-8
335 | # mk_MK ISO-8859-5
336 | # mk_MK.UTF-8 UTF-8
337 | # ml_IN UTF-8
338 | # mn_MN UTF-8
339 | # mni_IN UTF-8
340 | # mnw_MM UTF-8
341 | # mr_IN UTF-8
342 | # ms_MY ISO-8859-1
343 | # ms_MY.UTF-8 UTF-8
344 | # mt_MT ISO-8859-3
345 | # mt_MT.UTF-8 UTF-8
346 | # my_MM UTF-8
347 | # nan_TW UTF-8
348 | # nan_TW@latin UTF-8
349 | # nb_NO ISO-8859-1
350 | # nb_NO.UTF-8 UTF-8
351 | # nds_DE UTF-8
352 | # nds_NL UTF-8
353 | # ne_NP UTF-8
354 | # nhn_MX UTF-8
355 | # niu_NU UTF-8
356 | # niu_NZ UTF-8
357 | # nl_AW UTF-8
358 | # nl_BE ISO-8859-1
359 | # nl_BE.UTF-8 UTF-8
360 | # nl_BE@euro ISO-8859-15
361 | # nl_NL ISO-8859-1
362 | # nl_NL.UTF-8 UTF-8
363 | # nl_NL@euro ISO-8859-15
364 | # nn_NO ISO-8859-1
365 | # nn_NO.UTF-8 UTF-8
366 | # nr_ZA UTF-8
367 | # nso_ZA UTF-8
368 | # oc_FR ISO-8859-1
369 | # oc_FR.UTF-8 UTF-8
370 | # om_ET UTF-8
371 | # om_KE ISO-8859-1
372 | # om_KE.UTF-8 UTF-8
373 | # or_IN UTF-8
374 | # os_RU UTF-8
375 | # pa_IN UTF-8
376 | # pa_PK UTF-8
377 | # pap_AW UTF-8
378 | # pap_CW UTF-8
379 | # pl_PL ISO-8859-2
380 | # pl_PL.UTF-8 UTF-8
381 | # ps_AF UTF-8
382 | # pt_BR ISO-8859-1
383 | # pt_BR.UTF-8 UTF-8
384 | # pt_PT ISO-8859-1
385 | # pt_PT.UTF-8 UTF-8
386 | # pt_PT@euro ISO-8859-15
387 | # quz_PE UTF-8
388 | # raj_IN UTF-8
389 | # ro_RO ISO-8859-2
390 | # ro_RO.UTF-8 UTF-8
391 | # ru_RU ISO-8859-5
392 | # ru_RU.CP1251 CP1251
393 | # ru_RU.KOI8-R KOI8-R
394 | # ru_RU.UTF-8 UTF-8
395 | # ru_UA KOI8-U
396 | # ru_UA.UTF-8 UTF-8
397 | # rw_RW UTF-8
398 | # sa_IN UTF-8
399 | # sah_RU UTF-8
400 | # sat_IN UTF-8
401 | # sc_IT UTF-8
402 | # sd_IN UTF-8
403 | # sd_IN@devanagari UTF-8
404 | # se_NO UTF-8
405 | # sgs_LT UTF-8
406 | # shn_MM UTF-8
407 | # shs_CA UTF-8
408 | # si_LK UTF-8
409 | # sid_ET UTF-8
410 | # sk_SK ISO-8859-2
411 | # sk_SK.UTF-8 UTF-8
412 | # sl_SI ISO-8859-2
413 | # sl_SI.UTF-8 UTF-8
414 | # sm_WS UTF-8
415 | # so_DJ ISO-8859-1
416 | # so_DJ.UTF-8 UTF-8
417 | # so_ET UTF-8
418 | # so_KE ISO-8859-1
419 | # so_KE.UTF-8 UTF-8
420 | # so_SO ISO-8859-1
421 | # so_SO.UTF-8 UTF-8
422 | # sq_AL ISO-8859-1
423 | # sq_AL.UTF-8 UTF-8
424 | # sq_MK UTF-8
425 | # sr_ME UTF-8
426 | # sr_RS UTF-8
427 | # sr_RS@latin UTF-8
428 | # ss_ZA UTF-8
429 | # st_ZA ISO-8859-1
430 | # st_ZA.UTF-8 UTF-8
431 | # sv_FI ISO-8859-1
432 | # sv_FI.UTF-8 UTF-8
433 | # sv_FI@euro ISO-8859-15
434 | # sv_SE ISO-8859-1
435 | # sv_SE.ISO-8859-15 ISO-8859-15
436 | # sv_SE.UTF-8 UTF-8
437 | # sw_KE UTF-8
438 | # sw_TZ UTF-8
439 | # szl_PL UTF-8
440 | # ta_IN UTF-8
441 | # ta_LK UTF-8
442 | # tcy_IN.UTF-8 UTF-8
443 | # te_IN UTF-8
444 | # tg_TJ KOI8-T
445 | # tg_TJ.UTF-8 UTF-8
446 | # th_TH TIS-620
447 | # th_TH.UTF-8 UTF-8
448 | # the_NP UTF-8
449 | # ti_ER UTF-8
450 | # ti_ET UTF-8
451 | # tig_ER UTF-8
452 | # tk_TM UTF-8
453 | # tl_PH ISO-8859-1
454 | # tl_PH.UTF-8 UTF-8
455 | # tn_ZA UTF-8
456 | # to_TO UTF-8
457 | # tpi_PG UTF-8
458 | # tr_CY ISO-8859-9
459 | # tr_CY.UTF-8 UTF-8
460 | # tr_TR ISO-8859-9
461 | # tr_TR.UTF-8 UTF-8
462 | # ts_ZA UTF-8
463 | # tt_RU UTF-8
464 | # tt_RU@iqtelif UTF-8
465 | # ug_CN UTF-8
466 | # uk_UA KOI8-U
467 | # uk_UA.UTF-8 UTF-8
468 | # unm_US UTF-8
469 | # ur_IN UTF-8
470 | # ur_PK UTF-8
471 | # uz_UZ ISO-8859-1
472 | # uz_UZ.UTF-8 UTF-8
473 | # uz_UZ@cyrillic UTF-8
474 | # ve_ZA UTF-8
475 | # vi_VN UTF-8
476 | # wa_BE ISO-8859-1
477 | # wa_BE.UTF-8 UTF-8
478 | # wa_BE@euro ISO-8859-15
479 | # wae_CH UTF-8
480 | # wal_ET UTF-8
481 | # wo_SN UTF-8
482 | # xh_ZA ISO-8859-1
483 | # xh_ZA.UTF-8 UTF-8
484 | # yi_US CP1255
485 | # yi_US.UTF-8 UTF-8
486 | # yo_NG UTF-8
487 | # yue_HK UTF-8
488 | # yuw_PG UTF-8
489 | # zh_CN GB2312
490 | # zh_CN.GB18030 GB18030
491 | # zh_CN.GBK GBK
492 | # zh_CN.UTF-8 UTF-8
493 | # zh_HK BIG5-HKSCS
494 | # zh_HK.UTF-8 UTF-8
495 | # zh_SG GB2312
496 | # zh_SG.GBK GBK
497 | # zh_SG.UTF-8 UTF-8
498 | # zh_TW BIG5
499 | # zh_TW.EUC-TW EUC-TW
500 | # zh_TW.UTF-8 UTF-8
501 | # zu_ZA ISO-8859-1
502 | # zu_ZA.UTF-8 UTF-8
503 |
--------------------------------------------------------------------------------
/recipes/files/etc/apache2/conf-available/cgit.conf:
--------------------------------------------------------------------------------
1 | Alias /cgit-css "/usr/share/cgit/"
2 | ScriptAlias / "/usr/lib/cgit/cgit.cgi/"
3 | RedirectMatch ^/cgit$ /cgit/
4 |
5 | AllowOverride None
6 | Options ExecCGI FollowSymlinks
7 | Require all granted
8 | RLimitNPROC 5
9 |
10 | RewriteEngine On
11 | RewriteCond %{QUERY_STRING} ^id=([0-9a-fA-F]{40})$
12 | RewriteRule ^/ruby\.git/commit/?$ https://github.com/ruby/ruby/commit/%1 [R=permanent,L,NE,QSD]
13 | RewriteCond %{QUERY_STRING} ^id=([0-9a-fA-F]{40})$
14 | RewriteRule ^/ruby\.git/commit/(.*)$ https://github.com/ruby/ruby/blob/%1/$1 [R=permanent,L,NE,QSD]
15 | RewriteCond %{QUERY_STRING} ^id=([0-9a-fA-F]{40})$
16 | RewriteRule ^/ruby\.git/tree/(.*)$ https://github.com/ruby/ruby/blob/%1/$1 [R=permanent,L,NE,QSD]
17 | RewriteCond %{QUERY_STRING} ^id=([0-9a-fA-F]{40})(&showmsg=1)?$
18 | RewriteRule ^/ruby\.git/log/(.*)$ https://github.com/ruby/ruby/commits/%1/$1 [R=permanent,L,NE,QSD]
19 |
20 | Order Allow,Deny
21 | Allow from all
22 |
23 | Deny from 100.25.39.187
24 | Deny from 100.27.8.240
25 | Deny from 101.32.115.96
26 | Deny from 101.32.240.178
27 | Deny from 101.32.242.16
28 | Deny from 101.32.243.24
29 | Deny from 101.32.244.173
30 | Deny from 101.32.254.77
31 | Deny from 103.121.39.54
32 | Deny from 103.55.10.9
33 | Deny from 119.28.105.111
34 | Deny from 124.156.196.210
35 | Deny from 124.156.200.172
36 | Deny from 124.156.205.228
37 | Deny from 124.156.207.130
38 | Deny from 129.226.146.19
39 | Deny from 129.226.150.55
40 | Deny from 129.226.151.215
41 | Deny from 129.226.154.196
42 | Deny from 129.226.156.129
43 | Deny from 129.226.158.117
44 | Deny from 129.226.192.111
45 | Deny from 129.226.192.224
46 | Deny from 129.226.193.30
47 | Deny from 129.226.209.118
48 | Deny from 129.226.91.207
49 | Deny from 129.226.92.236
50 | Deny from 129.226.92.4
51 | Deny from 13.217.165.91
52 | Deny from 13.218.106.140
53 | Deny from 13.218.208.93
54 | Deny from 13.218.71.22
55 | Deny from 13.219.179.48
56 | Deny from 13.219.244.47
57 | Deny from 13.220.202.88
58 | Deny from 13.220.206.175
59 | Deny from 13.221.137.80
60 | Deny from 13.221.146.241
61 | Deny from 13.221.89.39
62 | Deny from 13.222.109.16
63 | Deny from 13.222.179.68
64 | Deny from 13.222.6.245
65 | Deny from 13.222.63.79
66 | Deny from 13.223.193.143
67 | Deny from 13.223.242.129
68 | Deny from 130.75.6.113
69 | Deny from 149.102.238.139
70 | Deny from 150.109.11.222
71 | Deny from 150.109.12.106
72 | Deny from 150.109.13.249
73 | Deny from 150.109.17.45
74 | Deny from 150.109.20.64
75 | Deny from 150.109.21.76
76 | Deny from 150.109.23.33
77 | Deny from 150.109.24.245
78 | Deny from 150.109.25.235
79 | Deny from 170.106.107.202
80 | Deny from 170.106.108.10
81 | Deny from 170.106.109.24
82 | Deny from 170.106.115.155
83 | Deny from 170.106.142.139
84 | Deny from 170.106.148.16
85 | Deny from 170.106.151.66
86 | Deny from 170.106.169.165
87 | Deny from 170.106.172.189
88 | Deny from 170.106.177.16
89 | Deny from 170.106.187.237
90 | Deny from 170.106.187.99
91 | Deny from 170.106.192.82
92 | Deny from 170.106.197.128
93 | Deny from 170.106.84.19
94 | Deny from 172.111.152.164
95 | Deny from 174.129.178.65
96 | Deny from 18.204.194.157
97 | Deny from 18.204.199.142
98 | Deny from 18.204.35.174
99 | Deny from 18.205.104.171
100 | Deny from 18.206.210.228
101 | Deny from 18.207.151.247
102 | Deny from 18.207.179.176
103 | Deny from 18.207.250.126
104 | Deny from 18.207.253.29
105 | Deny from 18.207.99.23
106 | Deny from 18.212.192.165
107 | Deny from 18.212.202.197
108 | Deny from 18.212.229.227
109 | Deny from 18.234.184.27
110 | Deny from 184.73.13.225
111 | Deny from 194.120.230.118
112 | Deny from 195.191.219.130
113 | Deny from 195.62.32.102
114 | Deny from 20.171.207.103
115 | Deny from 20.171.207.108
116 | Deny from 20.171.207.192
117 | Deny from 20.171.207.209
118 | Deny from 20.171.207.230
119 | Deny from 20.171.207.65
120 | Deny from 20.171.207.86
121 | Deny from 207.180.245.57
122 | Deny from 216.244.66.230
123 | Deny from 24.131.231.46
124 | Deny from 3.209.10.217
125 | Deny from 3.215.180.79
126 | Deny from 3.216.123.253
127 | Deny from 3.216.134.159
128 | Deny from 3.219.247.42
129 | Deny from 3.231.31.128
130 | Deny from 3.233.219.186
131 | Deny from 3.234.182.179
132 | Deny from 3.235.243.255
133 | Deny from 3.236.126.236
134 | Deny from 3.236.16.14
135 | Deny from 3.236.167.213
136 | Deny from 3.236.175.7
137 | Deny from 3.236.186.158
138 | Deny from 3.236.197.229
139 | Deny from 3.236.250.10
140 | Deny from 3.236.70.192
141 | Deny from 3.237.46.45
142 | Deny from 3.237.64.188
143 | Deny from 3.237.8.62
144 | Deny from 3.237.80.248
145 | Deny from 3.237.87.19
146 | Deny from 3.237.91.244
147 | Deny from 3.238.153.58
148 | Deny from 3.238.180.58
149 | Deny from 3.238.202.149
150 | Deny from 3.238.228.30
151 | Deny from 3.238.230.123
152 | Deny from 3.238.26.22
153 | Deny from 3.238.3.238
154 | Deny from 3.238.81.230
155 | Deny from 3.239.179.203
156 | Deny from 3.239.76.181
157 | Deny from 3.239.96.95
158 | Deny from 3.82.161.197
159 | Deny from 3.82.211.222
160 | Deny from 3.83.148.13
161 | Deny from 3.85.36.202
162 | Deny from 3.85.97.200
163 | Deny from 3.86.216.159
164 | Deny from 3.87.212.219
165 | Deny from 3.87.52.44
166 | Deny from 3.90.221.154
167 | Deny from 3.90.4.57
168 | Deny from 3.91.29.89
169 | Deny from 3.92.223.117
170 | Deny from 3.93.238.152
171 | Deny from 3.94.29.133
172 | Deny from 3.94.31.179
173 | Deny from 3.95.152.82
174 | Deny from 34.140.143.86
175 | Deny from 34.200.231.135
176 | Deny from 34.201.11.114
177 | Deny from 34.201.5.60
178 | Deny from 34.204.190.63
179 | Deny from 34.205.53.83
180 | Deny from 34.207.125.140
181 | Deny from 34.228.156.232
182 | Deny from 34.229.134.0
183 | Deny from 34.229.80.154
184 | Deny from 34.234.75.19
185 | Deny from 34.237.145.103
186 | Deny from 34.237.75.72
187 | Deny from 34.238.244.187
188 | Deny from 34.239.157.94
189 | Deny from 35.170.33.114
190 | Deny from 35.170.68.143
191 | Deny from 35.170.81.99
192 | Deny from 35.172.223.213
193 | Deny from 43.128.84.42
194 | Deny from 43.128.88.143
195 | Deny from 43.128.89.170
196 | Deny from 43.130.0.17
197 | Deny from 43.130.12.196
198 | Deny from 43.130.13.203
199 | Deny from 43.130.17.168
200 | Deny from 43.130.2.53
201 | Deny from 43.130.31.206
202 | Deny from 43.130.35.10
203 | Deny from 43.130.35.85
204 | Deny from 43.130.40.43
205 | Deny from 43.130.48.193
206 | Deny from 43.130.58.215
207 | Deny from 43.130.60.10
208 | Deny from 43.130.61.214
209 | Deny from 43.133.38.100
210 | Deny from 43.133.43.121
211 | Deny from 43.133.43.154
212 | Deny from 43.133.43.227
213 | Deny from 43.133.56.146
214 | Deny from 43.133.57.8
215 | Deny from 43.133.59.248
216 | Deny from 43.133.60.115
217 | Deny from 43.133.60.97
218 | Deny from 43.133.62.111
219 | Deny from 43.133.62.221
220 | Deny from 43.134.0.62
221 | Deny from 43.134.107.106
222 | Deny from 43.134.109.11
223 | Deny from 43.134.112.111
224 | Deny from 43.134.118.145
225 | Deny from 43.134.119.86
226 | Deny from 43.134.12.237
227 | Deny from 43.134.121.104
228 | Deny from 43.134.15.134
229 | Deny from 43.134.16.138
230 | Deny from 43.134.163.161
231 | Deny from 43.134.165.87
232 | Deny from 43.134.167.226
233 | Deny from 43.134.176.114
234 | Deny from 43.134.184.91
235 | Deny from 43.134.229.118
236 | Deny from 43.134.231.229
237 | Deny from 43.134.236.64
238 | Deny from 43.134.26.191
239 | Deny from 43.134.26.28
240 | Deny from 43.134.41.2
241 | Deny from 43.134.46.116
242 | Deny from 43.134.48.88
243 | Deny from 43.134.56.250
244 | Deny from 43.134.57.196
245 | Deny from 43.134.61.126
246 | Deny from 43.134.61.238
247 | Deny from 43.134.63.65
248 | Deny from 43.134.64.76
249 | Deny from 43.134.69.123
250 | Deny from 43.134.69.90
251 | Deny from 43.134.72.28
252 | Deny from 43.134.73.181
253 | Deny from 43.134.75.217
254 | Deny from 43.134.77.29
255 | Deny from 43.134.91.203
256 | Deny from 43.134.91.49
257 | Deny from 43.134.99.61
258 | Deny from 43.135.129.240
259 | Deny from 43.135.129.244
260 | Deny from 43.135.131.147
261 | Deny from 43.135.134.141
262 | Deny from 43.135.135.246
263 | Deny from 43.135.138.166
264 | Deny from 43.135.141.103
265 | Deny from 43.135.144.133
266 | Deny from 43.135.145.56
267 | Deny from 43.135.147.140
268 | Deny from 43.135.150.154
269 | Deny from 43.135.156.161
270 | Deny from 43.135.158.194
271 | Deny from 43.135.173.248
272 | Deny from 43.135.177.50
273 | Deny from 43.135.179.97
274 | Deny from 43.135.186.136
275 | Deny from 43.153.1.102
276 | Deny from 43.153.10.102
277 | Deny from 43.153.10.154
278 | Deny from 43.153.103.133
279 | Deny from 43.153.105.93
280 | Deny from 43.153.106.120
281 | Deny from 43.153.107.175
282 | Deny from 43.153.11.31
283 | Deny from 43.153.12.7
284 | Deny from 43.153.122.155
285 | Deny from 43.153.13.111
286 | Deny from 43.153.14.12
287 | Deny from 43.153.14.242
288 | Deny from 43.153.17.158
289 | Deny from 43.153.18.46
290 | Deny from 43.153.193.211
291 | Deny from 43.153.20.154
292 | Deny from 43.153.20.37
293 | Deny from 43.153.23.112
294 | Deny from 43.153.23.244
295 | Deny from 43.153.23.81
296 | Deny from 43.153.29.199
297 | Deny from 43.153.3.32
298 | Deny from 43.153.30.97
299 | Deny from 43.153.34.43
300 | Deny from 43.153.37.58
301 | Deny from 43.153.39.234
302 | Deny from 43.153.4.65
303 | Deny from 43.153.46.109
304 | Deny from 43.153.5.20
305 | Deny from 43.153.52.32
306 | Deny from 43.153.58.32
307 | Deny from 43.153.6.132
308 | Deny from 43.153.60.85
309 | Deny from 43.153.61.213
310 | Deny from 43.153.62.136
311 | Deny from 43.153.69.7
312 | Deny from 43.153.76.232
313 | Deny from 43.153.80.61
314 | Deny from 43.153.84.42
315 | Deny from 43.153.97.220
316 | Deny from 43.156.107.145
317 | Deny from 43.156.12.8
318 | Deny from 43.156.2.243
319 | Deny from 43.156.29.120
320 | Deny from 43.156.29.145
321 | Deny from 43.156.3.195
322 | Deny from 43.156.5.207
323 | Deny from 43.156.6.103
324 | Deny from 43.159.131.116
325 | Deny from 43.159.133.74
326 | Deny from 43.159.137.20
327 | Deny from 43.159.139.35
328 | Deny from 43.159.144.118
329 | Deny from 43.159.144.69
330 | Deny from 43.159.144.95
331 | Deny from 43.159.146.48
332 | Deny from 43.159.32.86
333 | Deny from 43.159.37.213
334 | Deny from 43.159.41.139
335 | Deny from 43.159.41.195
336 | Deny from 43.163.0.23
337 | Deny from 43.163.8.75
338 | Deny from 44.192.129.16
339 | Deny from 44.192.26.92
340 | Deny from 44.192.86.124
341 | Deny from 44.192.99.200
342 | Deny from 44.193.2.178
343 | Deny from 44.193.205.83
344 | Deny from 44.197.119.106
345 | Deny from 44.197.169.101
346 | Deny from 44.197.198.65
347 | Deny from 44.200.14.35
348 | Deny from 44.200.180.188
349 | Deny from 44.200.2.92
350 | Deny from 44.200.82.168
351 | Deny from 44.201.126.229
352 | Deny from 44.201.238.128
353 | Deny from 44.201.96.105
354 | Deny from 44.202.106.185
355 | Deny from 44.202.11.69
356 | Deny from 44.202.202.60
357 | Deny from 44.202.230.110
358 | Deny from 44.202.74.61
359 | Deny from 44.203.126.55
360 | Deny from 44.203.212.133
361 | Deny from 44.203.221.253
362 | Deny from 44.203.233.138
363 | Deny from 44.203.241.65
364 | Deny from 44.204.162.42
365 | Deny from 44.204.164.129
366 | Deny from 44.204.26.229
367 | Deny from 44.204.94.124
368 | Deny from 44.205.11.135
369 | Deny from 44.210.111.0
370 | Deny from 44.210.82.242
371 | Deny from 44.211.186.46
372 | Deny from 44.212.14.20
373 | Deny from 44.212.22.56
374 | Deny from 44.212.221.239
375 | Deny from 44.212.49.76
376 | Deny from 44.212.77.89
377 | Deny from 44.213.114.13
378 | Deny from 44.213.65.97
379 | Deny from 44.214.106.103
380 | Deny from 44.214.95.68
381 | Deny from 44.220.53.57
382 | Deny from 44.220.91.21
383 | Deny from 44.222.114.163
384 | Deny from 44.222.116.145
385 | Deny from 44.222.116.201
386 | Deny from 44.222.122.65
387 | Deny from 44.222.239.136
388 | Deny from 44.223.95.118
389 | Deny from 45.74.1.34
390 | Deny from 45.74.11.41
391 | Deny from 47.238.13.10
392 | Deny from 47.238.13.11
393 | Deny from 47.238.13.12
394 | Deny from 47.238.13.13
395 | Deny from 47.238.13.14
396 | Deny from 47.238.13.15
397 | Deny from 47.238.13.16
398 | Deny from 47.238.13.17
399 | Deny from 47.238.13.18
400 | Deny from 47.238.13.9
401 | Deny from 47.242.139.150
402 | Deny from 47.242.139.199
403 | Deny from 47.242.139.203
404 | Deny from 47.242.140.224
405 | Deny from 47.242.140.247
406 | Deny from 47.242.140.8
407 | Deny from 47.242.140.86
408 | Deny from 47.242.142.202
409 | Deny from 47.242.143.218
410 | Deny from 47.242.143.56
411 | Deny from 47.242.143.59
412 | Deny from 47.242.146.0
413 | Deny from 47.242.148.169
414 | Deny from 47.242.149.96
415 | Deny from 47.242.150.210
416 | Deny from 47.242.152.104
417 | Deny from 47.242.156.78
418 | Deny from 47.242.159.36
419 | Deny from 47.242.160.82
420 | Deny from 47.242.161.132
421 | Deny from 47.242.161.233
422 | Deny from 47.242.165.150
423 | Deny from 47.242.165.223
424 | Deny from 47.242.166.237
425 | Deny from 47.242.167.47
426 | Deny from 47.242.168.187
427 | Deny from 47.242.168.233
428 | Deny from 47.242.170.123
429 | Deny from 47.242.170.132
430 | Deny from 47.242.171.109
431 | Deny from 47.242.172.153
432 | Deny from 47.242.174.145
433 | Deny from 47.242.176.223
434 | Deny from 47.242.181.93
435 | Deny from 47.242.182.44
436 | Deny from 47.242.182.60
437 | Deny from 47.242.183.111
438 | Deny from 47.242.183.144
439 | Deny from 47.242.184.33
440 | Deny from 47.242.185.4
441 | Deny from 47.242.186.1
442 | Deny from 47.242.209.147
443 | Deny from 47.242.214.137
444 | Deny from 47.242.214.246
445 | Deny from 47.242.215.201
446 | Deny from 47.242.217.11
447 | Deny from 47.242.217.111
448 | Deny from 47.242.217.48
449 | Deny from 47.242.218.102
450 | Deny from 47.242.218.49
451 | Deny from 47.242.219.37
452 | Deny from 47.242.219.7
453 | Deny from 47.242.221.136
454 | Deny from 47.242.221.19
455 | Deny from 47.242.221.88
456 | Deny from 47.242.222.103
457 | Deny from 47.242.222.214
458 | Deny from 47.242.222.38
459 | Deny from 47.242.222.56
460 | Deny from 47.242.223.167
461 | Deny from 47.242.224.172
462 | Deny from 47.242.224.178
463 | Deny from 47.242.229.215
464 | Deny from 47.242.229.229
465 | Deny from 47.242.229.249
466 | Deny from 47.242.229.37
467 | Deny from 47.242.230.109
468 | Deny from 47.242.234.100
469 | Deny from 47.242.235.57
470 | Deny from 47.242.3.114
471 | Deny from 47.242.76.207
472 | Deny from 47.242.77.69
473 | Deny from 47.242.95.94
474 | Deny from 47.243.10.11
475 | Deny from 47.243.105.139
476 | Deny from 47.243.11.192
477 | Deny from 47.243.11.245
478 | Deny from 47.243.11.254
479 | Deny from 47.243.11.53
480 | Deny from 47.243.12.179
481 | Deny from 47.243.12.189
482 | Deny from 47.243.12.46
483 | Deny from 47.243.14.176
484 | Deny from 47.243.14.197
485 | Deny from 47.243.14.86
486 | Deny from 47.243.15.62
487 | Deny from 47.243.173.250
488 | Deny from 47.243.18.152
489 | Deny from 47.243.18.225
490 | Deny from 47.243.18.98
491 | Deny from 47.243.19.104
492 | Deny from 47.243.19.97
493 | Deny from 47.243.193.222
494 | Deny from 47.243.20.186
495 | Deny from 47.243.228.99
496 | Deny from 47.243.23.171
497 | Deny from 47.243.23.220
498 | Deny from 47.243.234.164
499 | Deny from 47.243.25.0
500 | Deny from 47.243.4.2
501 | Deny from 47.243.48.79
502 | Deny from 47.243.56.171
503 | Deny from 47.243.62.121
504 | Deny from 47.243.7.9
505 | Deny from 47.243.71.191
506 | Deny from 47.243.74.123
507 | Deny from 47.243.75.156
508 | Deny from 47.243.78.23
509 | Deny from 47.243.78.44
510 | Deny from 47.243.79.195
511 | Deny from 47.243.8.116
512 | Deny from 47.243.89.37
513 | Deny from 47.243.9.237
514 | Deny from 47.243.91.206
515 | Deny from 47.76.209.138
516 | Deny from 47.76.220.119
517 | Deny from 47.76.222.244
518 | Deny from 47.76.99.127
519 | Deny from 49.51.180.62
520 | Deny from 49.51.206.134
521 | Deny from 49.51.70.229
522 | Deny from 49.51.70.245
523 | Deny from 50.16.109.196
524 | Deny from 51.222.253.1
525 | Deny from 51.222.253.10
526 | Deny from 51.222.253.11
527 | Deny from 51.222.253.12
528 | Deny from 51.222.253.13
529 | Deny from 51.222.253.14
530 | Deny from 51.222.253.15
531 | Deny from 51.222.253.16
532 | Deny from 51.222.253.17
533 | Deny from 51.222.253.18
534 | Deny from 51.222.253.19
535 | Deny from 51.222.253.2
536 | Deny from 51.222.253.20
537 | Deny from 51.222.253.3
538 | Deny from 51.222.253.4
539 | Deny from 51.222.253.5
540 | Deny from 51.222.253.6
541 | Deny from 51.222.253.7
542 | Deny from 51.222.253.8
543 | Deny from 51.222.253.9
544 | Deny from 51.68.11.191
545 | Deny from 52.207.134.182
546 | Deny from 52.23.194.11
547 | Deny from 52.72.239.90
548 | Deny from 52.90.163.109
549 | Deny from 52.90.239.8
550 | Deny from 52.90.7.205
551 | Deny from 52.91.175.13
552 | Deny from 52.91.243.41
553 | Deny from 54.147.147.144
554 | Deny from 54.147.172.218
555 | Deny from 54.147.45.140
556 | Deny from 54.157.118.241
557 | Deny from 54.163.30.244
558 | Deny from 54.163.57.238
559 | Deny from 54.165.90.241
560 | Deny from 54.167.42.10
561 | Deny from 54.173.35.25
562 | Deny from 54.174.188.14
563 | Deny from 54.174.194.169
564 | Deny from 54.196.228.180
565 | Deny from 54.197.138.21
566 | Deny from 54.198.199.84
567 | Deny from 54.208.2.78
568 | Deny from 54.208.38.208
569 | Deny from 54.209.131.210
570 | Deny from 54.209.212.18
571 | Deny from 54.209.91.2
572 | Deny from 54.211.233.166
573 | Deny from 54.221.121.214
574 | Deny from 54.224.146.223
575 | Deny from 54.225.1.87
576 | Deny from 54.226.121.181
577 | Deny from 54.226.95.207
578 | Deny from 54.234.152.112
579 | Deny from 54.234.163.23
580 | Deny from 54.236.63.182
581 | Deny from 54.242.207.196
582 | Deny from 54.85.216.232
583 | Deny from 54.87.30.14
584 | Deny from 54.89.173.150
585 | Deny from 54.90.132.237
586 | Deny from 54.91.183.97
587 | Deny from 66.249.66.34
588 | Deny from 66.249.68.39
589 | Deny from 66.249.79.133
590 | Deny from 66.249.79.202
591 | Deny from 66.249.79.203
592 | Deny from 78.162.144.226
593 | Deny from 8.210.12.248
594 | Deny from 8.210.147.121
595 | Deny from 8.210.15.246
596 | Deny from 8.210.153.23
597 | Deny from 8.210.154.94
598 | Deny from 8.210.164.94
599 | Deny from 8.210.176.195
600 | Deny from 8.210.179.35
601 | Deny from 8.210.187.5
602 | Deny from 8.210.188.13
603 | Deny from 8.210.189.26
604 | Deny from 8.210.190.0
605 | Deny from 8.210.190.63
606 | Deny from 8.210.66.89
607 | Deny from 8.210.75.120
608 | Deny from 8.210.8.206
609 | Deny from 8.210.86.148
610 | Deny from 8.210.86.249
611 | Deny from 8.218.91.49
612 | Deny from 93.123.109.83
613 | Deny from 98.80.191.159
614 | Deny from 98.80.220.76
615 | Deny from 98.81.17.196
616 | Deny from 98.81.21.47
617 | Deny from 98.81.54.5
618 | Deny from 98.82.133.13
619 | Deny from 98.82.21.60
620 | Deny from 98.83.36.223
621 | Deny from 98.84.161.83
622 | Deny from 98.84.8.100
623 | Deny from 98.86.169.7
624 | Deny from 98.86.175.61
625 | Deny from 88.238.163.172
626 | Deny from 47.246.164.153
627 | Deny from 47.246.164.134
628 | Deny from 47.246.164.140
629 | Deny from 47.246.164.131
630 | Deny from 47.246.164.152
631 | Deny from 47.246.164.136
632 | Deny from 47.246.164.142
633 | Deny from 47.246.164.147
634 | Deny from 47.246.164.141
635 | Deny from 47.246.164.135
636 | Deny from 47.246.164.146
637 | Deny from 47.246.164.145
638 | Deny from 47.246.164.132
639 | Deny from 47.246.164.138
640 | Deny from 47.246.164.137
641 | Deny from 47.246.164.129
642 | Deny from 47.246.164.133
643 | Deny from 47.246.164.149
644 | Deny from 47.246.164.154
645 | Deny from 47.246.164.150
646 | Deny from 47.246.164.144
647 | Deny from 47.246.164.130
648 | Deny from 47.246.164.156
649 | Deny from 47.246.164.143
650 | Deny from 47.246.164.139
651 | Deny from 47.246.164.148
652 | Deny from 47.246.164.155
653 | Deny from 47.246.164.151
654 | Deny from 103.46.140.102
655 | Deny from 37.114.33.6
656 |
657 |
658 |
--------------------------------------------------------------------------------
/recipes/files/var/git/.ssh/authorized_keys:
--------------------------------------------------------------------------------
1 | environment="SVN_ACCOUNT_NAME=a_matsuda" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAmylZr7k7cAtt83QM9Vkp5Cyua7njL0dRPm9l6PeYFPfV1z+4sIXUjNipgwlHC/R7ciath3NDAlMJOQedLgZIQuNC6Y7byQclwPIpBjSZIGP3xJuyw1fMOJOHdU+3HakoPQAlS0fQrQCfwYQCYhiB6vWuS0ZGqlugoilxHBzcQKc0G4az33DvL6Gq5j/qDvQx1TWqFzS/qmkhsejV1AoIoX45P2vA2CAIg8f334sEs2ruwo+uBCQMPD8ZZIfflDKOmAZBn23u/bJoXgsEc4tcoJxbR+wPi2M1MHaSEz03AkuwiU3g4nhxcG8heGAMvKqh1xIYGR/wgtbgMXOUDBMuSw== ronnie@dio.jp a_matsuda
2 | environment="SVN_ACCOUNT_NAME=akr" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDKSbcUQCD9aoN5jBdcmvFcK5P76uJw0BjqIZkax54jS7E1BoxFpvhmyHlJOMSNnthDZNXgHsVydmPVdgsJReM7rvB6fKPymUuqZ1OrOn5Rl9uXRv0sS6jXM46f0cBSOa3VuVVGPvg5IZfUYyZXOHD7qmdFrlRT8pPSgLTXYtMgw8gsPAEL0q3l/xvYY9T4XA/xskHaLBCEXSVaCUXDz5A4rE/ryAnnN7zkvj8f8htxANW+qIYxOMVZCnUs0fCvMuykV8NhzUueuCsEbf7Zz9jc76+q4WoNgtEqv6Z/dbj230ku5WsBPIT/56SDZA7GcJ1yUss0ZbPuHDJRg0YJUqbr akr
3 | environment="SVN_ACCOUNT_NAME=alanwu" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIH3X5MK8KBb827QvB6zdykUCMIIM4SF6OzQ/DaO1E+ff alanwu@ruby-lang.org
4 | environment="SVN_ACCOUNT_NAME=aycabta" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGjtXTj3cj13UQL3ey+BuESWHJQWuPflLaT7Ilhq/8Au4IKCaDPslRDTlj6vglqQOatTuywXQsIuL/UFpfhp2l92hgGl6aZWmbXpEczVbd9qCwbDU8YhXKel7E4nKRTZ32h0+8oVBQ3qIThq4yjZxffPCJVXFrAu0HIY40uVCvVZhALkAvr8cEy/iNYFZTQTSFob1DF1Z11QLRm48+NhzZOE41ss3xL9ptJ3KCW0+6/ZDIqR2O7IjfrIgbO2FLekrFJE5hDBFvq8cKP4t7xf4BLQebQHni+C6o/Wu6qo1UhONI2EyS7DcFeDK5FJxgtELlBxWH/IGPC7y/uGyh7jhCxAH857MbkBM03OnKMuNNmVszk80DErgu8nqrNGpAsVA01YXoYXdCzWjqFoqdxCuxDJ4Nww1jKo+3XAwEBkHY8bykhQVgpXGJ5t0N0c9kJJUPvRzJncIVB+bCqr4e7nfkZqJ3jlWHRFj98WFqbk0Wri70PKbepf/wb+98M1cefLitKB0iNNhy17/wb8URS9N5H/Cxwxn8VNgYZMsWqnQq3g8F7dyUpRElQpAF36E3eKSoJThXAP4hXvm7Mx6vmOkdmNr7nB5lbfZbeQdtb49IpKm5gLWoQmv5dBcIuODlBtGHLGndZfPAeTt9XByzgd21kM0DDvP23zjiK+nrdVkodQ== aycabta@gmail.com aycabta
5 | environment="SVN_ACCOUNT_NAME=ayumin" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAzSzkZpCW9Seiw4cK7UP7BfTnhRsTk/adqdsb0qKYAYJEhMWOhFcNGbNgFUR5mVMycRQIEBnQrSpoGRBjH4/Q1dORORR078laXyY0otfzJp/OtKBw9SAE3m1y9ogcs6hbhKiinLl7y8eKVW7vczfS0Y/1WdyFtYyRnzk8twotgkb9W2CVUDvA9ECAlH1HvTR4CnlUHIM55xEnM5vwIR6pUMTYdU0vf0KGmsIxjjGsyRRr5e52Tqewmat0ypmiOIat2fjQc3Si5ubHZHrsQaBeupRjtsjsu7GYjKPr8985OJA+wZjeRxR5DeRrNAb7pa1pENPHdYnSoz6kvsNWAxhRkw== ayumin
6 | environment="SVN_ACCOUNT_NAME=burdettelamar" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC09YYLe9VMHQyI4m/1OtlxIysWweE9L1zumH9JAWi/SQssuKWtfJL9aqT5ZMoZF7PNNeRNHUDgrMJyc+iKwRQdKTWG+mqO+6qLDnjy+C2CrqZ8YGTfUZ6mlX8UwSUF01Lz0GbX2e0KBQp52FB00sfw35M1ha0yQGOMPnfdMMBvZw0t0UV1GkGqsVOIm+8zusPeii9LuPHekHczRknqocSinOWEEkIAu5t72X6hhTEUpsWcVJ+XCtUJGEZjlb6lOICcRbLYbE68EGWiozpJ3IbOJ6C+46HG4H7yuILrVkE7R6esdHnLhEJcGibqRvCNxMDW2j6CXONQZIpVzTyBf9Cz burdettelamar@ruby-lang.org
7 | environment="SVN_ACCOUNT_NAME=byroot" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD3xtb4T4A6sMxgpiXNID2WogA795Gwqw8FttJeTqKFke8ZTuBad5A14aHXIKsIH0QwbGlluNn11HzUGemHsJoxtgbaP5QKNY2fyhM/LCXzje1U3qjIGKfN1QVJCEK94ofnb+Ao9dmDQFWkGElKFtLcoLF7Za8qGwtWp08b9cAZSaX2gokIo57kO/5BirKfizZKn1zxGH//a/7gQ0DBytKRrVVZBH9CbD6sFyAXbhvoBFcLij5KgYWUNkIPtauzhSU3Q7xXDSZEXjy9efH2HRxj0pLLJqk/VhMxMW7E7fMz4DAVn7x56TVjwxwpOBBg3L89X3WqOZN3XJhwSa+modsR byroot
8 | environment="SVN_ACCOUNT_NAME=duerst" ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAj3xR5x6inzlL8Ot6eVvPB1fmIp05LHR0Ga6PuZDn2A2BmYN4fOhtcXic4jWMJX2J34Vubt6/gWjtJWkXsfuzEHl9BHRwl8DGayjyWbAeDfHGv43DMbD9xilXx4/MU3tXMzBolFxlRJiU7KkCE+WQgG+b96N+E4HKOVzGOYwBBR9are+Do7sTsHCM6OLLgwTp4HGLpbArreCwPN5TPOP7aC8R/J7V6fn7ZBzyWrsdmSZrBv09G+sKAWuyoDJv6ctDGnETWaeR1yE3wX+CVZCaJcgBXZHkcxFcHo7z4sE1mQ4YczrC8ZEU46V2Uolwekc3HwLG01Dcnm4pc4H8ElcLjQ==
9 | environment="SVN_ACCOUNT_NAME=eightbitraptor" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDED3+ar71Fr/vNym15QRnWFHkcfSa58gtmER/3UTT2RsB0mAjbb2E8HgFejOW+dS3nnkXo26iw/i2rxNKiBmYiR7bVf8FNaqAYJ90OYVf9u+AASQj+M1WFJaEskl7QFm1+aXSArdDqBysvfGMWPES9AbhnzoGQkhqvQ9qCcYJOHJyIXP0rNk8ihJWstVRDC73oW+hGDi0cuAdIzazfQ1ci95OpeNKWKXTkwALBdI6tOJucoLu+fO2JiX+CqS+EqcJxipBioimN425SFcU31T3CclQUc53ZpMHSriMULoUOfYogJHXcVTh3i9oqIPIKPPOReAXPxcbu2mWfQGe6HJTTI+WaWH3ezh108OWnjGRbUymjaBuLSBSZfpB1yjEyKtN33Zu/eZs630ncrbFpPvoiTs9uAt10NzWEGAMPikJFz928HIJ4T87EwI21Tdb3CeZX+puv0rM0uZT4hejMImZyj6XfgfmEDJFtsbVquR7RLKkMy5TRnbdf/+3r98bv0Pc= mattvh@kyouko.localdomain
10 | environment="SVN_ACCOUNT_NAME=eileencodes" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDifSqTn4IaJnI/qqcXn7iS2FlD5uwChlABuQzBpMohmjRWAva+bXFLgnEDslkc7M97F5LUf/6gI+oOUkBW91aKGUWKEAZ0335j7DjnHTMGWTW2E79zraB0RnKEKP8fT8//Qh0KC5WsEkjuiPgpxJkUoIO+2esTwHI16Zvtq0P5V+VI5eJsdVxt0ccsChcYcQNZPn/ikkRwqnLGM6u2/Nl9B0IbSoBGvvr89b1HqS9BvuWBeBYcdAIH0FGmuWjSFsxd/EPHuNnEl7n4JZEiPvo6tOnrAIYlprb8c6mdZ77fB2vZzdmoVHdQK0lEYcVAMiC9+YRXxJ9B8i0Zl77xH9TXdajMKggmfppQKblrGswN8NUu201J50Rac5ZR1QGND1qTVekuKizniLNAnXV0err3AEWGd1G3HkiRzh8Sbzxu8I8fyqscY1yiJNPt+aySuESF+rtKT4LNTCpgjIyZCu55SArt8+tcVzcjqf6zlnzPUiSSXfJz3r6CMpZjPEsKNT5pJpSbrjzv04pM1Xne60mSiyatXHgkmGoEhK21Femoiis3AGX9JqZQAiqAw9jew9j0tAvmYgdPqJnU+N7vekVPtBrVCUJjPvffjcBnvDE2cgBRphxbxitEiVjUWZkRMrEyzqYlKrjvnG3jd3kSU1hCwAnEfIKsqGX1oM/FRIU/qw== eileencodes@gmail.com
11 | environment="SVN_ACCOUNT_NAME=eregon" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAz/dEF7yeAjbZER9e/PYFg01OEZrHuW/NsFilFsM1v9rmSMW96MbOX1r1issMmND9HBaux0uPrZkEPH6Y8teg834SM0tftioVFM7Ei1ZC4otBnxAB1x91LSoiLKR/B+Yx+xsDOqOHKHhDOm08HZ0DI2gMsS0zOjHXvdYza8ZWj5qwnN0beqPw3jHwbc0OSBZH+QTIka1NPWsr+FlFkuvByFJxk3VsktzQOLKpmL+r77VCThqHTW5i+FI2VR0QFNUDzG/SAtK7YW3C6mjtRuqYd2markb6ACqejADQwJ5mDjGjymUSNUC2jGbg7eby4TdbP2ywgDFFxPRnbTMFinaznQ== benoitdaloze@Me-myself-2.local eregon
12 | environment="SVN_ACCOUNT_NAME=git" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCsDF1yrm9BOwgkzxLZsAOaVFjYVrjFkT6A8kWOKRdT2kImrOqD7r9EfxWvHpfZPh7BJ2cYGEWxxLOD1W8trO4DVm5MAnRZfxr9lX3wzbF7P2JQPBJlBzLGPsya/gG7xdpgbIwF7RSs07n1eA4YqjRv7MzcTKoOc5uCNeAxOnwh4W9gOEi/hEPKe0vKy3kCWKtTdeGx2yVMKIF1NvZlOW2MoacePDTtLqMQLnK5qywsvE7R8mWwyx2m1d+9o/YMCYHdVBbQ1mMDP1JoOc7NUDxnbsZT4ZnVzaWQuAE+wYkksuX0HbDz7PT52Y6CJ621m01QsDB3rKRZAd/85bo3GNvJ git@fluorine git
13 | environment="SVN_ACCOUNT_NAME=glass" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEApHGP4iV3a7vAEO1m8nDQsnxCFiCFVdWPuJuohA5DDgQkRD4ydCIVKIF1HuycHdY5KFE8BQ4aeZ3PvdPPC0o38rCOSVom2dLKrQNmqL02c92dfRP7MOCBIp2PMMz0tDkjXQI6aJsUmkVHTRpPych3KbA/Vn529l6Y3bs6I8CrWhUr7iqHxFPjPFJEZwRiLFH7oAzRWX5eWuXGGXmpwP1kYrWtte8YygAvM0eUyekuf4q9zu0Z7FmkJabU3CTx5OCoUWzY4hlG8P3cApCHPkMW81bod5SX7RsoqFIGJSq4kma71PBS8zCBYrYgVRWxM4jVtfOuV0eYVXgm/1oDoE+x9O9EAjOXWBbvtsrVb0ieWb8NNjr78HwPoRepvIJSJRDHdRrZD8UMA/Gy+6lzYoFNmX7TSaYu2x/9LYUu25ZVW4+8mHSYmyDFt+qZurehIov4zLvzhX726T/WsZx0Nnfwjd4X3t7TNiK9y0A8HuMbpvahvHrpn8rr8NCsq7uoHWYNhbV+4YkAi2AW9Hfjp9E+t9UQ03sjNu9MR+Km9irK0HWxdnzdSBNtJbGZSeKTM0F+Q5x9v7QaTbPwjHSte3Fuz8cGVQsF+t1vC+jp+dpSov4U+hZ/rBD+PtWr3pNKXdzPdoKj8acfH/tO40Fu0xzsi4ci+68va1/esZdQbEadsgM= glass.saga@gmail.com glass
14 | environment="SVN_ACCOUNT_NAME=headius" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0T4mlsgQS+etyEjxj7lec25FjLxtSwfDH0nToUqolOuyyhgeDj+SJprJDH3b4QudSGY/VRj7wiQKs3NgqkDnCfNCJEjmqPkChcvwzV4FTJCik0JgxflxZ1Q+oEKrYu2txCfb50HHQs/hY2Symm+3de019RxB+HSU7MIG5srQNHSabrF0ZhDSS31bdkA1ZPG5pseKpQomi/yj/npLSWy9sA84owkGgDfVLq5KMozHpE6lQ08yFxMEEb7Wi+TtVUs4E8chIt53tX12qiDgvZIMvZtS1mZ9XazlmH7SpYktCkBAuz+RihnBLNzT7rxUA89sB6hyCSh3MW7f9yI01bNW7Q== headius@charles-nutters-computer.local headius
15 | environment="SVN_ACCOUNT_NAME=hsbt" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK9soM0r82SN3fO4MVhPs9Q1OCYThuR9POvbhnP1HNph hsbt@euler
16 | environment="SVN_ACCOUNT_NAME=ima1zumi" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM6e/yGhpuKG5uUhL7OjnGuWpkOJqa1lH7WuyhlanT/h mariimaizumi5@gmail.com
17 | environment="SVN_ACCOUNT_NAME=jaruga" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGFd9NkGTvgHAue9sy/HbO76m9pSnRm9UngCX98NBXTjZN1GyS4I+jF/uONIWiS0Iv4ruHTxlsleIg3j9meZBS95VhdLdV8yojLIwpog9cPBSlIo20lPy+cAeBb3zaVIYHbnn3oAVALoHsix91RorJSdANNTi98SNkrtz0l7OyH01B17EM+wg9RDyONY/wKQh/d9nu1iHrO8rjCJKyU29rJCOALH9mwohdVNHJhJj/VOoLZKvLgjGetPOuBJgk5F4uVtCYpiJS/Sq9qPVCAadN6bwXHFIodIz4ku5MYryhhOCV3V4u3YRIAzZSB1mF+VShIimK+o5qxmoD/0H/BlutELOqJuplY2ssUpzjKhZJeGeXeXk6Cg4j3Wsf3BJZYaDypzekSVn8TIEOYJzDtv1Dm3+ZOROJ/egbL4pQP+EoAO2aIAhMneRtMlpwSctRvK5C5bLJm1Z+6AfQY3fnfrzft3y0K7YJWHq8V5hUKn+r2RhzgBDKx1tcxoobmE31nQ1HiW80TpQlKpR4K1KnGKnkuQu4pe/YJKLW9vodQoMIGOJ51v0DOd6OB2VlZpn6RBHpN4oeLuEVsWinq/VcppCXeF0cqmvB3nTOCwn3oHOCQgN/UT3Np9Mh9CUWXE+wN1vqqBFEPscAXobYlp2IgF9dZ7tY2xuEdGY0qBouM7zlmQ== jaruga@localhost.localdomain
18 | environment="SVN_ACCOUNT_NAME=jemma" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCzWMlqqr350ltszjfA9MtXYRnChJflxYPw3sSITBbgbrqGytzzWkIKadlYa2tHYGgbEmz1FqHIQoR9mW2QXCgBdI3awO8rsWxLc5af4Uweb+2Qo0+4BBJ9Ke+rYJuV4QGYy0jsK0r/aJhxQhvanOPSdGacXGqns2R9mSsIotFOUI+ToAVXxGeI1YeDcnEj/281rWXGFJcwpyXzH2h8199oWb5gbR6qFJZD4OkEbY+Ym1uwTwdwaV/jLoLo1VAnPq5y9Y8+AoahvPqwGX8R2bfAXFNgQ8J/owFIynuSR6Dtr57Rkn5sjV3vP5cmkfh5obdILzTylWAXZxzINRBq9/eloydjJgwpJWGJLPwSSVOew9us2G+Sjq+zvprjo+JTJum82FUnUi0dNoFQAFapBdpPkUBZZNgTkzrkZHuuon/wnDiLuUJFrAJVaZCOm98G6HoTqOXrv/9pG2tawhMU9qXQX1aAVIB7GpGjZuBPAspwYgnds8vQmaw8QZJvkDngjCk+Lef9A00ZjfHVtfnGPi+TVloOLk/hjgfcX7KRTSAM4gUtU8Tjlg2nr9gtAMTPDWeaRNa9u66qkq5/Eeh4dab2eL3V7lL5Y9gw0S3Kdx8yq77l1tYQlOQgpCw04UpYbY0U+edUU8Z9JZ3z9OukheCVz/pgvfimbYozFA0x9/631w== jemma
19 | environment="SVN_ACCOUNT_NAME=jeremy" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE1s0ie7GIiU3kIhB6Pb0LH5Ljdb3oqCLE9Je08M40c3 jeremy@speedstar.jeremyevans.local
20 | environment="SVN_ACCOUNT_NAME=jeremy" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwcDSfizu8bfaJ9Z5h+375qCiuJ4bp2kf8shO2fhmwC4KFG2al398BpUjlsZVHEVDIUGU3rhM+GHEUGvBF14rke1aSR+rM6RHeXCoWHCAdy8tvm9PzuAUWsM97d6oEKIchm0rOaJ0GX95gVldc190NfzQQ+vIUthxjxuPWXtKzVpcJiZiF3AR7hST+u6oUltx64sdJ0aKc3xhWAG48n8CIrQlnQZ0bLZw4Jtz9y8jinL6uXHQ2I+3USyeg+OvDPqThL3uo1IYbKfMdPaxW8xR7a6dnPex3Kx8I0Ay/KRdMHEfbUeN0zclmbclqVUa/3qRKSbB5uod8lYkpK2sUisFZQ== jeremy@speedstar.jeremyevans.local
21 | environment="SVN_ACCOUNT_NAME=jhawthorn" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ4FsiavriYpm9GKVP2TEztHxnzwiYRosx7fWI5LN3cl
22 | environment="SVN_ACCOUNT_NAME=k0kubun" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN1UcvTB/sH5hdIaPvH7lgixOB0APaeAOMlyRwrq6NqS
23 | environment="SVN_ACCOUNT_NAME=k0kubun" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDTBqmCx8FUX01dLomDUhE+El33VsKMpDF7aTj2p05NKrlUmIfLD0BKkVUP1yLlJpDZsz83oogjlH5XZl4q7AvH4PNCbIiUuXxDeJevo5hDpqDaaBSDiDU0WRF82sng1bDrLCjXVXsXQ/nQLS7PsWFyBIlunnRHSO91NnZwhxxJgp9K89a0tFpTn/koRuW6b8om++1UtoY8+rjIC11qtj9G1hj78rqeJmNtWdoJsIG5qcjNl/DikJBhTLenAOTwK1BzhHdo0doTdZzal+6koE9fZ/lv8DvAciJr8IDIdHd73XJKFlm7GcOZ3EO/1N9JUbNHDCd+dWFolTqWghxa9Dr
24 | environment="SVN_ACCOUNT_NAME=katei" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIezAMzVD8CSCNQR1mnvyWxg8AcHn3wJ2Yoj9YPhHl6t
25 | environment="SVN_ACCOUNT_NAME=kazu" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILpK0tF51R1sMBfYpLNNogDQEVuM1twtKPlH93EI/q+/ kazu@elk kazu
26 | environment="SVN_ACCOUNT_NAME=kddnewton" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM/AuoRT838IRLsNvGpOBoRofcWkBR8fsxE7GSZiwLnm kddnewton@gmail.com
27 | environment="SVN_ACCOUNT_NAME=knu" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINNlg0z5+X9xuNP4jQczfNFv81OLuSP9nvQgtPvrmk7q knu@ruby-lang.org
28 | environment="SVN_ACCOUNT_NAME=ko1" ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAnmC8r8/DbTKflE/TU9KHOOTutlPkg9WFs7LDeJMOPpxX51r0wFgBUB5k5/lN7itozgEX4Hgz4lN0ao3FDOdSkLYtcG/u0nrr8fthra9tKiU09u9GmZAmqk+Vw0Ldj7JPX69b2jiHfF02ObQlgKerk3+XRVTXd7Ao02J9gDx97D7sJXXi/Cdy4T3h4T37zOR56p83E9VKFXg89tJbNLKoQiWEWX5cQdqcA+JgyyxcMdaGbmK41jxos2W6Ud0A69gXBhouvbBVrALEpSUb/5uvR+bk3uFNJ0AewfyPJpgIBPWtAPf00V2lxK0wbUJb9aN9i5rMuaal5KgoirpLREHKNw== for NaCl Servers ko1
29 | environment="SVN_ACCOUNT_NAME=kosaki" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMi26qZaTy6S5IUnZT+YXjKrPIkWNMrnMmwTIBROo7aK kosaki@vm-32cpu
30 | environment="SVN_ACCOUNT_NAME=kou" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnyNhU/qmDpE2ZrHa+1yXepFbesvBpv2Ltol3ryb15l8zxOPXPwQaQ4vX8ynp0SFqJzG2GZ8S4BtDJ7jl3FSiyaIYa+jvAdDzqWk8LVrGJwNMGq2iDmYi531bk5pqS33UaKG9oIYaV71biiTx3meoJP3AmCnvFvz9ZoZKqYVGOulRtE0bZqB0IsxyzOMfhHqH3I6UJjsPqqXcgSFNhVRcE1U3fYSU9WajBtyaI6eRO3ccIemDPZOQTI+KIkyagp6DXj/dksxxxaQ185s3CLI6y5FXyw5c15n5R8vAvDYAXEZGltvLFiBiH1fdSWnQVD9Vj9RWHBkIFcMehMkFwpIM5w== kou
31 | environment="SVN_ACCOUNT_NAME=ktsj" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAx+Kf9Sy1fwEUNqQvG/LUw2XvjRfoMt+eL9D+cgVe5QgSqPbBWNMqxpAUcpQW5rRCdlPWHLynjU9B1Pd9Bq3Vwh9y8c91p1li9YJzz93oHdoSbFJb2XSdxeLyyXOavw+pdO/JCcJoP0bZBATPzSnuVD2GTHjj3+wXhWbUdwBacabXT4+rmNa54t1u/lXX5yHKHlpEpUGpKWO5FdfB5lwfRCNKHv+LrDf2zBgQVyYWTggHTeA6M79FOzqOW8gINi54qHndMhBPHlcZz5yqMUTKqDMEL/z/rMRP/mvKTpezDAOFB1hE+vMHIIT4ccTcyGPPUEz41w6+8K2rFdfb1qv/ow== kazuki@callcc.net ktsj
32 | environment="SVN_ACCOUNT_NAME=luke-gru" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHK0Nixk1xEW5PpedPE1DhjD9NlAQqXvr2YngR4/17XD luke.gru@gmail.com
33 | environment="SVN_ACCOUNT_NAME=makenowjust" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDM+bKE+CkZJcQXjP4gArifrJkYCTOXDBlvYI6S36e7B9RFOTGqYoHz/PQFmcXyzlQZRR38+t0KOliGkhhTBT6mVIT6VDHYN3a4RHngiZQeQhx/u2DkBduEbhE4AdKcSaKpBuGiuyFa2OXbRPMnVY2iuUsnFlWlyESz2nw+5FbkXT8dCzaly9Z3257BEf++GPM5ojwOul1u/J6coxIbuWq4lgUmyuvPi6kxIEvoiDZqMk4IgpqPpAvSXIs9YVdeK3fZKTfvNX2PMn6oZ7CEQJ4iiJpbKsjLjQIbGFl2VOR58X4Qp6cf3cDwZJ3KlYTp2eePfkr0qhc4/u+yzdawgKHUwZmKKxidLtWrxU60FgMoUTYNTrXUfK929YF+zjmpnBE9iZUNTUk7dy4gvuGaah/KMhsaD0QPu+NptHfKCp06J8BhxFTmJ7+KZjFlBMAojp3MEWToP2AlOP/AXV9yIDpdrTET1eDjb1fDYDXvVgunkbqtyYdbbT61NgxZpyiQ4IdnGWyR52vq0M7UJTCWyOycj1Bd5LxppSSaNjnENsi//2xAdqteB+sPpPNIfTMPDQwfXaClk6JU6U2tZTBPQUv2QxMKhlzMGlIL4yNZkgiV7GIugnLZC/HjI2qZxFyPPXn+9U8M4KhUDMapwMX8wNoaHiVtruKgsRHXeDtP9ayolw== makenowjust@KitsunenoMacBook-Pro.local
34 | environment="SVN_ACCOUNT_NAME=mame" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFi3h5Q9vr8aFcKhAyN6S1rbwGbADvb49CBMyDWrncTr mame@yard mame
35 | environment="SVN_ACCOUNT_NAME=mame" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA3Er0VxM4bH7hk7FDhspHKsKcnfVHgp34WBTla0AF/LgFdIFcFdq8yrSmPdipgnOujMoGGbU+JgOdR3EwTXTsBVB0SMXsxh1xjEOfZ/FsojEkemEESqw2ozR8dGKdt4WdHyIFHMw5wj8WjLJqQYtXp3J14u+RRR/PhnRgNDq5wS2a8/tOFuakLnyaVuqpB4KKM2yT26r7LZvv5bowCh6KI2vaz+xaX/yuC7xWRnqlVSV/Sw8aC6rjpfAfGdTlljpLzyVm8ilvb1rlUBP1TGCjUzqN6a3uDLTtw9+UYr8e3I2deYKZdJIxrFEXwpdjUEw9XxDVyg8yJZQXXObcH+h7Cw== mame@perch mame
36 | environment="SVN_ACCOUNT_NAME=marcandre" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCONDtlOV+rYUFjS5kGuoV6yeSZFOSyAjAEkiaOIC0mt6lsKvzvRkcww89pS7iXrj6B5MUHAsx/yPHJXeAWYW7UJeaaVkWcznCZJ3pjMDp3oUvyORPGD4SUXpH+x7AnMav/G8RlgzcWUPs3lCGmqvuaglH/KA5NwMu85YwchJi6oi5Xmoa1/67z1acvtsoJdZsIq04wPMnqqO4Xlzjxd9U8AyRakVl6rBc+dPNUFvwimwo2XeY9NcmrqzEWJ1WwakQS/ppkFLfPR99Tj6Ur95Z9uMd4Uzq3BPd1YNmz7k37HYqSTCJvLAd4IlqkpijxLf5CHmJ3j2nQ7RZecKdUyqXp Default marcandre
37 | environment="SVN_ACCOUNT_NAME=matz" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL8bzoO4V+dG7JGEa4MdVKC1saRd3Sb9figDWZoBXP2a
38 | environment="SVN_ACCOUNT_NAME=max" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB6vBtEEvn9u2CTCt0lzvJgeJfnGUCBVHjUdXCF+L05y emacs@Mac.localdomain
39 | environment="SVN_ACCOUNT_NAME=maximecb" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDhdB7YK8vvEd9jZLpSKRAicg9q7u43GiKpBcaQ7xRmigkzZb3Ul6lMWkqVRum4d9Qnfvy/zMo6WpuQb6H0M6N/UycmqdQ5PXRcmF1qllLoju2CL8y1bIZosklwQes1Uk6wv2KmstGoVEo0ym0KgFCt8xEu0E8levamTO+XFOR5yj4qckz3du+cj8h6J5GOHN2MkiBlbEuKTsQ/Gy3mAme44UfRuV6JWWRtm3hbSAR7t7SQZeZp0pxlAY1ULEzIExIWXYiGLogRyCjorT6VXwEVsr4ImK9kdh92leQFFVISzT3T2y6vCNEDu+EeCfQ6gDld7W4SLfrfmYdRbCvxe4Otia9fUZmXcSiPcWmmGTtamBjhP/JHRTKMdBBKxmeSZl4QCO2QJ7bZT8Ckv/H7i9Qi0C8l6e8q0agX0mQCTVy/nSCbQ79odRvnwnY4CrT8Sr7jVkUs2ySgwFcHPcljMcaurQwJ6LxKwwlY1f7rtWhLrP55XUxbV+nhTbe1J/tzxUt+L8HNcjk54Yh9t9EGaxzjBHhNHEUQpjdOMuqk1+peQfAd4924zNHG9U86oMpBYYba1CKCXNQmgNeN/3oa4vROnM1HnfD+XUB17tC5BxhnWd861afcfgqW1BxPecCQ5dmViMO/AQGzoamx/9gHxYcs0KsjHgnatMD//hfj0X1MqQ== maxime.chevalierboisvert@shopify.com
40 | environment="SVN_ACCOUNT_NAME=mrkn" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAgEAzJ9c9+cZkxJ76+CZVhTFUYWpoUW9+FmPieuRbBQ9Ds/axjacTSCVTpmQM7Z4wvqznCfECOuJ2OEgD9sbsy+b7UvKbAHaF7/NEa3esdR0nrbpZamCffhtZrsN6R7yK95SKcZaSxCn0dT9o9R0yTbM5FhdbgC7xUTWpadKJLtHwGsBkb4VyJIfLZWOo4stbcj6U/wNXaoXmwy0853rUmVyAfQB86doR2ppnRdctm8KflGKdaxyt/oiwTnici6Z6Rv+h/qG8/XQxeuC77LKQbW1o9QWhWdJiebVU/c7qAgmEYpzdrbx8qwAHm9j0ZLftu2HPAvD82wN68acZ6zuJlETdvDUQqnBdvgrA1OLVV0X5OqBjtK/cxlFhInZrPzxvjgeVOqS5f/vHRsCpQYRFowPWiIRlhGz5C2hLx2LqVwWhY5+VkmaeBgoihfHeWq43yY39xmNedsE3sYhhXbtZ3cuu2rWFUKdcU9dllVymLxtHkPJMiOLYFYWCiSeLGQ9PI4XVs9Cix14lxK0w7bDyk2f3ZOx6KuEJVCxzmGpdC5pAQA4l1jyJGnxitSCY4azNDdKbBnwdEDXin55x5mYzDFC7FZgRuhSK7OyAESWHR8a7QYukvleAmSdSdoGcTrIMr/sYZkRQ26h9ioNkNKp9cuNOGDUpCdZ91UVIt4TuyVJR10= mrkn@mrkn-macbook mrkn
41 | environment="SVN_ACCOUNT_NAME=nagachika" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwwktWtzvPLyPCjdBFpl/f+buxxS5JQJRFNCBmTUuA+4zfZ27zU2BWC3FhADRN/csVustaGSdEHUIQH0yNveyVzYZEukKu91C5DdfGCka2JxVjr6qoEvRMEbiZpNKNu/Z1yB5GY478Lnd/VeMlSAD00cztduDPO/x1S0xSaPjKcN2SyV6Yj7BeM/N1us7AXRYlTO3/0emetvZfoUZp/RBq0HDlZdrFV9iymrPJnNsS+RpzE8ZRVwd0DNAjHjYdyx8FOL/op1Vf6kwzay+pPt+LRAfWMBFfWMqsnpmo91/Q3zTJUhRFwtrB1AEfDkicgGzS0iRBkaIJ1M3r0gccF6jhw== nagachika
42 | environment="SVN_ACCOUNT_NAME=naruse" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHu5vCliXBnpt1gU3LGRZXAq42kKzfI20P5PWdJYVk+0 naruse@Crescens2019 naruse
43 | environment="SVN_ACCOUNT_NAME=naruse" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOn73kXXWJIoILAs0pCFfTHpApkDVh0elcttFp2kNPc5 tanaka@TTANA-J2FYXM
44 | environment="SVN_ACCOUNT_NAME=naruse" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPRrSfJkTxkWQfj3tEhf8mVVikmql61WiyQYyuROk5p+ naruse@windy naruse
45 | environment="SVN_ACCOUNT_NAME=ngoto" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxzhJPq6vgMB2sjcpQuIjdeoMJMpwazCaYv9ZJVWR34znozG2i/09nIhIstfavQ9yhoObiet6Qv5Wx9+RJ+bPuI4Uomw03SP1ADrYhGKh8Luty0bxdCmzGNWOsVWpFEYqiBT/7IEEI9GgdNg2GrbIP3rsfZ1IbTtHV/wgqm6X6EJ4WI5PIMb7Pmln/0vw/UMJRXfqZmjBpqGxDDzZmMOM5NnG+5xCcUrh4Vr8MRjTmtEy5a94UurwASdx4BDyWuiyVZiRJSWBgRMcX8CD+isIhFRqAbunturFrQo3mUignGx+ykYTRIxtxAg9VN7qGrn7GEEhcHbNjHd4Vm4sywHAn ngoto@lng2 ngoto
46 | environment="SVN_ACCOUNT_NAME=nobu" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBHTmLI5opUdaUpaRp+bKaHTwFny7iht7fiUdJ0hhGuE nobu
47 | environment="SVN_ACCOUNT_NAME=normal" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA0BnUlAXthqVxirRDQET7ENBC/N05m/dWiLSrSBu690mO+ZLjSnsUAp0Yz/S6xheVzoQDq64ezbZaC7nD1YMAreq7QKqw/XpRIi+IqxtFBFWKCecGFg7a/Zrm+/k9Wb5pJZegwhmMUBJYQ6LfnfTh/n987PwgWfAQYUfQO95nOPWu3GvJLhLFms4p3aiNYKLnWfNGg0fNjf5cFvWSiuT0BmNxCyaLPZDMwvhVRV57DPyFe+oSixOTIVUK2WjpgrABYXvDZOVO/DAMhi449ltCvvTBYEjHPgl+c7eDSpHA3nP1qJESt4CCeJEnWjBVypQ9YAizeWDrysqd1B09WfK/1Q== ew@dcvr normal
48 | environment="SVN_ACCOUNT_NAME=odaira" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAuthmDtlvEbnqDgW00t/56yZRG1cgNlWgtIFkkaviphHVCKgpwLOzhA0pMA7qcT84ar6ziEg44dN93FUTQ5DB6poQpn7wDJPYokMmUxfSUhi/+DUdq7NiQDevWggTgH99TPyQIJYCiC03M76qDZCKW4C1q0+FztgV+gWTD/mL07PucUjiqTk272QLl/jGd/8mJ76p2yy+HGKA1BHDNeDQXiukFBhLd92SKXeA8Uyy63BCXuGs/Ys92qGHuCOO9+EYXmFIcV9phyNjD6mrU1sRhpWFdl+JipPow0JbVNZRctIZ3Rl3cMv44X/HJGsBkMWa0KEqW8wGy9i8b5hEpGnrKQ== rayod@ss odaira
49 | environment="SVN_ACCOUNT_NAME=okkez" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAmqvlrnrSDD+OBSr1BNEhnPD3O3UOI6puAg7RLkn1nwfb6327ZH6xGWOf6Jm+Sv3383Xvt6Dxqrbl0gHICjMT+47c6a8B+76WRX6vg1s/Lhx7YyW3zOk3CmVg8KJ+px1/qwYqexYy9ud+eYnewO4rbI+qvrEpoMWFGE8/LkTZiJI02UmUkKz07+xlVN5h76G7S2OBaJULKzv83FnruKD37y50h/4zXtvPlrGQ0in1tMzz/pzYyfj3QWRrXiU4Ef7MbRGyoceb2ZhPwcM2dGTsMHCiNM5R38OZkxwe0/SE5LWT3jHoDvHs2YW3FjjtDtvsKB/O2G7bcRtTHsiHOJlrHw== kenji@suzaku okkez
50 | environment="SVN_ACCOUNT_NAME=ono-max" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQD6XhWW0T6dXuX0Ih96lPKx0XJSxoeB9K22YwDeJOGim+r+SvIKGnpWKXlNL6L5rOIH5oC/FgWS+OqPb66lYKf2lRil05Mxt11RECeSq/g5fhQ2hVNmbIOF3RsGXk6IU6LjD4SAA8sLwAg9CdxWNzAG+RHmjTnM35cWrVSN+cANfOZbg8WySkJlSbHGQJSAmjmAoF5AfwTssAlh28NA16kGFamjoY8qnAAHRPjUdzrvB/ZIcPm7vE/8KyszJhIUobobmF0C53yY5I7gtiPruk12np703Cpa+RGmhibVnfKH+gJbc/wFASnVFpTK+USwoKDLwP2coRawoQpgadxMSzN7Fvj4vICX0pPwYLq2uDgEB+ZnEE2COAD9ipJMtqWZ0JeZ8avzgLzR9heSc/F5OvbFHgeogyeM3Y23td8uNIktkQjabGv/BU5r+9a8SCJP7E3qgZXfCqdU+7z10DhrxRKZmlahx4eHvlJ6LpzBfMNpo4IgxqKm0dkMW7YSyCUQKdE= ono-max
51 | environment="SVN_ACCOUNT_NAME=peter.zhu" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDU8CjlqhqFMEETZSzMDjjV38iBmeMfyYrVbYWSQsQQFQf2iPhLaLSu8Z3NUf5YFSIYf/vX/Wj6tPspA9y8MUYzdnJRGXC+yFvCCUYSXu0W2uV8G5TK+cB3FP1aBu1OFhwktRzJEpTk5ntRG8V+jNdJLIcQYRU1zFNcGzJoqzJEK+TmZ9NSdkdP6cqHSWFKZawxefPjBS/iwWaP86RG6EZluD3tmAfzgoQVIyDt+quX4vjatgHusI8R8mVXyFRuSy13O9eFsr32Ef7q45mZPb0MfukYDK8qUL9qhj8dOE8X5fD3MBl8a6v0dSoH8gbgH5r/Morn1aK6rhIIpMhGOmju/f+Y78B5TBkI/7/ugCso/+hMTRBjj6mkw5IbzqEsH8dZYjPEB7efx5XbSdP90FA7q8yPO0GbKt4CLBaUCNzO1ZRwirmiDjP639iLuyoSTJXsVco6XuMHR2ufUv1TNYRQCRjxHsOB7SzJEh4hLXwj8P8MoLIlk2SSpezACd4BqEZZFPIeBS5Pl2KnSRYs6YgoFwdpi4ACiOvDkbhkus4ETJYQOXBEPrdu9CEGVfSormmSVOcbBSw7jVLm3GJqC9Zxt/GTsnB7jSBZj9HPbyRvyHmxy+sCTrSxr5NDvWly2sRbx0eTNmOoAQJ5EoM2/tf+I/2MrzQvaBm4P1C7W36tPQ== peter@peterzhu.ca
52 | environment="SVN_ACCOUNT_NAME=pocke" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVxdpr0Lh4Ec/kmaRwT+Cgbs+8ru7prRHFsYTMcQeLRYDBZ0okaL5ouqOw9rFw88CrCLIJRLhXfgVjoOTi9srQuXFIDy8l8aQlLLwTj82U2RSKkcdeCuPA49IWDUoFXtHCvNkVDfsB97+xWUrhR8ugw8McDlvj6W54RFSFdloJazydUi0c4CdDPCS6cpbSNJPWOhSmkMU99fwy6kN2WR0CMikkTuMmDT5btXZL5uUoixoQCrgWt0gsNW3bgbz1/wC2arZp1rpUlrOG+dF7MvvQGXVo3RCFfzwr3LOoXOdrecI7iAgUhxbiMlLYX3jU8E7y5h3LArdbRz1QvbptqbQX pocke@ruby-lang.org
53 | environment="SVN_ACCOUNT_NAME=rhe" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICLecn7rs5Nk35xn3KJ2F6JT61bgjYH1/ZKhFZWoNrFp rhe
54 | environment="SVN_ACCOUNT_NAME=rhe" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCfywbVpog+xdtZZM0Z6cG0tlutSgX9/nDwPIWav+qz0OMo9ZL36cay3drqkfFzcaknK4174slBBYZ1grVcSGT8b9zatAtKSP+AMQ7mcGC+zgSvxh621gENDZ2fdSgUmqIesMc0EHZfG9je6zaI3bkTlO1YLjdFNthQD2RVh4Ysei++5hnkrREB6P8k2/j54I0MVfgGlOZvzW+0Nh0Pp2hUItNSyzhPwvr4Gh+tWjnBF//XHiNfiqK+ZX2CO4U/lhhSmqLYPwOyfQ52nburUjjcFbpQ9f16vkeR+ejqeeQIBuk152s8uIhYy5clOcFr4/C66m5ZKHdkKK7/Wz9YorLL rhe
55 | environment="SVN_ACCOUNT_NAME=samuel" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPp5PNMkLwFHGXhjNTSAC5poU0bJclBm+4vIj9H/0Ovt samuel
56 | environment="SVN_ACCOUNT_NAME=schneems" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIItS5JtElgU0wUCrtGZyZD+ddRRkaKT1iqa4ofoRp+Eh richard.schneeman@gmail.com
57 | environment="SVN_ACCOUNT_NAME=shioimm" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILJgduSUIo7r6dHniSXeNbvJPOwmkbkT3tH4DmI7nSz4 shioi.mm@gmail.com
58 | environment="SVN_ACCOUNT_NAME=shirosaki" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC64gticgEjTQcCOMNh7DnhiENLz54i14ityIZHB1nSd8pPVj1Ob5d1CB71A608a1GC2OmkgZrKqg5nf0EQJq5WEsOQLafaCpFwCTTycks+0IcQfDmrjTs/vexmwpXgRBhfVoUoEXbCTV+fi2YXR42wI8XSLI7tEKvU3x7hOjQxrNXTVSf2XzkDcwTOrHCCD5P2/J4zN75EXTzh9rJgC7ZpKXK+B7fQyb/g1swrDF6pOG3HysTitQuanT6WgCe4GVIdJquX3NiWmNZOSsc9HYCFdorKxlVBIVHQEExhd2hnDOk8FgXbH55hnWe0CeiSXpO+dC+N5DkhL/MzWjhDpKYL h.shirosaki@gmail.com shirosaki
59 | environment="SVN_ACCOUNT_NAME=shugo" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMFEvsplS/p+ldg4LW/azQNdaVg9WUiNw31EmpedTG+X shugo@lexington shugo
60 | environment="SVN_ACCOUNT_NAME=shyouhei" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIESbNNVHVIWwa4C1OgdF44f7WupoZgNpo1x+p1JkZldB shyouhei@ruby-lang.org @ 2016/02/22 shyouhei
61 | environment="SVN_ACCOUNT_NAME=shyouhei" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvtovqw1WKVmN0pVYKfrZNwhpcUZmzI/ZaQBDZfRnhVc7fQHThJUdR8mSyIGOBnwBTqB88x6crBDwfmdVvPXfMLV/BfOBObv/T1DpUgmo7oO1RIqITpcYvh0cpy4B4bWPAnSC1JH4nOCeHI58+N4CqNZGAghZBZn0rwiX+GzuVy/YrWS8B1nXyaj9t4sIT1PJY9udzQqZe6vvH/SeMCfvMfx2oQXqMawMQ9STPI6d72qJpZY2xPbY1TWsunXED7WxQetMXbIZCoU+Y45/Irrq2NzAFsUaWxP7Od1ggsfmpYRTUHgRmxJH+Ci8yoQO28/A/HSpFuY6qDgWt4HRrhps1w== ci.ruby-lang.org <-> github.com gateway shyouhei
62 | environment="SVN_ACCOUNT_NAME=sorah" ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBACG1cKNR8SS4Dkm2wcia74RRmy9d7h62114MQd0H9zb1+1LxVa55Qqd8O232BH1i/fF/1o+eE3L5U7RCR8KUCuAXgFrF429BETaiiBnSErv5yrHJS5RTTjEhA1d9Ygk0o3Und6+90waBXAk2oPVP+OBNtYq1CraZQsXuqvlUtMrBnSTsQ== sorah-mulberry-ecdsa sorah
63 | environment="SVN_ACCOUNT_NAME=soutaro" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDGz4u/OYdvmxPAseh6LDPE3Sp+D3NONJYoEHthFoD5ADpYbCvofzi/mbFFn7BP0MnSklRoMWqBAcfmMPswswNo9+S1m98jNfLbvpwmq3elDTGvkf6GSQ49gEGZdXVInsCQmTgp0W7IIj4/Y0NBDRMzMI3BObpPC76g9dbsRZUdSrSaNW++tRAc/vYZl3UeQo12SgkYRedE5ve1jYVVqdPINZ+Qpq87qUqNrho8OON+hAg4IllnFqVC/opM6+iGFT1Z8Q67hkvxTjFk072r1epskNmbK3rdXPxVIM+NySCj8jTYtSzMAAoIOPH6a6c78a7pzn6adoRmy9/TnFP7goIj
64 | environment="SVN_ACCOUNT_NAME=st0012" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILsV/JCN//uDHocb7/U3CQlqdj/f3RFXWBclUqgvks/t stan001212@gmail.com
65 | environment="SVN_ACCOUNT_NAME=stomar" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDkdyOaVR4r4Rb1ELKEoZMQzxWIKoMEd/nAc0iiP44OJGWiDAQf9RxPaciiwiscP4RfYOOTJc+gZjxluPso/mqibGXd2VBW3+CWGcLEk7uBScZtTb50m//eg+dZHDzzkda7/o1ZelwprG8RSrCs2NAneIyPgMzdElV9V1963KeDzuex0uEL1MG8a+H7IC9rVl80QNl4J37DHQtaqcOQ4nY3qKOTOKBIPosf5ScAVeGmAG1ekL8I9NI8gQYPtxXwPVBgncmd6O6so4CBx0zO8Q+nmE2wwMCRrg06pPKggSPKstwId0LnFW3XoHGaAX69wQxv9b/C5FsRrMtXPnKD6o15zcTFN+Rvnwp3tQwnLEwn2/CzjF07ctxY9wzL+Phs0jAoa/BcR6WoQg4vrh2ZKpgmvkNtLT1wxQGvm4Yoq0K+coPxpmXs5jT5c+Ws9V9raG7H6IeR3DrPMCxd500F+DsbEW3In7zSQ55QuyYpO7vYWBBHyvGQq70yiwCFEjAwfCGlSbrZY4qdPR6/4V3q1Y8BQRIqAWUg/LEyIY4Gw1XXJ27vdfqBI6YIfNeegL+boWh6qaKpWJ12jcc7RakQEM+yIFjDN+VeAsuxhyGC9ZKhp2x4qUir7GlDGKyOpIZNXIiyLNzqau7Oi9qbToYHrY8Tvk/HsBx9pac5r82f5Skl0w== stomar@ruby-lang.org stomar
66 | environment="SVN_ACCOUNT_NAME=tadd" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCdJXwiupBUJihQtx2m2Nmt88t3iWFx6542lT987zRm0XMNVqUG1lxFZs/hZutyagr12juhCoHD6nRoKR2QjfqnQwD4PZIzRWXzRvenZcEkSghJrMu7QQsR/6GsDbWrTmW5TWy72IscehLR3A0fcHxgiT454r5vudN3rXdY5BmS6gUumKaqVAyNiRirev0uOWOr/IClt14LcID+CVbSWuP3Qv+p4FRmPBlGIgD7rdVcI/Vyf5KCUDPQ+5nHyMGcp0rPQ9tbCvng8MSFGwokYU8AwWxux0haH1XMKKZ5Nk2Xh2lEvgPtubOEd/oNCB/mhCFXZw6vr38d11qzMMM1RdbbajHERB2t87UIjvBtJ2SfIsJSFv+BCG09xfXjqiGmtCA7obTIEomM0AEOSaY76UB4WPNHVm9i7TNKZQAouokuOvB4c30hpd1D/VOYkTH1fP3Pv9UlBNNj4EomFz+gvnh0uwLJ3GdZLrcQjdrSsFfgs5/wlB81rjqz1aDLHYNGpTYZw+CqTeG6JMgf+JyiSg49t7JCp9wVXytaFoAIDD8/fUl0VCiOPo701yTeZbIyInjl7s024GFitGrTYRWTRb3AaeZ+G+9IlYQPKKWeIa16paVJHSXi9BoT5rhhIGKx7f9ysR9dHEQR4clGJQJVVXqDisW4GZxiZwqJNJgFw20Q6Q== tadd
67 | environment="SVN_ACCOUNT_NAME=tagomoris" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIY6WMiw8xPXcpu0MmQnLWrehNbm19OXV3Er1CMX5MkL tagomoris@gmail.com
68 | environment="SVN_ACCOUNT_NAME=takano32" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDI+cB9tLV++KbpGN7K5dv+3lgWqSinnvvjAYn3QW4Pf takano32@gmail.com
69 | environment="SVN_ACCOUNT_NAME=tenderlove" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG201JUS0HKQm69UXHLWhXADt67ceXYEgYPxU5NoWgpM tenderlove@ruby-lang.org
70 | environment="SVN_ACCOUNT_NAME=tompng" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOerhB9Jkj3TXkuoMHp/7ztQbh0K38z2TT1PUd9mHusn tomoya.ishida@MacBook-Pro.local
71 | environment="SVN_ACCOUNT_NAME=usa" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAxSL9or7AewvAqq1pI6W0SKBN5RQA4t5sam9b1IxavJMzH0K8piCDSaBwW+E5Rr7Q85V4vHRGMoNTYCh34z4aR0DW1JRDfuzvdz2193FKWpWKbQhGdfZpRnb4YYdSf3YfvtEn6Q9l94W9abjp7ymH+Rznl7r5g8z6YxuHUtgrjKtMkBU1xGmtGGslTcC6cOSCCzPGTnpRDmriTzKE4h9THKbUMoUmzLRvzGVrDbMzLXmv6VojsIsTLbN6JsscfKTsjve2kB6k238hlQQAuRabjq1xRrHJW+37fqEGGKA7IQD5MEbW/iF4l3UbgUowk3yAAyDY8d7tjVKwiYVSaL5vzQ== nakamura@unigrate.co.jp usa
72 | environment="SVN_ACCOUNT_NAME=usa" ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQBzfYV0T0BJwg9BJwXZ+FtrYWB8muU/iiZdY62C6yVC5k1iGpykNnOKA/AucuaH2pqFXtDEK8jmPyIqrlmEDD5tW6J55dvY8Ws7toFqjDMUw4KZD2WMd8YtkpuClwwis3vc0kqwX8M7XklJ2gwRtflW8YuXFBYhBa8Hxl1tRQLYXzu+HTt2F3is338B04GetylkamWJ9UlizBEusMciU/rYe6jtoF6FvEJdinQ4W4+7N/NhJyaLRVfkgRfbjfE6FEZUmjIH60ofFI1Oym84ePrx0AoUHrLJvhsCA95rCnLZu1mB3+mkTFEb2zliKwcq0ND8fEKgDILwdoqqjKBMm1c7 rsa-key-20100727 usa
73 | environment="SVN_ACCOUNT_NAME=watson1978" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQAbRtEjmYWCpEiEq4EtHuVAz4PE2fK6HmDhYo255Qp3vbA02I1Nv4VJCg1IwoPCqpCc1fTjqUSFOjBCYamLmODraeEhyLbs3lx/iBZtjhEFpIjjFno2+FC4ErsFCpkAPJlq19o8BV79NWhMYI1AhANr7pywLYzBYB51O0MrFdBZ2/iNEB7XnM3pcJhrTOTRUCpfoPJ1QmSm12+bAywOaeCUO0zfjpd1xd7DEZe5MLKFWKl0txqmNFJy8YnDfY5PPda5l8DAR1u5CMYCfTXvTOCinjE8YlD/6Nj2inKxHj/AWVpclyMXmg+EA3KQKb0xE0qLTw4A6jaWJuE/o+Wi+9 watson1978
74 | environment="SVN_ACCOUNT_NAME=ydah" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDOv1OcrE/vYWwD28GTjX5j8cX4V6yxRuOyde0Cbbqsce0Dovi/BzrkWalJpRIFmP5M1BfyFilOrjL9fexjtAKyxbRBWNRnm4FTb1+cmxnGeHKBD9XwIeeaY9X/EF/s2yAC6lOP+f4S72xurbTGCrVvAFJP5+21EZSrvA8p/fbMCGZCbXBYXaRmfw8oj7C7Ruz6fS6IghDM8qibZjgtXvh1bk7Q+pLn2vizQq5L90QOOUOGyQDdWMNeFtjgOTGLm1Y8+Zq9IMeNjBXF2GP4gPk2cTXIS5d+pCJAW68Jx0QUOnxXIovO04KoK3YLhuy/PDYKGjcfwrVxZvp0+1hUeD38qM/ynsqcXxq68mCyXmRpwLG0iMR31s9LjWaYkjooWFXbnOAZzNQ0VGNYDISrBNBaXddkwnMczZAOmWTNMRJetOHP7RzpvG5wflFOUhBj+/mstf/33plOHfjEljHWE/fgGdFgJlhEOMjBSZjpUX8S7WoL49ZfOL5ntU1w5wTbwdM= ydah
75 | environment="SVN_ACCOUNT_NAME=yugui" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1d1FfWAgzOdx4xSVwHmnAUlK2xqj1ck3rCBECW+t1p1QSQ9StKqq0U+ChUdHBnW3fm7KGLIXiwAysm55+5pvfyfvm+YrdyXwE0XPi2PreIAmHdsJj02EkKmcgJa+DcyRXzYsEmk3VBMCRWNkJTJRGRIqaTEZElCILmQ04/KCM4HgRtvgo5k5Ch/U6gC876h85EnFR91syXxBIZTeOcEIYJq89c5iZEWjWpmLqwEjcCWood6gcjX/b6jlx6jO90dydKHdNPRteh5fDWVPEl54/Qjio30iiHlN6DSarG7AQnOGzq6GHN1F1VDkDLMxGj8b1SwtitBL3HpBaLZYsN3v3hSwhmoPRWpjrZvtxurwedFZHQSHIjigZzGl48WUoWHIOUci9i/iHiHbOvcqPvgqA4vuu820G3SdfR7E0OwzKwqW4o7Z4QLZ+8Gk6KFhXjApUJCXIhhtKl1ucvrz6/e0Rar7Mi3qOKep52VSKYWi5z9f/7NAbkRAJffWBxclgchDzbal3hsaamLrPisjFdml3lQKQyfn2JgYzsYYdaD4izjKutPdgtojRLOTWE9B4dk1838v/wTsabST7qWxt4daBAOB9fRjLuJ0CIKJswAD054SiOdkyllU410iRLS6/lM4zkdD42+nKChhgYvQtcCzErbLhRUiCKWme0BxXFZ7kQw== yugui@yugui-macbookpro-3.local yugui
76 | environment="SVN_ACCOUNT_NAME=yui-knk" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3DwgGe2ZC2YBnMLXrncNYrzYkMpQ0CQJvfZj/I92dkXGQ5/7IwyYwMd/XH3fz58IGmYvnsLInnnlBXznCVubV8AH6fw3batpkiAq4AT7yf+Fql/OGn5VOQztxEzOc0LKqDn6WKPzlPvqixj+K3CboXItdURScsMJxwNhBS9WpXKZ9ZMF+BQqb8DddMMRSORNK3JWJBsUgYEJh4CZ00T7IF+xzI/LiQUDdrwzFYyRS1xuPge61LtU/nrNkzGyB4Jpxk4HfJLXsZ/E6B2F8sjDTvCl2AE5fzPzeP/fbnOVBTnGbYg3MZ35gELgIRvjMr6CQtV0derVWUh416M7H6iIv yui-knk
77 | environment="SVN_ACCOUNT_NAME=yuki" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCt1xemzgmUZBWDLFdyPhyJRtZpB5l8SNUiS8YpN0ao8FdZVstAHOxTU0kVce2m8yFtSKdImkso/5odjmbEtkc8GGA4fUtSYzye0yyvG6YFyMyc5WjoaBNUWokeY27VMdgp5oaxd4mVK6NVbVa0Q9VMiMoHUvnJUV8F051sXsmOgGzDjpSEUfnad/6J7josjJw7Dm3tuLd6sOzmWl6vB9pyflzgJ8vbP5UXuURl+ywZ/tYz9pM2s75q/pfpzDVmO2HnT2AMUirHt9lU+baAhRl8ZWYQEYt61veOc1aYUFEw3nGrxBIewwfMXEH427zbDlNkh6nJkWftrrmxg3BX8pcFtx5TxQDm/n1SaQyQRVGU+Vy+8yiJs6gFsu9WPxso5+8Lh6aYdRidu4+ZwhiuJ5Mmx0Isv5vSMaceY89Lo0znSzlkycgd3p7uecpT41rSqkxltuRO+aiaQRJhxRm1u9Pg5BtKMkSciGUOxwltrYVtYJExANXfBFRiSPn3qcbFhPtKCVH57X8WBHkSmxuDN4HqwX3k8NmRJxbvE25LFqXVnDzr1t2CZI8qZXHiATqZFCgax3Qe937RoZNDCpYDiZEJHZhSUKfI/JcYWAW0ZXk+J+uMtizY7oYyotT98ZMvOSQRU/hYVKrmEBpp1eM0BGDhJaH6g9VLzW7RdWeY2cjHYw== yuki
78 | environment="SVN_ACCOUNT_NAME=zenspider" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINIZa3bSbmVRBeYUuZ5stuV5WdsrYRvVq0/NFNBME9JY ryan@zenspider.com zenspider
79 | environment="SVN_ACCOUNT_NAME=zverok" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7ITHa70oSy3Zl/EyVuzpjM8weDjloRxj/Ld4U3TFe3y9eEgejCvK6sBcaXxC3bkq1LyIQCSv09Mg++/fuYKG+kUc/8lJoSwSUmSUoOVxZ7FIx24pOb2GCnY6hwEQ18bUc56JUSoaZ1N4d/u25nCemJ9Bh+viZjKIcE+a5f9QRir4cAwpb5D19mOEg0buvOmy10QHfkEq7387bqdl63bEQ5UMHh8aFntrgFG83Zy7CJofg2RPEnQt7CpL51N4Bt7emeUZn2s+fSP2BpCZ7YE9ATwkOo971B0Gdv5djYGZDgQESSXUSW0/qNxto20gQ7zfusyFXq3xpKnsG0KxH6twx zverok@meerka
80 | environment="SVN_ACCOUNT_NAME=zzak" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOcOu+yKll8JYcuiTPFenDtshwwgAXz8pueTlahru0QI zzak@hey.com
81 | environment="SVN_ACCOUNT_NAME=zzak" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA+irWX53zoF1cDEoFhv8sWqBKd7SGbkExRM+OL/AUHj zzakscott@gmail.com
82 | environment="SVN_ACCOUNT_NAME=git" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEWxq+vqfxPVM18BmUjgwnQiZUDHEdjE6GRnxixPfbhS redmine
83 |
--------------------------------------------------------------------------------