meta: various changes

Summary:
Submitting three changes at once for lazyness:

meta: config cleanups

  Add editorconfig, gitignore, and conform to them.

RobotsTxt: add differential rule and conform to the editorconfig

time.php: add metadata, editorconfig conformance

Signed-off-by: Yongmin Hong <revi@omglol.email>

Test Plan: `code .` and edit files. for php files, deploy.

Reviewers: #acl_sudoers, #blessed_reviewers, revi

Reviewed By: #acl_sudoers, #blessed_reviewers, revi

Differential Revision: https://issuetracker.revi.xyz/D8
This commit is contained in:
revi 2024-05-02 19:25:47 +09:00
parent d2f7806542
commit 0e1656da0c
Signed by: revi
GPG key ID: 1EB4F6CEEA100E94
6 changed files with 223 additions and 101 deletions

32
.editorconfig Normal file
View file

@ -0,0 +1,32 @@
# EditorConfig is awesome: https://EditorConfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = tab
indent_style = tab
insert_final_newline = true
tab_width = 4
trim_trailing_whitespace = true
[*.md]
indent_style = space
indent_size = 2
# Tabs may not be valid YAML
# @see https://yaml.org/spec/1.2/spec.html#id2777534
[*.{yml,yaml}]
indent_style = space
indent_size = 2
# yaml-lint configuration
# YAML files should be indented with spaces, which .yamllint is
[.yamllint]
indent_style = space
indent_size = 2
[.git/**]
indent_style = space
indent_size = 2

78
.gitignore vendored Normal file
View file

@ -0,0 +1,78 @@
# Created by https://www.toptal.com/developers/gitignore/api/linux,macos,windows
# Edit at https://www.toptal.com/developers/gitignore?templates=linux,macos,windows
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
### macOS Patch ###
# iCloud generated files
*.icloud
### Windows ###
# Windows thumbnail cache files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
# Dump file
*.stackdump
# Folder config file
[Dd]esktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Windows Installer files
*.cab
*.msi
*.msix
*.msm
*.msp
# Windows shortcuts
*.lnk
# End of https://www.toptal.com/developers/gitignore/api/linux,macos,windows

View file

@ -1,3 +1,3 @@
# [Dont be an asshole, and dont be tolerant of assholes.](https://asshole.fyi/) # [Dont be an asshole, and dont be tolerant of assholes.](https://asshole.fyi/)
That simple. That simple.

View file

@ -2,104 +2,111 @@
abstract class PhabricatorRobotsController extends PhabricatorController { abstract class PhabricatorRobotsController extends PhabricatorController {
public function shouldRequireLogin() { public function shouldRequireLogin() {
return false; return false;
}
public function setClientIDCookie() {
return false;
} }
public function processRequest() { public function processRequest() {
$out = array(); $out = array();
$out[] = '# Forked from phabricator.wikimedia.org, we.phorge.it'; $out[] = '# Adapted from phabricator.wikimedia.org, we.phorge.it';
// Version timestamp is when I started editing them. // Version timestamp is when I started editing them.
// Edit setLastModified at the bottom as well. // Edit setLastModified at the bottom as well.
// Calculate EpochTime via go/ZoneStamp // Calculate EpochTime via go/ZoneStamp
$out[] = '# version: 20240430T032700+0900'; $out[] = '# version: 20240502T184200+0900';
$out[] = '# also at https://github.com/revi/sandbox.git'; $out[] = '# also at https://github.com/revi/sandbox.git';
$out[] = 'User-Agent: *'; $out[] = 'User-Agent: *';
$out[] = 'Disallow: /diffusion/'; $out[] = 'Disallow: /diffusion/';
$out[] = 'Disallow: /source/'; $out[] = 'Disallow: /source/';
$out[] = 'Disallow: /multimeter/'; $out[] = 'Disallow: /multimeter/';
$out[] = 'Disallow: /policy/explain'; $out[] = 'Disallow: /policy/explain';
$out[] = 'Disallow: /auth'; $out[] = 'Disallow: /auth';
$out[] = 'Disallow: /login'; $out[] = 'Disallow: /login';
$out[] = 'Disallow: /maniphest/transaction'; $out[] = 'Disallow: /maniphest/transaction';
$out[] = 'Disallow: /tag'; $out[] = 'Disallow: /tag';
$out[] = 'Disallow: /search/query/all'; $out[] = 'Disallow: /search/query/all';
$out[] = 'Disallow: /conduit'; $out[] = 'Disallow: /conduit';
$out[] = 'Disallow: /api'; $out[] = 'Disallow: /api';
$out[] = 'Disallow: /project'; $out[] = 'Disallow: /project';
$out[] = 'Disallow: /applications'; $out[] = 'Disallow: /applications';
$out[] = 'Disallow: /token'; $out[] = 'Disallow: /token';
$out[] = 'Disallow: /pholio'; $out[] = 'Disallow: /pholio';
$out[] = 'Disallow: /dashboard'; $out[] = 'Disallow: /dashboard';
$out[] = 'Disallow: /calendar'; $out[] = 'Disallow: /calendar';
$out[] = 'Disallow: /herald'; $out[] = 'Disallow: /herald';
// This is commits. // This is commits.
$out[] = 'Disallow: /r*'; $out[] = 'Disallow: /r*';
// This is Files. (F$) // This is differential reviews
$out[] = 'Disallow: /file'; $out[] = 'Disallow: /differential';
$out[] = 'Disallow: /F*%24*'; $out[] = 'Disallow: /D*%24*';
// This is pastes (P$) // This is Files. (F$)
$out[] = 'Disallow: /paste'; $out[] = 'Disallow: /file';
$out[] = 'Disallow: /P*%24*'; $out[] = 'Disallow: /F*%24*';
// This is blog entries (J$) // This is pastes (P$)
$out[] = 'Disallow: /phame'; $out[] = 'Disallow: /paste';
$out[] = 'Disallow: /J*%24*'; $out[] = 'Disallow: /P*%24*';
// This is user list. // This is blog entries (J$)
// As of 2024-04-17 user list is behind auth but who knows it might change? $out[] = 'Disallow: /phame';
$out[] = 'Disallow: /people'; $out[] = 'Disallow: /J*%24*';
// This is user profile link. // This is user list.
$out[] = 'Disallow: /p/'; // As of 2024-04-17 user list is behind auth but who knows it might change?
// Phorge specific entries end here. $out[] = 'Disallow: /people';
$out[] = '# This is cloudflare endpoint'; // This is user profile link.
$out[] = '# Ref: https://developers.cloudflare.com/fundamentals/reference/cdn-cgi-endpoint/'; $out[] = 'Disallow: /p/';
$out[] = 'Disallow: /cdn-cgi/'; // Phorge specific entries end here.
$out[] = '# Google Ads are not welcome'; $out[] = '# This is cloudflare endpoint';
$out[] = 'User-agent: Mediapartners-Google'; $out[] = '# Ref: https://developers.cloudflare.com/fundamentals/reference/cdn-cgi-endpoint/';
$out[] = 'Disallow: /'; $out[] = 'Disallow: /cdn-cgi/';
$out[] = 'User-agent: AdsBot-Google'; $out[] = '# Google Ads are not welcome';
$out[] = 'Disallow: /'; $out[] = 'User-agent: Mediapartners-Google';
$out[] = 'User-agent: AdsBot-Google-Mobile'; $out[] = 'Disallow: /';
$out[] = 'Disallow: /'; $out[] = 'User-agent: AdsBot-Google';
// While I sometimes (borderline 'rare') use LLMs (GPT, Gemini, …), I'd rather prefer LLMs not use my stuff to profit $out[] = 'Disallow: /';
// Well I think my stuff is mostly out of interest for them, tho… $out[] = 'User-agent: AdsBot-Google-Mobile';
$out[] = '# ChatGPT Crawlers are not welcome'; $out[] = 'Disallow: /';
$out[] = '# Ref: https://platform.openai.com/docs/plugins/bot'; // While I sometimes (borderline 'rare') use LLMs (GPT, Gemini, …), I'd rather prefer LLMs not use my stuff to profit
$out[] = 'User-agent: ChatGPT-User'; // Well I think my stuff is mostly out of interest for them, tho…
$out[] = 'Disallow: /'; $out[] = '# ChatGPT Crawlers are not welcome';
$out[] = 'User-agent: GPTBot'; $out[] = '# Ref: https://platform.openai.com/docs/plugins/bot';
$out[] = 'Disallow: /'; $out[] = 'User-agent: ChatGPT-User';
$out[] = '# Google Gemini AI Crawlers are also not welcome'; $out[] = 'Disallow: /';
$out[] = '# Ref: https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers?hl=en#google-extended'; $out[] = 'User-agent: GPTBot';
$out[] = 'User-agent: Google-Extended'; $out[] = 'Disallow: /';
$out[] = 'Disallow: /'; $out[] = '# Google Gemini AI Crawlers are also not welcome';
$out[] = '# CCBot (ab)used to train LLMs'; $out[] = '# Ref: https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers?hl=en#google-extended';
$out[] = '# Ref: https://darkvisitors.com/agents/ccbot'; $out[] = 'User-agent: Google-Extended';
$out[] = 'User-agent: CCBot'; $out[] = 'Disallow: /';
$out[] = 'Disallow: /'; $out[] = '# CCBot (ab)used to train LLMs';
$out[] = '# Facebook LLM Bot'; $out[] = '# Ref: https://darkvisitors.com/agents/ccbot';
$out[] = '# Ref: https://developers.facebook.com/docs/sharing/bot/'; $out[] = 'User-agent: CCBot';
$out[] = 'User-agent: FacebookBot'; $out[] = 'Disallow: /';
$out[] = 'Disallow: /'; $out[] = '# Facebook LLM Bot';
$out[] = '# DiffBot, though this one is known to have option to ignore robotstxt'; $out[] = '# Ref: https://developers.facebook.com/docs/sharing/bot/';
$out[] = '# Ref https://docs.diffbot.com/docs/why-is-my-crawl-not-crawling-and-other-uncommon-crawl-problems'; $out[] = 'User-agent: FacebookBot';
$out[] = 'User-agent: Diffbot'; $out[] = 'Disallow: /';
$out[] = 'Disallow: /'; $out[] = '# DiffBot, though this one is known to have option to ignore robotstxt';
$out[] = '# Bytespider'; $out[] = '# Ref https://docs.diffbot.com/docs/why-is-my-crawl-not-crawling-and-other-uncommon-crawl-problems';
$out[] = '# Ref: https://darkvisitors.com/agents/bytespider'; $out[] = 'User-agent: Diffbot';
$out[] = 'User-agent: Bytespider'; $out[] = 'Disallow: /';
$out[] = 'Disallow: /'; $out[] = '# Bytespider';
// Crawl-delay entries at the bottom $out[] = '# Ref: https://darkvisitors.com/agents/bytespider';
// Ref: https://github.com/otwcode/otwarchive/pull/4411#discussion_r1044351129 $out[] = 'User-agent: Bytespider';
$out[] = 'User-agent: *'; $out[] = 'Disallow: /';
$out[] = 'Crawl-delay: 1'; // Crawl-delay entries at the bottom
// Ref: https://github.com/otwcode/otwarchive/pull/4411#discussion_r1044351129
$out[] = 'User-agent: *';
$out[] = 'Crawl-delay: 1';
$content = implode("\n", $out)."\n"; $content = implode("\n", $out)."\n";
return id(new AphrontPlainTextResponse()) return id(new AphrontPlainTextResponse())
->setContent($content) ->setContent($content)
->setCacheDurationInSeconds(phutil_units('2 hours in seconds')) ->setCacheDurationInSeconds(phutil_units('2 hours in seconds'))
->setCanCDN(true) ->setCanCDN(true)
->setLastModified(1714415220); ->setLastModified(1714642920);
} }
} }

View file

@ -1,3 +1,3 @@
# sandbox # sandbox
For things slightly more important than gist of pastebin, but not really worth their own repo lands here. For things slightly more important than gist of pastebin, but not really worth their own repo lands here.

View file

@ -1,9 +1,13 @@
<html> <html lang="en" prefix="og: https://ogp.me/ns#">
<head> <head>
<title> <title>
Hey revi, what time is it for you? Hey revi, what time is it for you?
</title> </title>
<link rel="icon" href="https://r2.revicdn.net/pfp2.png"> <link rel="icon" href="https://r2.revicdn.net/pfp2.png">
<meta property="og:title" content="Hey revi, what time is it for you?" />
<meta property="og:description" content="A simple page that shows current date and time for revi." />
<meta property="og:image" content="https://r2.revicdn.net/pfp2.png" />
<meta property="og:url" content="https://k.revi.xyz/time.php" />
<style> <style>
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono&family=IBM+Plex+Sans+KR:wght@300;400&family=Noto+Sans+KR&display=swap'); @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono&family=IBM+Plex+Sans+KR:wght@300;400&family=Noto+Sans+KR&display=swap');
@ -13,6 +17,8 @@
line-height: 1.6; line-height: 1.6;
font-size: 16px; font-size: 16px;
padding: 0 10px; padding: 0 10px;
overflow-wrap: break-all;
word-break: keep-all;
font-family: font-family:
'IBM Plex Sans KR', 'IBM Plex Sans KR',
'Noto Sans KR', 'Noto Sans KR',
@ -26,10 +32,10 @@
'Segoe UI Emoji'; 'Segoe UI Emoji';
} }
.code { .code {
font-family: font-family:
'IBM Plex Mono', 'IBM Plex Mono',
'Courier New', 'Courier New',
monospace; monospace;
} }
</style> </style>
</head> </head>
@ -56,8 +62,7 @@
echo "<p>It is {$date} {$time} in <code>Asia/Seoul</code>, where <a rel='me' href='https://revi.xyz'>revi</a> lives.<br />Check in your timezone: <a href='{$zonestampLink}'>ZoneStamp</a>.</p>"; echo "<p>It is {$date} {$time} in <code>Asia/Seoul</code>, where <a rel='me' href='https://revi.xyz'>revi</a> lives.<br />Check in your timezone: <a href='{$zonestampLink}'>ZoneStamp</a>.</p>";
?> ?>
<br />
<hr> <hr>
<p><a href='https://github.com/revi/sandbox/blob/master/time.php'>Source code @ GitHub</a>. (Warning: it is far from 'clean'.) Also, please note that there is <a href='https://xkcd.com/1179/'>only one correct way to write dates</a>.</p> <p><a href='https://github.com/revi/sandbox/blob/master/time.php'>Source code @ GitHub</a>. (Warning: it is far from 'clean'.) Also, please note that there is <a href='https://xkcd.com/1179/'>only one correct way to write dates</a>.</p>
</body> </body>
</html> </html>