Commit Graph
100 Commits
Author SHA1 Message Date
evazion 1c2042285f css: replace more css with tailwind-style classes. 2022-12-11 21:29:19 -06:00
evazion fc7bc64d4c css: fix empty space in paginator on mobile.
Fix the hidden "..." icon causing a gap between the page number and the right arrow on mobile.
2022-12-11 17:34:18 -06:00
evazion 6f9dbb65e0 icons: reduce size of github logo.
Reduce resolution from 512x512 -> 32x32 and filesize from 45kb -> 2.7kb.
2022-12-11 04:36:26 -06:00
evazion ea4daec58d posts: fix shift+e keyboard shortcut not working.
Broken in da6a61b4e.
2022-12-11 04:21:27 -06:00
evazion da6a61b4e7 css: switch to SVG sprites for icons.
Switch to using SVG sprites for icons, instead of using a combination of icon fonts and inline SVG elements.

This means there's a single icons.svg file containing all icons, and icons are referenced like
`<svg><use href="/icons.svg#arrow-alt-up"/></svg>`.

This should make icons more efficient since a) it replaces an 80kb icon font file with a 8kb SVG
file and b) it replaces repeated inline copies of the same icon with references to the sprite sheet.
This most notably affects the upvote and downvote buttons.

This also updates icons from Font Awesome 5 to Font Awesome 6, which fixes a few minor icon
alignment issues in some places.

ref: https://fontawesome.com/docs/web/add-icons/svg-sprites
2022-12-11 02:16:01 -06:00
evazion 20a2652c1e pawoo: fix tests. 2022-12-10 19:12:46 -06:00
evazion 993e4fd62f Fix #5366: Baraag broken.
* Use fixed access tokens instead of fetching an access token with the OAuth flow. This assumes
  access tokens won't expire, which seems to be true for the default app-level access token, unless
  you manually regenerate it. Fixes the OAuth flow not working on Baraag for some reason.

* Eliminate the MastodonApiClient class. Just inline it in the extractor instead.

Downstream users will need to update their configs to set the `pawoo_access_token` and
`baraag_access_token` config options.
2022-12-10 18:27:05 -06:00
evazion 15bdf7d6cf Fix #5370: TypeError updating bans without selecting duration. 2022-12-10 17:12:34 -06:00
evazion f74f1e9f70 artists: add more website icons for artist entries. 2022-12-10 17:02:49 -06:00
evazion e2786d0292 Fix #5371: More website icons for artist entries. 2022-12-10 16:52:47 -06:00
evazion d4e97bd536 webpack: fix CSS/JS files being cached forever in Safari.
Fix issue where CSS and Javascript files were permanently cached by Safari in development mode.
Safari seems to cache CSS and JS files forever, no matter what the Cache-Control header says. The
workaround is to use `Vary: *`.
2022-12-10 01:02:02 -06:00
evazion f0bd57af98 media assets: fix paginator positioning on mobile.
On the media assets show page, fix the styling and positioning of the paginator on mobile.
2022-12-09 22:43:32 -06:00
evazion 16c9e906b2 media assets: scroll to position on zoom.
On the media asset show page, make it so that when you click an image to zoom in, the page scrolls
to the clicked position. For example, if you click on the bottom of an image, scroll down so that
the bottom of the zoomed image is in view.

This makes it easier to view very tall images by letting you click on the part of the image you want
to see.
2022-12-09 18:23:32 -06:00
evazion aefa7586fd media assets: refactor media asset component. 2022-12-09 15:17:45 -06:00
evazion f3a1b42d10 gems: revert mail gem to fix startup failure.
mail-2.8.0 has a bug that causes Rails to fail to boot in production. Temporarily revert back to 2.7.1.

See https://www.github.com/mikel/mail/issues/1489
2022-12-08 16:35:54 -06:00
evazion 93cd7197e7 Update Ruby gems and Yarn packages. 2022-12-08 03:12:44 -06:00
evazion 2c33539be7 uploads: allow searching uploads and media assets by metatag.
Allow searching the /uploads and /media_assets pages by the following metatags:

* id:
* md5:
* width:
* height:
* duration:
* mpixels:
* ratio:
* filesize:
* filetype:
* date:
* age:
* status:<processing|active|deleted|expunged|failed> (for /media_assets)
* status:<pending|processing|active|failed> (for /uploads)
* is:<filetype>, is:<status>
* exif:

Examples:

* https://betabooru.donmai.us/media_assets?search[ai_tags_match]=filetype:png
* https://betabooru.donmai.us/uploads?search[ai_tags_match]=filetype:png

Note that in /uploads search, the id:, date:, and age: metatags refer to the upload media asset, not
the upload itself.

Note also that uploads may contain multiple assets, so for example searching uploads by
`filetype:png` will return all uploads containing at least one PNG file, even if they contain other
non-PNG files.
2022-12-07 01:02:19 -06:00
evazion 062a67086e media assets: fix sidebar overflow on Chrome.
Fix bug on the media assets show page where very long EXIF values wouldn't be word-broken, so they
could cause the sidebar to become wider than the screen. This only affected Chrome, not Firefox or
Safari.

Example: https://danbooru.donmai.us/media_assets/7167264
2022-12-06 19:46:41 -06:00
evazion 697691589e uploads: fix stretched images on Safari.
Fix images on the upload page appearing stretched (having the incorrect aspect ratio) when the image
is enlarged on Safari.

The fix is to set `aspect-ratio` and `height: intrinsic` to ensure the image is the right size. I
have no idea how this works or why it's necessary on Safari.

Fixes https://danbooru.donmai.us/forum_posts/227099.
2022-12-06 19:46:31 -06:00
evazion 7efd5d6db3 users: add ability to search for deleted users. 2022-12-05 23:58:31 -06:00
evazion dddd28a27b users: don't allow Hangul filler characters in names.
Don't allow the following characters in names:

* https://codepoints.net/U+115F (HANGUL CHOSEONG FILLER)
* https://codepoints.net/U+1160 (HANGUL JUNGSEONG FILLER)
* https://codepoints.net/U+3164 (HANGUL FILLER)
* https://codepoints.net/U+FFA0 (HALFWIDTH HANGUL FILLER)

These are space-like characters that were inadvertently allowed because they're not considered
whitespace by Unicode and because they're in the Hangul script (which we otherwise allow).
2022-12-05 23:58:31 -06:00
evazion d157899226 users: disallow more names ending with file extensions.
Disallow any name that has a suffix registered as a file extension in Rails.
2022-12-05 23:58:24 -06:00
evazion d9dc84325f Fix #5365: Don't allow whitespace-only text submission.
Fix bug where it was possible to submit blank text in various text fields.

Caused by `String#blank?` not considering certain Unicode characters as blank. `blank?` is defined
as `match?(/\A[[:space:]]*\z/)`, where `[[:space:]]` matches ASCII spaces (space, tab, newline, etc)
and Unicode characters in the Space category ([1]). However, there are other space-like characters
not in the Space category. This includes U+200B (Zero-Width Space), and many more.

It turns out the "Default ignorable code points" [2][3] are what we're after. These are the set of 400
or so formatting and control characters that are invisible when displayed.

Note that there are other control characters that aren't invisible when rendered, instead they're
shown with a placeholder glyph. These include the ASCII C0 and C1 control codes [4], certain Unicode
control characters [5], and unassigned, reserved, and private use codepoints.

There is one outlier: the Braille pattern blank (U+2800) [6]. This character is visually blank, but is
not considered to be a space or an ignorable code point.

[1]: https://codepoints.net/search?gc[]=Z
[2]: https://codepoints.net/search?DI=1
[3]: https://www.unicode.org/review/pr-5.html
[4]: https://codepoints.net/search?gc[]=Cc
[5]: https://codepoints.net/search?gc[]=Cf
[6]: https://codepoints.net/U+2800
[7]: https://en.wikipedia.org/wiki/Whitespace_character
[8]: https://character.construction/blanks
[9]: https://invisible-characters.com
2022-12-05 01:58:34 -06:00
evazion 640a20d81c Fix #5354: Add bookmarklet support for picdig.net. 2022-12-03 02:48:56 -06:00
evazion ed0716693b users: add ability to undelete accounts.
Add ability to undelete accounts from within the console. Their password is reset, their name is
restored to their last known user name, and a mod action is logged.
2022-12-02 23:24:38 -06:00
evazion d7d3427488 Fix #5363: Inconsistent order of files from zip uploads.
Upload files in natural order rather than archive order when uploading archive files.

Before files were listed in the same order they appeared in the zip file. This could be in
non-alphabetical order, or even with files from different directories interleaved between each
other. Now files are uploaded in natural order, which is alphabetical order but with numbers sorted
properly, so that `file-9.jpg` appears before `file-10.jpg`.
2022-12-02 18:04:45 -06:00
evazion c19fc16885 sources: don't escape Unicode characters in tag search URLs.
Fix it so that Unicode characters aren't unnecessarily percent-encoded when generating tag search
URLs. For example, generate URLs like this:

* https://www.pixiv.net/tags/オリジナル/artworks

Not like this:

* https://www.pixiv.net/tags/%E3%82%AA%E3%83%AA%E3%82%B8%E3%83%8A%E3%83%AB/artworks
2022-12-02 16:35:49 -06:00
evazion 9e34f4c3ed pixiv: update tag search URL to https://www.pixiv.net/tags/{name}/artworks. 2022-12-02 15:56:57 -06:00
evazion 2f508f03cf Fix #5362: Suggest ai-generated as a translated tag from pixiv response 2022-12-02 15:42:11 -06:00
evazion 25978ca754 Fix #5317: Don't allow users to flag posts they can't see.
A couple non-obvious consequences:

* Users can't flag non-rating:G posts in safe mode.
* Non-Gold users can flag Gold-only posts if they're the uploader.
2022-12-02 14:44:24 -06:00
evazion e11cd288b9 Fix #5360: Use OpenGraph's og:image metadata for posts.
* Add og:image:width, og:image:height, and og:image:type tags.
* Use og:video tags for videos.
* Use 720x720 instead of 150x150 preview images for videos.
* Add duration tag to JSON-LD data for videos.
* Add OpenGraph tags to media assets show page.
* Respect Twitter max image size limits.
* Don't include OpenGraph image tags when someone shares a plain https://danbooru.donmai.us link
  with no tag search. This caused random potentially NSFW images to be shown when someone shared a
  https://danbooru.donmai.us link on social media, which could be cached for long periods of time.
2022-12-02 00:59:23 -06:00
evazion ca0a4af455 jobs: include job duration and queue delay on /jobs page. 2022-11-30 17:56:14 -06:00
evazion a07e6667b4 jobs: fix backwards job priorities.
Fix bug where jobs had the opposite of the intended priority. Populating saved searches had the
highest priority, while processing uploads had the lowest priority.

Caused by Delayed::Job and GoodJob having opposite interpretations of job priorities. In
Delayed::Job, lower numbers had higher priority, while in GoodJob, higher numbers have higher
priority. This was missed when migrating from Delayed::Job to GoodJob.
2022-11-30 17:56:10 -06:00
evazion 7d0d74a0f0 jobs: sort job classes by name in search form. 2022-11-30 14:43:04 -06:00
evazion dd99e4bf6f media assets: add ability to search by duration. 2022-11-30 14:05:03 -06:00
evazion 6b109af7bb uploads: fixup bugs in 65a17979c and 05143dc9f.
* Fix exception in 65a17979c due to reference to `@media_asset` instead of `media_asset.
* Fix 05143dc9f not removing links to deleted images on the upload page.
2022-11-29 22:48:50 -06:00
evazion 65a17979c6 media assets: add Ascii2D reverse search link. 2022-11-29 22:20:43 -06:00
evazion 05143dc9fa media assets: remove image links for deleted images.
Don't show dead direct image links, reverse search links, or source links for deleted media assets.
2022-11-29 22:18:21 -06:00
evazion a2d9154125 media assets: purge Cloudflare cache after deleting image files. 2022-11-29 21:23:40 -06:00
evazion a048a704cb uploads: add reverse image search links to upload page.
On the upload page, change the file size info beneath the image to be formatted the same way as on
the media assets page, and to include a menu with links to offsite reverse image search tools.
2022-11-29 21:01:38 -06:00
evazion 756362f89e Fix #4990: Allow admins to delete uploads.
Allow admins to delete media asset files.

This only deletes the image file itself, not the upload or media asset record. The upload will still
be in the user's upload list, but the image will be gone. The media asset page will still exist, but
it will only show the file's metadata, not the image itself. We don't delete the metadata so we have
a record of what the file's MD5 was and who uploaded it, to prevent the file from being uploaded
again and to take action against the user if necessary.
2022-11-29 19:10:08 -06:00
evazion 695568e08b media assets: add options to download or reverse search the image. 2022-11-29 19:10:08 -06:00
evazion ba8ff9e0a0 media assets: add link to Danbooru post beneath image.
On the show page, add a icon beneath the image linking to the Danbooru post if the asset has been posted.

FIXME: Downstream boorus should change the icon to something else.
2022-11-29 19:10:08 -06:00
evazion 0d651f24e6 Merge pull request #5359 from eltociear/patch-3
Fix typo in tag_mover.rb
2022-11-29 18:08:59 -06:00
evazion 580cc3bc9a Fix #5311: Unexpected error: Module::DelegationError on failed media assets. 2022-11-29 01:42:44 -06:00
evazion 2836b4b929 sources: fix 4chan URL parsing.
Add support for is2.4chan.org image URLs and various old URL formats.
2022-11-28 21:23:55 -06:00
evazion 068d435f56 controllers: fix index redirect param to not redirect to .html extension.
Fix searches like this:

* https://danbooru.donmai.u/wiki_pages?search[title]=touhou&redirect=true

To redirect to this:

* https://danbooru.donmai.u/wiki_pages/touhou

Instead of this:

* https://danbooru.donmai.u/wiki_pages/touhou.html

This also fixes redirects when searching for users on profile pages, and during pagination on media
asset show pages.
2022-11-28 17:09:36 -06:00
evazion 096efdee7b sources: add rule34.xxx, safebooru.org, and tbib.org site icons.
Fixes these sources incorrectly using the Gelbooru site icon.
2022-11-28 15:56:54 -06:00
evazion 937e6df7f7 media assets: show sources on show page.
Show sources on the media asset show page. An asset can have more than one source if the same
file is uploaded from multiple sites.

Only sources from known sites are shown. Sources from unknown sites aren't shown because they
could potentially contain private information or identify the uploader in some way.

Known issue: Twitter posts often show two sources, the direct image URL and the page URL. This is
because someone uploaded the direct image URL first, and we're not able to tell that the image URL
and the page URL are for the same tweet.
2022-11-28 00:17:16 -06:00
evazion 3a42866a20 media assets: fix show page to play Flash files. 2022-11-27 22:03:07 -06:00
evazion b6acc81a17 media assets: fix show page to fit videos to screen height. 2022-11-27 22:01:34 -06:00
evazion a5d4af332d media assets: redesign show page.
Redesign the media assets show page to:

* Include sidebar with AI tags and image metadata.
* Include next and previous image buttons.
* Make the image use 100% of the available screen space and to scroll with the window.
2022-11-27 21:32:45 -06:00
evazion 8a2f59172b Fix #5353: Username capitalization is wrong in reports. 2022-11-24 14:28:18 -06:00
evazion c60577593f Fix #5356: settings: Extra space after 'Change email' link 2022-11-24 13:15:17 -06:00
evazion 81e8ac1fa8 notes: fix text boxes not being 100% width.
Fixup for 5559219f0.
2022-11-24 03:05:05 -06:00
evazion 5665346942 jobs: fix certain jobs not appearing in /jobs category dropdown. 2022-11-22 23:26:01 -06:00
evazion 5102e9d4e3 Fix #5261: empty wiki pages no longer show tag options. 2022-11-22 22:28:24 -06:00
evazion c8e3f957da tests: fix broken tests. 2022-11-22 22:10:52 -06:00
evazion b234727832 tags: ensure aliased tag categories stay in sync.
* When a tag's category is changed, also change the category of any aliases pointing to it. For
  example, if "ff7" is aliased to "final_fantasy_vii", and "final_fantasy_vii" is changed to a
  copyright tag, then change the empty "ff7" tag to be a copyright tag too.

* Don't allow changing the category of an aliased tag. For example, if "ff7" is aliased to
  "final_fantasy_vii", then don't allow changing the "ff7" tag to be a non-copyright tag.

This ensures that the categories of aliased tags stay in sync with that of their parent tags. This
way aliased tags are colored correctly in wikis and other places.
2022-11-22 22:00:23 -06:00
evazion 1a9718250f replacements: strip spaces from replacement URL.
Fix a handful of replacements having a replacement URL with a space in front or at the end.
This caused problems when searching by replacement URL.
2022-11-21 17:47:56 -06:00
evazion 2d2b465ef8 media assets: don't redistribute original file when regenerating thumbnails.
When regenerating thumbnails for a media asset, don't redistribute the original file. This is
unnecessary and also slow if it's a large file on remote storage.
2022-11-21 15:46:17 -06:00
evazion 2d83500885 sources: fix dummy names being suggested as other names.
Fix placeholder names like weibo_1234, bilibili_1234, nijie1234, and nicoseiga1234 being suggested
as Other Names when creating new artist entries. These are meant to be placeholders for the tag
name, not used as other names.
2022-11-21 14:55:10 -06:00
evazion 5559219f0a ui: hide DText "Formatting help" link in dialog boxes.
Hide the "Formatting help" link for single-line DText fields in dialog boxes, such as after the
"Reason" field in the flag, appeal, and report dialog boxes.
2022-11-21 14:23:49 -06:00
evazion bc5ca71bdf search: fix post count caching for the date: metatag.
The `date:` metatag depends on the current user's time zone, so the post count for `date:` searches
needs to be cached separately for different users, otherwise it could lead to incorrect page counts
if two users with different time zones search for the same `date:` metatag at the same time.
2022-11-21 00:16:36 -06:00
evazion ba1cf14c7e uploads: mark uploads as failed if they're stuck processing for more than 4 hours. 2022-11-20 23:41:07 -06:00
evazion 570d6a9d01 storage manager: close file after copying it. 2022-11-20 23:13:57 -06:00
evazion ee3a7159ea cloudflare: mark cloudflare API calls as external. 2022-11-20 22:40:20 -06:00
evazion f9b8e83bb0 emails: fix deliverability check when MX lookup returns nonexistent domain.
Fix the email deliverability check to return undeliverable when the MX lookup returns a domain or IP
address that is invalid or that refuses connections. For example, `yeah.com` returns the invalid IP
address 0.0.0.0 for its MX record.
2022-11-20 22:39:12 -06:00
evazion 80faee67db forum: fix mod action when forum post is deleted.
Fix forum posts logging an "updated forum #1234" mod action instead of a "deleted forum #1234" mod
action when a forum post was deleted.
2022-11-20 22:24:55 -06:00
evazion 1e478ab1b5 favgroups: add stricter favgroup naming rules.
Don't allow favgroup names that:

* Start or end with underscores.
* Contain multiple underscores in a row.
* Contain asterisks or non-printable characters.
* Consist of only underscores.
* Consist of only digits (conflicts with `favgroup:1234` syntax).

Add a fix script that fixes favgroups that violate these rules and notifies the user.
2022-11-20 22:09:57 -06:00
evazion 4fd028a5ce artists: fix ban/unban actions.
Fix the ban! and unban! methods to:

* Lock the artist while it is being banned or unbanned.
* Perform the edits as a mass update, so that the posts are updated in parallel.
* Edit the artist as the banner rather than as the current user.
* Soft delete the banned_artist implication when an artist is unbanned instead of hard deleting it.
* Ignore the banned_artist implication if it's deleted.
2022-11-20 19:25:20 -06:00
evazion 01c6d11253 bans: validate ban duration is standard length. 2022-11-20 17:10:20 -06:00
evazion 001ce99dd3 feedbacks: don't send redundant dmails when user is banned or loses approver status.
When a user is banned, send them a "You have been banned" dmail instead of a "Your user record has
been updated" dmail.

When a user loses approver status due to inactivity, don't seen them a "Your user record has been
updated" dmail for the "Lost approver privileges" neutral feedback they receive.
2022-11-20 17:10:20 -06:00
evazion bbe32f5e5d feedbacks: update messaging about negative feedbacks.
Update wording about negative feedbacks on the new feedback page, and on the Dmail you receive when
you receive a negative feedback.
2022-11-20 17:10:20 -06:00
evazion cc13c5cd57 feedbacks: fix mod action when feedback is deleted.
Fix feedbacks logging an "updated user feedback" mod action instead of a "deleted user feedback"
mod action when a feedback was deleted.
2022-11-20 15:29:46 -06:00
evazion d99da72744 4chan: fix commentary linebreaks. 2022-11-20 14:34:25 -06:00
evazion d63d0b1adc uploads: add archives filetypes to file upload component. 2022-11-20 14:30:02 -06:00
evazion 468754702e docker: upgrade openresty and exiftool versions. 2022-11-19 21:34:38 -06:00
evazion f8d2758f8b uploads: fix sources for 4chan uploads.
Fix a bug where, if you were uploading an entire 4chan thread, then the source of each post would
get set to the 4chan thread, rather than to the individual 4chan post.
2022-11-18 21:27:10 -06:00
evazion 902cd0bbdf sources: add 4chan.org upload support.
Add upload support for 4chan.org. You can upload either individual posts or entire threads at a time.
2022-11-18 01:23:15 -06:00
evazion 94824fb171 bilibili: fix API calls returning HTTP 412.
Fix API calls returning HTTP 412 (Precondition Failed) errors. It seems we need to spoof the Referer as
`https://bilibili.com` for API calls to succeed.
2022-11-16 22:26:01 -06:00
evazion 96e1b6a512 Fix #5063: Support downloading ArtStation video clips. 2022-11-16 22:26:01 -06:00
evazion 869fddbb1a tests: fix broken tests. 2022-11-16 22:26:01 -06:00
evazion a747911df8 foundation: fix foundation.app/@name/~/$id type URLs.
Fix URLs like this not working:

    https://foundation.app/@mochiiimo/~/97376

The correct URL is now:

    https://foundation.app/@mochiiimo/foundation/97376
2022-11-16 22:26:01 -06:00
evazion 491cce2f8c Update Ruby gems and Yarn packages. 2022-11-16 22:26:01 -06:00
evazion 6798e2ccf5 Merge pull request #5348 from nottalulah/patch-2
fix category text formatting in CategorizedTagList template
2022-11-16 17:21:16 -06:00
evazion 2deae38a4e uploads: allow uploading .zip, .rar., and .7z files from disk.
Allow uploading .zip, .rar, and .7z files from disk. The archive will be extracted and the images
inside will be uploaded.

This only works for archive files uploaded from disk, not from a source URL.

Post source URLs will look something like this: "file://foo.zip/1.jpg", "file://foo.zip/2.jpg", etc.
Sometimes artists uses Shift JIS or other encodings instead of UTF-8 for filenames. In these cases
we just assume the filename is UTF-8 and replace invalid characters with '?', so filenames might be
wrong in some cases.

There are various protections to prevent uploading malicious archive files:

* Archives with more than 100 files aren't allowed.
* Archives that decompress to more than 100MB aren't allowed.
* Archives with filenames containing '..' components aren't allowed (e.g. '../../../../../etc/passwd').
* Archives with filenames containing absolute paths aren't allowed (e.g. '/etc/passwd').
* Archives containing symlinks aren't allowed (e.g. 'foo -> /etc/passwd').
* Archive types other than .zip, .rar, and .7z aren't allowed (e.g. .tar.gz, .cpio).
* File permissions, owners, and other metadata are ignored.

Partial fix for #5340: Add support for extracting archive attachments from certain sources
2022-11-16 16:47:37 -06:00
evazion d791924aad posts: fix /posts/random?tags=... redirect.
Fix /posts/random?tags=touhou to redirect to /posts/1234?q=touhou instead of /posts/1234?tags=touhou.

Fixes the search bar on random posts not containing the current search.
2022-11-15 19:38:43 -06:00
evazion bc169fc98c posts: fix exception in random:1 filetype:png. 2022-11-15 19:33:25 -06:00
evazion e935f01358 uploads: fix temp files not being cleaned up quickly enough.
Fix temp files generated during the upload process not being cleaned up quickly enough. This included
downloaded files, generated preview images, and Ugoira video conversions.

Before we relied on `Tempfile` cleaning up files automatically. But this only happened when the
Tempfile object was garbage collected, which could take a long time. In the meantime we could have
hundreds of megabytes of temp files hanging around.

The fix is to explicitly close temp files when we're done with them. But the standard `Tempfile`
class doesn't immediately delete the file when it's closed. So we also have to introduce a
Danbooru::Tempfile wrapper that deletes the tempfile as soon as it's closed.
2022-11-15 18:50:50 -06:00
evazion 21a779455f discord: fix /tagme command to work with html page URLs. 2022-11-15 15:22:56 -06:00
evazion aa21f002be tests: fix cleanup of upload temp files.
Fix upload temp files sometimes not being cleaned up when tests exit.
2022-11-15 15:16:50 -06:00
evazion 53f40b3331 gems: add back pry gem.
The `pry` gem was removed in e698bf91 because we replaced `pry-byebug` with the standard debugger.
Add it back because `pry` is better than `irb` and we still can use the standard debugger with it.
2022-11-15 14:18:22 -06:00
evazion f128c48485 archives: add code for detecting .rar and .7z files. 2022-11-14 20:14:37 -06:00
evazion 5f92f452fe media file: factor out file type detection code.
Factor out the file type detection code from MediaFile into a FileTypeDetector class so we can use
it to detect archive files (.zip, .rar, .7z) too.
2022-11-14 20:14:37 -06:00
evazion 0c1e9a1618 Add Danbooru::Archive library for handling .zip and .rar files.
Introduce a new Danbooru::Archive library. This is a wrapper around libarchive that lets us extract
.zip, .rar, .7z, and other archive formats. Replace the rubyzip library in MediaFile::Ugoira with
the new Danbooru::Archive library.

This is a step towards fixing #5340: Add support for extracting archive attachments from certain sources.

This adds a new dependency on libarchive. Downstream users should `apt-get install libarchive13` if
they're not using Docker.

https://github.com/chef/ffi-libarchive
https://github.com/libarchive/libarchive
https://www.rubydoc.info/gems/ffi-libarchive/0.4.2
https://github.com/libarchive/libarchive/wiki/Examples#a-complete-extractor
2022-11-14 20:14:37 -06:00
evazion f942768ce8 Fix #5347: Don't use exception template for post validation errors
Also fixes #5173: Parenting a post to itself using the "parent id" box leads to an error.
2022-11-13 02:01:18 -06:00
evazion 33e4cbeb8d Fix #5179: Add wiki page versions to wiki page secondary links plus standardization
* Call it "Changes" when referring to the global list of changes (pool changes, artist changes, etc).
* Call it "History" when referring to the history of a single item (pool history, artist history, etc).
* Put the artist history search form on the /artist_versions page, and remove the /artist_versions/search endpoint.
2022-11-13 00:58:11 -06:00
evazion d053dc7356 Fix #5143: Allow name changes with same name but changed case. 2022-11-12 23:04:45 -06:00
evazion 22f232f4e9 Fix #5209: dtext link search doesn't work right. 2022-11-12 22:18:11 -06:00