├── info ├── About │ ├── _tos.md │ ├── _privacy.md │ ├── _terms.md │ ├── _privacy-policy.md │ ├── _terms-of-service.md │ ├── abuse.md │ ├── services.md │ ├── code-of-conduct.md │ ├── about.md │ └── service-domains.md ├── Community │ ├── _slack.md │ ├── mastodon.md │ ├── community-tools.md │ ├── social.lol.md │ ├── irc-clients.md │ └── irc.md ├── Email │ ├── _fastmail-setup.md │ ├── email-forwarding.md │ ├── postmasters.md │ ├── email.md │ ├── sending-email.md │ ├── fastmail.md │ └── mailhooks.md ├── Feedback & Help │ ├── _help.md │ ├── _security.md │ ├── _security.txt │ ├── _vulnerabilities.md │ ├── feedback.md │ ├── bugs.md │ ├── faq.md │ ├── thanks.md │ └── contact.md ├── Profile & Web │ ├── _web-basics.md │ ├── profile-themes.md │ ├── tildeverse.md │ ├── profile-verification.md │ ├── classic-editor.md │ ├── profiles.md │ ├── web.md │ ├── advanced-editor.md │ └── profile-items.md ├── Address Services │ ├── _purl-guide.md │ ├── api.md │ ├── weblog.md │ ├── keys.md │ ├── url.lol.md │ ├── pastebin.md │ ├── statuslog.md │ ├── purls.md │ ├── dns.md │ ├── proofs.md │ └── switchboard.md ├── Account │ ├── _2fa.md │ ├── passwords.md │ ├── account-settings.md │ ├── passkeys.md │ ├── two-factor-authentication.md │ └── dashboard.md ├── README.md ├── Addresses │ ├── address-requirements.md │ ├── lifetime-addresses.md │ ├── keybase.md │ ├── addresses.md │ ├── disambiguation.md │ └── emoji-addresses.md └── Billing │ ├── gift-codes.md │ ├── pricing.md │ ├── billing.md │ ├── renewals.md │ └── payments.md ├── profiles ├── themes │ ├── naked.css │ ├── latte │ │ ├── latte.json │ │ └── latte.css │ ├── the-good-earth │ │ ├── theme.json │ │ └── theme.css │ ├── README.md │ ├── dark.css │ ├── hotdog-stand.css │ ├── toasted-minimal.css │ ├── toastminimal.css │ ├── cherry-blossom.css │ ├── nothing-but-red.css │ ├── deep-red.css │ ├── catpuccin-macchiato.css │ ├── gilded.css │ ├── PurpleGray.css │ ├── hacker.css │ ├── sun-kissed.css │ ├── nord-dark.css │ ├── monokai.css │ ├── minimal.css │ ├── gradient.css │ ├── dracula.css │ ├── omglol-special.css │ ├── emerald-isle.css │ ├── base.css │ └── themes.json └── icons │ ├── defined_overrides.txt │ ├── omg.lol-icons.woff2 │ ├── omg.lol-icons.css │ ├── defined_omgicons.txt │ ├── README.md │ ├── omg.lol-glyphs.css │ ├── defined_domains.txt │ ├── domains.json │ ├── prepare.php │ └── omg.lol-icons.html ├── .github ├── CODEOWNERS ├── FUNDING.yml ├── labeler.yml ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── bugs.yml │ └── icons.yml └── workflows │ ├── label_pr.yml │ └── icons.yml ├── api ├── README.md └── docs │ ├── Directory.postman_collection.json │ ├── Service.postman_collection.json │ ├── Preferences.postman_collection.json │ ├── OAuth.postman_collection.json │ └── Web.postman_collection.json ├── SECURITY.md ├── README.md ├── LICENSE.md ├── CODE_OF_CONDUCT.md └── tests └── routing-regression-testing.md /info/About/_tos.md: -------------------------------------------------------------------------------- 1 | legal -------------------------------------------------------------------------------- /info/About/_privacy.md: -------------------------------------------------------------------------------- 1 | legal -------------------------------------------------------------------------------- /info/About/_terms.md: -------------------------------------------------------------------------------- 1 | legal -------------------------------------------------------------------------------- /info/Community/_slack.md: -------------------------------------------------------------------------------- 1 | irc -------------------------------------------------------------------------------- /profiles/themes/naked.css: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /info/About/_privacy-policy.md: -------------------------------------------------------------------------------- 1 | legal -------------------------------------------------------------------------------- /info/About/_terms-of-service.md: -------------------------------------------------------------------------------- 1 | legal -------------------------------------------------------------------------------- /info/Email/_fastmail-setup.md: -------------------------------------------------------------------------------- 1 | fastmail -------------------------------------------------------------------------------- /info/Feedback & Help/_help.md: -------------------------------------------------------------------------------- 1 | contact -------------------------------------------------------------------------------- /info/Feedback & Help/_security.md: -------------------------------------------------------------------------------- 1 | bugs -------------------------------------------------------------------------------- /info/Feedback & Help/_security.txt: -------------------------------------------------------------------------------- 1 | bugs -------------------------------------------------------------------------------- /info/Profile & Web/_web-basics.md: -------------------------------------------------------------------------------- 1 | web -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @newbold 2 | -------------------------------------------------------------------------------- /info/Address Services/_purl-guide.md: -------------------------------------------------------------------------------- 1 | purls -------------------------------------------------------------------------------- /info/Account/_2fa.md: -------------------------------------------------------------------------------- 1 | two-factor-authentication -------------------------------------------------------------------------------- /info/Feedback & Help/_vulnerabilities.md: -------------------------------------------------------------------------------- 1 | bugs -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | custom: https://home.omg.lol/sign-up 2 | -------------------------------------------------------------------------------- /profiles/icons/defined_overrides.txt: -------------------------------------------------------------------------------- 1 | podcast fa-solid fa-microphone -------------------------------------------------------------------------------- /profiles/icons/omg.lol-icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fm/omg.lol/main/profiles/icons/omg.lol-icons.woff2 -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | documentation: 2 | - any: ['info/**/*.md', '!info/README.md'] 3 | web/profiles: 4 | - any: ['profiles/themes/*.css', 'profiles/icons/*'] 5 | -------------------------------------------------------------------------------- /info/README.md: -------------------------------------------------------------------------------- 1 | # omg.lol/info 2 | 3 | You can find all kinds of information about omg.lol in our [Info Center](https://home.omg.lol/info). 4 | 5 | This is the omg.lol Info Center’s source, consisting of all omg.lol help articles in Markdown format. 6 | -------------------------------------------------------------------------------- /api/README.md: -------------------------------------------------------------------------------- 1 | # The omg.lol API 2 | 3 | The `/docs` folder contains the omg.lol API endpoint documentation in Postman Collection 2.1 format. For friendlier, human-readable documentation please visit https://api.omg.lol. 4 | 5 | The `/examples` folder will have some examples, eventually. -------------------------------------------------------------------------------- /profiles/themes/latte/latte.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Latte", 3 | "author": "[Catnatsuki](https://profile.omg.lol/catnatsuki)", 4 | "canonical": "https:\/\/", 5 | "license": "MIT", 6 | "description": "Inspired by the latte I was drinking when I made it.", 7 | "version": "1.0" 8 | } -------------------------------------------------------------------------------- /profiles/themes/the-good-earth/theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "The Good Earth", 3 | "author": "[omg.lol](https:\/\/omg.lol)", 4 | "canonical": "https:\/\/", 5 | "license": "MIT", 6 | "description": "Muted earth tones bring out the natural beauty of your profile page.", 7 | "version": "1.0" 8 | } -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: true 2 | contact_links: 3 | - name: Major Bug Report 4 | url: https://home.omg.lol/info/bugs 5 | about: Report critical/major bugs or vulnerabilities 6 | - name: Feedback and suggestions 7 | url: https://github.com/neatnik/omg.lol/discussions/categories/ideas 8 | about: Share ideas for omg.lol or feedback on the service -------------------------------------------------------------------------------- /.github/workflows/label_pr.yml: -------------------------------------------------------------------------------- 1 | name: Label PRs 2 | 3 | on: 4 | pull_request_target: 5 | types: [opened, reopened] 6 | 7 | jobs: 8 | triage: 9 | permissions: 10 | contents: read 11 | pull-requests: write 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/labeler@v4 15 | with: 16 | repo-token: "${{ secrets.GITHUB_TOKEN }}" 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bugs.yml: -------------------------------------------------------------------------------- 1 | name: Bugs (non-major) 2 | description: Report any problems or pesky bugs 3 | title: "[Bug] " 4 | labels: [bug] 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: Bug Description 9 | validations: 10 | required: true 11 | - type: textarea 12 | attributes: 13 | label: Steps to Reproduce 14 | validations: 15 | required: false 16 | -------------------------------------------------------------------------------- /profiles/themes/README.md: -------------------------------------------------------------------------------- 1 | # OMG.LOL Themes 2 | 3 | This is a repository of themes for OMG.LOL profile pages. They’re just CSS files! Simple stuff. 4 | 5 | ## Contributing 6 | 7 | If you’d like to submit your own theme for inclusion in the theme list, you can submit it here with a pull request. 8 | 9 | More information about themes can be found in [this article](https://meta.omg.lol/help/profile-themes). -------------------------------------------------------------------------------- /info/Account/passwords.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about passwords, whoo hoo 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Passwords 7 | 8 | You don’t have to have a password to sign into omg.lol. Without a password, you can simply sign in via email. When you sign in we’ll email a unique link that will authenticate your session. 9 | 10 | You can set, remove, or change your password any time on your [account](/account/) page. 11 | -------------------------------------------------------------------------------- /info/Address Services/api.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Everything you could possibly want to know about our awesome API 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # API 7 | 8 | We’re developing an awesome API for omg.lol, with the goal of enabling programatic access to every single aspect of the service. We’re not there yet, but we’re working on it! 9 | 10 | For more information about the API, visit [api.omg.lol](https://api.omg.lol). 11 | -------------------------------------------------------------------------------- /info/Address Services/weblog.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: We’re building a weblog, hip-hip-hooray 3 | Last Updated: 2022-11-13 7:19 PM EST 4 | --- 5 | 6 | # Weblog 7 | 8 |
9 | This feature isn’t ready yet. 10 |
11 | 12 | We’re building a new weblog service. It’ll be simple and fun. 13 | 14 | Look for an early alpha of the service in December, and a mostly-safe-to-use beta by January 2023. -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | omg.lol takes security seriously, and we appreciate working with security researchers who are willing to exercise discretion in revealing issues such that member security isn’t compromised. 4 | 5 | ## Reporting a Vulnerability 6 | 7 | Please report security vulnerabilities, exploits, or other serious issues with omg.lol to bugs@omg.lol. 8 | 9 | ## More information 10 | 11 | Please review our article on [responsible bug reporting](https://home.omg.lol/info/bugs). -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # omg.lol 2 | 3 | Welcome to the omg.lol repo! Here you’ll find stuff including: the [Info Center](https://github.com/neatnik/omg.lol/tree/main/info), [themes](https://github.com/neatnik/omg.lol/tree/main/profiles/themes) and [icons](https://github.com/neatnik/omg.lol/tree/main/profiles/icons), as well as our [API schema](https://github.com/neatnik/omg.lol/tree/main/api) (and, soon API examples). 4 | 5 | You can learn more about omg.lol at https://home.omg.lol. Thanks for visiting! 6 | 7 | ![omg.lol](https://static.omg.lol/img/social_card_2022-06-23.png) 8 | -------------------------------------------------------------------------------- /info/Addresses/address-requirements.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Information about omg.lol addresses 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Address requirements 7 | 8 | You can register any address that would be a valid second-level domain name. In plain English, this means it can contain: 9 | 10 | * ASCII letters (a-z, A-Z) 11 | * Digits (0-9) 12 | * Dashes (-), but the address can’t start or end with a hyphen 13 | 14 | You can also register [emoji addresses](/info/emoji-addresses), though those are a little more technically complicated. 15 | -------------------------------------------------------------------------------- /info/Billing/gift-codes.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: omg.lol gift codes make great gifts! 3 | Last Updated: 2022-10-31 10:42 PM EDT 4 | See Also: billing 5 | --- 6 | 7 | ## Gift Codes 8 | 9 | If you’d like to give an omg.lol address to someone as a gift, you can buy a gift code. Gift codes can be purchased for time periods of 1 to 10 years, at the same cost as an address registration. 10 | 11 | Gift codes don’t expire, so after being purchased they can be redeemed at any point in the future. 12 | 13 | Want to buy one? Head on over here! -------------------------------------------------------------------------------- /info/Email/email-forwarding.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Email forwarding is fast and easy 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Email Forwarding 7 | 8 | Email forwarding at omg.lol is super simple. Pull up your address, click the Manage Email button, and drop an address into the forwarding field. Within a minute or so, email sent to your omg.lol address will be forwarded to your destination address. 9 | 10 | ## Multiple Addresses 11 | 12 | You can forward email to multiple destination addresses. To do this, just separate each address with a comma. 13 | -------------------------------------------------------------------------------- /info/Addresses/lifetime-addresses.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: About omg.lol Lifetime Addresses 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Lifetime Addresses 7 | 8 | We will occasionally (rarely!) offer a lifetime address purchase option. We’ll always announce on [Mastodon](https://social.lol/@omgdotlol) when lifetime addresses are available to purchase. We’ll also update this article, and we’ll usually post a message on our [home page](https://omg.lol) as well. 9 | 10 | At this time we’re not currently offering lifetime addresses, but we appreciate your interest. 11 | -------------------------------------------------------------------------------- /info/Community/mastodon.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Read all about our Mastodon instance 3 | Last Updated: 2022-11-05 02:24 AM EDT 4 | --- 5 | 6 | # Mastodon 7 | 8 | We run a Mastodon instance on [social.lol](https://social.lol), and all omg.lol members are welcome to join. You can create a new account on your address's social.lol page page. 9 | 10 | Mastodon is kind of like Twitter, only much nicer. For a much better description, [read all about Mastodon here](https://joinmastodon.org). 11 | 12 | You can follow us on Mastodon at [@omgdotlol@social.lol](https://social.lol/@omgdotlol). -------------------------------------------------------------------------------- /info/Profile & Web/profile-themes.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about the swanky custom profile themes on omg.lol 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Profile Themes 7 | 8 | Profile themes are pre-made chunks of CSS that can quickly and easily change the look of your profile. You can view a list of available themes on your profile settings page and see a small preview of each before making a selection. 9 | 10 | Want to contribute your own theme? Check out the [README](https://github.com/neatnik/omg.lol/blob/main/profiles/themes/README.md) in our theme repo. 11 | -------------------------------------------------------------------------------- /info/Profile & Web/tildeverse.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: omg.lol is in the tideverse! 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # The Tildeverse 7 | 8 | While we’re not quite full-blown members of the *official* [Tildeverse](https://tildeverse.org), omg.lol is pleased to offer a sort of Tilde Lite™ experience for our members. Everyone has a special “tilde” version of their profile page (such as `omg.lol/~foo`) which provides a tilde-like viewing experience. You can change the behavior of this page by changing its route on your [Switchboard](/help/switchboard) if you’d like. 9 | -------------------------------------------------------------------------------- /info/Feedback & Help/feedback.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: We thrive on your feedback 3 | Last Updated: 2022-10-15 12:26 AM EDT 4 | --- 5 | 6 | # Feedback 7 | 8 | We love your feedback. All ideas—big or small—help make omg.lol better for everyone. 9 | 10 | The best way to provide feedback is on our [GitHub Discussions](https://github.com/neatnik/omg.lol/discussions) page. If you have a minor bug or issue to report, you can submit an [issue](https://github.com/neatnik/omg.lol/issues) on GitHub as well. 11 | 12 | We’re also happy to take your feedback on [IRC](/info/irc), or by [email](info/email). 13 | 14 | Thanks for taking the time to share your feedback! -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/icons.yml: -------------------------------------------------------------------------------- 1 | name: Icon suggestion 2 | description: Suggest new icons for profiles 3 | title: "[Icon] " 4 | labels: [icon] 5 | body: 6 | - type: textarea 7 | attributes: 8 | label: What service is this for? 9 | validations: 10 | required: true 11 | placeholder: OMG.LOL 12 | - type: textarea 13 | attributes: 14 | label: What are their domain names? 15 | placeholder: omg.lol 16 | validations: 17 | required: true 18 | - type: textarea 19 | attributes: 20 | label: Do you have a link to a SVG of their logo? 21 | description: If you do, please put the link in the box below. 22 | placeholder: https://omg.cache.lol/img/prami.svg 23 | validations: 24 | required: false 25 | -------------------------------------------------------------------------------- /info/Profile & Web/profile-verification.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Verified profiles are the best profiles 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Profile Verification 7 | 8 | If you see the official checkmark badge on a profile, it means that you’re viewing a verified profile. You can trust that the person is who they say they are! At least by our reasonable omg.lol standards, that is (lol). 9 | 10 | If you’d like to be verified, just [contact us](/info/contact/) to kick off the process. We also sometimes automatically verify people who we know to be real, so if that happened to you, congrats! 11 | 12 | [Read more about profiles on omg.lol](/info/profiles). 13 | -------------------------------------------------------------------------------- /profiles/themes/dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Theme: Dark 4 | Author: Adam Newbold (@neatnikllc) 5 | License: Public domain 6 | Version: 1.0 7 | Description: Very, very dark. 8 | 9 | */ 10 | 11 | body { 12 | background: #000; 13 | color: #ccc; 14 | } 15 | 16 | main { 17 | background: #222; 18 | } 19 | 20 | a:link, 21 | a:visited { 22 | color: #ccc; 23 | text-decoration-color: #ccc; 24 | text-decoration: none; 25 | border-bottom: 1px dotted #ccc; 26 | } 27 | a:hover, 28 | a:active { 29 | color: #fff; 30 | text-decoration-color: #fff; 31 | text-decoration: none; 32 | border-bottom: 2px solid #fff; 33 | } 34 | 35 | .fa-badge-check, .omg-verified { 36 | color: #945B85 !important; 37 | } 38 | 39 | .omg-icon { 40 | color: #ccc; 41 | fill: #ccc; 42 | stroke: #ccc; 43 | } 44 | -------------------------------------------------------------------------------- /profiles/themes/hotdog-stand.css: -------------------------------------------------------------------------------- 1 | /* 2 | my eyes 3 | 4 | Theme: Hot Dog Stand 5 | Author: Bye 6 | License: Public domain 7 | Version: 1.0 8 | Description: my eyes (included as a joke in Windows 3.1) 9 | */ 10 | 11 | body { 12 | background: #f00; 13 | color: black; 14 | } 15 | 16 | main { 17 | background: #ff0; 18 | } 19 | 20 | a:link, 21 | a:visited { 22 | color: black; 23 | text-decoration-color: rgb(20, 20, 20); 24 | text-decoration: none; 25 | border-bottom: 1px dotted rgb(20, 20, 20); 26 | } 27 | a:hover, 28 | a:active { 29 | color: rgb(20, 20, 20); 30 | text-decoration-color: rgb(20, 20, 20); 31 | text-decoration: none; 32 | border-bottom: 2px solid rgb(20, 20, 20) 33 | } 34 | 35 | .fa-li, .fas, .omg-icon { 36 | color: #f00; 37 | fill: #f00; 38 | stroke: #f00; 39 | } 40 | -------------------------------------------------------------------------------- /info/Addresses/keybase.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: You can prove your omg.lol address identity on Keybase, if you want 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Keybase Proofs 7 | 8 | You can confirm your omg.lol address on [Keybase](https://keybase.io) through their proof system. It’s a pretty cool thing to do. 9 | 10 | To get started, visit your Keybase profile page. Click **prove more identities**, and type "omg.lol" in the search field. Then click on it. 11 | 12 | When prompted for your omg.lol username, enter your omg.lol address on its own. (Don’t enter your email address—just the address name by itself.) 13 | 14 | Click the link provided to continue. If you’re not logged into omg.lol, go ahead and log in to complete the process. Your identity will be proven in no time flat! 15 | -------------------------------------------------------------------------------- /info/Profile & Web/classic-editor.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Our classic profile editor is here to make you happy 3 | Last Updated: 2022-10-15 1:03 PM EDT 4 | --- 5 | 6 | # Classic Web Editor 7 | 8 | Our Classic web editor is designed to make it easy to manage your profile page. Just fill in the predefined fields with as much (or as little) information as you’d like, add some [Profile Items](/info/profile-items), and you’re good to go. 9 | 10 | When editing, be sure to click the **Publish** option to make your changes live. The preview on the editor is helpful for seeing how things are looking as you’re editing, but those changes won’t be visible to your visitors until you publish. 11 | 12 | If you’re looking for a bit more control over your profile page, give our [Advanced editor](/info/advanced-editor) a spin! You’ll love it. -------------------------------------------------------------------------------- /profiles/themes/toasted-minimal.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme: Toasted Minimal 3 | Author: Laker J.V Turner (https://laker.tech) 4 | License: Public domain 5 | Version: 1.0 6 | Description: It's essentially Cosmic Latte, as an OMG.LOL theme! 7 | */ 8 | 9 | body { 10 | background: #FFF8E7; 11 | color: #000; 12 | } 13 | 14 | main { 15 | background: #FFF8E7; 16 | } 17 | 18 | a:link, 19 | a:visited { 20 | color: #000; 21 | text-decoration-color: #000; 22 | text-decoration: none; 23 | border-bottom: 1px dotted #000; 24 | } 25 | a:hover, 26 | a:active { 27 | color: #000; 28 | text-decoration-color: #000; 29 | text-decoration: none; 30 | border-bottom: 2px solid #000; 31 | } 32 | 33 | #profile-picture { 34 | border-radius: 100%; 35 | } 36 | 37 | .fa-li, .fas, .omg-icon { 38 | color: #000; 39 | fill: #000; 40 | stroke: #000; 41 | } 42 | -------------------------------------------------------------------------------- /profiles/themes/toastminimal.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme: Toasted Minimal 3 | Author: Laker J.V Turner (https://laker.tech) 4 | License: Public domain 5 | Version: 1.0 6 | Description: It's essentially Cosmic Latte, as an OMG.LOL theme! 7 | */ 8 | 9 | body { 10 | background: #FFF8E7; 11 | color: #000; 12 | } 13 | 14 | main { 15 | background: #FFF8E7; 16 | } 17 | 18 | a:link, 19 | a:visited { 20 | color: #000; 21 | text-decoration-color: #000; 22 | text-decoration: none; 23 | border-bottom: 1px dotted #000; 24 | } 25 | a:hover, 26 | a:active { 27 | color: #000; 28 | text-decoration-color: #000; 29 | text-decoration: none; 30 | border-bottom: 2px solid #000; 31 | } 32 | 33 | #profile-picture { 34 | border-radius: 100%; 35 | } 36 | 37 | .fa-li, .fas, .omg-icon { 38 | color: #000; 39 | fill: #000; 40 | stroke: #000; 41 | } 42 | -------------------------------------------------------------------------------- /profiles/themes/cherry-blossom.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Theme: Cherry Blossom 4 | Author: Adam Newbold (@neatnikllc) 5 | License: Public domain 6 | Version: 1.0 7 | Description: Springtime, but all year long. 8 | 9 | */ 10 | 11 | body { 12 | background: #ffb7c5; 13 | color: #333; 14 | } 15 | 16 | main { 17 | background: #fdced8; 18 | } 19 | 20 | a:link, 21 | a:visited { 22 | color: #333; 23 | text-decoration-color: #333; 24 | text-decoration: none; 25 | border-bottom: 1px dotted #333; 26 | } 27 | a:hover, 28 | a:active { 29 | color: #555; 30 | text-decoration-color: #555; 31 | text-decoration: none; 32 | border-bottom: 2px solid #555; 33 | } 34 | 35 | #profile-picture { 36 | border-radius: 100%; 37 | } 38 | 39 | .fa-li, .fas, .omg-icon, .omg-icon path { 40 | color: #b53c54; 41 | fill: #b53c54; 42 | stroke: #b53c54; 43 | } 44 | -------------------------------------------------------------------------------- /info/Addresses/addresses.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about omg.lol addresses 3 | Last Updated: 2022-10-15 12:08 PM EDT 4 | See Also: address-requirements, emoji-addresses 5 | --- 6 | 7 | # About Addresses 8 | 9 | Addresses are what omg.lol is all about. Your address is your identity, your chunk of real estate in the omg.lol namespace. You’ll see them sometimes referred to with the prefix, like foobar, but they can also be represented as subdomains (foobar.omg.lol) and email addresses (foobar@omg.lol). 10 | 11 | Addresses appear on your [Dashboard](/help/dashboard), but you can selectively hide them from there if you wish. Your dashboard also includes a link to your [Addresses](/addresses) page, which lists all of your addresses in one place and provides important information about each of them. 12 | -------------------------------------------------------------------------------- /profiles/themes/nothing-but-red.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme: Nothing but Red 3 | Author: Laker Turner (https://laker.gay) 4 | License: Public domain 5 | Version: 1.0 6 | Description: What happens when you put the cherry blossom theme through a dark mode extension. 7 | */ 8 | 9 | body { 10 | background: #4e0313; 11 | color: #333; 12 | } 13 | 14 | main { 15 | background: #5e0012; 16 | } 17 | 18 | a:link, 19 | a:visited { 20 | color: #333; 21 | text-decoration-color: #333; 22 | text-decoration: none; 23 | border-bottom: 1px dotted #333; 24 | } 25 | a:hover, 26 | a:active { 27 | color: #555; 28 | text-decoration-color: #555; 29 | text-decoration: none; 30 | border-bottom: 2px solid #555; 31 | } 32 | 33 | #profile-picture { 34 | border-radius: 100%; 35 | } 36 | 37 | .fa-li, .fas, .omg-icon { 38 | color: #b53c54; 39 | fill: #b53c54; 40 | stroke: #b53c54; 41 | } 42 | -------------------------------------------------------------------------------- /profiles/themes/the-good-earth/theme.css: -------------------------------------------------------------------------------- 1 | /* The Good Earth */ 2 | 3 | body { 4 | background: #A88C7D; 5 | color: #54738E; 6 | } 7 | 8 | main { 9 | background: #D6CDB8; 10 | } 11 | 12 | a:link, a:visited, a:hover, a:active { 13 | color: #54738E; 14 | text-decoration: #54738E; 15 | } 16 | 17 | .fas, .fa-solid, .fa-brands, .omg-icon { 18 | color: #82AC7C; 19 | } 20 | 21 | .logotype { 22 | color: #A88C7D; 23 | } 24 | 25 | .logotype.dot { 26 | color: #7c6457 !important; 27 | } 28 | 29 | .prami-body { fill: #9DBA94 !important; } 30 | .prami-left-eye, .prami-right-eye { fill: #54738E !important; } 31 | .prami-left-eye-pupil, .prami-right-eye-pupil { stroke: #54738E !important; } 32 | .prami-left-cheek, .prami-right-cheek { fill: #7297A0 !important; } 33 | .prami-mouth { stroke: #54738E !important; } 34 | 35 | #profile-picture { 36 | border-radius: 100%; 37 | } -------------------------------------------------------------------------------- /profiles/themes/deep-red.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme: Deep Red 3 | Author: Laker Turner (https://laker.tech) 4 | License: Public domain 5 | Version: 1.0 6 | Description: What happens when you put the Cherry Blossom theme through a dark mode extension! 7 | */ 8 | 9 | body { 10 | background: #4e0313; 11 | color: #fff8e7; 12 | } 13 | 14 | main { 15 | background: #5e0012; 16 | } 17 | 18 | a:link, 19 | a:visited { 20 | color: #fff8e7; 21 | text-decoration-color: #fff8e7; 22 | text-decoration: none; 23 | border-bottom: 1px dotted #fff8e7; 24 | } 25 | a:hover, 26 | a:active { 27 | color: #fff8e7; 28 | text-decoration-color: #fff8e7; 29 | text-decoration: none; 30 | border-bottom: 2px solid #fff8e7; 31 | } 32 | 33 | #profile-picture { 34 | border-radius: 100%; 35 | } 36 | 37 | .fa-li, .fas, .omg-icon { 38 | color: #fff8e7; 39 | fill: #fff8e7; 40 | stroke: #fff8e7; 41 | } 42 | -------------------------------------------------------------------------------- /profiles/icons/omg.lol-icons.css: -------------------------------------------------------------------------------- 1 | /* omg.lol Icon Type */ 2 | 3 | @import url('omg.lol-glyphs.css'); 4 | 5 | @font-face { 6 | font-family: 'omg.lol Icons'; 7 | font-style: normal; 8 | font-weight: 900; 9 | font-display: block; 10 | src: url("omg.lol-icons.woff2") format("woff2"); 11 | } 12 | 13 | .omg-icon { 14 | font-family: "omg.lol Icons"; 15 | font-weight: 900; 16 | -moz-osx-font-smoothing: grayscale; 17 | -webkit-font-smoothing: antialiased; 18 | display: inline-block; 19 | font-style: normal; 20 | font-variant: normal; 21 | line-height: 1; 22 | text-rendering: auto; 23 | } 24 | 25 | .omg-li { 26 | left: calc(var(--omg-li-width, 2em) * -1); 27 | position: absolute; 28 | text-align: center; 29 | width: var(--omg-li-width, 2em); 30 | line-height: inherit; 31 | } 32 | 33 | :root, :host { 34 | --omg-font-regular: normal 900 1em/1 "omg.lol Icons"; 35 | } 36 | -------------------------------------------------------------------------------- /info/Addresses/disambiguation.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: When life throws options at you, you can throw choices back 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Disambiguation 7 | 8 | When visiting an omg.lol address, you might encounter a page that tells you that “This URL could point to multiple places.” Don’t panic! This just means that there’s something to see in multiple places, and you get to choose which one you’d like to see. This happens whenever multiple things share the same name. 9 | 10 | For example, `@foo` might have a [PURL](/info/purls) set up at `foo.url.lol/hello` that goes to a nice web page somewhere, but they might also have a pastebin entry at `foo.paste.lol/hello` that has some great information. If you visit `foo.omg.lol/hello`, we wouldn’t want to guess which one of those that you’d want to see, so we display a _disambiguation page_ so you can make the choice yourself. -------------------------------------------------------------------------------- /profiles/themes/catpuccin-macchiato.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme: Catpuccin Macchiato 3 | Author: mmatt (https://mm.omg.lol) 4 | Version: 0.1.0 5 | Description: An attempt at making a Catpuccin Macchiato theme. https://github.com/catppuccin/catppuccin 6 | */ 7 | 8 | 9 | body { 10 | background: #24273a; 11 | color: #cad3f5; 12 | } 13 | 14 | main { 15 | background: #1e2030; 16 | } 17 | 18 | a:link, 19 | a:visited { 20 | color: #b8c0e0; 21 | text-decoration: dashed; 22 | text-decoration-color: #b8c0e0; 23 | } 24 | a:hover, 25 | a:active { 26 | color: #cad3f5; 27 | text-decoration: #b8c0e0; 28 | 29 | } 30 | 31 | #profile-picture { 32 | border-radius: 10%; 33 | } 34 | #pronouns { 35 | color: #b8c0e0; 36 | } 37 | #pronouns a:link, 38 | #pronouns a:visited, 39 | #pronouns a:hover, 40 | #pronouns a:active { 41 | color: #cad3f5 42 | } 43 | 44 | .fa-li, .fas, .omg-icon { 45 | color: #b8c0e0; 46 | fill: #b8c0e0; 47 | stroke: #b8c0e0; 48 | } 49 | -------------------------------------------------------------------------------- /info/Address Services/keys.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about storing and sharing public keys 3 | Last Updated: 2022-11-22 11:22 PM EST 4 | --- 5 | 6 | # Keys 7 | 8 | You can store and share your public keys with omg.lol. Just click on the Keys item on your address page, and you can manage your keys there. 9 | 10 | We support these keys: 11 | 12 | - PGP 13 | - SSH 14 | - age 15 | - Cosign 16 | - Minisign 17 | 18 | ## Web Key Directory 19 | 20 | If you provide a PGP key containing your omg.lol email address, we’ll serve your key when any [Web Key Directory](https://wiki.gnupg.org/WKD) requests are received for it. Web Key Directory is a new discovery scheme that makes it easy for people to find your key with your email address alone. 21 | 22 | If you’re curious and want to play around with this, [there’s a very cool tool here](https://metacode.biz/openpgp/web-key-directory). That page also has some useful information about applications and service providers who are using Web Key Directory. 23 | -------------------------------------------------------------------------------- /info/Profile & Web/profiles.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about profile pages on omg.lol 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Profiles 7 | 8 | You can have a super awesome profile page on omg.lol. Enable yours by pulling up your address through the Dashboard, clicking **Web Page**, and you're all set! 9 | 10 | ## Getting Started 11 | 12 | When you click **Web Page** for the first time, a screen asking if you want to use the [Advanced](info/advanced-editor) or [Classic](/info/classic-editor) Editor. 13 | After that, you're set! 14 | 15 | There’s a super powerful (we might even say _magical_) management process behind [Profile Items](/info/profile-items), so they have their [very own support article over here](/info/profile-items). 16 | 17 | ## Verified Profiles 18 | 19 | We offer a simple process for [profile verification](/info/profile-verification). Want to show the world that you are in fact who you say you are? [Contact us](/info/contact) to start the verification process. 20 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2022 Neatnik LLC 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /info/Account/account-settings.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about your account settings 3 | Last Updated: 2022-10-15 12:40 PM EDT 4 | --- 5 | 6 | # Account Settings 7 | 8 | All of your account settings can be managed in [a single convenient space](https://home.omg.lol/account). 9 | 10 | Your account settings page is admittedly a bit busy (and we’ll do something about that at some point sooner than later), but there’s a general order to the things you’ll find there: 11 | 12 | 1. First up is some basic demographic stuff: your name and email address. 13 | 2. After that, you’ll find two security items: your password and 2FA settings. 14 | 3. Then, you’ll see some basic preference stuff: your contact preferences and preferred date format. 15 | 4. Then there’s a list of your active sessions (which you can sign out if you need to). 16 | 5. And then your settings for social.lol ([IRC](/info/irc) and [Mastodon](/info/mastodon)). 17 | 6. Application authorizations come after that. 18 | 7. And, finally, your API key. 19 | 20 | Yeah, that really is a bit too much all in one space. Keep an eye out for a cleanup and reorganization soon! -------------------------------------------------------------------------------- /info/Address Services/url.lol.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Meet omg.lol’s persistent URL service, url.lol 3 | Last Updated: 2022-10-11 12:15 AM EDT 4 | --- 5 | 6 | # url.lol 7 | 8 | omg.lol lovingly operates a simple persistent URL (PURL) service at the domain [url.lol](https://url.lol). It is awesome. 9 | 10 | ## Privacy 11 | 12 | url.lol respects your privacy. There are no cookies, tracking, or other garbage JS in use when visiting URL.LOL or being redirected. We’ll only anonymously count visits (by increasing the visit count by one)—that’s it. 13 | 14 | ## Redirection Preview 15 | 16 | You can append `/wut` to any url.lol URL to view a preview screen prior to redirection. This will show you where you’re headed before you’re taken there, in case you want to know that you’re being Rickrolled before you’re actually Rickrolled. 17 | 18 | ## Abuse 19 | 20 | We don’t tolerate spam or other shenanigans with url.lol. If you see anything bogus, please report it here. 21 | 22 | ## Learn more 23 | 24 | Check out our [PURL Guide](/info/purl-guide) to learn more about how PURLs work with omg.lol! 25 | -------------------------------------------------------------------------------- /info/Community/community-tools.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Fun tools for omg.lol, made by our amazing community 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Community Tools 7 | 8 | The omg.lol community makes really cool stuff. Here’s a list of some great things made by our awesome members for omg.lol. 9 | 10 | ## Profile tools 11 | 12 | - [Profiler](https://profiler.omg.lol) - An easy way to create your own custom themes. 13 | - [OMGEX](https://github.com/LITDevs/OMGex) - Extended profile features for omg.lol. 14 | 15 | ## Statuslog updaters 16 | 17 | - [Statuslog Mobile for Android](https://play.google.com/store/apps/details?id=lol.omg.skelly.statuslog) by [Skelly](https://skelly.omg.lol) 18 | - [Drafts Action](https://actions.getdrafts.com/a/2DT) by [podiboq](https://podiboq.omg.lol) 19 | - [Discord Bot](https://github.com/mmattbtw/discord-status.lol) by [mmatt](https://mm.omg.lol) 20 | - [Telegram Bot](https://t.me/omgdotlolbot) by [Ediz](https://ediz.omg.lol) 21 | 22 | ## Found something else out there? 23 | 24 | If you've found something great relating to omg.lol, Add it [here](https://github.com/neatnik/omg.lol/discussions/242)! -------------------------------------------------------------------------------- /profiles/themes/gilded.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,300;0,400;0,700;0,900;1,300;1,400;1,700;1,900&display=swap'); 2 | 3 | :root { 4 | --verified: #fabc02; 5 | } 6 | 7 | * { 8 | font-family: 'Nunito', sans-serif; 9 | } 10 | 11 | a, h1, li, div { 12 | color: white !important; 13 | } 14 | 15 | body { 16 | background: #000 !important; 17 | height: auto; 18 | overflow: auto; 19 | display: flex; 20 | align-items: center; 21 | justify-content: center; 22 | } 23 | 24 | main { 25 | background-color: #212121; 26 | box-shadow: 8px 8px 0px rgba(255, 255, 255, 0.06); 27 | width: 25em; 28 | margin: 15px; 29 | } 30 | 31 | #profile-picture { 32 | border-radius: 50% !important; 33 | box-shadow: 0px 8px 0px rgba(0, 0, 0, 0.2); 34 | } 35 | 36 | i { 37 | color: #fabc02 !important; 38 | } 39 | 40 | .omg-icon svg { 41 | fill: #fabc02; 42 | } 43 | 44 | @media (max-height: 620px) { 45 | body { 46 | overflow: auto; 47 | height: auto; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /info/Account/passkeys.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Passkeys are secure, fast ways to access things online 3 | Last Updated: 2022-11-22 9:13 PM EST 4 | --- 5 | 6 | # Passkeys 7 | 8 | [Passkeys](https://fidoalliance.org/passkeys/) are secure, fast ways to access things online. Built on the [WebAuthn standard](https://w3c.github.io/webauthn/), passkeys combine the security of FIDO U2F security keys with your device’s biometrics, resulting in the ultimate authentication experience. 9 | 10 | Fancy praise for the tech aside, passkeys are also a super simple replacement for passwords. And they can also replace usernames, too! omg.lol’s implementation allows you to sign in with the single click of a button, skipping username, password, and even your 2FA (if enabled). Because of the security involved in passkeys, these traditional authentication inputs are simply not needed. Welcome to the future. 11 | 12 | If you’d like to dip your toes into the passkeys awesomeness, head on over to your [account page](/account) and add one there. 13 | 14 | ## Further reading 15 | 16 | - https://fidoalliance.org/fido2-2/fido2-web-authentication-webauthn/ 17 | - https://webauthn.guide 18 | - https://www.passkeys.io 19 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | omg.lol is a loving and inclusive platform. When you use our services, we ask that you always be kind and respectful—or, at the very least, that you strive to simply do no harm. 2 | 3 | More specifically: 4 | 5 | Don’t spread hate or negativity based on people’s fundamental differences, such as gender identity, sexual orientation, race, ethnicity, age, ability, and social class. 6 | Don’t harass, troll, seek to offend, or otherwise bother anyone. 7 | Don’t lie, and don’t spread others’ lies or misinformation. 8 | 9 | We believe that everyone has a right to the freedoms of speech and personal expression. We also believe that everyone has a right to live free of abuse, harassment, and harm. In specific situations where these two beliefs are at odds with one another, we prioritize the second over the first. 10 | 11 | We’re super serious about this: our platform will not be a vehicle for abuse, harassment, or harm of any kind. We do not tolerate people who cause harm to others. If you can’t play nice here, you will have to go play somewhere else. 12 | 13 | If you encounter any kind of abuse of our services, please contact abuse@omg.lol. Learn more about how we respond to abuse complaints. 14 | 15 | -------------------------------------------------------------------------------- /profiles/themes/PurpleGray.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme: PurpleGray 3 | Author: Mert Dogu (@rexulec) 4 | License: MIT 5 | Version: 1.0 6 | Description: Purple.. and yeah, gray. 7 | */ 8 | 9 | body { 10 | background: #ac80ff; 11 | color: #363636; 12 | } 13 | 14 | main { 15 | background: unset; 16 | } 17 | 18 | #pronouns { 19 | color: #1f1f1f; 20 | } 21 | 22 | a:link, 23 | a:visited { 24 | color: #3f3f3f; 25 | font-weight: 500; 26 | text-decoration-color: #F7F1FF; 27 | text-decoration: none; 28 | border-bottom: 1px dotted #F7F1FF; 29 | } 30 | 31 | a:hover, 32 | a:active { 33 | color: #181818; 34 | text-decoration-color: #A5A5A5; 35 | text-decoration: none; 36 | border-bottom: 2px solid #A5A5A5; 37 | transition: all 0.5s; 38 | } 39 | 40 | #profile-picture { 41 | border-radius: 100%; 42 | } 43 | 44 | .fa-li, .fas, .omg-icon, .omg-icon path { 45 | color: #2b2b2bb6; 46 | fill: #2b2b2bb6; 47 | stroke: #2b2b2bb6; 48 | } 49 | 50 | .fa-briefcase, .fa-map-marker-alt, .fa-plug, #footer a:link, #footer a:visited, #footer a:hover, #footer a:active { 51 | color: #3d3d3d; 52 | } 53 | 54 | .fa-badge-check, .omg-verified { 55 | color: #8133ff !important; /* important is needed to override inline style*/ 56 | } -------------------------------------------------------------------------------- /info/Billing/pricing.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: How much does this stuff cost, anyway? 3 | Last Updated: 2022-10-30 10:19 PM EDT 4 | --- 5 | 6 | # Pricing 7 | 8 | Currently, omg.lol addresses are just $5 per year. On October 30, 2022 we announced that addresses would cost $20 per year beginning on January 1, 2023. 9 | 10 | You can register an address for periods between one to ten years. You can also add between one and ten years of time to your address at any time (just visit your [billing page](/billing)). 11 | 12 | ## Gift Codes 13 | 14 | Gift codes are a convenient (and fun!) way to share omg.lol with anyone. Gift codes don’t expire, so after being purchased they can be redeemed at any point in the future. 15 | 16 | They cost the same as a regular omg.lol address registration ($5/year) and can also be purchased in periods of 1 to 10 years. 17 | 18 | Want to buy one? Head on over here! 19 | 20 | ## Sales & Promotions 21 | 22 | We’ll occasionally run sales or promotional offers. Keep your eyes open! 23 | 24 | ## Volume Discounts 25 | 26 | Want to use omg.lol for a large-scale gifting operation? Looking to buy a bunch of addresses for some other super secret project? [Contact us](/info/contact) and we can discuss what you have in mind. 27 | -------------------------------------------------------------------------------- /profiles/themes/latte/latte.css: -------------------------------------------------------------------------------- 1 | /* Latte */ 2 | 3 | 4 | :root { 5 | --bg: #f7f0df; 6 | --fg: #e9e2d1; 7 | --fatxt: #655e4b; 8 | --prambod: #aa8c7d; 9 | --pramcheek: #7c6457; 10 | } 11 | 12 | @media (prefers-color-scheme: dark) { 13 | :root { 14 | --bg: #343026; 15 | --fg: #635e51; 16 | --fatxt: #ebe2c8; 17 | --prambod: #aa8c7d; 18 | --pramcheek: #7c6457; 19 | } 20 | } 21 | 22 | body { 23 | background: var(--bg); 24 | color: var(--fatxt); 25 | } 26 | 27 | main { 28 | background: var(--fg); 29 | backdrop-filter: blur(10px); 30 | } 31 | 32 | a:link, a:visited, a:hover, a:active { 33 | color: var(--fatxt); 34 | text-decoration: var(--fatxt); 35 | } 36 | 37 | #pronouns{ 38 | color: var(--fatxt); 39 | } 40 | 41 | .fas, .fa-solid, .fa-brands, .omg-icon { 42 | color: var(--fatxt); 43 | } 44 | 45 | .logotype { 46 | color: #A88C7D; 47 | } 48 | 49 | .logotype.dot { 50 | color: #7c6457 !important; 51 | } 52 | 53 | 54 | .prami-body { fill: var(--prambod) !important; } 55 | .prami-left-eye, .prami-right-eye { fill: #343026 !important; } 56 | .prami-left-eye-pupil, .prami-right-eye-pupil { stroke: #343026 !important; } 57 | .prami-left-cheek, .prami-right-cheek { fill: var(--pramcheek) !important; } 58 | .prami-mouth { stroke: #343026 !important; } 59 | 60 | #profile-picture { 61 | border-radius: 100%; 62 | } 63 | -------------------------------------------------------------------------------- /info/About/abuse.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Our policy on abuse is simple and clear: we don’t tolerate it, ever 3 | Last Updated: 2022-10-31 10:38 PM EDT 4 | --- 5 | 6 | # Abuse 7 | 8 | omg.lol has a clear [Terms of Service](/info/omg.lol/legal#terms-of-service), [Acceptable Use Policy](/info/omg.lol/legal#acceptable-use-policy), and [Code of Conduct](/info/omg.lol/code-of-conduct). These establish and clarify how our services can and cannot be used. Nobody likes reading this kind of stuff, but it helps to explain what we mean by “abuse”. 9 | 10 | On the rare occasion that our services are abused, or whenever someone engages in the abuse of another person through the use of our services, we act quickly to intervene and resolve the issue. As of the last time this article was updated, this has only happened twice. Hopefully it doesn’t happen again! 11 | 12 | ## Reporting abuse 13 | 14 | You can contact [abuse@omg.lol](mailto:abuse@omg.lol) to report any kind of abuse related to omg.lol or its members. 15 | 16 | ## How we handle abuse 17 | 18 | When we receive a report of abuse, we investigate promptly and thoroughly. We want to address the issue fairly, and with compassion and dignity for all involved. We try to assume positive intent (where it makes sense to do so), and will work with everyone involved to take care of things in the right way. -------------------------------------------------------------------------------- /info/Profile & Web/web.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about your omg.lol web page 3 | Last Updated: 2022-10-15 1:03 PM EDT 4 | --- 5 | 6 | # Your Web Page 7 | 8 | omg.lol offers a couple of different ways to manage and host a web page with your omg.lol address. One is a a simple no-frills web page editor, and the other is a profile page management feature. 9 | 10 | ## Profile Page 11 | 12 | Profile pages are a fun and easy way to maintain a web presence. You can share as much or as little information about yourself as you wish, and you’ll still wind up with a really nice-looking page. You can use either the [Classic Editor](/info/classic-editor) or the [Advanced Editor](/info/advanced-editor) to manage your profile. (We’re partial to the Advanced one, though!) 13 | 14 | ## Web Page 15 | 16 | If you just want to publish a simple web page of your own design, you can do that by toggling your web page type to **Raw HTML only** and using our [Advanced Editor](/info/advanced-editor). When you’re in **Raw HTML only** mode, everything you put into the editor is rendered as your web page. 17 | 18 | ## Learn about web development 19 | 20 | You can learn a ton about managing a simple HTML web page with these great resources: 21 | 22 | * [W3Schools](https://www.w3schools.com) 23 | * [Codecademy](https://www.codecademy.com/catalog/language/html-css) 24 | * [CSS-Tricks](https://css-tricks.com) 25 | -------------------------------------------------------------------------------- /info/Feedback & Help/bugs.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: How to report bugs and vulnerabilities responsibly 3 | Last Updated: 2022-10-31 9:02 PM EDT 4 | --- 5 | 6 | # Responsible Bug Reporting 7 | 8 | We sincerely appreciate the work of security researchers, bug hunters, and anyone who’s willing to take the time to let us know about something that’s broken. It’s all really helpful, especially to a small independent service like this one. 9 | 10 | Please report all bugs to [bugs@omg.lol](mailto:bugs@omg.lol). This mailbox can be used for any kind of bug of any severity. If you believe you’ve discovered a serious critical security issue, you can contact [security@omg.lol](mailto:security@omg.lol). 11 | 12 | Minor bugs or common annoyances can also be submitted as an [issue in our GitHub repository](https://github.com/neatnik/omg.lol/issues). This is a great way to engage in public discussion of issues (and, frankly, the public pressure is helpful for prioritizing bugfixes—seriously). 13 | 14 | More significant bugs or security vulnerabilities should be reported via the mailboxes above. Thank you for your help with responsibly disclosing such issues. 15 | 16 | We maintain a [Hall of Fame](/info/thanks) page to recognize each person who reports bugs and acknowledge their contributions. 17 | 18 | For additional details, please refer to our [security.txt](https://omg.lol/.well-known/security.txt) file. -------------------------------------------------------------------------------- /info/About/services.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about what we offer 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Services Overview 7 | 8 | omg.lol is a fun collection of services! Here’s some info about each of them. 9 | 10 | ## Website 11 | 12 | We make it easy to build a simple (but beautiful and awesome) profile page. 13 | 14 | ## DNS management 15 | 16 | You have full control over your omg.lol address, and can fully manage its DNS. 17 | 18 | ## Email forwarding 19 | 20 | You get an email address that you can forward to anywhere. 21 | 22 | ## PURLs 23 | 24 | Simple link redirection lets you share URLs that never, ever change. 25 | 26 | ## Pastebin 27 | 28 | Share text, code, recipies, ancient wisdom, or juicy gossip with anyone. 29 | 30 | ## Weblog (Coming soon!™) 31 | 32 | Published serialized thoughts, just like in the early days of the web. 33 | 34 | ## Mastodon 35 | 36 | Our fun social network with kind, smart people. 37 | 38 | ## IRC 39 | 40 | Connect and chat live with other omg.lol members on our private IRC server. 41 | -------------------------------------------------------------------------------- /info/Community/social.lol.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: lol @ social stuff 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # social.lol 7 | 8 | Social media and social apps can really just _suck_. But they can also be pretty awesome? It really just depends on the service and the people using it. 9 | 10 | Here at omg.lol, we’re not interested in re-inventing social media. We are however deeply interested in supporting kind, fun, lighthearted social interaction amongst nice people. And from this goal [social.lol](https://social.lol) has been born. You can read the name in two different ways: a light mockery of social media (as in _“lol, social media”_) or a more positive reflection of the idea that our online social interactions should be fun and even make us laugh. 11 | 12 | ### Membership 13 | 14 | social.lol is available to omg.lol members. 15 | 16 | ### Live chat 17 | 18 | We’re using [IRC](/help/irc) for live chat. Maybe you’re an IRC veteran and you’ll feel right at home with it. Maybe you’ve never heard of it before, but we still think you’ll like it. It uses a completely open standard, and you can use a variety of clients (including one that we host for you). 19 | 20 | ### Social posting 21 | 22 | For less-than-live chatter, we’re using [Mastodon](/help/mastodon) (it’s also the landing page for [social.lol](https://social.lol)). It’s also an open standard, and like IRC we can host it ourselves. It’s a lot like Twitter, but much nicer. 23 | -------------------------------------------------------------------------------- /info/About/code-of-conduct.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Follow our Code of Conduct to keep our community awesome 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Code of Conduct 7 | 8 | omg.lol is a loving and inclusive platform. When you use [our services](/info/services), we ask that you always be kind and respectful—or, at the very least, that you strive to simply do no harm. 9 | 10 | More specifically: 11 | 12 | - Don’t spread hate or negativity based on people’s fundamental differences, such as gender identity, sexual orientation, race, ethnicity, age, ability, and social class. 13 | - Don’t harass, troll, seek to offend, or otherwise bother anyone. 14 | - Don’t lie, and don’t spread others’ lies or misinformation. 15 | 16 | We believe that everyone has a right to the freedoms of speech and personal expression. We also believe that everyone has a right to live free of abuse, harassment, and harm. In specific situations where these two beliefs are at odds with one another, we prioritize the second over the first. 17 | 18 | We’re super serious about this: our platform *will not* be a vehicle for abuse, harassment, or harm of any kind. We do not tolerate people who cause harm to others. If you can’t play nice here, you will have to go play somewhere else. 19 | 20 | If you encounter any kind of abuse of our services, please contact [abuse@omg.lol](mailto:abuse@omg.lol). [Learn more about how we respond to abuse complaints.](/info/omg.lol/abuse) -------------------------------------------------------------------------------- /profiles/icons/defined_omgicons.txt: -------------------------------------------------------------------------------- 1 | anilist e044 2 | archiveofourown e045 3 | basic-attention-token e046 4 | bookshop e047 5 | buymeacoffee e048 6 | cash-app e049 7 | clarus e061 8 | clubhouse e052 9 | coindrop e050 10 | eyeem e051 11 | fastmail e001 12 | fediverse e053 13 | geotastic e056 14 | giphy e002 15 | gumroad e003 16 | hackerone e004 17 | hey e054 18 | honk e005 19 | instapaper e055 20 | keyoxide e006 21 | ko-fi e060 22 | letterboxd e007 23 | liberapay e008 24 | lichess e009 25 | litecoin e010 26 | literal e011 27 | lobsters e012 28 | matrix e013 29 | mediawiki e065 30 | musicboard e014 31 | myanimelist e015 32 | ninegag e043 33 | nintendo-switch e016 34 | notion e017 35 | opensea e018 36 | osk e019 37 | osu e057 38 | pinboard e020 39 | plutonium e021 40 | polywork e022 41 | postype e023 42 | prami e042 43 | procreate e059 44 | pronounspage e058 45 | rainbow-me e024 46 | rarible e025 47 | ravencoin e026 48 | revue e027 49 | roblox e028 50 | session e062 51 | signal-app e029 52 | sourcehut e066 53 | spacehey e030 54 | spark-ar e031 55 | tetrio e032 56 | threema e033 57 | tinyletter e034 58 | toss e035 59 | venmo e036 60 | verified e063 61 | vero e037 62 | wattpad e038 63 | well e039 64 | wikimedia-community e064 65 | writeas e040 66 | xmpp e041 67 | codeberg e073 68 | sudomemo e067 69 | rate-your-music e068 70 | read-cv e069 71 | revolt e070 72 | vukky e071 73 | laker e072 74 | neatnik e074 75 | credly e075 76 | pixelfed e076 77 | passkey e077 78 | ecosia e078 79 | mltshp e080 80 | andycarolan e081 -------------------------------------------------------------------------------- /profiles/themes/hacker.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2021 Matse Van Horebeek. All rights reserved. 3 | 4 | Theme: hacker 5 | Author: Matse Van Horebeek (@matsevh) 6 | License: MIT 7 | Version: 1.0 8 | Description: Let your page look like a hacker environment 9 | */ 10 | 11 | @import url("https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&display=swap"); 12 | 13 | :root { 14 | --background: rgb(5, 5, 5); 15 | --black: #000000; 16 | --green: #0daf00; 17 | --dark-green: #115e0d; 18 | --green-overlay: #0caf0060; 19 | --font: "Roboto Mono", monospace; 20 | } 21 | 22 | body { 23 | background: var(--background); 24 | font-family: var(--font); 25 | } 26 | 27 | main { 28 | border-radius: 10px !important; 29 | background: var(--black); 30 | } 31 | 32 | main, 33 | #pronouns, 34 | #footer, 35 | li, 36 | a { 37 | color: var(--green) !important; 38 | } 39 | 40 | .fa-badge-check, .omg-verified { 41 | color: var(--green) !important; 42 | } 43 | 44 | a:hover, 45 | .fa-badge-check:hover, .omg-verified:hover { 46 | color: var(--dark-green) !important; 47 | text-decoration-color: var(--dark-green) !important; 48 | } 49 | 50 | #pfp_preview { 51 | border-radius: 10px !important; 52 | } 53 | 54 | #footer { 55 | margin-top: 1em; 56 | } 57 | 58 | /* Color for profile items list */ 59 | .fa-li, .fas, .omg-icon, .omg-icon path { 60 | color: var(--green); 61 | fill: var(--green); 62 | stroke: var(--green); 63 | } -------------------------------------------------------------------------------- /info/About/about.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: The omg.lol origin story and all kinds of other info about the service 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # About omg.lol 7 | 8 | It all started with a cool domain name. [Adam](https://adam.omg.lol) registered omg.lol (the domain) in 2019, originally for personal use but quickly saw that it would be a cruel waste of awesomeness to squander it. A little creativity and programming later, omg.lol (the service) was born, letting anyone join in on the fun. 9 | 10 | ## The team 11 | 12 | omg.lol is made by our [team](https://staff.lol), and this service is their passion. But all of our members are part of our broader community as well, and your ideas and feedback make the service what it is. 13 | 14 | ## The tech 15 | 16 | omg.lol is unabashedly built with [PHP](https://www.php.net) on [DigitalOcean](https://digitalocean.com) and [Linode](https://linode.com) hardware running the [Debian](https://www.debian.org/intro/about) operating system. Mail is lovingly processed with [Postfix](http://www.postfix.org), and everything else is highly customized magic. 17 | 18 | ## The art 19 | 20 | Penelope, our totally rad pigeon mascot, was illustrated by the incredibly talented [Bree Lundberg](https://breelundberg.com). Prami, our heart logo, was illustrated by the equally astounding [Momo](https://www.heyheymomo.com). 21 | 22 | The icons you see throughout the site are by [Font Awesome](https://fontawesome.com). 23 | -------------------------------------------------------------------------------- /profiles/themes/sun-kissed.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Theme: Sun Kissed 4 | Author: Catnatsuki (https://twitter.com/catnatsuki) 5 | License: MIT 6 | Version: 1.0 7 | Description: A theme which will remind you of a calm and beautiful sunrise. 8 | 9 | */ 10 | 11 | body { 12 | background: #fde3b3; 13 | color: #1F1B15; 14 | } 15 | 16 | main { 17 | background: #ffffed; 18 | } 19 | 20 | h1 { 21 | color: #f39519; 22 | } 23 | 24 | #pronouns { 25 | margin: 0; 26 | font-weight: 400; 27 | color: #ffb86a; 28 | } 29 | 30 | #pronouns a:link, 31 | #pronouns a:visited, 32 | #pronouns a:hover, 33 | #pronouns a:active { 34 | color: #ffb86a; 35 | } 36 | 37 | 38 | #location, #occupation{ 39 | color: #725a42; 40 | } 41 | 42 | 43 | #bio { 44 | color: #725a42; 45 | } 46 | 47 | a:link, 48 | a:visited { 49 | color: #725a42; 50 | text-decoration-color: #333; 51 | text-decoration: none; 52 | border-bottom: 1px dotted #333; 53 | } 54 | a:hover, 55 | a:active { 56 | color: #f39519; 57 | text-decoration-color: #F8c453; 58 | text-decoration: none; 59 | border-bottom: 2px solid #555; 60 | } 61 | .fa-badge-check, .omg-verified { 62 | color: #F39519 !important; 63 | } 64 | 65 | .fa-badge-check:hover, .omg-verified:hover { 66 | color: #d17c00 !important; 67 | text-decoration-color: #d17c00 !important; 68 | } 69 | 70 | #profile-picture { 71 | border-radius: 100%; 72 | height: 8.7em; 73 | transition: 0.6s; 74 | } 75 | 76 | #profile-picture:hover { 77 | border-radius: 0.25em; 78 | } 79 | 80 | .fa-li, .fas, .omg-icon, .omg-icon path { 81 | color: #f39519; 82 | fill: #f39519; 83 | stroke: #f39519; 84 | } -------------------------------------------------------------------------------- /info/Billing/billing.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about our billing policies and practices 3 | Last Updated: 2022-10-14 08:40 PM EDT 4 | See Also: renewals 5 | --- 6 | 7 | # Billing 8 | 9 | Here’s some info on how we manage billing matters. 10 | 11 | ## Frequency 12 | 13 | Buying an omg.lol address is a lot like buying any other domain: it’s something that you’d ideally want to hold onto for a while (if not forever!), so monthly billing isn’t really as appropriate as it might be with other services. 14 | 15 | ## Subscriptions 16 | 17 | We don’t use a traditional subscription model here. We don’t retain your billing information, and we don’t do automatic renewals. Honestly, we think those things are kind of annoying. If you’ve ever had a subscription to something that you don’t want anymore (but that you’ve forgotten about) and it auto-renewed, it’s not a great feeling. We don’t want to make anyone feel that way. 18 | 19 | On the flip side, missing a renewal deadline can be stressful. We’ll contact you a few times before your address expires to ensure that you have ample opportunity to renew it if you wish to keep it. 20 | 21 | ## Payments 22 | 23 | See the [Payments](/info/payments) article for information on accepted payment methods and making payments. 24 | 25 | ## Card/Bank Charges 26 | 27 | The payment method that you use to purchase omg.lol services will be charged by “omg.lol”, “omg.lol Address”, or ”Neatnik LLC” (or, more likely, an all-caps version of one of those). If you ever have a problem with any omg.lol charges, [let us know](/info/contact) at any time and we’ll help clear things up right away. -------------------------------------------------------------------------------- /info/Billing/renewals.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Everything you ever wanted to know about renewing your omg.lol address but were too busy forgetting to renew your omg.lol to ask 3 | Last Updated: 2022-10-31 4:28 PM EDT 4 | See Also: billing 5 | --- 6 | 7 | # Renewals & Expiration 8 | 9 | Renewing your omg.lol address is easy! You can add time to your address whenever you’d like. You’ll see the option to add time via your [addresses](/addresses) page (click on the @name you want to extend, then select add time from the purple strip). You can renew for as long as you’d like, up to ten years at a time (but there’s nothing stopping you from adding ten years and then adding more time after that, if you’re determined to go in it for the long haul). 10 | 11 | As we mention in our [Billing](/info/billing) article, there is no automatic renewal associated with your omg.lol address. We don’t retain your payment information, so you’re always in control with your renewals. But this also means that you need to remember to renew! 12 | 13 | ## Renewal Reminders 14 | 15 | We send three reminders when an address is approaching expiration: 16 | 17 | 1. The first one is sent 60 days before expiration. 18 | 2. The second is sent 30 days before expiration. 19 | 3. The third and final notification is sent 14 days before expiration. 20 | 21 | ## Address Expiration 22 | 23 | When addresses expire, everything associated with them is expunged (including any content, configuration, etc.) and the adddress is returned to the available address pool. If you’re concerned about your address expiring, be sure to add some time to it in advance of its expiration date. 24 | -------------------------------------------------------------------------------- /profiles/icons/README.md: -------------------------------------------------------------------------------- 1 | # omg.lol Icons 2 | 3 | This directory contains files used in preparing icons for omg.lol profiles. 4 | 5 | This table explains what everything is, and more importantly, which files can be edited: 6 | 7 | | File | Editable | Purpose | 8 | | ---- | -------- | ------- | 9 | | defined_domains.txt | Yes | This is a space-delimited key-value pair of domains and their associated omg.lol icons. | 10 | | defined_omgicons.txt | Yes | This is a space-delimited key-value pair of icon classes and their associated Unicode glyphs in the custom omg.lol icon font. | 11 | | defined_overrides.txt | Yes | This is a space-delimited key-value pair of icon classes where an icon other than the default Font Awesome icon should be used. | 12 | | domains.json | No | The JSON file used by the profile page generator to map domains to icons. | 13 | | icons.json | No | The JSON file used by the profile page generator to determine available icons (a combination of Font Awesome Free and omg.lol icons). | 14 | | omg.lol-glyphs.css | No | The CSS file used by the omg.lol icon font. | 15 | | omg.lol-icons.css | No | The CSS file used by omg.lol profiles/themes. | 16 | | omg.lol-icons.woff2 | No | The omg.lol custom icon font in WOFF2 format. | 17 | | omg.lol.icons.glyphs | Yes | The omg.lol custom icon font in Glyphs format. | 18 | | prepare.php | Yes | The utility script that prepares the JSON and CSS files above. | 19 | 20 | ## The omg.lol icon preparation utility 21 | 22 | `prepare.php` is a script that will generate the required JSON and CSS files in the table above based on the contents of the .txt files in this directory. The script contains comments that explain its functions. 23 | -------------------------------------------------------------------------------- /.github/workflows/icons.yml: -------------------------------------------------------------------------------- 1 | name: Sync Icons 2 | on: 3 | push: 4 | paths: profiles/icons/** 5 | workflow_dispatch: 6 | jobs: 7 | deploy: 8 | if: github.repository_owner == 'neatnik' 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout repository 12 | uses: actions/checkout@v3 13 | 14 | - name: Setup PHP 15 | uses: shivammathur/setup-php@v2 16 | with: 17 | php-version: '7.4' 18 | 19 | - name: Run Prepare Script 20 | run: | 21 | cd profiles/icons 22 | php -f prepare.php 23 | cd ../../ 24 | 25 | - name: Sync DigitalOcean Space, purge changes from the CDN 26 | uses: mar0xy/do-spaces@main 27 | env: 28 | DO_TOKEN: ${{ secrets.DO_TOKEN }} 29 | DO_ACCESS: ${{ secrets.DO_ACCESS }} 30 | DO_SECRET: ${{ secrets.DO_SECRET }} 31 | DO_NAME: ${{ secrets.DO_NAME }} 32 | SPACE_DIR: profiles/icons 33 | DELETE_UNTRACKED: false 34 | EXCLUDE_LIST: false 35 | DO_REGION: nyc3 36 | LOCAL_DIR: profiles/icons 37 | 38 | - name: Commit Files 39 | run: | 40 | git config --local user.name "github-actions[bot]" 41 | git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com" 42 | git add profiles/icons 43 | git commit -m "${{ github.event.head_commit.message }}" 44 | 45 | - name: Push changes 46 | uses: ad-m/github-push-action@v0.6.0 47 | with: 48 | github_token: ${{ secrets.GITHUB_TOKEN }} 49 | branch: ${{ github.ref }} 50 | -------------------------------------------------------------------------------- /profiles/themes/nord-dark.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme: Nord (Dark) 3 | Author: Jason E. Kratz (@jasonekratz) 4 | License: MIT 5 | Version: 1.0 6 | Description: Dark theme based on the Nord color palette. 7 | See: https://www.nordtheme.com/docs/colors-and-palettes 8 | CSS based on Dakota Chambers' Monokai theme. 9 | */ 10 | 11 | body { 12 | background: #2E3440; 13 | color: #d8dee9; 14 | } 15 | 16 | main { 17 | background: unset; 18 | } 19 | 20 | a:link, 21 | a:visited { 22 | color: #5e81ac; 23 | text-decoration-color: #5e81ac; 24 | text-decoration: none; 25 | border-bottom: 1px dotted #5e81ac; 26 | } 27 | 28 | a:hover, 29 | a:active { 30 | color: #eceff4; 31 | text-decoration-color: #eceff4; 32 | text-decoration: none; 33 | border-bottom: 2px solid #5e81ac; 34 | } 35 | 36 | #profile-picture { 37 | border-radius: 100%; 38 | } 39 | 40 | #pronouns { 41 | color: #d8dee9; 42 | } 43 | 44 | #footer a:link, #footer a:visited, #footer a:hover, #footer a:active { 45 | color: #d8dee9; 46 | } 47 | 48 | /* Color for profile items list */ 49 | .fa-li, .fas, .omg-icon { 50 | color: #bf616a; 51 | } 52 | 53 | /* Specific colors for individual icons */ 54 | .fa-plug { 55 | color: #ebcb8b; 56 | } 57 | 58 | .fa-badge-check, .omg-verified { 59 | color: #88c0d0 !important; /* important is needed to override inline style*/ 60 | } 61 | 62 | .fa-briefcase { 63 | color: #d08770; 64 | } 65 | 66 | .fa-map-marker-alt { 67 | color: #b48ead; 68 | } 69 | 70 | /* Additional theming for OMGEX (https://github.com/litdevs/omgex) */ 71 | 72 | .fa-clock { 73 | color: #a3be8c; 74 | } 75 | 76 | .fa-smile-plus { 77 | color: #88c0d0; 78 | } 79 | 80 | .fa-birthday-cake { 81 | color: #bf616a; 82 | } 83 | -------------------------------------------------------------------------------- /info/Feedback & Help/faq.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: These are the questions we hear the most, and we’ve answered them all in one place 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Frequently Asked Questions 7 | 8 | Here are the questions about omg.lol that we hear most often. 9 | 10 | ## Can I pay with something other than a credit card? 11 | 12 | Absolutely! We can accept PayPal, Venmo, and Cash App. Just [contact us](mailto:help@omg.lol) to set something up. 13 | 14 | ## What happened to the lifetime plans? 15 | 16 | We occasionally offer lifetime plans, but can’t offer them all the time. Keep an eye on our [Mastodon](https://social.lol/@omgdotlol) for notices about specials (including lifetime plans). 17 | 18 | ## I changed my mind and want a different address? Can you change it? 19 | 20 | We’d prefer not, since addresses are a very personal thing and it’s best if they’re not cycled like that. But [contact us](mailto:help@omg.lol) if you’d like to discuss it further. 21 | 22 | ## Is there a free version of the service? 23 | 24 | No, there isn’t. We offer a quality service to real people, not bots or drive-by users. The service incurrs real costs and needs real income to cover its expenses. We don’t want to run ads or monetize the service in other annoying ways. We also want our email and web namespaces to be clean, not full of random junk accounts. 25 | 26 | ## I used to have an account, but I kinda forgot about it, and now I can’t log in. Help? 27 | 28 | If you didn’t renew your address before it expired, then we removed your account (since an account without an address is pretty pointless). No big deal, though; if you register a new address you’ll get a new account along with it. 29 | -------------------------------------------------------------------------------- /profiles/themes/monokai.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Theme: Monokai 4 | Author: Dakota Chambers (@dcchambers) 5 | License: MIT 6 | Version: 1.0 7 | Description: Monokai - your code editor's favorite color palette. Adapted from the Monokai color scheme by Wimer Hazenberg (@monokai). 8 | 9 | */ 10 | 11 | body { 12 | background: #363537; 13 | color: #F7F1FF; 14 | } 15 | 16 | main { 17 | background: unset; 18 | } 19 | 20 | a:link, 21 | a:visited { 22 | color: #F7F1FF; 23 | text-decoration-color: #F7F1FF; 24 | text-decoration: none; 25 | border-bottom: 1px dotted #F7F1FF; 26 | } 27 | 28 | a:hover, 29 | a:active { 30 | color: #A5A5A5; 31 | text-decoration-color: #A5A5A5; 32 | text-decoration: none; 33 | border-bottom: 2px solid #A5A5A5; 34 | } 35 | 36 | #profile-picture { 37 | border-radius: 100%; 38 | } 39 | 40 | #pronouns { 41 | color: #A5A5A5; 42 | } 43 | 44 | #footer a:link, #footer a:visited, #footer a:hover, #footer a:active { 45 | color: #A5A5A5; 46 | } 47 | 48 | /* Color for profile items list */ 49 | .fa-li, .fas, .omg-icon, .omg-icon path { 50 | color: #FA638D; 51 | fill: #FA638D; 52 | stroke: #FA638D; 53 | } 54 | 55 | /* Specific colors for individual icons */ 56 | .fa-plug { 57 | color: #FBE46E; 58 | } 59 | 60 | .fa-badge-check, .omg-verified { 61 | color: #60D4E4 !important; /* important is needed to override inline style*/ 62 | } 63 | 64 | .fa-briefcase { 65 | color: #FB935A; 66 | } 67 | 68 | .fa-location-dot { 69 | color: #948CDF; 70 | } 71 | 72 | /* Additional theming for OMGEX (https://github.com/litdevs/omgex) */ 73 | 74 | .fa-clock { 75 | color: #7DD792; 76 | } 77 | 78 | .fa-smile-plus { 79 | color: #60D4E4; 80 | } 81 | 82 | .fa-birthday-cake { 83 | color: #FA638D; 84 | } -------------------------------------------------------------------------------- /profiles/themes/minimal.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Copyright (c) 2021 Jane Manchun Wong. All rights reserved. 4 | 5 | This work is licensed under the terms of the MIT license. 6 | For a copy, see . 7 | 8 | Theme: Minimal 9 | Author: Jane Manchun Wong (@wongmjane) 10 | License: MIT 11 | Version: 1.0 12 | Description: A minimal theme with automatic light/dark mode detection. 13 | 14 | */ 15 | 16 | :root { 17 | --bg: #FAFAFA; 18 | --fg: #202020; 19 | --verified: rgb(29, 161, 242); 20 | } 21 | 22 | @media (prefers-color-scheme: dark) { 23 | :root { 24 | --bg: #202020; 25 | --fg: #FAFAFA; 26 | --verified: white; 27 | } 28 | } 29 | 30 | html, body { 31 | min-height: 100vh; 32 | } 33 | 34 | body { 35 | background: var(--bg); 36 | /* font-weight: unset; */ 37 | padding: unset; 38 | } 39 | 40 | body, a, a:link, a:visited { 41 | color: var(--fg); 42 | } 43 | 44 | main { 45 | background: unset; 46 | padding: 1.5em; 47 | } 48 | 49 | #name { 50 | font-size: 1.5em; 51 | /* font-weight: 500; */ 52 | } 53 | 54 | main > h1 > a[href='https://meta.omg.lol/help/profile-verification'] > i { 55 | color: var(--verified) !important; 56 | } 57 | 58 | #pfp_preview { 59 | filter: drop-shadow(0 0 0.75rem rgba(0, 0, 0, 0.1)); 60 | } 61 | 62 | #pronouns { 63 | color: var(--fg); 64 | opacity: 0.7; 65 | } 66 | 67 | main > ul > li > a:link, main > ul > li > a:visited { 68 | border-bottom-color: var(--fg); 69 | } 70 | 71 | #footer { 72 | margin-top: 3em; 73 | } 74 | 75 | #footer a:link, #footer a:visited, #footer a:hover, #footer a:active { 76 | color: var(--fg); 77 | text-decoration: none; 78 | border: 0; 79 | opacity: 0.8; 80 | } 81 | 82 | .fa-li, .fas, .omg-icon, .omg-icon path { 83 | color: var(--fg); 84 | fill: var(--fg); 85 | stroke: var(--fg); 86 | } 87 | -------------------------------------------------------------------------------- /info/Email/postmasters.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Postmaster information for omg.lol 3 | Last Updated: 2022-10-16 4:49 PM EDT 4 | --- 5 | 6 | # Postmaster Information 7 | 8 | This page provides information that may be useful to email operators, either in general or when troubleshooting email-related issues. 9 | 10 | ## About the omg.lol mail service 11 | 12 | omg.lol’s mail service is first and foremost a message forwarding service. The omg.lol mail server forwards messages on behalf of omg.lol members to the destination address of their choice. The server will also send low-volume notification or service-related messages. There is no mechanism to directly support sending arbitrary outbound email. 13 | 14 | ## IP Addresses 15 | 16 | Mail originates from the omg.lol mail server, `mail.omg.lol`, which operates at the IP address `165.227.70.9`. 17 | 18 | ## Technologies Used 19 | 20 | The omg.lol mail server, besides being devastatingly handsome, employs the use of multiple technologies to ensure safe, compliant delivery of email messages as well as to thwart abuse and manage the transmission of unsolicited bulk emails (or ‘spam’). These technologies include: 21 | 22 | * [SPF](https://en.wikipedia.org/wiki/Sender_Policy_Framework) 23 | * [DKIM](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) 24 | * [SRS](https://en.wikipedia.org/wiki/Sender_Rewriting_Scheme) 25 | * [DMARC](https://dmarc.org) with report analysis courtesy of [OnDMARC](https://redsift.com/products/ondmarc) 26 | * Greylisting with [Postgrey](https://postgrey.schweikert.ch) 27 | * Spam identification with [Spamhaus](https://www.spamhaus.org/zen/) 28 | * Spam mitigation with [Rspamd](https://rspamd.com) 29 | 30 | ## Contact 31 | 32 | If you would like to reach the omg.lol postmaster, please send an email to postmaster@omg.lol. (Yes, we’re RFC2142-compliant!) 33 | -------------------------------------------------------------------------------- /info/Billing/payments.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: How to pay for all of this awesomeness 3 | Last Updated: 2022-10-14 9:23 PM EDT 4 | --- 5 | 6 | # Payments 7 | 8 | So, how can you pay for all of this awesomeness? Read on for answers. 9 | 10 | ## Payment methods 11 | 12 | We accept via Visa, Mastercard, American Express, Discover, Diners Club, JCB, Alipay, Apple Pay, and Google Pay. 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |

European customers can also pay with Bancontact, iDEAL, Przelewy24, giropay, EPS, SEPA, and Sofort. Additional payment methods may be available in other locations. Affirm, Afterpay, Klarna, and other “buy now, pay later” services may also be available depending on the amount of your purchase and other conditions.

27 | 28 | ## Payment processing 29 | 30 | We use Stripe to securely process your online payment. They’re the best. 31 | 32 | ## Currencies 33 | 34 | Stripe is rolling out a new automatic currency conversion program and are adding new currencies all the time. As of now, in addition to USD, payments can be made in EUR, GBP, and CAD. On October 20, 2022, payments can also be made in AUD, MXN, JPY and SGD. 35 | 36 | ## Alternative payment methods 37 | 38 | We prefer to keep things simple and use the payment methods listed above. If you would like to discuss any special circumstances related to payments, you can [contact us](/info/contact) at any time. -------------------------------------------------------------------------------- /profiles/themes/gradient.css: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright (c) 2021 Trevor Thalacker. All rights reserved. 3 | 4 | Theme: Gradient 5 | Author: Trevor Thalacker (@trevorthalacker) 6 | License: MIT 7 | Version: 1.0 8 | Description: A nice theme with an animated, gradient background 9 | */ 10 | 11 | :root { 12 | --box-shadow: 0 0 transparent, 0 0 transparent, 13 | 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); 14 | } 15 | 16 | body { 17 | background: linear-gradient( 18 | 313deg, 19 | #fecaca, 20 | #fde68a, 21 | #a7f3d0, 22 | #bfdbfe, 23 | #c7d2fe, 24 | #ddd6fe, 25 | #fbcfe8 26 | ); 27 | background-size: 1400% 1400%; 28 | 29 | -webkit-animation: colours 15s ease infinite; 30 | -moz-animation: colours 15s ease infinite; 31 | -o-animation: colours 15s ease infinite; 32 | animation: colours 15s ease infinite; 33 | } 34 | 35 | main { 36 | box-shadow: var(--box-shadow); 37 | } 38 | 39 | #pfp_preview { 40 | border-radius: 100% !important; 41 | box-shadow: var(--box-shadow); 42 | } 43 | 44 | #footer { 45 | margin-top: 1em; 46 | } 47 | 48 | /* Keyframe Stuff */ 49 | @-webkit-keyframes colours { 50 | 0% { 51 | background-position: 0% 50%; 52 | } 53 | 50% { 54 | background-position: 100% 50%; 55 | } 56 | 100% { 57 | background-position: 0% 50%; 58 | } 59 | } 60 | @-moz-keyframes colours { 61 | 0% { 62 | background-position: 0% 50%; 63 | } 64 | 50% { 65 | background-position: 100% 50%; 66 | } 67 | 100% { 68 | background-position: 0% 50%; 69 | } 70 | } 71 | @-o-keyframes colours { 72 | 0% { 73 | background-position: 0% 50%; 74 | } 75 | 50% { 76 | background-position: 100% 50%; 77 | } 78 | 100% { 79 | background-position: 0% 50%; 80 | } 81 | } 82 | @keyframes colours { 83 | 0% { 84 | background-position: 0% 50%; 85 | } 86 | 50% { 87 | background-position: 100% 50%; 88 | } 89 | 100% { 90 | background-position: 0% 50%; 91 | } 92 | } -------------------------------------------------------------------------------- /info/About/service-domains.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Refer to this official list of service domains to ensure that you’re dealing with legit omg.lol stuff 3 | Last Updated: 2022-11-20 7:22 PM EST 4 | --- 5 | 6 | # Service Domains 7 | 8 | Here’s a list of all valid omg.lol service domains. 9 | 10 | - [omg.lol](https://omg.lol) is an eTLD registered on the Public Suffix List. The base address redirects to [home.omg.lol](https://home.omg.lol), while other subdomains redirect to either service pages (which would be listed below) or member addresses. 11 | - [home.omg.lol](https://home.omg.lol) is our canonical service domain, and the only domain used for account activity (registration, sign-in, account maintenance, etc.). There are no member-run services operating within this domain. 12 | - [status.omg.lol](https://status.omg.lol) is our service status page. 13 | - [social.lol](https://social.lol) is our Mastodon instance. 14 | - [irc.social.lol](https://social.lol) is our IRC server. 15 | - [paste.lol](https://paste.lol) is our Pastebin service. 16 | - [status.lol](https://status.lol) is our Statuslog service. 17 | - [url.lol](https://url.lol) is our PURL service. 18 | - [weblog.lol](https://weblog.lol) is our Weblog service. 19 | - [staff.lol](https://staff.lol) redirects to our [Staff page](https://home.omg.lol/staff). 20 | 21 | If you have found a location other than the ones above claiming to be affiliated with omg.lol, or if someone has asked you to log into omg.lol or share any personal information at a location other than home.omg.lol, please [email abuse@omg.lol](mailto:abuse@omg.lol) immediately. 22 | 23 | ## Why does this list exist? 24 | 25 | This list exists to help you ensure that you’re only dealing with official, legitimate omg.lol services. (In other words, if someone came along and registered “omg-support-scam.omg.lol” and suggested that you enter your credentials there, this page would confirm that would be a bad idea.) -------------------------------------------------------------------------------- /profiles/themes/dracula.css: -------------------------------------------------------------------------------- 1 | /* 2 | The original theme is under the MIT license. 3 | MIT LICENSE (c) Dracula Theme, adapted by Bye for omg.lol 4 | 5 | Theme: Dracula 6 | Author: Bye (@_byemc) 7 | License: MIT (https://bye.url.lol/draculalicense) 8 | Version: 1.0 9 | Description: Dark theme with a touch of purple. Adapted from the Dracula color scheme by @zenorocha 10 | */ 11 | 12 | @import url('https://omg.cache.lol/css/type.css'); 13 | 14 | :root { 15 | --background-color: #282a36; 16 | --main-color: #44475a; 17 | --forground: #f8f8f2; 18 | --comment: #6272a4; 19 | --cyan: #8be9fd; 20 | --green: #50fa7b; 21 | --orange: #ffb86c; 22 | --pink: #ff79c6; 23 | --purple: #bd93f9; 24 | --red: #ff5555; 25 | --yellow: #f1fa8c; 26 | } 27 | 28 | ::selection { 29 | background: var(--purple); 30 | color: var(--forground); 31 | } 32 | 33 | body { 34 | background: var(--background-color); 35 | color: var(--forground); 36 | } 37 | 38 | main { 39 | background: var(--main-color); 40 | } 41 | 42 | #profile-picture-container { 43 | color: var(--main-color); 44 | } 45 | 46 | 47 | #pronouns { 48 | color: var(--purple); 49 | } 50 | 51 | #pronouns a:link, 52 | #pronouns a:visited, 53 | #pronouns a:hover, 54 | #pronouns a:active { 55 | color: var(--comment); 56 | } 57 | 58 | #footer { 59 | color: var(--comment); 60 | } 61 | 62 | #footer a:link, 63 | #footer a:visited, 64 | #footer a:hover, 65 | #footer a:active { 66 | color: var(--comment); 67 | } 68 | 69 | a:link, 70 | a:visited { 71 | color: var(--forground); 72 | text-decoration-color: var(--forground); 73 | text-decoration: none; 74 | border-bottom: 1px dotted var(--comment); 75 | } 76 | a:hover, 77 | a:active { 78 | color: var(--forground); 79 | text-decoration-color: var(--forground); 80 | text-decoration: none; 81 | border-bottom: 2px solid var(--comment); 82 | } 83 | @media (prefers-color-scheme: dark) { 84 | .omg-icon.rainbow-me svg { 85 | fill: var(--forground); 86 | } 87 | } 88 | 89 | h1#name a i.fa-badge-check, .omg-verified { 90 | color: var(--purple) !important; 91 | } 92 | -------------------------------------------------------------------------------- /info/Address Services/pastebin.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about paste.lol, omg.lol’s awesome pastebin 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Pastebin 7 | 8 | The internet didn’t ask for another pastebin, and it certainly didn’t _need_ one, but here we are. As is customary around here, we found a cool domain (`paste.lol` in this case) and decided to put it to good use. 9 | 10 | Each omg.lol address has its own independently-managed pastebin, accessible at `yourname.paste.lol` and fully managed within omg.lol. 11 | 12 | ## Paste privacy 13 | 14 | All paste pages are **public**. Anyone who has the URL to one of your pastes will be able to see it. Don’t store anything that you wouldn’t want your mother, neighbor, ex-spouse, or boss to see. 15 | 16 | ## Managing pastes 17 | 18 | To create a new paste (an entry in your pastebin), just visit your **Dashboard**, click **Manage** under your address, and then click **Manage Pastebin**. From there you can easily add a new paste or edit existing ones. 19 | 20 | Every paste needs a title. Titles can consist of alphanumeric characters, dashes, underscores, and dots. If your paste title ends in a file extension, its public page will display the paste content with appropriate syntax highlighting, if possible. 21 | 22 | Pastes can be “listed” or “unlisted”. “Listed” pastes will appear on your paste directory (accessible at `yourname.paste.lol`). Pastes are unlisted by default. 23 | 24 | ## Accessing pastes 25 | 26 | You can access any of your pastes by visiting your pastebin URL (`yourname.paste.lol`) and slapping the paste title at the end (e.g. `yourname.paste.lol/my-paste`). 27 | 28 | You can also visit `paste.lol/yourname/my-paste` if you prefer. It works the same way. 29 | 30 | If you want to access a paste in plain text format, just append `/raw` to the end of its URL. 31 | 32 | To view a list of listed pastes for any given address’s pastebin, just visit `youraddress.paste.lol`. 33 | 34 | ## Reporting abuse 35 | 36 | In the extremely unlikely event that you’ve encountered an abusive paste (e.g. doxxing, hate speech, etc.) please report it by emailing [abuse@omg.lol](mailto:abuse@omg.lol). 37 | -------------------------------------------------------------------------------- /info/Account/two-factor-authentication.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Two-factor authentication (2FA) is a great way to secure your account 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Two-factor authentication 7 | 8 | Two-factor authentication, or 2FA for short, is a great way to secure your account. We encourage everyone to enable it, not just at omg.lol but everywhere. 9 | 10 | ## What is it? 11 | 12 | Traditional authentication relies on just one factor, like a password. If your password is compromised, there isn’t much standing between an attacker and your private information. By introducing a second factor into the authentication process, account security is increased substantially. 13 | 14 | The ideal 2FA setup involves something you _know_ (like a password), and something you _have_ (like a key, token, or one-time use code). 15 | 16 | ## How does it work? 17 | 18 | We use one-time password (OTP) codes for 2FA at omg.lol. Specifically, TOTP (or time-based one-time passwords). These are codes generated by an authenticator app that have a limited life span, which adds to the security. Even if an attacker somehow obtained your password and an OTP code, they’d have a limited amount of time to use the code before it expired. 19 | 20 | To get started, you’ll need an authenticator app. There are plenty out there for all platforms. (We recommend using the one that’s built into 1Password, our favorite password manager.) 21 | 22 | Then, in the _Two-factor authentication_ section of the [account setings](/account/settings#two-factor-authentication) screen: 23 | 24 | 1. Scan the QR code with your authenticator app. (If you can’t scan it for some reason, you can use the code instead.) 25 | 2. When your authenticator app provides a six digit code, enter it in the provided field on the account settings screen and then click the button. 26 | 3. Store the provided backup codes safely; you’ll need them in the event that you lose access to your authenticator. 27 | 28 | From this point forward 2FA will be enabled, providing the highest level of security for your account. You’ll provide a unique code from your authenticator app with each sign-in, and you’ll sleep well at night knowing that your account is super secure! 29 | -------------------------------------------------------------------------------- /profiles/themes/omglol-special.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Theme: omg.lol Special 4 | Author: Ediz Baha (@edizbaha) 5 | License: MIT 6 | Version: 1.0 7 | Description: omg.lol Special - This theme is inspired by the design of the omg.lol. 8 | 9 | */ 10 | 11 | @import url('https://omg.cache.lol/type/font-honey.css'); 12 | @import url('https://omg.cache.lol/type/font-lato-regular.css'); 13 | 14 | :root { 15 | --verified: #f783ac !important; 16 | } 17 | 18 | 19 | * { 20 | font-family: 'Lato', sans-serif; 21 | } 22 | 23 | h1 { 24 | font-family: 'VC Honey Deck', sans-serif; 25 | } 26 | 27 | body { 28 | background: #343A40; 29 | color: #F1F3F5; 30 | } 31 | 32 | main { 33 | background: unset; 34 | } 35 | 36 | a:link, 37 | a:visited { 38 | color: #F1F3F5; 39 | text-decoration-color: #F1F3F5; 40 | text-decoration: none; 41 | border-bottom: 1px dotted #F1F3F5; 42 | } 43 | 44 | a:hover, 45 | a:active { 46 | color: #A5A5A5; 47 | text-decoration-color: #A5A5A5; 48 | text-decoration: none; 49 | border-bottom: 2px solid #A5A5A5; 50 | } 51 | 52 | #profile-picture { 53 | border-radius: 15%; 54 | box-shadow: 0px 8px 0px rgb(0 0 0 / 15%); 55 | } 56 | 57 | #pronouns { 58 | color: #A5A5A5; 59 | } 60 | 61 | #footer a:link, #footer a:visited, #footer a:hover, #footer a:active { 62 | color: #A5A5A5; 63 | } 64 | 65 | /* Color for profile items list */ 66 | .fa-li, .fas, .omg-icon, .omg-icon path { 67 | color: #F783AC; 68 | fill: #F783AC; 69 | stroke: #FA638D; 70 | } 71 | 72 | /* Specific colors for individual icons */ 73 | .fa-plug { 74 | color: #FFE066; 75 | } 76 | 77 | .fa-badge-check { 78 | color: #74C0FC !important; /* important is needed to override inline style*/ 79 | } 80 | 81 | .omg-verified { 82 | color: #74C0FC !important; /* important is needed to override inline style*/ 83 | } 84 | 85 | .fa-briefcase { 86 | color: #FFE066; 87 | } 88 | 89 | .fa-map-marker-alt { 90 | color: #FFE066; 91 | } 92 | 93 | .fa-location-dot { 94 | color: #FFE066; 95 | } 96 | 97 | /* Additional theming for OMGEX (https://github.com/litdevs/omgex) */ 98 | 99 | .fa-clock { 100 | color: #FFE066; 101 | } 102 | 103 | .fa-smile-plus { 104 | color: #FFE066; 105 | } 106 | 107 | .fa-birthday-cake { 108 | color: #FFE066; 109 | } -------------------------------------------------------------------------------- /info/Email/email.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about email at omg.lol 3 | Last Updated: 2022-11-02 7:14 PM EDT 4 | --- 5 | 6 | # Email Guide 7 | 8 | Your omg.lol address comes with email forwarding. You can easily forward your emails sent to your address (e.g. `foobar@omg.lol`) to wherever you’d like, or take advantage of some more advanced email features if that’s your thing. 9 | 10 | ## Forwarding 11 | 12 | To forward your emails, just pull up your address, click **Email**, and enter the destination address in the Forwarding field. You can enter as many addresses as you’d like (just separate them with a comma), and your inbound emails will be forwarded simultaneously to those destination addresses. 13 | 14 | ## Mail Log 15 | 16 | You can view a helpful logfile of your recent email activity on your address’s Email screen. This will help you understand the email that’s been sent to your address and what happened to it once our mail server received it. The logs are limited and privacy-protecting (you can see where the message was coming from, but not much else). 17 | 18 | ## Address Delimiters 19 | 20 | Some of the fancier email services out there let you use a `+` plus sign to extend your address, e.g. `foobar+thing@example.com`. That works with omg.lol as well, of course. But we’ve gone the extra mile and have opened up the range of characters that you can use to ``'*+/=?^_`{|}~.``, which means that addresses like `foobar/beep@omg.lol` and `foobar=bazbat@omg.lol` are perfectly valid. Have fun with those. (Note that messages sent to addresses extended with delimeters will not appear in your mail log due to the way the logs are parsed.) 21 | 22 | ## Sending 23 | 24 | Aside from our [Fastmail](/info/fastmail) integration, we don’t support sending emails directly from your omg.lol address (yourname@omg.lol), as it’s intended to be used for forwarding only. But! You’re always in full control over your omg.lol domain name (yourname.omg.lol), so you’re welcome to configure that for use with any email service. Check out our guide on [Sending Email](/info/sending-email) for details on how to set that up. 25 | 26 | ## Mailhooks 27 | 28 | We’re building an entirely new kind of programmable email service. When ready, you’ll be able to turn over your inbound email to our [Mailhooks](/info/mailhooks) feature, enabling powerful automated processing of emails and other fun stuff. -------------------------------------------------------------------------------- /info/Address Services/statuslog.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: status.lol, our Statuslog service 3 | Last Updated: 2022-10-09 01:07 AM EDT 4 | --- 5 | 6 | # Statuslog 7 | 8 | We run a “statuslog” for omg.lol members at [status.lol](https://status.lol). It’s fun! 9 | 10 | ## What’s a statuslog? 11 | 12 | It’s like a weblog, but it’s designed for short status updates. Use it to share what’s happening at the moment: what you’re reading or watching, who you’re hanging out with, what you’re munching on, or maybe how you’re feeling. That kind of thing. 13 | 14 | ## Embedding your status elsewhere 15 | 16 | You can embed your status anywhere you’d like with a tiny bit of Javascript. To display a plain, unstyled version of your status by itself, just add this script to any web page: 17 | 18 | `` 19 | 20 | For example, if your address was `foo`, you’d use this: 21 | 22 | `` 23 | 24 | You can also include some parameters that will control what and how things are displayed: 25 | 26 | - `time` will include the relative time of when the status was posted (e.g. 2 days ago) 27 | - `link` will turn the time into a hyperlink back to the status page on status.lol 28 | - `fluent` will include the Fluent emoji 29 | - `pretty` will style the status pretty closely to what’s shown on status.lol 30 | - `no-emoji`will show no emoji in your status output 31 | 32 | So, if you’re looking for something that looks nice, you probably want to use this: 33 | 34 | `` 35 | 36 | ## Emoji 37 | 38 | The amazing emoji used on [status.lol](https://status.lol) are from the [Fluent Emoji](https://github.com/microsoft/fluentui-emoji) project. 39 | 40 | ## Webhook 41 | 42 | You can configure an outgoing webhook with your Statuslog (just plop the webhook URL into the field in the Statuslog preference panel). With an active webhook, this data will be POSTed to the webhook URL whenever you make a new Statuslog entry: 43 | 44 | ``` 45 | { 46 | "status_emoji": "\ud83e\ude9d", 47 | "status_text": "Webhooks for the Statuslog? Why not! https:\/\/home.omg.lol\/info\/statuslog", 48 | "posted": 1669044815 49 | } 50 | ``` 51 | 52 | Where `status_emoji` is the emoji used, `status_text` is the statuslog entry text, and `posted` is the UNIX epoch timestamp. -------------------------------------------------------------------------------- /info/Address Services/purls.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Learn all about PURLs, also known as persistent uniform resource locators 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # PURLs 7 | 8 | PURLs, or persistent uniform resource locators, are URLs that don’t change. omg.lol customers can make as many PURLs as they’d like. 9 | 10 | ## What’s a PURL? 11 | 12 | A PURL is a way to refer to something that changes (or might change) in a way that doesn’t. With a PURL, you can create an unchanging URL like `you.omg.lol/joke` and point it to some other URL like `reddit.com/r/Jokes/comments/hexrqq/what_did_yoda_say_when_he_saw_himself_in_4k/`. When people visit `you.omg.lol/joke` they’ll be taken to that Reddit joke page. But at any point you can change that destination URL, and make your `/joke` PURL go to another joke! A better one, maybe. 13 | 14 | ## Why use a PURL? 15 | 16 | There are all kinds of uses. One is as simple as the example above—a “joke of the day” where the URL never changes but the joke does. PURLs are also useful for pointing to very specific resources that don’t move often—but when they do, you’re able to update the destination URL and effectively keep the PURL accurate indefinitely. 17 | 18 | ## Accessing your PURLs 19 | 20 | By default, all of your PURLs work on two domains: `omg.lol` and `url.lol` (which is our dedicated PURL service domain). This means that for every PURL you create, the following URLs will resolve to it: 21 | 22 | 1. `you.omg.lol/purl` 23 | 2. `omg.lol/you/purl` 24 | 3. `you.url.lol/purl` 25 | 26 | The `url.lol` domain exists for your convenience, in the event that your omg.lol domain is configured in such a way that you can’t use PURLs (e.g. DNS settings that point it away from our server). 27 | 28 | ## PURL hit counter 29 | 30 | Every time someone accesses your PURL, we’ll count a hit for you. You can view the total hits for each of your PURLs on your addresses’s PURLs page. We don’t track any data associated with PURL visits and respect everyone’s privacy. 31 | 32 | ## Preview page 33 | 34 | You can append `/wut` to any PURL to view a URL preview page, if you’d like to avoid surprises. 35 | 36 | ## Do’s and Don’ts 37 | 38 | **Do** make PURLs that are useful, convenient, and fun! These are harmless PURLs, and they are encouraged. 39 | 40 | **Don’t** make PURLs that are spammy, point to malicious resources, or might make anyone have a bad day. These are harmful PURLs and they’re unwelcome here. 41 | 42 | ## Reporting abuse 43 | 44 | You can report abuse related to PURLs (or anything else) by emailing [abuse@omg.lol](mailto:abuse@omg.lol) at any time. 45 | -------------------------------------------------------------------------------- /api/docs/Directory.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "503b195f-ba36-4323-9cd9-00da416652f5", 4 | "name": "Directory", 5 | "description": "Retrieve the address directory, consisting of addresses that have opted in to be listed", 6 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 7 | "_exporter_id": "12532425" 8 | }, 9 | "item": [ 10 | { 11 | "name": "Retreive the address directory", 12 | "request": { 13 | "method": "GET", 14 | "header": [], 15 | "url": { 16 | "raw": "https://{{base_url}}/directory", 17 | "protocol": "https", 18 | "host": [ 19 | "{{base_url}}" 20 | ], 21 | "path": [ 22 | "directory" 23 | ] 24 | }, 25 | "description": "Retrieve the address directory" 26 | }, 27 | "response": [ 28 | { 29 | "name": "Retreive the address directory", 30 | "originalRequest": { 31 | "method": "GET", 32 | "header": [], 33 | "url": { 34 | "raw": "https://{{base_url}}/directory", 35 | "protocol": "https", 36 | "host": [ 37 | "{{base_url}}" 38 | ], 39 | "path": [ 40 | "directory" 41 | ] 42 | } 43 | }, 44 | "status": "OK", 45 | "code": 200, 46 | "_postman_previewlanguage": "json", 47 | "header": [ 48 | { 49 | "key": "Date", 50 | "value": "Fri, 18 Nov 2022 17:23:18 GMT" 51 | }, 52 | { 53 | "key": "Server", 54 | "value": "Apache" 55 | }, 56 | { 57 | "key": "Access-Control-Allow-Origin", 58 | "value": "*" 59 | }, 60 | { 61 | "key": "Access-Control-Allow-Methods", 62 | "value": "GET,POST,OPTIONS,DELETE,PUT,PATCH" 63 | }, 64 | { 65 | "key": "Access-Control-Allow-Headers", 66 | "value": "Authorization,Content-Type" 67 | }, 68 | { 69 | "key": "Content-Length", 70 | "value": "1792" 71 | }, 72 | { 73 | "key": "Keep-Alive", 74 | "value": "timeout=5, max=100" 75 | }, 76 | { 77 | "key": "Connection", 78 | "value": "Keep-Alive" 79 | }, 80 | { 81 | "key": "Content-Type", 82 | "value": "application/json; charset=utf-8" 83 | } 84 | ], 85 | "cookie": [], 86 | "body": "{\n \"request\": {\n \"status_code\": 200,\n \"success\": true\n },\n \"response\": {\n \"message\": \"Here’s the omg.lol directory.\",\n \"url\": \"https://home.omg.lol/directory\",\n \"directory\": [\n \"0\",\n \"adam\",\n ...\n ]\n }\n}" 87 | } 88 | ] 89 | } 90 | ] 91 | } -------------------------------------------------------------------------------- /api/docs/Service.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "71cd737d-246e-4125-a421-3188d2ab6670", 4 | "name": "Service", 5 | "description": "Obtain service information about omg.lol", 6 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 7 | "_exporter_id": "12532425" 8 | }, 9 | "item": [ 10 | { 11 | "name": "Retrieve service information and statistics", 12 | "request": { 13 | "auth": { 14 | "type": "noauth" 15 | }, 16 | "method": "GET", 17 | "header": [], 18 | "url": { 19 | "raw": "https://{{base_url}}/service/info", 20 | "protocol": "https", 21 | "host": [ 22 | "{{base_url}}" 23 | ], 24 | "path": [ 25 | "service", 26 | "info" 27 | ] 28 | }, 29 | "description": "Get information and statistics about the omg.lol service" 30 | }, 31 | "response": [ 32 | { 33 | "name": "Retrieve service information and statistics", 34 | "originalRequest": { 35 | "method": "GET", 36 | "header": [], 37 | "url": { 38 | "raw": "https://{{base_url}}/service/info", 39 | "protocol": "https", 40 | "host": [ 41 | "{{base_url}}" 42 | ], 43 | "path": [ 44 | "service", 45 | "info" 46 | ] 47 | } 48 | }, 49 | "status": "OK", 50 | "code": 200, 51 | "_postman_previewlanguage": "json", 52 | "header": [ 53 | { 54 | "key": "Date", 55 | "value": "Thu, 23 Jun 2022 04:53:45 GMT" 56 | }, 57 | { 58 | "key": "Server", 59 | "value": "Apache" 60 | }, 61 | { 62 | "key": "Access-Control-Allow-Origin", 63 | "value": "*" 64 | }, 65 | { 66 | "key": "Access-Control-Allow-Methods", 67 | "value": "GET,POST,OPTIONS,DELETE,PUT" 68 | }, 69 | { 70 | "key": "Access-Control-Allow-Headers", 71 | "value": "Authorization" 72 | }, 73 | { 74 | "key": "Content-Length", 75 | "value": "343" 76 | }, 77 | { 78 | "key": "Keep-Alive", 79 | "value": "timeout=5, max=100" 80 | }, 81 | { 82 | "key": "Connection", 83 | "value": "Keep-Alive" 84 | }, 85 | { 86 | "key": "Content-Type", 87 | "value": "text/json;charset=UTF-8" 88 | } 89 | ], 90 | "cookie": [], 91 | "body": "{\n \"request\": {\n \"status_code\": 200,\n \"success\": true\n },\n \"response\": {\n \"message\": \"As of 2022-10-05T03:13:14+00:00, omg.lol has 1,811 members and hosts 1,685 active addresses. Of those, 888 have active profiles or web pages.\",\n \"members\": 1811,\n \"addresses\": 1685,\n \"profiles\": 888\n }\n}" 92 | } 93 | ] 94 | } 95 | ] 96 | } -------------------------------------------------------------------------------- /info/Feedback & Help/thanks.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Thanks to all of the awesome people who have helped us out! 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Thanks / Hall of Fame 7 | 8 |

We sincerely appreciate these amazing folks who have helped OMG.LOL with their responsible disclosure of bugs, vulnerabilities, and so much other stuff.

9 | 10 | 35 | 36 |

Want to get on this list? Report any bugs to bugs@omg.lol.

37 | -------------------------------------------------------------------------------- /info/Community/irc-clients.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: IRC clients used by the community 3 | Last Updated: 2022-10-11 01:03 AM EDT 4 | --- 5 | 6 | # IRC Clients 7 | 8 | If you want to use our IRC server, you’ll need to connect with a client. Our [IRC server article](/info/community/irc) talks all about how to get connected, but if you’re wondering what client to use, you can start here. 9 | 10 | Since IRC has been around for a while, there are [a ton of clients](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) out there. This article will focus on ones that members of our community use. 11 | 12 | ## irssi 13 | 14 | [irssi](https://irssi.org) is a classic terminal-friendly client. Simple but powerful (as most terminal stuff goes). 15 | 16 | ## WeeChat 17 | 18 | [WeeChat](https://weechat.org) is another terminal-friendly client that’s extremely flexible. 19 | 20 | ## Quassel 21 | 22 | [Quassel](https://quassel-irc.org) is a cross-platform client with a unique client/core model. In addition to the client connecting directly to the IRC server, you can also set up a “core” that will maintain a connection to the server, and then your client(s) can connect to that core. This makes it easy to maintain a persistent connection and to easily use multiple different devices. 23 | 24 | ## IRCCloud 25 | 26 | [IRCCloud](https://www.irccloud.com/) is a service that offers a persistent cloud connection to the IRC server, a web interface, mobile apps, and a built-in bouncer (so you can also connect with any other client you’d like). It costs $50/year, but configuration is straightforward and the service is slick. 27 | 28 | ## Convos 29 | 30 | [Convos](https://convos.chat/) is a open-source web-based IRC client that offers a persistent connection to the IRC server, video chatting via Jitsi and similar features to IRCCloud. It does require you to provide your own server to host the client, but the configuration is straightforward and should get you started with it within 5-10 minutes. Alternatively, you can join one hosted by the omg.lol community called [KAIFA](https://orc.kaifa.ch). 31 | 32 | ### How to connect via Convos 33 | Head to connections and click on add connection, use `irc.social.lol:6697` as the server and port, check *Secure Connection* then expand *Authentication Settings* and fill out the both fields with your IRC login credentials. Optionally you can also fill out the *Nickname* field to let the Client set a nickname for you. 34 | 35 | ## The Lounge 36 | 37 | [The Lounge](https://thelounge.chat) is a web-based IRC client that offers an open-source alternative to IRCCloud. You do need your own server to host it, but some members of the omg.lol community let other members use theirs. Contact [Bye](https://bye.omg.lol) for more details. 38 | 39 | ### Configuration 40 | 41 | On the Connect screen in The Lounge, use `irc.social.lol` as the server, and your IRC password in the *server password* slot. See more on the [IRC help page](/help/irc) 42 | -------------------------------------------------------------------------------- /info/Profile & Web/advanced-editor.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: The advanced web editor is our most advanced editor yet, as the name would suggest 3 | Last Updated: 2022-10-15 1:03 PM EDT 4 | --- 5 | 6 | # Advanced Web Editor 7 | 8 | Our Advanced web editor is a major improvement over the [Classic editor](/info/classic-editor), offering a unique Markdown-powered approach to managing your profile page. With this editor, your profile page is essentially a Markdown document, making it easy to add content and rearrange things however you wish. 9 | 10 | ## Profile or Web pages 11 | 12 | The Advanced editor can be used to edit and publish [Profile](/info/profiles) pages (with the aforementioned Markdown document approach), or to manage a simple web page (just set your **Page type** to **Raw HTML only**). 13 | 14 | ## Profile Metadata 15 | 16 | The Advanced editor uses a custom approach to defining profile metadata, intended to preserve the beauty of the underlying Markdown document. You can define a metadata block like this: 17 | 18 | ``` 19 | | Pronouns: they/them 20 | | Occupation: Seed Preservationist 21 | | Location: Svalbard 22 | ``` 23 | 24 | Each line above is its own _metadata item_, which is in turn rendered into HTML with a “metadata” class and a unique ID to aid in page styling and structure. For example, the metadata block above would be rendered into HTML as: 25 | 26 | ``` 27 |
they/them
28 |
Seed Preservationist
29 |
Svalbard
30 | ``` 31 | 32 | Certain metadata items also receive icons automatically, but this can be disabled if desired. 33 | 34 | ## Profile Sections 35 | 36 | Sections can be added to pages with a special section indicator, like this: 37 | 38 | ``` 39 | --- Bio --- 40 | ``` 41 | 42 | This would be rendered as: 43 | 44 | ``` 45 |
46 | ... 47 |
48 | ``` 49 | 50 | The contents of this `
` would consist of whatever comes after the section indicator, up to the end of the document or the start of another section indicator. (As such, it’s not possible to nest sections... yet.) 51 | 52 | ## Profile Items 53 | 54 | If you have a `--- Profile Items ---` section indicator in your profile document, you’ll receive a special section that intelligently applies icons to whatever lists to include within that section. Learn more about how this works in our [Profile Items](/info/profile-items) article. 55 | 56 | ## Profile Picture 57 | 58 | Your profile picture will be rendered wherever the `{profile-picture}` indicator is placed within your document. 59 | 60 | ## Custom Metadata 61 | 62 | You can fill in the custom metadata fields to define a page title and description (or leave them blank and we’ll do it for you). 63 | 64 | ## Custom CSS 65 | 66 | Specify any amount of custom CSS you’d like. You can get creative here and really transform the entire look and feel of your page! 67 | 68 | ## Custom `` content 69 | 70 | Need to put some custom elements in your page head? Go for it! 71 | -------------------------------------------------------------------------------- /info/Account/dashboard.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about the Dashboard, the heart your omg.lol services 3 | Last Updated: 2022-10-14 9:58 PM EDT 4 | --- 5 | 6 | # Dashboard 7 | 8 | The Dashboard is the heart of your omg.lol services, and it’s usually the first thing you’ll see when you sign in. It provides high-level important information, and also makes it easy to access everything within omg.lol. Everything on it is a large button. 9 | 10 | It looks like this: 11 | 12 |
13 | 14 |
15 |

foobar

16 |

 

17 |

 

18 |
19 | 20 |
21 |

Addresses

22 |

 

23 |

 

24 |
25 | 26 |
27 |

News

28 |

 

29 |

 

30 |
31 | 32 |
33 |

Account

34 |

 

35 |

 

36 |
37 | 38 |
39 |

Billing

40 |

 

41 |

 

42 |
43 | 44 |
45 |

Purchases

46 |

 

47 |

 

48 |
49 | 50 |
51 | 52 | The first thing on your Dashboard is your address (or addresses, if you have more than one). You can click into your address to access its features. Nearby you’ll see a quick summary of any recent omg.lol news, as well as options for accessing your account settings, billing, and more. 53 | 54 | -------------------------------------------------------------------------------- /info/Email/sending-email.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Sending email with your omg.lol address 3 | Last Updated: 2022-10-21 4:31 PM EDT 4 | --- 5 | 6 | # Sending Email 7 | 8 | The [email](/info/email) service that omg.lol provides is focused on email forwarding, and we don’t offer any way to send email directly. We’re happy to partner with responsible and ethical email providers who are willing to allow mutual customers to send email from omg.lol addresses. Currently we have such a partnership with [Fastmail](/info/fastmail), which is great! 9 | 10 | ## Sending email from the omg.lol domain 11 | 12 | Currently, the only way to send email from the omg.lol domain (i.e. from foobar@omg.lol) is to use [Fastmail](/info/fastmail). To prevent abuse of the omg.lol namespace, our DMARC policy is configured to reject emails from unauthorized sources. Because of this, it’s not possible to reliably fake or spoof email directly from the omg.lol domain. 13 | 14 | ## Sending email from your omg.lol domain 15 | 16 | With our [DNS](/info/dns) service, you can configure your omg.lol domain (i.e. foobar.omg.lol) to work with any email provider that supports external domains. The process for doing this will vary across providers, but will generally look like this: 17 | 18 | 1. Add your desired email domain to your account at the email provider. This can be your omg.lol (e.g. foobar.omg.lol) or any subdomain off of that domain that you wish (e.g. mail.foobar.omg.lol). 19 | 20 | 2. Your email provider will inform you of the required DNS settings. Typically, this will take the form of setting up one or more MX records, but sometimes also includes other records (for SPF and DKIM). 21 | 22 | For example, when setting up a domain such as `mail.foobar.omg.lol` with iCloud Mail, Apple requires the following DNS configuration in place: 23 | 24 | - An `MX` record with the name `mail.foobar.omg.lol` and the data `mx01.mail.icloud.com.` with a priority value of `10`. 25 | - An `MX` record with the name `mail.foobar.omg.lol` and the data `mx02.mail.icloud.com.` with a priority value of `20`. 26 | - A `TXT` record with the name `mail.foobar.omg.lol` and the data `apple-domain=FFmFXBRB0AlujVEc`. 27 | - A `TXT` record with the name `mail.foobar.omg.lol` and the data ` "v=spf1 include:icloud.com ~all"`. 28 | - A `CNAME` record with the name `sig1._domainkey.mail.foobar.omg.lol` and the data `sig1.dkim.mail.foobar.omg.lol.at.icloudmailadmin.com.`. 29 | 30 | The records above are just examples (again, just for Apple’s iCloud Mail), and your own email provider may require a different setup. 31 | 32 | Once you’ve configured the required DNS records, your email provider will likely validate that the DNS records are in place and that they’ve been set up correctly. Changes to DNS records can take some time to propagate across the internet, and you can use a tool like [dnschecker.org](https://dnschecker.org) to check on the status. 33 | 34 | Your email provider will likely inform you when they’ve confirmed that everything has been set up correctly, and then you’ll be ready to send email from the address that you’ve configured. 35 | -------------------------------------------------------------------------------- /info/Profile & Web/profile-items.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: How to manage the many beautiful items on your omg.lol profile 3 | Last Updated: 2022-10-22 6:40 PM EDT 4 | --- 5 | 6 | # Profile Items 7 | 8 | One of the best parts of an [omg.lol profile](/info/profiles) is the total flexibility you have in adding and managing your profile items. 9 | 10 | Your profile items can be just about anything: plain text, a link to something (like a personal website or a social media profile), or whatever. Add as many as you’d like! You can re-order them any time (by dragging them around in the Classic editor, or just changing their text placement in the Advanced editor). 11 | 12 | ## Adding items 13 | 14 | - In the Classic editor: Click the friendly **Add an item** button to get a new profile item field. 15 | - In the Advanced editor: Just insert a new Markdown list item (starting with `-`) within the `--- Profile Items ---` section of your page. 16 | 17 | ## Removing items 18 | 19 | If you want to remove a profile item in the Classic editor, just clear the contents of the field. When you save your profile, it’ll vanish. In the Advanced editor, just delete the text and list item. 20 | 21 | ## Using Markdown 22 | 23 | Markdown is supported, so you can format text or add links as you see fit. For example, you can add a link with custom text like this: 24 | 25 | `[My awesome link text](https://myawesomesite.example.com)` 26 | 27 | ## Linking to social profiles or other sites 28 | 29 | When you link to a known social profile or website, we’ll try to clean up the display of that link for you by showing a nice icon and your username (taken from the URL). If you’re not seeing a certain icon that you’re expecting, [get in touch](/info/contact) or [add an icon request on GitHub](https://github.com/neatnik/omg.lol/issues/new?assignees=&labels=icon&template=icons.yml&title=%5BIcon%5D+) and we’ll add it for you. 30 | 31 | ## Special Items 32 | 33 | * {snowfall} will make it snow on your profile. 34 | * {norelme} will disable the global default `rel="me"` attribute applied to all profile page links. 35 | 36 | ## Keys 37 | 38 | You can easily share your [cryptographic public keys](/info/keys) on your profile. These key types are supported: 39 | 40 | * `{pgp-key}` for your PGP key 41 | * `{ssh-key}` for your SSH key 42 | * `{age-key}` for your age key 43 | * `{cosign-key}` for your Cosign key 44 | * `{minisign-key}` for your Minisign key 45 | 46 | ## Choosing icons 47 | 48 | If you’d like to have a specific icon appear on a profile item, just use an icon tag, like this: `{cat}`. Put it at the end of the line, and when your profile is published, the tag will be removed and the icon will be applied. You can use any icon in the Font Awesome free set, as well as any of the custom omg.lol icons. 49 | 50 | For example: 51 | 52 | * ` - https://instagram.com/foobar` will show the Instagram icon by default 53 | * ` - https://instagram.com/foobar {cat}` will show the cat icon (useful for Instagram feeds dedicated to your cat) 54 | 55 | 56 | 57 | Want to add a new icon tag? [Add an issue in GitHub](https://github.com/neatnik/omg.lol/issues/new) or just [get in touch](/info/contact) to request one. 58 | -------------------------------------------------------------------------------- /info/Email/fastmail.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: omg.lol loves Fastmail, and you can too 3 | Last Updated: 2022-10-14 3:18 PM EDT 4 | --- 5 | 6 | # omg.lol & Fastmail 7 | 8 | We’re really into email, and we deeply value privacy. So, naturally, we absolutely love [Fastmail](http://fastmail.com/omglol/). Fastmail is what we use for our personal email—for nearly a decade now!—and it’s so easy to recommend because it’s _that_ good. 9 | 10 | With Fastmail, you can take your omg.lol service to the next level and actually **send email** from your @omg.lol email address. It only takes a few seconds to set up, and you’ll get fully hosted email that’s private, reliable, and, yes, _fast_. Check out [the full list of features](https://www.fastmail.com/omglol/#pricing) to see everything you get and pricing. 11 | 12 | (Also, because you’re awesome, you’ll get 10% off your first year. But don’t sign up for the discount; sign up because your privacy matters and you deserve the best email service out there.) 13 | 14 |
15 | 16 |
17 |

Ready to sign up?

18 |

You’re about to enjoy the best email experience of your life.

19 |

Let’s do this

20 |
21 |
22 |

Already a Fastmail customer?

23 |

You can start using your omg.lol address with your existing service right now.

24 |

Read on below!

25 |
26 | 27 |
28 | 29 | ## Setup 30 | 31 | Fastmail customers enjoy the amazing perk of being able to send email from their omg.lol addresses. It’s so much fun. 32 | 33 | If you’re not already a Fastmail customer, you can [fix that in mere seconds](http://fastmail.com/omglol/). If you’re already enjoying their service, read on to learn how to get things up and running. (It looks like a lot of steps, but it’s just a few clicks!) 34 | 35 | ### First: Point your omg.lol email to Fastmail 36 | 37 | 1. From your [omg.lol Dashboard](/dashboard), click on your address. 38 | 2. Then click **Manage Forwarding** and set your forwarding address to your Fastmail address. 39 | 3. Click the **Update** button and that’s that. 40 | 41 | ### Then: Add your omg.lol email address to Fastmail 42 | 43 | In Fastmail, click the Mail menu in the upper left corner and then click **Settings**. Then: 44 | 45 | 1. Click **Sending Identities** (in the “Customize” section). 46 | 2. Click **Add Identity**. 47 | 3. Enter your full omg.lol email address and click **Next**. 48 | 4. You can enter your name and custom signature, or just click **Save** (you can always change these later). 49 | 5. In your list of sending identities, you’ll see that the identity is unverified. Click **Verify**, and then **Send Verification Code**. 50 | 6. Now, check your email. The verification email is probably already waiting for you, because Fastmail is _fast_. 51 | 7. Grab the code from the email, flip back over to Fastmail, put it in the verificartion field, and click **Verify**. 52 | 53 | And with that, you’re good to go! At the top of the Sending Identities screen in Fastmail, you can select your desired default “From” address that you’d like to use for outgoing email. (You can also choose from any of your addreses and sending identities on an individual basis when composing an email.) 54 | -------------------------------------------------------------------------------- /api/docs/Preferences.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "92c8ffcc-c0dd-4224-94b8-e1d08e23ecb8", 4 | "name": "Preferences", 5 | "description": "Manage preferences for omg.lol accounts, addresses, and objects", 6 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 7 | "_exporter_id": "12532425" 8 | }, 9 | "item": [ 10 | { 11 | "name": "Save an individual preference", 12 | "request": { 13 | "auth": { 14 | "type": "bearer", 15 | "bearer": [ 16 | { 17 | "key": "token", 18 | "value": "{{api_key}}", 19 | "type": "string" 20 | } 21 | ] 22 | }, 23 | "method": "POST", 24 | "header": [], 25 | "body": { 26 | "mode": "raw", 27 | "raw": "{\"item\": \"foo\", \"value\": \"bar\"}" 28 | }, 29 | "url": { 30 | "raw": "https://{{base_url}}/preferences/:owner", 31 | "protocol": "https", 32 | "host": [ 33 | "{{base_url}}" 34 | ], 35 | "path": [ 36 | "preferences", 37 | ":owner" 38 | ], 39 | "variable": [ 40 | { 41 | "key": "owner", 42 | "value": "adam" 43 | } 44 | ] 45 | }, 46 | "description": "Save a single preference" 47 | }, 48 | "response": [ 49 | { 50 | "name": "Save an individual preference", 51 | "originalRequest": { 52 | "method": "POST", 53 | "header": [], 54 | "body": { 55 | "mode": "raw", 56 | "raw": "{\"item\": \"foo\", \"value\": \"bar\"}" 57 | }, 58 | "url": { 59 | "raw": "https://{{base_url}}/preferences/:owner", 60 | "protocol": "https", 61 | "host": [ 62 | "{{base_url}}" 63 | ], 64 | "path": [ 65 | "preferences", 66 | ":owner" 67 | ], 68 | "variable": [ 69 | { 70 | "key": "owner", 71 | "value": "foo" 72 | } 73 | ] 74 | } 75 | }, 76 | "status": "OK", 77 | "code": 200, 78 | "_postman_previewlanguage": "json", 79 | "header": [ 80 | { 81 | "key": "Date", 82 | "value": "Wed, 05 Oct 2022 03:14:32 GMT" 83 | }, 84 | { 85 | "key": "Server", 86 | "value": "Apache" 87 | }, 88 | { 89 | "key": "Access-Control-Allow-Origin", 90 | "value": "*" 91 | }, 92 | { 93 | "key": "Access-Control-Allow-Methods", 94 | "value": "GET,POST,OPTIONS,DELETE,PUT" 95 | }, 96 | { 97 | "key": "Access-Control-Allow-Headers", 98 | "value": "Authorization,Content-Type" 99 | }, 100 | { 101 | "key": "Content-Length", 102 | "value": "203" 103 | }, 104 | { 105 | "key": "Keep-Alive", 106 | "value": "timeout=5, max=100" 107 | }, 108 | { 109 | "key": "Connection", 110 | "value": "Keep-Alive" 111 | }, 112 | { 113 | "key": "Content-Type", 114 | "value": "application/json; charset=utf-8" 115 | } 116 | ], 117 | "cookie": [], 118 | "body": "{\n \"request\": {\n \"status_code\": 200,\n \"success\": true\n },\n \"response\": {\n \"message\": \"Your preference has been saved.\",\n \"item\": \"foo\",\n \"value\": \"bar\"\n }\n}" 119 | } 120 | ] 121 | } 122 | ] 123 | } -------------------------------------------------------------------------------- /info/Address Services/dns.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: DNS can be complex, but we try to keep it simple 3 | Last Updated: 2022-11-26 1:35 AM EST 4 | --- 5 | 6 | # DNS Guide 7 | 8 | DNS, or *domain name system*, is a system that maps domain names to IP addresses. (It does other things, too, but bear with me.) 9 | 10 | For example, omg.lol doesn’t really “live” at the domain omg.lol. It _really_ lives at the IP address 159.89.247.131, but it’s not practical to say things like “hey check out my web site at one five nine dot eight nine dot two four seven dot one three one,” so the internet needed a way to map domain names to IP addresses. And DNS is that very system. 11 | 12 | ## DNS records 13 | 14 | There are several types of DNS records, but the main ones that people care about (and the ones that you can configure at omg.lol) are: 15 | 16 | * **A records**: These are the most basic types of record. They say “map example.com to 93.184.216.34.” 17 | * **AAAA records**: Just like A records, but for IPv6 addresses. 18 | * **CNAME records**: These are nifty records that let you map a hostname to another hostname, creating an alias. 19 | * **MX records**: These define special rules for mail handling for a hostname. 20 | * **TXT records**: These contain arbitrary chunks of text data, useful for a variety of purposes. 21 | * **NS records**: Used for directing traffic to external nameservers. 22 | * **SRV records**: Provides information on how to direct traffic to specific services (with specific protocols and ports) that live elsewhere. 23 | 24 | ## Managing DNS records 25 | 26 | To manage your DNS records, just pull up your address, and then click on the **Manage DNS** button. From there, you can t add new records, view your existing records, or delete unwanted records. 27 | 28 | You can configure DNS records for your omg.lol subdomain directly (e.g. you.omg.lol), or any sub-subdomain (e.g. foo.you.omg.lol, foo.bar.you.omg.lol, etc.). 29 | 30 | Some things to keep in mind: 31 | 32 | ### Hostnames 33 | 34 | When adding a new record, whatever you put in the Name (hostname) field will become a sub-entry off of your root domain. For example, if your omg.lol address is @foobar and you enter `yeet`, the resulting record will be for `yeet.foobar.omg.lol`. 35 | 36 | You can enter `@` to represent your root domain (e.g. `foobar.omg.lol`). 37 | 38 | ### SRV records 39 | 40 | When entering SRV records, ensure that the Data field contains your `flags` and `tag` values before the destination. For example, a valid entry might be `128 issue letsencrypt.org`. 41 | 42 | ### CAA records 43 | 44 | When entering CAA records, ensure that the Data field contains the `weight` and `port` values before the destination. For example, a valid entry might be `0 5 25565 foobar.omg.lol`. 45 | 46 | ## DNS “Gotchas” 47 | 48 | 1. You can’t create a CNAME record on any hostname that has another type of active record. 49 | 2. Similarly, you can't create any other type of record on a hostname that already has an active CNAME record. 50 | 51 | ## DNS Caching 52 | 53 | DNS servers across the internet cache records for periods of time (this is related to the “TTL” or “time to live” value that you define with your records). When you add new records or make changes to existing records, it can take a while before you (and everyone else on the internet) can see those changes because of the caching in place across those servers. Everything will eventually be updated, but sometimes it just takes a little patience. One way to check the status of a DNS record is to use a site like [dnschecker.org](https://dnschecker.org), which will show how various DNS servers around the world are serving your DNS records. -------------------------------------------------------------------------------- /profiles/icons/omg.lol-glyphs.css: -------------------------------------------------------------------------------- 1 | .omg-anilist:before { content: "\e044"; } 2 | .omg-archiveofourown:before { content: "\e045"; } 3 | .omg-basic-attention-token:before { content: "\e046"; } 4 | .omg-bookshop:before { content: "\e047"; } 5 | .omg-buymeacoffee:before { content: "\e048"; } 6 | .omg-cash-app:before { content: "\e049"; } 7 | .omg-clarus:before { content: "\e061"; } 8 | .omg-clubhouse:before { content: "\e052"; } 9 | .omg-coindrop:before { content: "\e050"; } 10 | .omg-eyeem:before { content: "\e051"; } 11 | .omg-fastmail:before { content: "\e001"; } 12 | .omg-fediverse:before { content: "\e053"; } 13 | .omg-geotastic:before { content: "\e056"; } 14 | .omg-giphy:before { content: "\e002"; } 15 | .omg-gumroad:before { content: "\e003"; } 16 | .omg-hackerone:before { content: "\e004"; } 17 | .omg-hey:before { content: "\e054"; } 18 | .omg-honk:before { content: "\e005"; } 19 | .omg-instapaper:before { content: "\e055"; } 20 | .omg-keyoxide:before { content: "\e006"; } 21 | .omg-ko-fi:before { content: "\e060"; } 22 | .omg-letterboxd:before { content: "\e007"; } 23 | .omg-liberapay:before { content: "\e008"; } 24 | .omg-lichess:before { content: "\e009"; } 25 | .omg-litecoin:before { content: "\e010"; } 26 | .omg-literal:before { content: "\e011"; } 27 | .omg-lobsters:before { content: "\e012"; } 28 | .omg-matrix:before { content: "\e013"; } 29 | .omg-mediawiki:before { content: "\e065"; } 30 | .omg-musicboard:before { content: "\e014"; } 31 | .omg-myanimelist:before { content: "\e015"; } 32 | .omg-ninegag:before { content: "\e043"; } 33 | .omg-nintendo-switch:before { content: "\e016"; } 34 | .omg-notion:before { content: "\e017"; } 35 | .omg-opensea:before { content: "\e018"; } 36 | .omg-osk:before { content: "\e019"; } 37 | .omg-osu:before { content: "\e057"; } 38 | .omg-pinboard:before { content: "\e020"; } 39 | .omg-plutonium:before { content: "\e021"; } 40 | .omg-polywork:before { content: "\e022"; } 41 | .omg-postype:before { content: "\e023"; } 42 | .omg-prami:before { content: "\e042"; } 43 | .omg-procreate:before { content: "\e059"; } 44 | .omg-pronounspage:before { content: "\e058"; } 45 | .omg-rainbow-me:before { content: "\e024"; } 46 | .omg-rarible:before { content: "\e025"; } 47 | .omg-ravencoin:before { content: "\e026"; } 48 | .omg-revue:before { content: "\e027"; } 49 | .omg-roblox:before { content: "\e028"; } 50 | .omg-session:before { content: "\e062"; } 51 | .omg-signal-app:before { content: "\e029"; } 52 | .omg-sourcehut:before { content: "\e066"; } 53 | .omg-spacehey:before { content: "\e030"; } 54 | .omg-spark-ar:before { content: "\e031"; } 55 | .omg-tetrio:before { content: "\e032"; } 56 | .omg-threema:before { content: "\e033"; } 57 | .omg-tinyletter:before { content: "\e034"; } 58 | .omg-toss:before { content: "\e035"; } 59 | .omg-venmo:before { content: "\e036"; } 60 | .omg-verified:before { content: "\e063"; } 61 | .omg-vero:before { content: "\e037"; } 62 | .omg-wattpad:before { content: "\e038"; } 63 | .omg-well:before { content: "\e039"; } 64 | .omg-wikimedia-community:before { content: "\e064"; } 65 | .omg-writeas:before { content: "\e040"; } 66 | .omg-xmpp:before { content: "\e041"; } 67 | .omg-codeberg:before { content: "\e073"; } 68 | .omg-sudomemo:before { content: "\e067"; } 69 | .omg-rate-your-music:before { content: "\e068"; } 70 | .omg-read-cv:before { content: "\e069"; } 71 | .omg-revolt:before { content: "\e070"; } 72 | .omg-vukky:before { content: "\e071"; } 73 | .omg-laker:before { content: "\e072"; } 74 | .omg-neatnik:before { content: "\e074"; } 75 | .omg-credly:before { content: "\e075"; } 76 | .omg-pixelfed:before { content: "\e076"; } 77 | .omg-passkey:before { content: "\e077"; } 78 | .omg-ecosia:before { content: "\e078"; } 79 | .omg-mltshp:before { content: "\e080"; } 80 | .omg-andycarolan:before { content: "\e081"; } 81 | -------------------------------------------------------------------------------- /info/Addresses/emoji-addresses.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Emoji addresses are fun, but can be finicky 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Emoji addresses 7 | 8 | We’re happy to offer emoji addresses at omg.lol. Emoji are fun and cool, but they can pose some technical challenges in different contexts. You should understand these issues before purchasing an emoji address on omg.lol. 9 | 10 | ## Background 11 | 12 | Emoji are part of a more complex (“multibyte”) character set than ordinary letters and numbers. Email and web technologies were built during a time when emoji didn’t exist, so support for emoji in both can be inconsistent (ranging from “quirky” to “downright busted” depending on different factors). 13 | 14 | ## Web use 15 | 16 | First, the good news: in general, emoji work pretty well on the web. For example, the address [🍋.omg.lol](https://🍋.omg.lol) will work in just about any modern web browser. But details around the behavior will differ between browsers. Safari will show the emoji in the address bar (i.e. `🍋.omg.lol`), but Chrome shows `xn--li8h.omg.lol`. The gibberish you see in the URL is known as [Punycode](https://en.wikipedia.org/wiki/Punycode), which is a standard that converts special characters (like emoji, accented letters, or diacritics) into a plain text representation that can play nicely with older tech. Both `🍋.omg.lol` and `xn--li8h.omg.lol` are functionally identical; one is just much sexier than the other. 17 | 18 | ## Email use 19 | 20 | Email is where things become a bit bumpier. Support for emoji and other special characters is spotty across much of the underlying tech, and different implementations of that tech handle emoji support differently. 21 | 22 | Let’s say you send an email to `🍋@omg.lol`. It _might_ actually go through, but more than likely one of these two things will happen: 23 | 24 | ### Mail client issue 25 | 26 | If your mail client doesn’t handle emoji correctly (and many don’t), here’s what can happen when the email hits the destination server: 27 | 28 |
Jan  1 23:59:59 server postfix/srvc[1234]: ABCDEF0123: from=<sender@domain>, size=1234, nrcpt=1 (queue active)
29 | Jan  1 23:59:59 server postfix/srvc[1234]: ABCDEF0123: to=<=?utf-8?B?8J+kqQ==?=@omg.lol>
30 | 31 | In this case, the message is received, but the address is no longer intact, and the server doesn’t know what to do with it (so it won’t be delivered). 32 | 33 | ### Mail server issue 34 | 35 | If the email winds up going to a downstream destination server that doesn’t know how to deal with emoji, here’s what can happen: 36 | 37 |
Jan  1 23:59:59 server postfix/srvc[1234]: ABCDEF0123: from=<sender@domain>, size=1234, nrcpt=1 (queue active)
38 | Jan  1 23:59:59 server postfix/srvc[1234]: ABCDEF0123: to=<forwarded@destination>, orig_to=<🍋@omg.lol>, status=bounced (SMTPUTF8 is required, but was not offered by host mailserver[203.0.113.42])
39 | 40 | Here we can see that the emoji address survived intact when the message reached omg.lol, but the server to which the message was forwarded didn’t have support for emoji addresses and the email wasn’t delivered. 41 | 42 | ## Mastodon 43 | 44 | Sadly, due to the ActivityPub protocol that Mastodon is based upon, emoji addresses aren't supported on Mastodon. :( 45 | 46 | ## What to do? 47 | 48 | There’s no way to guarantee how things will behave when using emoji in email or web addresses, so this is a classic case of buyer beware. When you register an emoji address, though, you’ll also receive the corresponding Punycode namespace for both email and web (and this will appear in the address configuration for your reference). So if you’re feeling brave, go for it! 49 | -------------------------------------------------------------------------------- /profiles/themes/emerald-isle.css: -------------------------------------------------------------------------------- 1 | /* 2 | Theme: Emerald Isle 3 | Author: Bye (@_byemc) 4 | License: MIT 5 | Version: 1.0 6 | Description: Based on the country I live in, a green blob surrounded with blue. 7 | */ 8 | 9 | @import url('https://omg.cache.lol/css/type.css'); 10 | 11 | * { 12 | box-sizing: border-box; 13 | } 14 | 15 | body { 16 | font-size: 1.2em; 17 | margin: 0; 18 | padding: 2em; 19 | font-family: 'Mint Grotesk', sans-serif; 20 | font-weight: 300; 21 | background: #00b0b0; 22 | background-repeat: no-repeat; 23 | background-attachment: fixed; 24 | height: 100%; 25 | overflow-wrap: break-word; 26 | color: #ececec; 27 | } 28 | 29 | main { 30 | display: block; 31 | max-width: 30em; 32 | border-radius: 1em; 33 | margin: 0 auto; 34 | text-align: center; 35 | background: #21b121; 36 | padding: 2em; 37 | } 38 | 39 | h1 { 40 | margin: 0; 41 | } 42 | 43 | #profile-items { 44 | /*border-top: 1px solid #666;*/ 45 | padding: .5em 0 0 0; 46 | margin: 1.5em 0 0 0; 47 | } 48 | 49 | #profile-items :is(h1, h2, h3, h4, h5, h6) { 50 | text-align: left; 51 | margin: 0; 52 | } 53 | 54 | #profile-items h1 { font-size: 1.2em; } 55 | #profile-items h2 { font-size: 1.2em; } 56 | #profile-items h3 { font-size: 1.2em; } 57 | #profile-items h4 { font-size: 1.1em; } 58 | #profile-items h5 { font-size: 1.1em; } 59 | #profile-items h6 { font-size: 1.1em; } 60 | 61 | #profile-picture-container { 62 | margin: auto; 63 | margin-bottom: 1em; 64 | } 65 | 66 | #profile-picture { 67 | border-radius: 0.25em; 68 | height: 8.7em; 69 | } 70 | 71 | #pronouns { 72 | margin: 0; 73 | font-weight: 400; 74 | color: #a7d4a7; 75 | } 76 | 77 | #pronouns a:link, 78 | #pronouns a:visited, 79 | #pronouns a:hover, 80 | #pronouns a:active { 81 | color: var(--comment); 82 | } 83 | 84 | #details { 85 | margin: 1em 0; 86 | } 87 | 88 | #location { 89 | display: inline-block; 90 | } 91 | 92 | #occupation { 93 | display: inline-block; 94 | } 95 | 96 | #location, #occupation { 97 | margin: .5em; 98 | padding: 0 .5em; 99 | } 100 | 101 | #bio { 102 | text-align: center; 103 | font-size: 110%; 104 | line-height: 140%; 105 | } 106 | 107 | #footer { 108 | margin: 0; 109 | margin-top: 5em; 110 | font-size: 90%; 111 | font-weight: 300; 112 | color: #a7d4a7; 113 | } 114 | 115 | #footer a:link, 116 | #footer a:visited, 117 | #footer a:hover, 118 | #footer a:active { 119 | color: #f8e1d4; 120 | text-decoration: none; 121 | border: 0; 122 | } 123 | 124 | #footer .fa-plug { 125 | transform: rotate(0deg); 126 | transition: all 0.3s ease; 127 | } 128 | 129 | #footer:hover .fa-plug { 130 | transform: rotate(90deg); 131 | transition: all 0.3s ease; 132 | } 133 | 134 | ul { 135 | text-align: left; 136 | } 137 | 138 | li { 139 | line-height: 170%; 140 | } 141 | 142 | a:link, 143 | a:visited { 144 | color: #f8e1d4; 145 | border-bottom: 1px dotted #f8e1d4; 146 | } 147 | a:hover, 148 | a:active { 149 | color: #f8e1d4; 150 | border-bottom: 2px solid #f8e1d4; 151 | } 152 | 153 | .omg-icon-li { 154 | position: relative; 155 | border: 0px solid #f8e1d4; 156 | } 157 | 158 | .omg-icon { 159 | display: inline-block; 160 | width: 1em; 161 | position: absolute; 162 | top: -0.1em; 163 | left: -1.5em; 164 | } 165 | 166 | .omg-icon svg { 167 | width: 100%; 168 | height: 1em; 169 | vertical-align: middle; 170 | } 171 | 172 | .omg-icon::before { 173 | display: none; 174 | } 175 | 176 | /* 177 | @media (prefers-color-scheme: dark) { 178 | .omg-icon svg { 179 | fill: #fff; 180 | } 181 | } 182 | */ 183 | 184 | @media (prefers-color-scheme: dark) { 185 | .omg-icon.rainbow-me svg { 186 | fill: #f8e1d4; 187 | } 188 | } 189 | 190 | @media (max-width: 500px) { 191 | body { 192 | font-size: 1em; 193 | padding: 1em; 194 | } 195 | main { 196 | padding: 1.5em; 197 | } 198 | } 199 | 200 | h1#name a i.fa-badge-check { 201 | color: #ff965e !important; 202 | } 203 | -------------------------------------------------------------------------------- /info/Community/irc.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: All about our awesome IRC server 3 | Last Updated: 2022-11-05 02:24 AM EDT 4 | --- 5 | 6 | # Internet Relay Chat (IRC) 7 | 8 | Internet Relay Chat (or IRC) is an open standard for live chat on the internet. It’s [been around forever](https://en.wikipedia.org/wiki/Internet_Relay_Chat), and it’s great! And we’re using it here as part of our new super-chill [social.lol](/help/social.lol) platform. 9 | 10 | ### Getting Started 11 | 12 | To kick things off, visit your address's social.lol page and then click the "Create IRC account" button. **You’ll then receive a password — don’t lose it!** 13 | 14 | ### Connecting 15 | 16 | To use IRC, you need a _client_ that can connect to the _server_. There are [many clients](/info/extra/irc-clients) available, all with different features. 17 | 18 | You can point any client at `irc.social.lol` (port `6667` for plaintext transfer, or port `6697` for a secure connection). Be sure to configure your connection with a server password (using the same password provided above) to authenticate when connecting. If you don’t include a password, you’ll be disconnected. 😟 19 | 20 |
21 | 22 | We ran a hosted instance of [The Lounge](https://thelounge.chat) through October 8, 2022. If you’re looking for a new IRC client, [there are plenty available](/info/extra/irc-clients)! 23 | 24 |
25 | 26 |
27 | 28 | **If you keep getting disconnected when you join**, be sure to include the correct server password in your client configuration. Also note that you won’t be able to connect from two different clients at the same time (the second connection won’t be able to authenticate because your nick is in use by the first). So if you’re experimenting with clients, be sure to disconnect from one before trying another! 29 | 30 |
31 | 32 | ### Hiding your IP address 33 | 34 | If you’d like to hide your connection details, you can request a _vhost_ or _virtual hostname_. Just ask our friendly bot, penelope, in any channel she’s in: `!vhost [vhost]`, where `[vhost]` is whatever virtual hostname you’d like to use. You can be creative here, within reason. 35 | 36 | ### Channels 37 | 38 | Here are some of the popular channels on the server: 39 | 40 | * **#general**, for general chatter about anything 41 | * **#random**, for random, off-the-wall stuff 42 | * **#omg.lol**, for all things omg.lol 43 | * **#firehose**, for notices, announcements, inbound webhooks, and other noisy but interesting stuff 44 | * **#web**, for web development, profile customization, or whatever other webby thing you might want to chat about 45 | * **#email**, for discussion of one of the best things about the internet 46 | * **#help**, for customer service and support 47 | 48 | You can also create your own channels or join some that other have created. To view a list of all channels in use, type `/list`. 49 | 50 | ### Commands 51 | 52 | IRC uses “slash commands” to do things. You can [view a complete list of commands](https://en.wikipedia.org/wiki/List_of_Internet_Relay_Chat_commands), but here are a few that you’ll want to know: 53 | 54 | * `/join #channel` joins a channel 55 | * `/part #channel` leaves a channel 56 | * `/msg [person] [message]` sends a private message (e.g. `/msg adam wanna hear a joke?`) 57 | 58 | ### NickServ 59 | 60 | If you somehow weren’t registered with NickServ when you first set things up (maybe you joined before we set up this slick automatic setup thing), you can register by sending a message to NickServ like this: `/msg NickServ register [password] [email]`. NickServ will let you know if that worked. 61 | 62 | ### Rules 63 | 64 | Use common sense when chatting with others. Prioritize kindness. Show compassion. Remember that all omg.lol policies apply on irc.social.lol, like our Terms of Use and Acceptable Use Policies. Just [don’t be an asshole](https://asshole.fyi) and you should be fine. 65 | -------------------------------------------------------------------------------- /info/Address Services/proofs.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: You don’t have to prove yourself to anyone, but proving that your stuff is yours is pretty sweet 3 | Last Updated: 2022-11-23 11:58 AM EST 4 | --- 5 | 6 | # Proofs 7 | 8 | We’ll soon launch [proven.lol](https://proven.lol), a super-simple (and hopefully kind of fun) digital proof system. Until then, here’s some info about it. 9 | 10 | ## How it works 11 | 12 | First up, the important and highly relevant stuff: proven.lol isn’t going to try to be the next Keybase, or Keyoxide, or anything that’s serious and smart in the cryptographic proof / web of trust space. It’s meant to be simple and fun, but it’s ultimately a centralized and opinionated service. Use it for fun, not for government-level identity verification. Remember, the domain ends in “dot lol”. 13 | 14 | With that out of the way, let’s talk about the system itself. Here’s the elevator pitch: 15 | 16 | > proven.lol lets you verify virtually every kind of digital asset or property, including email addresses or third-party platforms that haven’t historically been compatible with other proof systems (like Keybase). If it’s on the internet, accessible by our servers, and you can demonstrate that you own it, you can add a proof for it. 17 | 18 | ### Claims, Assertions, and Proofs 19 | 20 | Everything on proofs.lol is either an _assertion_ or a _proof_. You add _assertions_, and then if they can be proven, they turn into _proofs_. Easy! 21 | 22 | The flow looks like this: 23 | 24 | 1. You assert ownership of https://example.com/jabberwocky. 25 | 2. proven.lol tells you the claim that you need to put on https://example.com/jabberwocky in order to validate your assertion. 26 | 3. You add the claim and tell proven.lol that you’ve done so. The proven.lol system then checks for the claim (by visiting the page). If the claim is present, your assertion is validated and turned into a timestamped proof. 27 | 28 | For things that aren’t websites, the flow may be a little different (proving an email address, for instance, would require you to email your claim to a specific validation address). 29 | 30 | Here’s the cool part—you can delete your claim once your assertion has been proven. “But doesn’t that defeat the entire purpose of this?” you might ask. “No way,” we might answer. Because proven.lol works differently. (Keep reading below.) 31 | 32 | ### Point-In-Time Proofs 33 | 34 | All of the proofs on proven.lol are timestamped, and the assertions are proven _as of that timestamp_. Unlike Keybase or other services that require you to make a post with your claim and keep it posted indefinitely, proven.lol isn’t going to keep checking for that stuff over and over (and hound you if it vanishes). Simply put, we’re only interested in documenting proof of something at a particular point in time. 35 | 36 | You’re welcome to refresh your proof as often as you’d like, or to let your proofs age. Ultimately it’s up you to decide what’s “fresh” enough when it comes ot a proof, or if it even matters. Life is short and everything is temporary, so maybe don’t overthink it. 37 | 38 | But yeah, the upside to a point-in-time proof system is that you can easily prove ownership of third-party pages where you only have limited space to post a claim (like in a “bio” field). We can check for that claim, prove the assertion, and then you can remove the weird string from your bio and go back to normal. 39 | 40 | ### Negative Assertions 41 | 42 | Another feature of proven.lol is that we’ll allow you to post _negative assertions_, which is a way of saying, for example, “I’m not on Twitter.” You can’t ever prove a negative, though, so these assertions can never turn into proofs—but we’re happy to host them for you, as part of your proven.lol page. This way, people can get a comprehensive view about where you can and can’t be found online. 43 | 44 | ### omg.lol integration 45 | 46 | “This all sounds nice, but I already have all of my stuff listed on my omg.lol page” is something you might be thinking. Well, cool, we’ve thought about it too! proven.lol will work in tandem with omg.lol, and the URLs you have on your omg.lol profile will automatically receive a visual designation of their proofs if you’ve proven them on proven.lol. Or, you can set up all of your stuff on proven.lol and easily bring it all into your omg.lol profile without having to duplicate anything. It’ll all be possible, and easy. 47 | 48 | ## Questions? 49 | 50 | Ping [@adam@social.lol](https://social.lol/@adam) with any questions, thoughts, early ideas, or feedback. -------------------------------------------------------------------------------- /tests/routing-regression-testing.md: -------------------------------------------------------------------------------- 1 | # Routing regression testing 2 | 3 | omg.lol page routing is the kind of thing that you’d _think_ would be simple, but turns out to be closer to ridiculously complex. Why? Because we insist on making URLs do awesome fancy stuff (all of which you can configure on your address’s Switchboard page). 4 | 5 | In order to ensure that adjustments to one part of the routing logic don’t adversely impact other parts, this comprehensive set of regression tests have been developed. Below is a testing table which lists all of the various omg.lol URLs that have been configured for @foobar along with an explanation of each and the expected result when clicked. 6 | 7 | | URL | Explanation | Expected Result | 8 | | ---- | ------------- | --------------- | 9 | | [omg.lol/foobar](https://omg.lol/foobar) | Address path page. | Displays @foobar’s profile page. | 10 | | [omg.lol/@foobar](https://omg.lol/@foobar) | `@` address page. | Displays @foobar’s profile page. | 11 | | [omg.lol/~foobar](https://omg.lol/~foobar) | Tildeverse page. | Displays @foobar’s Tildeverse page. | 12 | | [omg.lol/foobar/paste](https://omg.lol/foobar/paste) | Resource request for a Pastebin entry named `paste`. | Redirects to https://foobar.paste.lol/paste and displays the requested paste entry. | 13 | | [omg.lol/foobar/purl](https://omg.lol/foobar/purl) | Resource request for a PURL named `purl`. | Redirects to the Wikipedia entry on knitting. | 14 | | [omg.lol/foobar/ambiguous](https://omg.lol/foobar/ambiguous) | Resource request for `ambiguous` which is a named PURL and Pastebin entry. | Displays a disambiguation page allowing the visitor to choose their destination. Server returns an HTTP 300 response (“Multiple Choices”). | 15 | | [profile.omg.lol/foobar](https://profile.omg.lol/foobar) | Dedicated profile page subdomain. | Displays @foobar’s profile page. | 16 | | [foobar.omg.lol](https://foobar.omg.lol) | Subdomain page. | Displays @foobar’s profile page. | 17 | | [foobar.omg.lol/paste](https://foobar.omg.lol/paste) | Resource request for a Pastebin entry named `paste`. | Redirects to https://foobar.paste.lol/paste and displays the requested paste entry. | 18 | | [foobar.omg.lol/purl](https://foobar.omg.lol/purl) | Resource request for a PURL named `purl`. | Redirects to the Wikipedia entry on knitting. | 19 | | [foobar.omg.lol/ambiguous](https://foobar.omg.lol/ambiguous) | Resource request for `ambiguous` which is a named PURL and Pastebin entry. | Displays a disambiguation page allowing the visitor to choose their destination. Server returns an HTTP 300 response (“Multiple Choices”). | 20 | | [foobar.cool](https://foobar.cool) | Custom domain. | Displays @foobar’s profile page. | 21 | | [foobar.cool/paste](https://foobar.cool/paste) | Resource request for a Pastebin entry named `paste`. | Redirects to https://foobar.paste.lol/paste and displays the requested paste entry. | 22 | | [foobar.cool/purl](https://foobar.cool/purl) | Resource request for a PURL named `purl`. | Redirects to the Wikipedia entry on knitting. | 23 | | [foobar.cool/ambiguous](https://foobar.cool/ambiguous) | Resource request for `ambiguous` which is a named PURL and Pastebin entry. | Displays a disambiguation page allowing the visitor to choose their destination. Server returns an HTTP 300 response (“Multiple Choices”). | 24 | | [paste.foobar.cool](https://paste.foobar.cool) | Custom Pastebin domain. | Displays @foobar’s Pastebin. | 25 | | [purls.foobar.cool](https://purls.foobar.cool) | Custom PURLs domain. | Redirected to the Wikipedia entry on Persistent uniform resource locators. | 26 | | [disabled.foobar.cool](https://disabled.foobar.cool) | Custom domain configured to be disabled. | Displays a generic page indicating that the resource is not available. | 27 | | [redirected.foobar.cool](https://redirected.foobar.cool) | Custom domain configured to be redirected. | Redirected to the Wikipedia entry on URL redirection. | 28 | | [foobar.paste.lol](https://foobar.paste.lol) | Pastebin subdomain request. | Displays @foobar’s Pastebin. | 29 | | [foobar.paste.lol/paste](https://foobar.paste.lol/paste) | Pastebin subdomain request. | Displays the requested Paste record. | 30 | | [paste.lol/foobar/paste](https://paste.lol/foobar/paste) | Paste path request. | Displays the requested Paste record. | 31 | | [foobar.url.lol/purl](https://foobar.url.lol/purl) | PURL subdomain request. | Redirected to the requested PURL destination. | 32 | | [url.lol/foobar/purl](https://url.lol/foobar/purl) | PURL path request. | Redirected to the requested PURL destination. | 33 | -------------------------------------------------------------------------------- /profiles/icons/defined_domains.txt: -------------------------------------------------------------------------------- 1 | // This is the omg.lol domain-to-icon mapping file. 2 | // Please group similar items, and ensure that subdomains come after base domains. 3 | // Partial domains may be used for more expansive matching (e.g. `discord.` instead of `discord.com` and `discord.gg`). 4 | // Domains and paths can be used for a finer degree of specificity (e.g. `example.com/service` as distinct from `example.com`). 5 | 6 | // Apple 7 | apple.com apple 8 | podcasts.apple.com microphone 9 | music.apple.com itunes-note 10 | 11 | // Polywork 12 | poly.me polywork 13 | poly.work polywork 14 | polywork.com polywork 15 | 16 | // social.lol 17 | social.lol mastodon 18 | irc.social.lol message 19 | karma.social.lol dharmachakra 20 | 21 | // Mastodon instances 22 | mas.to mastodon 23 | mastodon. mastodon 24 | fosstodon.org mastodon 25 | 26 | // Other 27 | artstation.com artstation 28 | status.lol prami 29 | kaggle.com kaggle 30 | mltshp.com mltshp 31 | ecosia.org ecosia 32 | pixelfed.social pixelfed 33 | credly.com credly 34 | vukkybox.com vukky 35 | rvlt.gg revolt 36 | read.cv read-cv 37 | rateyourmusic.com rate-your-music 38 | sudomemo.net sudomemo 39 | codeberg.org codeberg 40 | 500px.com 500px 41 | 9gag.com 9gag 42 | amazon. amazon 43 | anilist.co anilist 44 | archiveofourown.org ao3 45 | backloggery.com backloggery 46 | bandcamp.com bandcamp 47 | behance.net behance 48 | bilibili bilibili 49 | bitbucket.org bitbucket 50 | blogger.com blogger 51 | bookshop.org bookshop 52 | buymeacoffee.com buymeacoffee 53 | calendly.com calendly 54 | cash.app cash-app 55 | cloudappreciationsociety.org cloud 56 | cloudspotting.be cloud 57 | clubhouse.com clubhouse 58 | codepen.io codepen 59 | coindrop.to coindrop 60 | deezer.com deezer 61 | deviantart.com deviantart 62 | discord. discord 63 | discourse.org discourse 64 | dribbble.com dribbble 65 | ebay. ebay 66 | etsy.com etsy 67 | example.com example 68 | eyeem.com eyeem 69 | discogs record-vinyl 70 | glass camera 71 | facebook.com facebook 72 | facebook.com/sparkarhub spark-ar 73 | fastmail. fastmail 74 | figma.com figma 75 | flickr.com flickr 76 | forum.plutonium.pw plutonium 77 | freecodecamp.org free-code-camp 78 | g.dev google 79 | geocaching.com geocaching 80 | geoguessr.com geoguessr 81 | geotastic.net geotastic 82 | getrevue.co revue 83 | giphy.com giphy 84 | github.com github 85 | gitlab.com gitlab 86 | goodreads.com goodreads 87 | google. google 88 | gumroad.com gumroad 89 | hackclub.com hack-club 90 | hackerone.com hackerone 91 | hey.com hey 92 | honk.me honk 93 | instagr.am instagram 94 | instagram.com instagram 95 | instapaper.com instapaper 96 | itch.io itch-io 97 | keybase.io keybase 98 | keyoxide.org keyoxide 99 | ko-fi.com ko-fi 100 | last.fm lastfm 101 | letterboxd.com letterboxd 102 | liberapay.com liberapay 103 | lichess.org lichess 104 | linkedin.com linkedin 105 | literal.club literal 106 | lobste.rs lobsters 107 | m.me facebook-messenger 108 | 109 | medium.com medium 110 | micro.blog microblog 111 | musicboard.app musicboard 112 | myanimelist.net myanimelist 113 | neocities.org cat 114 | notion. notion 115 | npmjs.com npm 116 | omg.lol prami 117 | opensea.io opensea 118 | osk.sh osk 119 | osu.ppy.sh osu 120 | patreon.com patreon 121 | paynym.is bitcoin 122 | paypal. paypal 123 | people.well.com well 124 | pinboard.in pinboard 125 | pinterest. pinterest 126 | postype.com postype 127 | procreate.art procreate 128 | producthunt.com product-hunt 129 | pronouns.page pronounspage 130 | quora.com quora 131 | rainbow.me rainbowme 132 | rarible.com rarible 133 | reddit.com reddit 134 | rep.ly rep.ly 135 | roblox.com roblox 136 | signal. signal.org 137 | snapchat.com snapchat 138 | soundcloud.com soundcloud 139 | spacehey. spacehey 140 | spotify. spotify 141 | sr.ht sourcehut 142 | stackoverflow.com stack-overflow 143 | statuspage.io status 144 | steamcommunity.com steam 145 | t.me telegram 146 | telegram.me telegram 147 | tetr.io tetrio 148 | threema.id threema 149 | tiktok.com tiktok 150 | tinyletter.com tinyletter 151 | toss.me toss 152 | tumblr.com tumblr 153 | twitch.tv twitch 154 | twitter.com twitter 155 | unsplash.com unsplash 156 | uptimerobot.com status 157 | venmo.com venmo 158 | vero.co vero 159 | vimeo.com vimeo 160 | vk.com vk 161 | wa.me whatsapp 162 | wattpad.com wattpad 163 | waze.com waze 164 | whatsapp.com whatsapp 165 | wordpress.com wordpress 166 | write.as writeas 167 | writeas.com writeas 168 | xbox.com xbox 169 | ycombinator.com y-combinator 170 | youtube.com youtube 171 | 172 | // People 173 | laker. laker 174 | sus.omg.lol vukky 175 | vukky.net vukky 176 | neatnik.net neatnik 177 | andycarolan.com andycarolan -------------------------------------------------------------------------------- /info/Address Services/switchboard.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: How to route your web traffic and do stuff with external domains 3 | Last Updated: 2022-10-16 09:30 AM EDT 4 | --- 5 | 6 | # Switchboard 7 | 8 | Your **Switchboard** is where you manage your address behavior—more specifically, what how visitors interact with your address in different ways. It’s just like an old-timey [telephone switchboard](https://en.wikipedia.org/wiki/Telephone_switchboard), but without all of the wires. 9 | 10 | On the Switchboard, you’ll see all of the different **routes** for your address, including any external domains that you’ve added (feel free to add as many as you’d like). For each route, you can choose its **connection**—effectively determining what happens when someone visits your address in that particular way. 11 | 12 | ## Routes 13 | 14 | Every omg.lol address comes with five standard routes. Assuming your address is `foo`: 15 | 16 | 1. `foo.omg.lol`, your subdomain 17 | 2. `omg.lol/foo`, your path 18 | 3. `omg.lol/~foo`, your [Tildeverse address](/info/tildeverse) 19 | 4. `omg.lol/@foo`, your “at” address 20 | 5. `profile.omg.lol/foo`, your dedicated profile address 21 | 22 | You can also add as many external domains as you’d like, and they become routes as well. 23 | 24 | ## Connections 25 | 26 | Every route has a corresponding connection. Available connections are: 27 | 28 | 1. **Profile Page**, which (unsurprisingly) displays your profile page 29 | 2. **Tildverse Profile Page**, which (also unsurprisingly, but nevertheless awesomely) displays your [Tildeverse](/info/tildeverse) profile page 30 | 3. **Redirect to a URL**, which easily directs traffic to any other web address (using a `302 Found` response and location header) 31 | 4. **Pastebin**, which displays your list of [pastes](/info/pastebin) (available only on external domain routes -- see below) 32 | 5. **PURLs**, brands your [PURLs](/info/purls) with your external domain 33 | 6. **Disabled**, for when you just want to switch things off 34 | 35 | When a connection is disabled, a standard “resource unavailable” page will be displayed. 36 | 37 | ## External Domains 38 | 39 | You can add as many of your own domains to your omg.lol address as you’d like. Since your external domains are treated as routes, you can easily direct them to your profile page, or to anywhere else. 40 | 41 | To add a domain, just plop it into the field at the bottom of the Switchboard and click the Save button. Once you do that, we’ll check the DNS settings, and if everything looks good, we’ll provision a TLS certificate to keep your web traffic secure. You’ll see the status of these items on the Switchboard, just beneath your domain. 42 | 43 | ### DNS 44 | 45 |
46 | 47 | Heads up! Be careful when setting up your upstream DNS records to point an external domain to omg.lol. Unless you're using a provider that does CNAME flattening or support `ALIAS`, **do not** create a CNAME record that points directly to your root domain. You’ll break all of your DNS records! Only use a CNAME if you're linking a subdomain (eg: `profile.domain.com`) to omg.lol. 48 | 49 |
50 | 51 | The first step in making an external domain work with omg.lol is to configure its DNS to point to our servers. This is something you’ll need to do with your domain registrar, DNS provider, or whoever is managing your domain. If you’ve never done anything like this before, it can be a little intimidating, but it’s not too bad! If you need help, [just let us know](/help/contact). 52 | 53 | There are two ways you can configure your domain’s DNS to point to omg.lol. You only need to do _one_ of these: 54 | 55 | 1. Add an **A** record that points to `159.89.247.131` 56 | 2. Or, add a **CNAME** record that points to your address (e.g. `foo.omg.lol`). 57 | 58 | Either of those will do the trick. Just refresh your Switchboard to see the latest info on what our server sees for your domain. DNS changes can take a while to _propagate_ across the internet, so occasionally you’ll have to wait a bit for our server to see the changes that you’ve made. 59 | 60 | ### Certificates 61 | 62 | As soon as we detect that your domain’s DNS is configured properly, we’ll provision a TLS certificate for your domain. That’ll make it so that when people visit your domain, their traffic will be secure. (We wouldn’t have it any other way.) 63 | 64 | Certificate provisioning is generally a quick process, but occasionally it can take a while. (And rarely, things can get stuck.) If you notice any issues with the certificate provisioning process on your Switchboard, don’t hesitate to [let us know](/help/contact) and we’ll take care of it for you. 65 | -------------------------------------------------------------------------------- /info/Email/mailhooks.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: Like webhooks, but for email 3 | Last Updated: 2022-10-15 12:59 AM EDT 4 | --- 5 | 6 | # Mailhooks 7 | 8 |
9 | This feature isn’t ready yet. 10 |
11 | 12 | A **mailhook** is an email interface to external things, like APIs (think email + webhook). Email comes in on one side, and a structured API request comes out on the other. Mailhooks are a great way to integrate email into a workflow in a structured and repeatable way, moving data from a message into an external system with relative ease. In theory, anyway. 13 | 14 | Mailhooks are brand new around here, and so we welcome your testing. **We’d strongly advise against incorporating them into any production workflows at this time**, since there will inevitably be bugs and changes to the setup as we get things rolling. Testing is encouraged, and reporting bugs is _highly_ encouraged (send those to bugs@omg.lol). 15 | 16 | ## Why Mailhooks? 17 | 18 | This feature isn’t for everyone, to be clear. If you can’t see a good use for it, then it probably isn’t for you. That’s OK! You can ignore the feature entirely. Forget it’s even there. 19 | 20 | The best way to explain why you’d want a mailhook is if you need to take the data from inbound email messages and incorporate it seamlessly into other data flows and processes. While the current beta implementation of our Mailhooks feature is fairly limited, the long-term goal is to enable powerful template-based email parsing combined with rulesets formed around logical operations. So, something like “if an email contains this word, POST it to this URL; if it contains some other word, perform a GET on this other URL and reply to the sender with the response; if none of the words are present delete the message and forget about it.” That kind of stuff. It’s gonna be fun. 21 | 22 | ## Mailhooks Beta 23 | 24 | The current beta implementation is really simple: take an incoming email, break it into smaller components (headers and body), prepare the content payload based on your template, and perform a REST action to send the content its destination. 25 | 26 | ## Variables 27 | 28 | The data in inbound email messages can be accessed through variables using the format `{{variable}}`. 29 | 30 | Individual header values can be accessed with their own variable using the header name (normalized to lowercase). For instance, if you wanted to access the `From` header, you’d use `{{from}}`. You can do the same with any header that you expect to be present in the message, such as `X-Originating-Client` (which you’d access via `{{x-originating-client}}`). 31 | 32 | You can access the envelope’s ”from” address with the `{{envelope-from}}` variable. 33 | 34 | The message body can be accessed via the `{{body}}` variable, which will contain our best guess at the actual message body. In a basic email message, it’s not hard to guess—there’s just one body right after the headers. In a MIME multipart message, we’ll try to identify the most relevant part (favoring stuff like plain text, and avoiding stuff like atatchments). Soon you’ll be able to access individual message parts directly (we just have to work out the most sane way to do that first). 35 | 36 | ## Configuration 37 | 38 | The Mailhook configuration screen is pretty simple. It’s just a form that you use to define how your mailhook should behave. 39 | 40 | You must specify a **Method** for your mailhook, which can be `GET`, `POST`, `PUT`, `PATCH`, or `DELETE`. 41 | 42 | You must specify a **URL** for your mailhook, which is where the data will be sent via the method specified. 43 | 44 | You can optionally supply **Headers** for your request. Just add one header per line. You can use the `{{content-length}}` variable in conjunction with the `Content-Length` header if you’d like (the variable’s value will match the number of bytes of the data being sent). 45 | 46 | You can optionally supply **Content** for your request, which is what will be sent to the URL specified via the method specified. Your content can include any of the variables referenced above. 47 | 48 | Finally, you can choose whether you want to forward the message on to your existing forwarding address(es), or discard it. 49 | 50 | ## Remember, this is experimental 51 | 52 | Email is complicated. [Email hates the living](https://www.youtube.com/watch?v=4s9IjkMAmns). When it comes to implementing a sophisticated Mailhook system, the line between “ambitious” and “insane” is razor thin. We want to bring this feature to maturity steadily and responsibly, and your patience and bug reporting will be instrumental in making that happen. Thanks! 53 | -------------------------------------------------------------------------------- /info/Feedback & Help/contact.md: -------------------------------------------------------------------------------- 1 | --- 2 | Description: You can contact us at any time, for any reason, and we’re always glad to help 3 | Last Updated: 2022-10-08 01:52 AM EDT 4 | --- 5 | 6 | # Contact Us 7 | 8 |

Get help from a real human, whenever you need it. Try one of these options:

9 | 10 |
11 | 12 |
13 |

Email

14 |

Send a message to help@omg.lol and we’ll respond soon. (This is the best way to get private, 1-on-1 help.)

15 |
16 |
17 |

IRC

18 |

Join our IRC server to chat with friendly folks who can lend a hand with most things.

19 |
20 |
21 |

Mastodon

22 |

Message us on Mastodon and we’d be glad to help you there.

23 |
24 | 25 |
26 | 27 | ## Reporting vulnerabilities and bugs 28 | 29 | Please report security issues, vulnerabilities, or other bugs to [bugs@omg.lol](mailto:bugs@omg.lol). For more information, check out our [Responsible Bug Reporting](/info/bugs) page. 30 | 31 | ## We’ll always try to respond quickly 32 | 33 | No matter how you choose to contact us, we’ll do our best to respond swiftly. We know it can be frustrating and stressful to wait for help, so we’ll always try to get back with you soon. 34 | 35 | ## Keeping things secure? 36 | 37 | You can use these PGPs key to communicate with us securely: 38 | 39 | ``` 40 | -----BEGIN PGP PUBLIC KEY BLOCK----- 41 | 42 | mQINBGNgcSUBEADO8BOaN3/XgLeTIH6TRaP9/mMFWi7z7e8OhkKhUfAjr0JFZ3Wr 43 | Njw1cAt9gpsh0avqRxS8Y5ncu9SNRYeU6sEDr2aA9fiw2TSD11vMiAKQdOrCPVw+ 44 | QbNkBBxi/r3AROkWy41/QtEKqe2aj/NqHWlei2BT+PUnG8bXbefaaY/nIpTDoUqp 45 | pXqUxEgWMrcBkV4OzQcSy31IB1bdJHlc5LyDpmdZKJjOvDzTtVrXy+5CNI4RdUrK 46 | vOw4LHLHT0YSn3e0fAAt6Cmx0B0B2SAS4uIEEE7A42jxMS2oGLCMAjq6WOLIT2ls 47 | Qqf6AxYAV2jy5ptaQxIU2PZmg6UDVQG/sw+03ry3T9ZLT5mXy4o01/k537gh38bN 48 | iXvGcSXB5J56srk5RqqQauTQptre9pAmsEuF70SYQkCR3+T6TjLUdF2q3L6Ji4h4 49 | aS7zh5+4VjtE38+knjEjupUY3rtLqA6Evng0idhzOG37yJXgwzSKe3rGfgkXfoXh 50 | JKUzeERw2q8Lt8CrEZjt0+WOPL8a2Uy08SlFsNZvNKVca/PZeDnoUWhHNgLNJC4C 51 | nay35kjpja0yjZPLtgeKMyCI0l/4tUnHABj4GfyFRgl2Jk00q9RA/OrCwPiKsFzc 52 | uFraxs1b6XjQuCsdA8ECXwYcnYjuwxBLCUIYiovNcgt0mqDFdID6lfpQoQARAQAB 53 | tCNvbWcubG9sIFNlY3VyaXR5IDxzZWN1cml0eUBvbWcubG9sPokCTgQTAQgAOBYh 54 | BG0kQEhj5w2cs0AZG7ULu/GhGZgnBQJjYHElAhsDBQsJCAcCBhUKCQgLAgQWAgMB 55 | Ah4BAheAAAoJELULu/GhGZgnUlIP/RcKT3mJCn56hCl57fk5wb0g4fucsM82Q8QS 56 | IsjHLI2fNtqIqkeOIn9LIFrSiQTL71bjY2jTSvr34lBH4N8ZC/EB442lq9EBYRum 57 | RrTDEmsat03R2q7ROc55vcJb6x8Yi/fzM/kxUNVT1d561h5g/VbyCQNAIJW9ipo4 58 | WUUXwaMDd7nJPmEgR0osnS9Ia7XSSsdFbTMTlFPZmKgOUos71M2t6V7AOxoE3Xtv 59 | 5kdV8oaSgKSFU+9lzOmbjDZrw1M/BesNntQw7wni/9AVeQXEPcZiNMQXTGo4BD9e 60 | LsOUKVVu0F2PAotF2HDxUsCixGsUjPhMBb4mwV4oP+rurC0rPaHUtuzT8ZkZ8WHR 61 | as+P5cNhhj6/m3VhFkhzjQhgyPGk/L5+m0jpV4ehyyZkcwNEoJFocOR0JGoCu9/z 62 | OyuVJKtttPXRZP7KfeBf+6dAdOYQoj6EWfONBRjSre5zZspuQLZWgtZ1CTm7IjiR 63 | Ue2hmzsBDImLSn1Tq2dEslDHQkKa1oyGCmSoblzhpZudq1beqb46RUnf2Q4FoSoe 64 | SwyZ5N3iNBgKqswdrnj6Bv0vnQTlmWGf878ErrIY7GXa9Dnuj9zvhDVPQ17aSGqi 65 | e2YV3xjHBCra9tNAt09jdM859VJ9Zb5rjhC0SiMMoO48TMR20PNk2mVNZJq0/NM6 66 | 65RZkKdtuQINBGNgcSUBEACvrp5CvQZr/gEFD8yYpgacS90GBfkpTjG/1y+60aZN 67 | C9a2HEwREQr3dtpKIc6bhUE1+e44hN0S+4xpHwSPvm9yxotRAllzfsTN9XxUhtui 68 | ypcCsvHzEiw9+kRH9fz15kdOr4qPXhJC5zrpD+Rhs60XFG3nueTvWdpL1reyInhv 69 | JXROP0XWKYCjqPxBIKr7F3umiWrtV8/Y1K1I/Fa5YRIadLrD9a0+ziSmS+dPFbS7 70 | MHJpNGpcDEYMRmKYSrj8G4pTLt9Rngm2YY/3yrYUqCG5Kip4ALp/K5bkyjqCyOj4 71 | +Km2xaNYVgDt54t9IC7zZCfwqvLVRH0gdi7Bji8uGmQzp8cUV7KXf5V6/b/aj3Bv 72 | 2sv9L5j9I9pvYMiMqIX5TaAvQOYxcqgEKYI6FXL1QmR1MuWbipOIWl0qSxpdzrhB 73 | WiXoHFZAlgZqdya7lQh7wpdh/0FiFgqlVmM4eLSz8/57inFWMgp2IRlMoVevwvEm 74 | q8LvklRWGQdmYjm2k/TgdvEd4QhZ+KMB1LfBiJNIx74ms+avTP/S08JLBw/jEjnC 75 | oFKTQ1S49j2sh50Jsdn5x/b8aBS9VyxonxvhBiteDw683B6OA7UJURf7PKYqLOvi 76 | hvcgtr4SF1eifD3D6SFU99zL2vevYZcfYkwiiywKMr/BBl4DiLcu/69zjFkmgldt 77 | nwARAQABiQI2BBgBCAAgFiEEbSRASGPnDZyzQBkbtQu78aEZmCcFAmNgcSUCGwwA 78 | CgkQtQu78aEZmCfl1BAAjNoNbyyzbdmtHjLrGrV/rhZzaWE6l2lC9fewEkCrpAn9 79 | ifJ+RSpPt8Zd/5PyqzsbuMqoo9Sb9CaLlGc7mfYjUyxnfD55YB+oV7fW6VgRc3RX 80 | /ZuEi8/oi5ENUekx9/k+8OzMABWGiWSq4pCjPhofZ5dyxcZgB7nVJs61dfcpRzp0 81 | S4k4Gc0SOZYnAXf4svOnWb9mIyLuCzSmpKmDtiXSVeCesanwt3T8N3XG4u+eBdzY 82 | Ku/aZ4nwmsVaCsLdHScEC92ricrOQnQ4VrxnuAuWzMpVKy38OyE6Zl/uQqHls/Vg 83 | AmBLBMZUPwW0i2V59RT2DvgROcnyq+y58DyErSYjUEU951ildCw/9HqnmH1u6dSI 84 | Gm8VtopufM1kzLeHhLoq1YG9sx2pwK+6drWQbhjHcvFd8sQTsNIGXOfMonL4529n 85 | F5CIVZw0IGkuUfjg3uhBIiWgd2vJ92bFgH3eVGdQXQT0iRkhNgALSyEcqrH8kN7c 86 | OOY0G6fTvCbk0ILBHX2BBjrl7wPHjhGo+Kxa7PI6ypGaG+2hqRunGYMiEDmYf+nI 87 | I0xqdozhVaVEaJq35JoK5mvVNqQwxjtFrh20lN1/5t+ctVdbR5tpHEyUWiXUvjR3 88 | qCbm5o3ve5znTnmyYvYzD3y12LhxDhJZeLg3yNpWsrWzrcCHYe7Do6SUd5ocmO4= 89 | =sS9J 90 | -----END PGP PUBLIC KEY BLOCK----- 91 | ``` -------------------------------------------------------------------------------- /api/docs/OAuth.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "10d2f2b8-5181-4cc3-8354-a794aa275720", 4 | "name": "OAuth", 5 | "description": "Endpoints related to omg.lol’s OAuth 2.0 flows", 6 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 7 | "_exporter_id": "12532425" 8 | }, 9 | "item": [ 10 | { 11 | "name": "Exchange an authorization code for an access token", 12 | "request": { 13 | "method": "GET", 14 | "header": [], 15 | "url": { 16 | "raw": "https://{{base_url}}/oauth/?client_id=ea14dafd3e92cbcf93750c35cd81a031&client_secret=ec28b8653f1d98b4eef3f7a20858c43b&redirect_uri=https://neatnik.net/adam/bucket/omgloloauth/&code=f5f07426f08277983eb4010c6a2b10ac&scope=everything", 17 | "protocol": "https", 18 | "host": [ 19 | "{{base_url}}" 20 | ], 21 | "path": [ 22 | "oauth", 23 | "" 24 | ], 25 | "query": [ 26 | { 27 | "key": "client_id", 28 | "value": "ea14dafd3e92cbcf93750c35cd81a031", 29 | "description": "The client_id of the application requesting authorization" 30 | }, 31 | { 32 | "key": "client_secret", 33 | "value": "ec28b8653f1d98b4eef3f7a20858c43b", 34 | "description": "The client_secret of the application requesting authorization" 35 | }, 36 | { 37 | "key": "redirect_uri", 38 | "value": "https://neatnik.net/adam/bucket/omgloloauth/", 39 | "description": "The redirect_uri of the application requesting authorization" 40 | }, 41 | { 42 | "key": "code", 43 | "value": "f5f07426f08277983eb4010c6a2b10ac", 44 | "description": "The code given during the user authorization process" 45 | }, 46 | { 47 | "key": "scope", 48 | "value": "everything", 49 | "description": "The scope for the authorization grant" 50 | } 51 | ] 52 | }, 53 | "description": "Take the authorization code provided during the OAuth flow and exchange it for an access token." 54 | }, 55 | "response": [ 56 | { 57 | "name": "Exchange an authorization code for an access token", 58 | "originalRequest": { 59 | "method": "GET", 60 | "header": [], 61 | "url": { 62 | "raw": "https://{{base_url}}/oauth/?client_id=ea14dafd3e92cbcf93750c35cd81a031&client_secret=ec28b8653f1d98b4eef3f7a20858c43b&redirect_uri=https://example.com/&code=f5f07426f08277983eb4010c6a2b10ac&scope=everything", 63 | "protocol": "https", 64 | "host": [ 65 | "{{base_url}}" 66 | ], 67 | "path": [ 68 | "oauth", 69 | "" 70 | ], 71 | "query": [ 72 | { 73 | "key": "client_id", 74 | "value": "ea14dafd3e92cbcf93750c35cd81a031", 75 | "description": "The client_id of the application requesting authorization" 76 | }, 77 | { 78 | "key": "client_secret", 79 | "value": "ec28b8653f1d98b4eef3f7a20858c43b", 80 | "description": "The client_secret of the application requesting authorization" 81 | }, 82 | { 83 | "key": "redirect_uri", 84 | "value": "https://example.com/", 85 | "description": "The redirect_uri of the application requesting authorization" 86 | }, 87 | { 88 | "key": "code", 89 | "value": "f5f07426f08277983eb4010c6a2b10ac", 90 | "description": "The code given during the user authorization process" 91 | }, 92 | { 93 | "key": "scope", 94 | "value": "everything", 95 | "description": "The scope for the authorization grant" 96 | } 97 | ] 98 | } 99 | }, 100 | "status": "OK", 101 | "code": 200, 102 | "_postman_previewlanguage": "html", 103 | "header": [ 104 | { 105 | "key": "Date", 106 | "value": "Thu, 06 Oct 2022 23:47:58 GMT" 107 | }, 108 | { 109 | "key": "Server", 110 | "value": "Apache" 111 | }, 112 | { 113 | "key": "Vary", 114 | "value": "Accept-Encoding" 115 | }, 116 | { 117 | "key": "Content-Encoding", 118 | "value": "gzip" 119 | }, 120 | { 121 | "key": "Access-Control-Allow-Origin", 122 | "value": "*" 123 | }, 124 | { 125 | "key": "Access-Control-Allow-Methods", 126 | "value": "GET,POST,OPTIONS,DELETE,PUT" 127 | }, 128 | { 129 | "key": "Access-Control-Allow-Headers", 130 | "value": "Authorization,Content-Type" 131 | }, 132 | { 133 | "key": "Content-Length", 134 | "value": "112" 135 | }, 136 | { 137 | "key": "Keep-Alive", 138 | "value": "timeout=5, max=100" 139 | }, 140 | { 141 | "key": "Connection", 142 | "value": "Keep-Alive" 143 | }, 144 | { 145 | "key": "Content-Type", 146 | "value": "text/html; charset=UTF-8" 147 | } 148 | ], 149 | "cookie": [], 150 | "body": "{\n \"access_token\": \"b3086f894a176a3a7e702decd9b97bbc\",\n \"token_type\": \"Bearer\",\n \"scope\": \"everything\"\n}" 151 | } 152 | ] 153 | } 154 | ] 155 | } -------------------------------------------------------------------------------- /profiles/icons/domains.json: -------------------------------------------------------------------------------- 1 | { 2 | "apple.com": "apple", 3 | "podcasts.apple.com": "microphone", 4 | "music.apple.com": "itunes-note", 5 | "poly.me": "polywork", 6 | "poly.work": "polywork", 7 | "polywork.com": "polywork", 8 | "social.lol": "mastodon", 9 | "irc.social.lol": "message", 10 | "karma.social.lol": "dharmachakra", 11 | "mas.to": "mastodon", 12 | "mastodon.": "mastodon", 13 | "fosstodon.org": "mastodon", 14 | "artstation.com": "artstation", 15 | "status.lol": "prami", 16 | "kaggle.com": "kaggle", 17 | "mltshp.com": "mltshp", 18 | "ecosia.org": "ecosia", 19 | "pixelfed.social": "pixelfed", 20 | "credly.com": "credly", 21 | "vukkybox.com": "vukky", 22 | "rvlt.gg": "revolt", 23 | "read.cv": "read-cv", 24 | "rateyourmusic.com": "rate-your-music", 25 | "sudomemo.net": "sudomemo", 26 | "codeberg.org": "codeberg", 27 | "500px.com": "500px", 28 | "9gag.com": "9gag", 29 | "amazon.": "amazon", 30 | "anilist.co": "anilist", 31 | "archiveofourown.org": "ao3", 32 | "backloggery.com": "backloggery", 33 | "bandcamp.com": "bandcamp", 34 | "behance.net": "behance", 35 | "bilibili": "bilibili", 36 | "bitbucket.org": "bitbucket", 37 | "blogger.com": "blogger", 38 | "bookshop.org": "bookshop", 39 | "buymeacoffee.com": "buymeacoffee", 40 | "calendly.com": "calendly", 41 | "cash.app": "cash-app", 42 | "cloudappreciationsociety.org": "cloud", 43 | "cloudspotting.be": "cloud", 44 | "clubhouse.com": "clubhouse", 45 | "codepen.io": "codepen", 46 | "coindrop.to": "coindrop", 47 | "deezer.com": "deezer", 48 | "deviantart.com": "deviantart", 49 | "discord.": "discord", 50 | "discourse.org": "discourse", 51 | "dribbble.com": "dribbble", 52 | "ebay.": "ebay", 53 | "etsy.com": "etsy", 54 | "example.com": "example", 55 | "eyeem.com": "eyeem", 56 | "discogs": "record-vinyl", 57 | "glass": "camera", 58 | "facebook.com": "facebook", 59 | "facebook.com\/sparkarhub": "spark-ar", 60 | "fastmail.": "fastmail", 61 | "figma.com": "figma", 62 | "flickr.com": "flickr", 63 | "forum.plutonium.pw": "plutonium", 64 | "freecodecamp.org": "free-code-camp", 65 | "g.dev": "google", 66 | "geocaching.com": "geocaching", 67 | "geoguessr.com": "geoguessr", 68 | "geotastic.net": "geotastic", 69 | "getrevue.co": "revue", 70 | "giphy.com": "giphy", 71 | "github.com": "github", 72 | "gitlab.com": "gitlab", 73 | "goodreads.com": "goodreads", 74 | "google.": "google", 75 | "gumroad.com": "gumroad", 76 | "hackclub.com": "hack-club", 77 | "hackerone.com": "hackerone", 78 | "hey.com": "hey", 79 | "honk.me": "honk", 80 | "instagr.am": "instagram", 81 | "instagram.com": "instagram", 82 | "instapaper.com": "instapaper", 83 | "itch.io": "itch-io", 84 | "keybase.io": "keybase", 85 | "keyoxide.org": "keyoxide", 86 | "ko-fi.com": "ko-fi", 87 | "last.fm": "lastfm", 88 | "letterboxd.com": "letterboxd", 89 | "liberapay.com": "liberapay", 90 | "lichess.org": "lichess", 91 | "linkedin.com": "linkedin", 92 | "literal.club": "literal", 93 | "lobste.rs": "lobsters", 94 | "m.me": "facebook-messenger", 95 | "medium.com": "medium", 96 | "micro.blog": "microblog", 97 | "musicboard.app": "musicboard", 98 | "myanimelist.net": "myanimelist", 99 | "neocities.org": "cat", 100 | "notion.": "notion", 101 | "npmjs.com": "npm", 102 | "omg.lol": "prami", 103 | "opensea.io": "opensea", 104 | "osk.sh": "osk", 105 | "osu.ppy.sh": "osu", 106 | "patreon.com": "patreon", 107 | "paynym.is": "bitcoin", 108 | "paypal.": "paypal", 109 | "people.well.com": "well", 110 | "pinboard.in": "pinboard", 111 | "pinterest.": "pinterest", 112 | "postype.com": "postype", 113 | "procreate.art": "procreate", 114 | "producthunt.com": "product-hunt", 115 | "pronouns.page": "pronounspage", 116 | "quora.com": "quora", 117 | "rainbow.me": "rainbowme", 118 | "rarible.com": "rarible", 119 | "reddit.com": "reddit", 120 | "rep.ly": "rep.ly", 121 | "roblox.com": "roblox", 122 | "signal.": "signal.org", 123 | "snapchat.com": "snapchat", 124 | "soundcloud.com": "soundcloud", 125 | "spacehey.": "spacehey", 126 | "spotify.": "spotify", 127 | "sr.ht": "sourcehut", 128 | "stackoverflow.com": "stack-overflow", 129 | "statuspage.io": "status", 130 | "steamcommunity.com": "steam", 131 | "t.me": "telegram", 132 | "telegram.me": "telegram", 133 | "tetr.io": "tetrio", 134 | "threema.id": "threema", 135 | "tiktok.com": "tiktok", 136 | "tinyletter.com": "tinyletter", 137 | "toss.me": "toss", 138 | "tumblr.com": "tumblr", 139 | "twitch.tv": "twitch", 140 | "twitter.com": "twitter", 141 | "unsplash.com": "unsplash", 142 | "uptimerobot.com": "status", 143 | "venmo.com": "venmo", 144 | "vero.co": "vero", 145 | "vimeo.com": "vimeo", 146 | "vk.com": "vk", 147 | "wa.me": "whatsapp", 148 | "wattpad.com": "wattpad", 149 | "waze.com": "waze", 150 | "whatsapp.com": "whatsapp", 151 | "wordpress.com": "wordpress", 152 | "write.as": "writeas", 153 | "writeas.com": "writeas", 154 | "xbox.com": "xbox", 155 | "ycombinator.com": "y-combinator", 156 | "youtube.com": "youtube", 157 | "laker.": "laker", 158 | "sus.omg.lol": "vukky", 159 | "vukky.net": "vukky", 160 | "neatnik.net": "neatnik", 161 | "andycarolan.com": "andycarolan" 162 | } -------------------------------------------------------------------------------- /profiles/icons/prepare.php: -------------------------------------------------------------------------------- 1 | $obj) { 54 | $font_awesome_icons[$icon] = 'fa-'.$obj->styles[0].' fa-'.$icon; 55 | } 56 | 57 | // Now, we’ll load our omg.lol icon font data into an array. We’ll also generate the CSS used for the omg.lol icon font. Also, we’ll be notified of any conflicts that might occur between Font Awesome and the omg.lol icon font (in case new icons are added to Font Awesome that we’ve already defined). 58 | 59 | $omg_icon_data = file('defined_omgicons.txt', FILE_IGNORE_NEW_LINES); 60 | $omg_icons = array(); 61 | $omg_css = null; 62 | foreach($omg_icon_data as $line) { 63 | $bits = explode(' ', $line); 64 | 65 | $omg_lol_icons[$bits[0]] = $bits[1]; 66 | 67 | if(isset($font_awesome_icons[$bits[0]])) { 68 | echo "\n".'There is an existing Font Awesome icon: '.$bits[0]."\n"; 69 | } 70 | else { 71 | $omg_icons[$bits[0]] = 'omg-icon omg-'.$bits[0]; 72 | $omg_css .= '.omg-'.$bits[0].':before { content: "\\'.$bits[1].'"; }'."\n"; 73 | } 74 | } 75 | 76 | ksort($omg_lol_icons); 77 | 78 | $html = 'omg.lol Icons

omg.lol icons generated '.date("c").'

'; 79 | foreach($omg_lol_icons as $name => $unicode) { 80 | $html .= ''; 81 | } 82 | $html .= '
'.$name.'
83 | HTML5 Powered 84 | '; 85 | 86 | // Now we’ll save the omg.lol icon review and CSS files. 87 | 88 | file_put_contents('omg.lol-icons.html', $html); 89 | file_put_contents('omg.lol-glyphs.css', $omg_css); 90 | 91 | // We’ll merge the Font Awesome and omg.lol icon arrays, and check for any icons that we’ve chosen to override. 92 | 93 | $icons = array_merge($font_awesome_icons, $omg_icons); 94 | $overrides = file('defined_overrides.txt', FILE_IGNORE_NEW_LINES); 95 | foreach($overrides as $line) { 96 | $bits = explode(' ', $line); 97 | if(isset($icons[$bits[0]])) { 98 | $icons[$bits[0]] = implode(' ', array_slice($bits, 1)); 99 | } 100 | } 101 | 102 | // Finally, we’ll write the icon .json file. 103 | 104 | $icons = json_encode($icons, JSON_PRETTY_PRINT); 105 | file_put_contents('icons.json', $icons); 106 | 107 | $id = uniqid(); 108 | echo "\n".'Icon preparation complete. Check icons: https://static.omg.lol/profiles/icons/omg.lol-icons.html?v='.$id.''; 109 | -------------------------------------------------------------------------------- /profiles/themes/base.css: -------------------------------------------------------------------------------- 1 | @import url('/type/font-mint-grotesk-regular.css'); 2 | @import url('/type/font-mint-grotesk-bold.css'); 3 | @import url('/type/font-mint-grotesk-italic.css'); 4 | @import url('/type/fontawesome-free/css/all.css'); 5 | @import url('/profiles/icons/omg.lol-icons.css'); 6 | 7 | @font-face { 8 | font-family: 'omg.lol'; 9 | src: url('data:font/woff2;charset=utf-8;base64,d09GMgABAAAAAAZUAA4AAAAAC4gAAAYAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGigbXhwgBmAAVBEICogAhm4LFAABNgIkAyQEIAWITQc0G+4JUVRv4mQ/E2w6dQUvogGnutQl66BRxzWfEd7Fw9d+7M/dt4hrsmaaSWSVaJnQiIRI6wwNQuab/oDb+gcYRFk9q8ZmZW7azHNgJHoN1xGLXxFoydZb+IBxjgb470/u/3Ov6h/Hsxatm2EhzAloRP7YL3O3tCbNLVir8E91LJEt0FNgqUgH5jmRCawHv11IagHthEKhXAgJ1agWCFTqFUKwsVVQAWIZlo1dF0eDWhDDh2SJAjRrwUySVkg0KVGanf/zSv9/I/SS83dzZ72GnPeJ5sFRMpuf4kk3Enz9OFtEriC9rfIHwA3oR937f98my9Hk2Q/wAKlCuALoJ0dCgWYiAc2bWQHhbPmkrB+qUz+qPYqL6/vR/z+Oa1ub2mitiPz/H6IKiBrNu8UOiBdApmaWKyRRfZsl7XF5ohylVMp+pmrsFJ/MfywzsZV7D27d4jqC7HgxVsnzlWefJt5kMUZq5MK4Kqaicn3040KPsiFMTm31I/RWNV+9/65vNc9xyHqm1cgJZnhkDRgY6qOP7OHnChMp5bV5xWXZXTzIXmVZ1qpQZz6QL/kodXcHGFiDZzdx1+5lNRneZB0CsvAWJzXKCty02f/wccHYzDHePJQ2q/px9Hn+/Pn9j9q7duNGYN54FwxHffeC4YF03PgIY9aL+QRSRNb4wBtCw9ZwayPqbTFylgjbENBo2Gh3lqjIi/eZzxwy1gt2Dpcfnz978OhWp0q+eYoqQPWKN2pSSpvuN370Fnr72x/LTB++CbOfjBneZBstof8ccbl1gtBGV9Ga0+KaZys2FE0/oQ+4E35vv+N88WMXM/yt03m2a7a45hannsnKMU/7+dKHuqDGrbE1phFf7dcgy0l3y0sN6nrpH9gWdH4f5CYgtchsXPL+wm+HXescSgss6ZK3Wv53yioe2ZJcp9/rCyF++t1bZtedOD9fv2XTgpX7LsEQmSLzfM7/0h/j0/u1udfKedkVWGZkJJIZTDSiYY1RhrLEzeklnrkuZJTx5O3NHqw5SxHris4lpPiNzW8+SoxXaevz7N6xzlhallZJJityFhcJ93+5JtS95GJobMXWYE3+naB0+JhIdfC2YXJ/KPMCWpv9PMS1xDaoRLMt4fOikFK3xq1rZDad94uEruJVsMzSfl5Ayxe/e/s5FkLbCSj91Ve53fVWYqCoP4gIa03wvOxsqU5F7/o53LL1CExrFZSl2Pkqt7l8mnCzPbwtHj8tGgg58pnCxU+c11Pj35zm5RhgcneZdfRryTjaNG/+7+3WxAJZSdWrrV7tGXNeDQ13HKI9WnLabw10pwxi9c3h24SEqHmHxmKdzWs7pCYfuoMOKNesN9t5aIvEevmx/XIR1q412yEqXXGcu7jVVYj/Lj2KxvWQLmJcyY8mAEBA8bossalZlfBVLBMDvGWeSwHg3W7L/v86/5mQJJe9i3IJBGX3f9+nYjeGER8/jWMVWfef+670DOIOpGu2F8627zV/ttTPu7oIUOHRCxJCYIWw2LkkAijGPJDVUYt4G0mZbRR6VV/O8SjRTo9STZaiXL0dqNDgBKr0uIlqTd5DPbGPuxvI/YRCZAlwM3MQYXLjSGpjLwoLO305gygxte9RajQPlOsvExUGI1FlroWoNtpN1FP3+Y0Gjv2+VdUPIi91eHf+aB+JVLeOakkkjdTSlPYvSIhkmf7JRXNV6UgOBdLoLS+UW9+p9+fbgKEYHhm/ShjxkIzwoQqintQV8BdkZabmd+sQHMWSWaN3R1Huenh8u6TjibR/UnZF0s+Gqmu6kJMitBYfQZ4I6SgDRg3q1qmLDuKg7AmDzSPajOJs/tY+JES1VpvXmmlgVItGzaMQqfFs36GSiHaZJGSSujmETSKgqqRD5OQhsmwzDVxs1a7XNlsh0qZmywad9DEvHYRBYXCR4qUrVqxAfEmHMEeooxhVqQNad6qrCLw+S6ZU+eGLOggcO7cSB6OQUSSq5xvL6egRtZx1zEpDuUvt2GUaIzRkvp+GjmEHpjS62nN25thxPh3WEBIK/nvqWLniWmejQZ5iJcoAAAAA') format('woff2'); 10 | font-weight: 900; 11 | font-style: normal; 12 | font-display: swap; 13 | } 14 | 15 | * { 16 | box-sizing: border-box; 17 | } 18 | 19 | body { 20 | font-size: 1.2em; 21 | margin: 0; 22 | padding: 2em; 23 | font-family: 'Mint Grotesk', sans-serif; 24 | /*background: linear-gradient(0deg, #3fb6b6 0%, #d56b86 100%);*/ 25 | background: linear-gradient(0deg, rgba(26,151,152,1) 0%, rgba(191,114,240,1) 100%); 26 | background-repeat: no-repeat; 27 | background-attachment: fixed; 28 | height: 100%; 29 | overflow-wrap: break-word; 30 | } 31 | 32 | main { 33 | display: block; 34 | max-width: 30em; 35 | border-radius: 1em; 36 | margin: 0 auto; 37 | text-align: center; 38 | background: rgba(255, 255, 255, .5); 39 | padding: 2em; 40 | } 41 | 42 | h1 { 43 | margin: 0; 44 | } 45 | 46 | #profile-items { 47 | /*border-top: 1px solid #666;*/ 48 | padding: .5em 0 0 0; 49 | margin: 1.5em 0 0 0; 50 | } 51 | 52 | #profile-items :is(h1, h2, h3, h4, h5, h6) { 53 | text-align: left; 54 | margin: 0; 55 | } 56 | 57 | #profile-items h1 { font-size: 1.2em; } 58 | #profile-items h2 { font-size: 1.2em; } 59 | #profile-items h3 { font-size: 1.2em; } 60 | #profile-items h4 { font-size: 1.1em; } 61 | #profile-items h5 { font-size: 1.1em; } 62 | #profile-items h6 { font-size: 1.1em; } 63 | 64 | #profile-picture-container { 65 | margin: auto; 66 | color: #555; 67 | margin-bottom: 1em; 68 | } 69 | 70 | #profile-picture { 71 | border-radius: 0.25em; 72 | height: 8.7em; 73 | } 74 | 75 | #pronouns { 76 | margin: 0 0 1em 0; 77 | color: #666; 78 | } 79 | 80 | #pronouns a:link, 81 | #pronouns a:visited, 82 | #pronouns a:hover, 83 | #pronouns a:active { 84 | color: #666; 85 | } 86 | 87 | #details { 88 | margin: 1em 0; 89 | } 90 | 91 | #location { 92 | display: inline-block; 93 | } 94 | 95 | #occupation { 96 | display: inline-block; 97 | } 98 | 99 | #location, #occupation { 100 | margin: .5em; 101 | padding: 0 .5em; 102 | } 103 | 104 | #bio { 105 | text-align: center; 106 | font-size: 110%; 107 | line-height: 140%; 108 | } 109 | 110 | #footer { 111 | margin: 0; 112 | margin-top: 5em; 113 | color: #555; 114 | text-align: center; 115 | } 116 | 117 | #footer a:link, 118 | #footer a:visited, 119 | #footer a:hover, 120 | #footer a:active { 121 | color: #555; 122 | text-decoration: none; 123 | border: 0; 124 | } 125 | 126 | #prami { 127 | width: 2em; 128 | } 129 | 130 | ul { 131 | text-align: left; 132 | } 133 | 134 | li { 135 | line-height: 170%; 136 | } 137 | 138 | a:link, 139 | a:visited { 140 | color: #000; 141 | text-decoration-color: #555; 142 | text-decoration: none; 143 | border-bottom: 1px dotted #000; 144 | } 145 | a:hover, 146 | a:active { 147 | color: #000; 148 | text-decoration-color: #000; 149 | text-decoration: none; 150 | border-bottom: 2px solid #000; 151 | } 152 | 153 | .logotype { 154 | color: #f783ac; 155 | font-family: 'omg.lol'; 156 | } 157 | 158 | #verification { 159 | font-size: 80%; 160 | color: #0089cf; 161 | } 162 | 163 | @media (max-width: 500px) { 164 | body { 165 | font-size: 1em; 166 | padding: 1em; 167 | } 168 | main { 169 | padding: 1.5em; 170 | } 171 | } 172 | -------------------------------------------------------------------------------- /profiles/icons/omg.lol-icons.html: -------------------------------------------------------------------------------- 1 | omg.lol Icons

omg.lol icons generated 2022-11-24T15:28:57+00:00

andycarolan
anilist
archiveofourown
basic-attention-token
bookshop
buymeacoffee
cash-app
clarus
clubhouse
codeberg
coindrop
credly
ecosia
eyeem
fastmail
fediverse
geotastic
giphy
gumroad
hackerone
hey
honk
instapaper
keyoxide
ko-fi
laker
letterboxd
liberapay
lichess
litecoin
literal
lobsters
matrix
mediawiki
mltshp
musicboard
myanimelist
neatnik
ninegag
nintendo-switch
notion
opensea
osk
osu
passkey
pinboard
pixelfed
plutonium
polywork
postype
prami
procreate
pronounspage
rainbow-me
rarible
rate-your-music
ravencoin
read-cv
revolt
revue
roblox
session
signal-app
sourcehut
spacehey
spark-ar
sudomemo
tetrio
threema
tinyletter
toss
venmo
verified
vero
vukky
wattpad
well
wikimedia-community
writeas
xmpp
2 | HTML5 Powered 3 | -------------------------------------------------------------------------------- /profiles/themes/themes.json: -------------------------------------------------------------------------------- 1 | { 2 | "themes": { 3 | "default": { 4 | "name": "Default", 5 | "author": "OMG.LOL", 6 | "author_url": "https://omg.lol", 7 | "version": "1.0", 8 | "license": "MIT", 9 | "license_url": "https://opensource.org/licenses/MIT", 10 | "description": "A friendly, simple look for your amazing profile.", 11 | "url": "https://meta.omg.lol/meta/css/profile/profile.css", 12 | "repo": "https://github.com/neatnik/omg.lol/tree/main/profiles/themes" 13 | }, 14 | "cherry-blossom": { 15 | "name": "Cherry Blossom", 16 | "author": "OMG.LOL", 17 | "author_url": "https://omg.lol", 18 | "version": "1.0", 19 | "license": "MIT", 20 | "license_url": "https://opensource.org/licenses/MIT", 21 | "description": "Springtime, but all year long.", 22 | "url": "https://meta.omg.lol/meta/profiles/themes/cherry-blossom.css", 23 | "repo": "https://github.com/neatnik/omg.lol/tree/main/profiles/themes" 24 | }, 25 | "dark": { 26 | "name": "Dark", 27 | "author": "OMG.LOL", 28 | "author_url": "https://omg.lol", 29 | "version": "1.0", 30 | "license": "MIT", 31 | "license_url": "https://opensource.org/licenses/MIT", 32 | "description": "It’s super dark!", 33 | "url": "https://meta.omg.lol/meta/profiles/themes/dark.css", 34 | "repo": "https://github.com/neatnik/omg.lol/tree/main/profiles/themes" 35 | }, 36 | "gilded": { 37 | "name": "Gilded", 38 | "author": "Nima Owji", 39 | "author_url": "https://nima.omg.lol", 40 | "version": "1.0", 41 | "license": "MIT", 42 | "license_url": "https://opensource.org/licenses/MIT", 43 | "description": "Bold and dark with a touch of gold.", 44 | "url": "https://meta.omg.lol/meta/profiles/themes/gilded.css", 45 | "repo": "https://github.com/nimaowji/omglol-style" 46 | }, 47 | "gradient": { 48 | "name": "Gradient", 49 | "author": "Jamie Thalacker", 50 | "author_url": "https://jamiethalacker.omg.lol", 51 | "version": "1.0", 52 | "license": "MIT", 53 | "license_url": "https://opensource.org/licenses/MIT", 54 | "description": "A nice theme with an animated, gradient background.", 55 | "url": "https://gitlab.com/jamiethalacker/omg-lol-themes/-/raw/master/gradient.css", 56 | "repo": "https://gitlab.com/jamiethalacker/omg-lol-themes" 57 | }, 58 | "minimal": { 59 | "name": "Minimal", 60 | "author": "Jane Manchun Wong", 61 | "author_url": "https://jane.omg.lol", 62 | "version": "1.0", 63 | "license": "MIT", 64 | "license_url": "https://opensource.org/licenses/MIT", 65 | "description": "A minimal theme with automatic light/dark mode detection.", 66 | "url": "https://meta.omg.lol/meta/profiles/themes/minimal.css", 67 | "repo": "https://github.com/wongmjane/omglol-style" 68 | }, 69 | "naked": { 70 | "name": "Naked", 71 | "author": "OMG.LOL", 72 | "author_url": "https://omg.lol", 73 | "version": "1.0", 74 | "license": "MIT", 75 | "license_url": "https://opensource.org/licenses/MIT", 76 | "description": "No style at all, for those who want to do their own thing!", 77 | "url": "https://meta.omg.lol/meta/profiles/themes/naked.css", 78 | "repo": "https://github.com/neatnik/omg.lol/tree/main/profiles/themes" 79 | }, 80 | "monokai": { 81 | "name": "Monokai", 82 | "author": "Dakota Chambers", 83 | "author_url": "https://dakota.omg.lol", 84 | "version": "1.0", 85 | "license": "MIT", 86 | "license_url": "https://opensource.org/licenses/MIT", 87 | "description": "Your text editor's favorite color palette. Adapted from the Monokai color scheme by Wimer Hazenberg (@monokai).", 88 | "url": "https://meta.omg.lol/meta/profiles/themes/monokai.css", 89 | "repo": "https://github.com/dcchambers/omg.lol/tree/main/profiles/themes" 90 | }, 91 | "nothing_but_red": { 92 | "name": "Nothing but Red", 93 | "author": "Laker Turner", 94 | "author_url": "https://laker.gay", 95 | "version": "1.0", 96 | "license": "Public Domain", 97 | "license_url": "https://creativecommons.org/share-your-work/public-domain/", 98 | "description": " What happens when you put the cherry blossom theme through a dark mode extension.", 99 | "url": "https://github.com/PurpleHeartLabs/omg.lol/blob/main/profiles/themes/Nothing%20but%20Red.css", 100 | "repo": "https://github.com/PurpleHeartLabs/omg.lol/tree/main/profiles/themes" 101 | }, 102 | "PurpleGray": { 103 | "name": "PurpleGray", 104 | "author": "Mert Dogu", 105 | "author_url": "https://mert.omg.lol", 106 | "version": "1.0", 107 | "license": "MIT", 108 | "license_url": "https://opensource.org/licenses/MIT", 109 | "description": "Purple.. and yeah, gray.", 110 | "url": "https://meta.omg.lol/meta/profiles/themes/PurpleGray.css", 111 | "repo": "https://github.com/rexulec/omg.lol/tree/main/profiles/themes" 112 | }, 113 | "SpaceLatte": { 114 | "name": "Space Latte", 115 | "author": "Laker J.V Turner", 116 | "author_url": "https://laker.tech", 117 | "version": "1.0", 118 | "license": "MIT", 119 | "license_url": "https://opensource.org/licenses/MIT", 120 | "description": "Cosmic Latte, as an OMG.LOL theme.", 121 | "url": "https://meta.omg.lol/meta/profiles/themes/SpaceLatte.css", 122 | "repo": "https://github.com/lxjv/omg.lol/blob/main/profiles/themes/SpaceLatte.css", 123 | }, 124 | "dracula": { 125 | "name": "Dracula", 126 | "author": "Bye", 127 | "author_url": "https://bye.omg.lol", 128 | "version": "1.0", 129 | "license": "MIT", 130 | "license_url": "https://opensource.org/licenses/MIT", 131 | "description": "Dark theme with a touch of purple. Adapted from the Dracula color scheme by @zenorocha", 132 | "url": "https://raw.githubusercontent.com/byemc/themes/master/css/profile/dracula.css", 133 | "repo": "https://git.byemc.xyz/themes" 134 | }, 135 | "emerald-isle": { 136 | "name": "Emerald Isle", 137 | "author": "Bye", 138 | "author_url": "https://bye.omg.lol", 139 | "version": "1.0", 140 | "license": "MIT", 141 | "license_url": "https://opensource.org/licenses/MIT", 142 | "description": "island lol", 143 | "url": "https://raw.githubusercontent.com/byemc/themes/master/css/profile/emerald-isle.css", 144 | "repo": "https://git.byemc.xyz/themes" 145 | }, 146 | "hotdog-stand": { 147 | "name": "Hot Dog Stand", 148 | "author": "Bye", 149 | "author_url": "https://bye.omg.lol", 150 | "version": "1.0", 151 | "license": "Public Domain", 152 | "license_url": "https://creativecommons.org/share-your-work/public-domain/", 153 | "description": "MY EYES (included as a joke in Windows 3.1)", 154 | "url": "https://raw.githubusercontent.com/byemc/themes/master/css/profile/hotdog-stand.css", 155 | "repo": "https://git.byemc.xyz/themes" 156 | } 157 | } 158 | } 159 | -------------------------------------------------------------------------------- /api/docs/Web.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "3604e992-8713-438e-ac9c-b6e4e60fa40d", 4 | "name": "Web", 5 | "description": "Manage profile page and web stuff on an omg.lol address", 6 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 7 | "_exporter_id": "12532425" 8 | }, 9 | "item": [ 10 | { 11 | "name": "Retrieve web page content", 12 | "request": { 13 | "auth": { 14 | "type": "bearer", 15 | "bearer": [ 16 | { 17 | "key": "token", 18 | "value": "{{api_key}}", 19 | "type": "string" 20 | } 21 | ] 22 | }, 23 | "method": "GET", 24 | "header": [], 25 | "url": { 26 | "raw": "https://{{base_url}}/address/:address/web", 27 | "protocol": "https", 28 | "host": [ 29 | "{{base_url}}" 30 | ], 31 | "path": [ 32 | "address", 33 | ":address", 34 | "web" 35 | ], 36 | "variable": [ 37 | { 38 | "key": "address", 39 | "value": "haydensato" 40 | } 41 | ] 42 | }, 43 | "description": "Retrieve web content and information for an address" 44 | }, 45 | "response": [ 46 | { 47 | "name": "Retrieve web page content", 48 | "originalRequest": { 49 | "method": "GET", 50 | "header": [], 51 | "url": { 52 | "raw": "https://{{base_url}}/address/:address/web", 53 | "protocol": "https", 54 | "host": [ 55 | "{{base_url}}" 56 | ], 57 | "path": [ 58 | "address", 59 | ":address", 60 | "web" 61 | ], 62 | "variable": [ 63 | { 64 | "key": "address", 65 | "value": "haydenmatsui" 66 | } 67 | ] 68 | } 69 | }, 70 | "status": "OK", 71 | "code": 200, 72 | "_postman_previewlanguage": "json", 73 | "header": [ 74 | { 75 | "key": "Date", 76 | "value": "Fri, 24 Dec 2021 16:35:54 GMT" 77 | }, 78 | { 79 | "key": "Server", 80 | "value": "Apache" 81 | }, 82 | { 83 | "key": "Access-Control-Allow-Origin", 84 | "value": "*" 85 | }, 86 | { 87 | "key": "Content-Length", 88 | "value": "402" 89 | }, 90 | { 91 | "key": "Keep-Alive", 92 | "value": "timeout=5, max=100" 93 | }, 94 | { 95 | "key": "Connection", 96 | "value": "Keep-Alive" 97 | }, 98 | { 99 | "key": "Content-Type", 100 | "value": "text/json;charset=UTF-8" 101 | } 102 | ], 103 | "cookie": [], 104 | "body": "{\n \"request\": {\n \"status_code\": 200,\n \"success\": true\n },\n \"response\": {\n \"message\": \"Here is the web content for haydenmatsui.\",\n \"content\": \"# Hayden Sato\\n\\n| Pronouns: they/them\\n| Location: Fiji\\n| Occupation: Arborist\\n\\nI take care of trees!\\n\\n--- Profile Items ---\\n\\n- [Twitter](https://twitter.com)\\n- [Instagram](https://instagram.com)\\n\"\n }\n}" 105 | } 106 | ] 107 | }, 108 | { 109 | "name": "Update web page content", 110 | "request": { 111 | "auth": { 112 | "type": "bearer", 113 | "bearer": [ 114 | { 115 | "key": "token", 116 | "value": "{{api_key}}", 117 | "type": "string" 118 | } 119 | ] 120 | }, 121 | "method": "POST", 122 | "header": [], 123 | "body": { 124 | "mode": "raw", 125 | "raw": "{\"content\": \"# Hayden Matsui\\n\\n| Pronouns: they/them\\n| Location: Fiji\\n| Occupation: Arborist\\n\\nI take care of trees!\\n\\n--- Profile Items ---\\n\\n- [Twitter](https://twitter.com)\\n- [Instagram](https://instagram.com)\\n\"}" 126 | }, 127 | "url": { 128 | "raw": "https://{{base_url}}/address/:address/web", 129 | "protocol": "https", 130 | "host": [ 131 | "{{base_url}}" 132 | ], 133 | "path": [ 134 | "address", 135 | ":address", 136 | "web" 137 | ], 138 | "variable": [ 139 | { 140 | "key": "address", 141 | "value": "haydensato" 142 | } 143 | ] 144 | }, 145 | "description": "Update web content for an address" 146 | }, 147 | "response": [ 148 | { 149 | "name": "Update web page content", 150 | "originalRequest": { 151 | "method": "POST", 152 | "header": [], 153 | "body": { 154 | "mode": "raw", 155 | "raw": "{\"content\": \"# Hayden Matsui\\n\\n| Pronouns: they/them\\n| Location: Fiji\\n| Occupation: Arborist\\n\\nI take care of trees!\\n\\n--- Profile Items ---\\n\\n- [Twitter](https://twitter.com)\\n- [Instagram](https://instagram.com)\\n\"}" 156 | }, 157 | "url": { 158 | "raw": "https://{{base_url}}/address/:address/web", 159 | "protocol": "https", 160 | "host": [ 161 | "{{base_url}}" 162 | ], 163 | "path": [ 164 | "address", 165 | ":address", 166 | "web" 167 | ], 168 | "variable": [ 169 | { 170 | "key": "address", 171 | "value": "haydenmatsui" 172 | } 173 | ] 174 | } 175 | }, 176 | "status": "OK", 177 | "code": 200, 178 | "_postman_previewlanguage": "json", 179 | "header": [ 180 | { 181 | "key": "Date", 182 | "value": "Fri, 24 Dec 2021 16:37:12 GMT" 183 | }, 184 | { 185 | "key": "Server", 186 | "value": "Apache" 187 | }, 188 | { 189 | "key": "Access-Control-Allow-Origin", 190 | "value": "*" 191 | }, 192 | { 193 | "key": "Content-Length", 194 | "value": "171" 195 | }, 196 | { 197 | "key": "Keep-Alive", 198 | "value": "timeout=5, max=100" 199 | }, 200 | { 201 | "key": "Connection", 202 | "value": "Keep-Alive" 203 | }, 204 | { 205 | "key": "Content-Type", 206 | "value": "text/json;charset=UTF-8" 207 | } 208 | ], 209 | "cookie": [], 210 | "body": "{\n \"request\": {\n \"status_code\": 200,\n \"success\": true\n },\n \"response\": {\n \"message\": \"Your web content has been saved and published.\"\n }\n}" 211 | } 212 | ] 213 | }, 214 | { 215 | "name": "Upload a profile picture", 216 | "request": { 217 | "auth": { 218 | "type": "bearer", 219 | "bearer": [ 220 | { 221 | "key": "token", 222 | "value": "{{api_key}}", 223 | "type": "string" 224 | } 225 | ] 226 | }, 227 | "method": "POST", 228 | "header": [], 229 | "body": { 230 | "mode": "file", 231 | "file": { 232 | "src": "/Users/adam/Desktop/hi.svg" 233 | } 234 | }, 235 | "url": { 236 | "raw": "https://{{base_url}}/address/:address/pfp", 237 | "protocol": "https", 238 | "host": [ 239 | "{{base_url}}" 240 | ], 241 | "path": [ 242 | "address", 243 | ":address", 244 | "pfp" 245 | ], 246 | "variable": [ 247 | { 248 | "key": "address", 249 | "value": "adam" 250 | } 251 | ] 252 | }, 253 | "description": "Update web content for an address" 254 | }, 255 | "response": [ 256 | { 257 | "name": "Upload a profile picture", 258 | "originalRequest": { 259 | "method": "POST", 260 | "header": [], 261 | "url": { 262 | "raw": "https://{{base_url}}/address/:address/pfp", 263 | "protocol": "https", 264 | "host": [ 265 | "{{base_url}}" 266 | ], 267 | "path": [ 268 | "address", 269 | ":address", 270 | "pfp" 271 | ], 272 | "variable": [ 273 | { 274 | "key": "address", 275 | "value": "adam" 276 | } 277 | ] 278 | } 279 | }, 280 | "status": "OK", 281 | "code": 200, 282 | "_postman_previewlanguage": "json", 283 | "header": [ 284 | { 285 | "key": "Date", 286 | "value": "Sun, 11 Sep 2022 16:20:30 GMT" 287 | }, 288 | { 289 | "key": "Server", 290 | "value": "Apache" 291 | }, 292 | { 293 | "key": "Access-Control-Allow-Origin", 294 | "value": "*" 295 | }, 296 | { 297 | "key": "Access-Control-Allow-Methods", 298 | "value": "GET,POST,OPTIONS,DELETE,PUT" 299 | }, 300 | { 301 | "key": "Access-Control-Allow-Headers", 302 | "value": "Authorization" 303 | }, 304 | { 305 | "key": "Content-Length", 306 | "value": "159" 307 | }, 308 | { 309 | "key": "Keep-Alive", 310 | "value": "timeout=5, max=100" 311 | }, 312 | { 313 | "key": "Connection", 314 | "value": "Keep-Alive" 315 | }, 316 | { 317 | "key": "Content-Type", 318 | "value": "text/json;charset=UTF-8" 319 | } 320 | ], 321 | "cookie": [], 322 | "body": "{\n \"request\": {\n \"status_code\": 200,\n \"success\": true\n },\n \"response\": {\n \"message\": \"We received 2891341 bytes of data.\"\n }\n}" 323 | } 324 | ] 325 | } 326 | ] 327 | } --------------------------------------------------------------------------------