├── .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 ![test](https://github.com/ruby/git.ruby-lang.org/workflows/test/badge.svg) 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 | --------------------------------------------------------------------------------