Merge branch 'develop' into feat/scylladb

This commit is contained in:
Namekuji 2023-08-19 09:14:09 -04:00
commit 0e727d3f7b
No known key found for this signature in database
GPG key ID: 1D62332C07FBA532
9 changed files with 124 additions and 99 deletions

View file

@ -1945,7 +1945,7 @@ _notification:
renote: "Renote" renote: "Renote"
voted: haben bei deiner Umfrage abgestimmt voted: haben bei deiner Umfrage abgestimmt
reacted: hat auf deinen Beitrag reagiert reacted: hat auf deinen Beitrag reagiert
renoted: hat Ihren Beitrag geteilt renoted: hat deinen Beitrag geteilt
_deck: _deck:
alwaysShowMainColumn: "Hauptspalte immer zeigen" alwaysShowMainColumn: "Hauptspalte immer zeigen"
columnAlign: "Spaltenausrichtung" columnAlign: "Spaltenausrichtung"

View file

@ -51,7 +51,7 @@ deleted: "Deleted"
deleteAndEdit: "Delete and edit" deleteAndEdit: "Delete and edit"
deleteAndEditConfirm: "Are you sure you want to delete this post and edit it? You deleteAndEditConfirm: "Are you sure you want to delete this post and edit it? You
will lose all reactions, boosts and replies to it." will lose all reactions, boosts and replies to it."
editNote: "Edit note" editNote: "Edit post"
edited: "Edited at {date} {time}" edited: "Edited at {date} {time}"
addToList: "Add to list" addToList: "Add to list"
sendMessage: "Send a message" sendMessage: "Send a message"

View file

@ -849,7 +849,7 @@ filter: "フィルタ"
controlPanel: "コントロールパネル" controlPanel: "コントロールパネル"
manageAccounts: "アカウントを管理" manageAccounts: "アカウントを管理"
makeReactionsPublic: "リアクション一覧を公開する" makeReactionsPublic: "リアクション一覧を公開する"
makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見れるようにします。" makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見れるようにします。"
classic: "中央寄せ" classic: "中央寄せ"
muteThread: "スレッドをミュート" muteThread: "スレッドをミュート"
unmuteThread: "スレッドのミュートを解除" unmuteThread: "スレッドのミュートを解除"

View file

@ -1,7 +1,7 @@
---
_lang_: "日本語 (関西弁)" _lang_: "日本語 (関西弁)"
headlineFirefish: "ノートでつながるネットワーク" headlineFirefish: "ずっとタダでオープンソースの非中央集権型ソーシャルメディアプラットフォーム!🚀"
introFirefish: "ようお越しMisskeyは、オープンソースの分散型マイクロブログサービスやねん。\n「ート」を作って、いま起こっとることを共有したり、あんたについて皆に発信しよう📡\n「リアクション」機能で、皆のートに素早く反応を追加したりもできるで✌\nほな新しい世界を探検しよか🚀" introFirefish: "おおきにFirefishは、オープンソースの分散型ソーシャルメディアプラットフォームやねん。\nいま起こっとるもんをシェアしたり、あんたについてみんなに発信したりしようや📡\n\
「リアクション」機能で、みんなの投稿に素早く反応を送ったりもできるんやで✌\nほな、新しい世界を探検しにいこか🚀"
monthAndDay: "{month}月 {day}日" monthAndDay: "{month}月 {day}日"
search: "探す" search: "探す"
notifications: "通知" notifications: "通知"
@ -13,10 +13,10 @@ ok: "OKや"
gotIt: "ほい" gotIt: "ほい"
cancel: "やめとく" cancel: "やめとく"
enterUsername: "ユーザー名を入れてや" enterUsername: "ユーザー名を入れてや"
renotedBy: "{user}がRenote" renotedBy: "{user}がブースト"
noNotes: "ノートはあらへん" noNotes: "投稿はありまへん"
noNotifications: "通知はあらへん" noNotifications: "通知はあらへん"
instance: "インスタンス" instance: "サーバー"
settings: "設定" settings: "設定"
basicSettings: "基本設定" basicSettings: "基本設定"
otherSettings: "その他の設定" otherSettings: "その他の設定"
@ -44,7 +44,7 @@ copyContent: "内容をコピー"
copyLink: "リンクをコピー" copyLink: "リンクをコピー"
delete: "ほかす" delete: "ほかす"
deleteAndEdit: "ほかして直す" deleteAndEdit: "ほかして直す"
deleteAndEditConfirm: "このートをほかして書き直すんかこのートへのリアクション、Renote、返信も全部消えてまうで。" deleteAndEditConfirm: "この投稿をほかして書き直すんか?この投稿へのリアクション、ブースト、返信もみんな消えてまうで。"
addToList: "リストに入れたる" addToList: "リストに入れたる"
sendMessage: "メッセージを送る" sendMessage: "メッセージを送る"
copyUsername: "ユーザー名をコピー" copyUsername: "ユーザー名をコピー"
@ -64,14 +64,14 @@ import: "インポート"
export: "エクスポート" export: "エクスポート"
files: "ファイル" files: "ファイル"
download: "ダウンロード" download: "ダウンロード"
driveFileDeleteConfirm: "ファイル「{name}」を消してしもうてええか?このファイルを添付したノートも消えてまうで。" driveFileDeleteConfirm: "ファイル「{name}」を消してしもうてええか?このファイルを添付した投稿も消えてまうで。"
unfollowConfirm: "{name}のフォローを解除してもええんか?" unfollowConfirm: "{name}のフォローを解除してもええんか?"
exportRequested: "エクスポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。エクスポート終わったら「ドライブ」に突っ込んどくで。" exportRequested: "エクスポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。エクスポート終わったら「ドライブ」に突っ込んどくで。"
importRequested: "インポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。" importRequested: "インポートしてな、ってリクエストしたけど、これ多分めっちゃ時間かかるで。"
lists: "リスト" lists: "リスト"
noLists: "リストなんてあらへんで" noLists: "リストなんてあらへんで"
note: "ノート" note: "投稿"
notes: "ノート" notes: "投稿"
following: "フォロー" following: "フォロー"
followers: "フォロワー" followers: "フォロワー"
followsYou: "フォローされとるで" followsYou: "フォローされとるで"
@ -82,8 +82,10 @@ somethingHappened: "なんかアカンことが起こったで"
retry: "もっぺんやる?" retry: "もっぺんやる?"
pageLoadError: "ページの読み込みに失敗してしもうたで…" pageLoadError: "ページの読み込みに失敗してしもうたで…"
pageLoadErrorDescription: "これは普通、ネットワークかブラウザキャッシュが原因やからね。キャッシュをクリアするか、もうちっとだけ待ってくれへんか?" pageLoadErrorDescription: "これは普通、ネットワークかブラウザキャッシュが原因やからね。キャッシュをクリアするか、もうちっとだけ待ってくれへんか?"
serverIsDead: "The server is not responding. Please wait for a while before trying again." serverIsDead: "The server is not responding. Please wait for a while before trying
youShouldUpgradeClient: "To display this page, please reload and use a new version client. " again."
youShouldUpgradeClient: "To display this page, please reload and use a new version
client. "
enterListName: "リスト名を入れてや" enterListName: "リスト名を入れてや"
privacy: "プライバシー" privacy: "プライバシー"
makeFollowManuallyApprove: "自分が認めた人だけがこのアカウントをフォローできるようにする" makeFollowManuallyApprove: "自分が認めた人だけがこのアカウントをフォローできるようにする"
@ -94,13 +96,13 @@ followRequests: "フォロー申請"
unfollow: "フォローやめる" unfollow: "フォローやめる"
followRequestPending: "フォロー許してくれるん待っとる" followRequestPending: "フォロー許してくれるん待っとる"
enterEmoji: "絵文字を入れてや" enterEmoji: "絵文字を入れてや"
renote: "Renote" renote: "ブースト"
unrenote: "Renoteやめる" unrenote: "ブーストやめる"
renoted: "Renoteしたで。" renoted: "ブーストしたで。"
cantRenote: "この投稿はRenoteできへんらしい。" cantRenote: "この投稿はブーストでけへんらしい。"
cantReRenote: "Renote自体はRenoteできへんで。" cantReRenote: "ブースト自体はブーストでけへんで。"
quote: "引用" quote: "引用"
pinnedNote: "ピン留めされとるノート" pinnedNote: "ピン留めされとる投稿"
pinned: "ピン留めしとく" pinned: "ピン留めしとく"
you: "あんた" you: "あんた"
clickToShow: "押したら見えるで" clickToShow: "押したら見えるで"
@ -139,11 +141,12 @@ settingGuide: "ええ感じの設定"
cacheRemoteFiles: "リモートのファイルをキャッシュする" cacheRemoteFiles: "リモートのファイルをキャッシュする"
cacheRemoteFilesDescription: "この設定を切っとくと、リモートファイルをキャッシュせず直リンクするようになるで。サーバーの容量は節約できるけど、サムネイルが作られんくなるから通信量が増えるで。" cacheRemoteFilesDescription: "この設定を切っとくと、リモートファイルをキャッシュせず直リンクするようになるで。サーバーの容量は節約できるけど、サムネイルが作られんくなるから通信量が増えるで。"
flagAsBot: "Botやで" flagAsBot: "Botやで"
flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Misskeyのシステム上での扱いがBotに合ったもんになるんやで。" flagAsBotDescription: "もしこのアカウントがプログラムによって運用されるんやったら、このフラグをオンにしてたのむで。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Firefishのシステム上での扱いがBotに合ったもんになったりするんやで。"
flagAsCat: "Catやで" flagAsCat: "Catやで"
flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?" flagAsCatDescription: "ワレ、猫ちゃんならこのフラグをつけてみ?"
flagShowTimelineReplies: "It will display the reply to the note in the timeline. " flagShowTimelineReplies: "It will display the reply to the note in the timeline. "
flagShowTimelineRepliesDescription: "It will display the reply to notes other than the user notes in the timeline when you turn it on. " flagShowTimelineRepliesDescription: "It will display the reply to notes other than
the user notes in the timeline when you turn it on. "
autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく" autoAcceptFollowed: "フォローしとるユーザーからのフォローリクエストを勝手に許可しとく"
addAccount: "アカウントを追加" addAccount: "アカウントを追加"
loginFailed: "ログインに失敗してしもうた…" loginFailed: "ログインに失敗してしもうた…"
@ -162,7 +165,7 @@ selectUser: "ユーザーを選ぶ"
recipient: "宛先" recipient: "宛先"
annotation: "注釈" annotation: "注釈"
federation: "連合" federation: "連合"
instances: "インスタンス" instances: "サーバー"
registeredAt: "初観測" registeredAt: "初観測"
latestRequestSentAt: "ちょっと前のリクエスト送信" latestRequestSentAt: "ちょっと前のリクエスト送信"
latestRequestReceivedAt: "ちょっと前のリクエスト受信" latestRequestReceivedAt: "ちょっと前のリクエスト受信"
@ -172,7 +175,7 @@ charts: "チャート"
perHour: "1時間ごと" perHour: "1時間ごと"
perDay: "1日ごと" perDay: "1日ごと"
stopActivityDelivery: "アクティビティの配送をやめる" stopActivityDelivery: "アクティビティの配送をやめる"
blockThisInstance: "このインスタンスをブロック" blockThisInstance: "このサーバーをブロック"
operations: "操作" operations: "操作"
software: "ソフトウェア" software: "ソフトウェア"
version: "バージョン" version: "バージョン"
@ -182,23 +185,23 @@ jobQueue: "ジョブキュー"
cpuAndMemory: "CPUとメモリ" cpuAndMemory: "CPUとメモリ"
network: "ネットワーク" network: "ネットワーク"
disk: "ディスク" disk: "ディスク"
instanceInfo: "インスタンス情報" instanceInfo: "サーバー情報"
statistics: "統計" statistics: "統計"
clearQueue: "キューにさいなら" clearQueue: "キューにさいなら"
clearQueueConfirmTitle: "キューをクリアしまっか?" clearQueueConfirmTitle: "キューをクリアしまっか?"
clearQueueConfirmText: "未配達の投稿は配送されなくなるで。通常この操作を行う必要はあらへんや。" clearQueueConfirmText: "未配達の投稿は配送されなくなるで。通常この操作を行う必要はあらへんや。"
clearCachedFiles: "キャッシュにさいなら" clearCachedFiles: "キャッシュにさいなら"
clearCachedFilesConfirm: "キャッシュされとるリモートファイルをみんなほかしてええか?" clearCachedFilesConfirm: "キャッシュされとるリモートファイルをみんなほかしてええか?"
blockedInstances: "インスタンスブロック" blockedInstances: "ブロックしたサーバー"
blockedInstancesDescription: "ブロックしたいインスタンスのホストを改行で区切って設定してな。ブロックされてもうたインスタンスとはもう金輪際やり取りできひんくなるで。" blockedInstancesDescription: "ブロックしたいサーバーのホストを改行で区切って設定してな。ブロックされてもうたサーバーとはもう金輪際やり取りできんくなるで。"
muteAndBlock: "ミュートとブロック" muteAndBlock: "ミュートとブロック"
mutedUsers: "ミュートしたユーザー" mutedUsers: "ミュートしたユーザー"
blockedUsers: "ブロックしたユーザー" blockedUsers: "ブロックしたユーザー"
noUsers: "ユーザーはおらへん" noUsers: "ユーザーはおらへん"
editProfile: "プロフィールをいじる" editProfile: "プロフィールをいじる"
noteDeleteConfirm: "このノートを削除しまっか?" noteDeleteConfirm: "この投稿を削除しまっか?"
pinLimitExceeded: "これ以上ピン留めできひん" pinLimitExceeded: "これ以上ピン留めできひん"
intro: "Misskeyのインストールが完了してん!管理者アカウントを作ってや。" intro: "Firefishのインストールが完了してん!管理者アカウントを作ってや。"
done: "でけた" done: "でけた"
processing: "処理しとる" processing: "処理しとる"
preview: "プレビュー" preview: "プレビュー"
@ -213,9 +216,9 @@ all: "みんな"
subscribing: "購読しとる" subscribing: "購読しとる"
publishing: "配信しとる" publishing: "配信しとる"
notResponding: "応答してへんで" notResponding: "応答してへんで"
instanceFollowing: "インスタンスのフォロー" instanceFollowing: "サーバーのフォロー"
instanceFollowers: "インスタンスのフォロワー\n" instanceFollowers: "サーバーのフォロワー"
instanceUsers: "インスタンスのユーザー" instanceUsers: "このサーバーの利用者"
changePassword: "パスワード変える" changePassword: "パスワード変える"
security: "セキュリティ" security: "セキュリティ"
retypedNotMatch: "そやないねん。" retypedNotMatch: "そやないねん。"
@ -239,7 +242,8 @@ saved: "保存したで!"
messaging: "チャット" messaging: "チャット"
upload: "アップロード" upload: "アップロード"
keepOriginalUploading: "Retain the original image. " keepOriginalUploading: "Retain the original image. "
keepOriginalUploadingDescription: "When uploading the clip, the original version will be retained. Turning it of then uploading will produce images for public use. " keepOriginalUploadingDescription: "When uploading the clip, the original version will
be retained. Turning it of then uploading will produce images for public use. "
fromDrive: "ドライブから" fromDrive: "ドライブから"
fromUrl: "URLから" fromUrl: "URLから"
uploadFromUrl: "URLアップロード" uploadFromUrl: "URLアップロード"
@ -305,8 +309,8 @@ unwatch: "ウォッチやめる"
accept: "ええで" accept: "ええで"
reject: "あかん" reject: "あかん"
normal: "ええ感じ" normal: "ええ感じ"
instanceName: "インスタンス名" instanceName: "サーバー名"
instanceDescription: "インスタンスの紹介" instanceDescription: "サーバーの紹介"
maintainerName: "管理者の名前" maintainerName: "管理者の名前"
maintainerEmail: "管理者のメールアドレス" maintainerEmail: "管理者のメールアドレス"
tosUrl: "利用規約のURL" tosUrl: "利用規約のURL"
@ -336,9 +340,9 @@ basicInfo: "基本情報"
pinnedUsers: "ピン留めしたユーザー" pinnedUsers: "ピン留めしたユーザー"
pinnedUsersDescription: "「みつける」ページとかにピン留めしたいユーザーをここに書けばええんやで。他ん人との名前は改行で区切ればええんやで。" pinnedUsersDescription: "「みつける」ページとかにピン留めしたいユーザーをここに書けばええんやで。他ん人との名前は改行で区切ればええんやで。"
pinnedPages: "ピン留めページ" pinnedPages: "ピン留めページ"
pinnedPagesDescription: "インスタンスのいっちゃん上にピン留めしたいページのパスを改行で区切って記述してな" pinnedPagesDescription: "サーバーのいっちゃん上にピン留めしたいページのパスを改行で区切って記述してな"
pinnedClipId: "ピン留めするクリップのID" pinnedClipId: "ピン留めするクリップのID"
pinnedNotes: "ピン留めされとるノート" pinnedNotes: "ピン留めされとる投稿"
hcaptcha: "hCaptchaキャプチャ" hcaptcha: "hCaptchaキャプチャ"
enableHcaptcha: "hCaptchaキャプチャをつけとく" enableHcaptcha: "hCaptchaキャプチャをつけとく"
hcaptchaSiteKey: "サイトキー" hcaptchaSiteKey: "サイトキー"
@ -355,8 +359,8 @@ antennaSource: "受信ソース(このソースは食われへん)"
antennaKeywords: "受信キーワード" antennaKeywords: "受信キーワード"
antennaExcludeKeywords: "除外キーワード" antennaExcludeKeywords: "除外キーワード"
antennaKeywordsDescription: "スペースで区切ったるとAND指定で、改行で区切ったるとOR指定や" antennaKeywordsDescription: "スペースで区切ったるとAND指定で、改行で区切ったるとOR指定や"
notifyAntenna: "新しいノートを通知すんで" notifyAntenna: "新しい投稿を通知すんで"
withFileAntenna: "なんか添付されたノートだけ" withFileAntenna: "ファイルが添付された投稿のみ"
enableServiceworker: "ServiceWorkerをつこて" enableServiceworker: "ServiceWorkerをつこて"
antennaUsersDescription: "ユーザー名を改行で区切ったってな" antennaUsersDescription: "ユーザー名を改行で区切ったってな"
caseSensitive: "大文字と小文字は別もんや" caseSensitive: "大文字と小文字は別もんや"
@ -377,7 +381,7 @@ exploreFediverse: "Fediverseを探ってみる"
popularTags: "人気のタグ" popularTags: "人気のタグ"
userList: "リスト" userList: "リスト"
about: "情報" about: "情報"
aboutFirefish: "Misskeyってなんや" aboutFirefish: "Firefishってなんやねん"
administrator: "管理者" administrator: "管理者"
token: "トークン" token: "トークン"
twoStepAuthentication: "二段階認証" twoStepAuthentication: "二段階認証"
@ -420,7 +424,7 @@ text: "テキスト"
enable: "有効にするで" enable: "有効にするで"
next: "次" next: "次"
retype: "もっかい入力" retype: "もっかい入力"
noteOf: "{user}のノート" noteOf: "{user}の投稿"
inviteToGroup: "グループに招く" inviteToGroup: "グループに招く"
quoteAttached: "引用付いとるで" quoteAttached: "引用付いとるで"
quoteQuestion: "引用として添付してもええか?" quoteQuestion: "引用として添付してもええか?"
@ -478,12 +482,13 @@ accountSettings: "アカウントの設定"
promotion: "宣伝" promotion: "宣伝"
promote: "宣伝" promote: "宣伝"
numberOfDays: "日数" numberOfDays: "日数"
hideThisNote: "このノートは表示せんでいい" hideThisNote: "この投稿は表示せんでいい"
showFeaturedNotesInTimeline: "タイムラインにおすすめのノートを表示してや" showFeaturedNotesInTimeline: "タイムラインにおすすめの投稿を表示してや"
objectStorage: "オブジェクトストレージ" objectStorage: "オブジェクトストレージ"
useObjectStorage: "オブジェクトストレージを使う" useObjectStorage: "オブジェクトストレージを使う"
objectStorageBaseUrl: "Base URL" objectStorageBaseUrl: "Base URL"
objectStorageBaseUrlDesc: "参照に使うにURLやで。CDNやProxyを使用してるんならそのURL、S3: 'https://<bucket>.s3.amazonaws.com'、GCSとかなら: 'https://storage.googleapis.com/<bucket>'。" objectStorageBaseUrlDesc: "参照に使うにURLやで。CDNやProxyを使用してるんならそのURL、S3: 'https://<bucket>.s3.amazonaws.com'、GCSとかなら:
'https://storage.googleapis.com/<bucket>'。"
objectStorageBucket: "Bucket" objectStorageBucket: "Bucket"
objectStorageBucketDesc: "使ってるサービスのbucket名を選んでな" objectStorageBucketDesc: "使ってるサービスのbucket名を選んでな"
objectStoragePrefix: "Prefix" objectStoragePrefix: "Prefix"
@ -500,7 +505,7 @@ objectStorageSetPublicRead: "アップロードした時に'public-read'を設
serverLogs: "サーバーログ" serverLogs: "サーバーログ"
deleteAll: "全て削除してや" deleteAll: "全て削除してや"
showFixedPostForm: "タイムラインの上の方で投稿できるようにやってくれへん?" showFixedPostForm: "タイムラインの上の方で投稿できるようにやってくれへん?"
newNoteRecived: "新しいノートがあるで" newNoteRecived: "新しい投稿があるで"
sounds: "サウンド" sounds: "サウンド"
listen: "聴く" listen: "聴く"
none: "なし" none: "なし"
@ -523,7 +528,7 @@ sort: "仕分ける"
ascendingOrder: "小さい順" ascendingOrder: "小さい順"
descendingOrder: "大きい順" descendingOrder: "大きい順"
scratchpad: "スクラッチパッド" scratchpad: "スクラッチパッド"
scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Misskeyに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。" scratchpadDescription: "スクラッチパッドではAiScriptを色々試すことができるんや。Firefishに対して色々できるコードを書いて動かしてみたり、結果を見たりできるで。"
output: "出力" output: "出力"
script: "スクリプト" script: "スクリプト"
disablePagesScript: "Pagesのスクリプトを無効にしてや" disablePagesScript: "Pagesのスクリプトを無効にしてや"
@ -531,7 +536,7 @@ updateRemoteUser: "リモートユーザー情報の更新してくれん?"
deleteAllFiles: "すべてのファイルを削除" deleteAllFiles: "すべてのファイルを削除"
deleteAllFilesConfirm: "ホンマにすべてのファイルを削除するん?消したもんはもう戻ってこんのやで?" deleteAllFilesConfirm: "ホンマにすべてのファイルを削除するん?消したもんはもう戻ってこんのやで?"
removeAllFollowing: "フォローを全解除" removeAllFollowing: "フォローを全解除"
removeAllFollowingDescription: "{host}からのフォローをすべて解除するで。そのインスタンスが消えて無くなった時とかには便利な機能やで。" removeAllFollowingDescription: "{host}からのフォローをすべて解除するで。そのサーバーが消えて無くなった時とかに便利な機能やで。"
userSuspended: "このユーザーは...凍結されとる。" userSuspended: "このユーザーは...凍結されとる。"
userSilenced: "このユーザーは...サイレンスされとる。" userSilenced: "このユーザーは...サイレンスされとる。"
yourAccountSuspendedTitle: "あんたのアカウント凍結されとるで" yourAccountSuspendedTitle: "あんたのアカウント凍結されとるで"
@ -595,7 +600,7 @@ testEmail: "配信テスト"
wordMute: "ワードミュート" wordMute: "ワードミュート"
regexpError: "正規表現エラー" regexpError: "正規表現エラー"
regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表現にエラーが出てきたで:" regexpErrorDescription: "{tab}ワードミュートの{line}行目の正規表現にエラーが出てきたで:"
instanceMute: "インスタンスミュート" instanceMute: "サーバーミュート"
userSaysSomething: "{name}が何か言ったようやで" userSaysSomething: "{name}が何か言ったようやで"
makeActive: "使うで" makeActive: "使うで"
display: "表示" display: "表示"
@ -621,20 +626,20 @@ sample: "サンプル"
abuseReports: "通報" abuseReports: "通報"
reportAbuse: "通報" reportAbuse: "通報"
reportAbuseOf: "{name}を通報する" reportAbuseOf: "{name}を通報する"
fillAbuseReportDescription: "細かい通報理由を書いてなー。対象ノートがある時はそのURLも書いといてなー。" fillAbuseReportDescription: "細かい通報理由を書いてなー。特定の投稿を通報するなら、そのURLも書いといてなー。"
abuseReported: "無事内容が送信されたみたいやで。おおきに〜。" abuseReported: "無事内容が送信されたみたいやで。おおきに〜。"
reporter: "通報者" reporter: "通報者"
reporteeOrigin: "通報先" reporteeOrigin: "通報先"
reporterOrigin: "通報元" reporterOrigin: "通報元"
forwardReport: "リモートインスタンスに通報を転送するで" forwardReport: "リモートサーバーに通報を転送するで"
forwardReportIsAnonymous: "リモートインスタンスからはあんたの情報は見れへんくって、匿名のシステムアカウントとして表示されるで。" forwardReportIsAnonymous: "リモートサーバーからはあんたの情報は見れへんくて、匿名のシステムアカウントとして表示されるで。"
send: "送信" send: "送信"
abuseMarkAsResolved: "対応したで" abuseMarkAsResolved: "対応したで"
openInNewTab: "新しいタブで開く" openInNewTab: "新しいタブで開く"
openInSideView: "サイドビューで開く" openInSideView: "サイドビューで開く"
defaultNavigationBehaviour: "デフォルトのナビゲーション" defaultNavigationBehaviour: "デフォルトのナビゲーション"
editTheseSettingsMayBreakAccount: "このへんの設定をようわからんままイジるとアカウントが壊れて使えんくなるかも知れへんで?" editTheseSettingsMayBreakAccount: "このへんの設定をようわからんままイジるとアカウントが壊れて使えんくなるかも知れへんで?"
instanceTicker: "ノートのインスタンス情報" instanceTicker: "投稿のサーバー情報"
waitingFor: "{x}を待っとるで" waitingFor: "{x}を待っとるで"
random: "ランダム" random: "ランダム"
system: "システム" system: "システム"
@ -645,16 +650,16 @@ createNew: "新しく作るで"
optional: "任意" optional: "任意"
createNewClip: "新しいクリップを作るで" createNewClip: "新しいクリップを作るで"
unclip: "クリップ解除するで" unclip: "クリップ解除するで"
confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれとるで。ノートをこのクリップから除外したる?" confirmToUnclipAlreadyClippedNote: "この投稿はすでにクリップ「{name}」に含まれとるで。投稿をこのクリップから除外したる?"
public: "パブリック" public: "パブリック"
i18nInfo: "Firefishは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。" i18nInfo: "Firefishは有志によっていろんな言語に翻訳されとるで。{link}で翻訳に協力したってやー。"
manageAccessTokens: "アクセストークンの管理" manageAccessTokens: "アクセストークンの管理"
accountInfo: "アカウント情報" accountInfo: "アカウント情報"
notesCount: "ノートの数やで" notesCount: "投稿の数やで"
repliesCount: "返信した数やで" repliesCount: "返信した数やで"
renotesCount: "Renoteした数やで" renotesCount: "ブーストした数やで"
repliedCount: "返信された数やで" repliedCount: "返信された数やで"
renotedCount: "Renoteされた数やで" renotedCount: "ブーストされた数やで"
followingCount: "フォロー数やで" followingCount: "フォロー数やで"
followersCount: "フォロワー数やで" followersCount: "フォロワー数やで"
sentReactionsCount: "リアクションした数やで" sentReactionsCount: "リアクションした数やで"
@ -666,15 +671,15 @@ no: "いいえ"
driveFilesCount: "ドライブのファイル数" driveFilesCount: "ドライブのファイル数"
driveUsage: "ドライブ使用量やで" driveUsage: "ドライブ使用量やで"
noCrawle: "クローラーによるインデックスを拒否するで" noCrawle: "クローラーによるインデックスを拒否するで"
noCrawleDescription: "検索エンジンにあんたのユーザーページ、ート、Pagesとかのコンテンツを登録(インデックス)せぇへんように頼むで。" noCrawleDescription: "検索エンジンにあんたのプロフィール、投稿、ページとかのコンテンツを登録(インデックス)せぇへんように頼むで。"
lockedAccountInfo: "フォローを承認制にしとっても、ノートの公開範囲を「フォロワー」にせぇへん限り、誰でもあんたのノートを見れるで。" lockedAccountInfo: "フォローを承認制にしとっても、投稿の公開範囲を「フォロワー」にせん限り、誰でもあんたの投稿を見れるで。"
alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にするで" alwaysMarkSensitive: "デフォルトでメディアを閲覧注意にするで"
loadRawImages: "添付画像のサムネイルをオリジナル画質にするで" loadRawImages: "添付画像のサムネイルをオリジナル画質にするで"
disableShowingAnimatedImages: "アニメーション画像を再生しやへんで" disableShowingAnimatedImages: "アニメーション画像を再生しやへんで"
verificationEmailSent: "無事確認のメールを送れたで。メールに書いてあるリンクにアクセスして、設定を完了してなー。" verificationEmailSent: "無事確認のメールを送れたで。メールに書いてあるリンクにアクセスして、設定を完了してなー。"
notSet: "未設定" notSet: "未設定"
emailVerified: "メールアドレスは確認されたで" emailVerified: "メールアドレスは確認されたで"
noteFavoritesCount: "お気に入りノートの数やで" noteFavoritesCount: "お気に入り投稿の数やで"
pageLikesCount: "Pageにええやんと思った数" pageLikesCount: "Pageにええやんと思った数"
pageLikedCount: "Pageにええやんと思ってくれた数" pageLikedCount: "Pageにええやんと思ってくれた数"
contact: "連絡先" contact: "連絡先"
@ -684,7 +689,7 @@ experimentalFeatures: "実験的機能やで"
developer: "開発者やで" developer: "開発者やで"
makeExplorable: "アカウントを見つけやすくするで" makeExplorable: "アカウントを見つけやすくするで"
makeExplorableDescription: "オフにすると、「みつける」にアカウントが載らんくなるで。" makeExplorableDescription: "オフにすると、「みつける」にアカウントが載らんくなるで。"
showGapBetweenNotesInTimeline: "タイムラインのノートを放して表示するで" showGapBetweenNotesInTimeline: "タイムライン上の投稿を離して表示するで"
duplicate: "複製" duplicate: "複製"
left: "左" left: "左"
center: "中央" center: "中央"
@ -696,9 +701,9 @@ showTitlebar: "タイトルバーを見せる"
clearCache: "キャッシュをほかす" clearCache: "キャッシュをほかす"
onlineUsersCount: "{n}人が起きとるで" onlineUsersCount: "{n}人が起きとるで"
nUsers: "{n}ユーザー" nUsers: "{n}ユーザー"
nNotes: "{n}ノート" nNotes: "{n}投稿"
sendErrorReports: "エラーリポートを送る" sendErrorReports: "エラーリポートを送る"
sendErrorReportsDescription: "オンにしたら、なんか変なことが起きたときにエラーの詳細がMisskeyに共有されて、ソフトウェアの品質向上に役立てられるんや。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれるで。" sendErrorReportsDescription: "オンにしたら、なんか変なことが起きたときにエラーの詳細がFirefishに共有されて、ソフトウェアの品質向上に役立てられるんや。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれるで。"
myTheme: "マイテーマ" myTheme: "マイテーマ"
backgroundColor: "背景" backgroundColor: "背景"
accentColor: "アクセント" accentColor: "アクセント"
@ -722,7 +727,7 @@ capacity: "容量"
inUse: "使用中" inUse: "使用中"
editCode: "コードを編集" editCode: "コードを編集"
apply: "適用" apply: "適用"
receiveAnnouncementFromInstance: "インスタンスからのお知らせを受け取る" receiveAnnouncementFromInstance: "サーバーからのお知らせを受け取る"
emailNotification: "メール通知" emailNotification: "メール通知"
publish: "公開" publish: "公開"
inChannelSearch: "チャンネル内検索" inChannelSearch: "チャンネル内検索"
@ -737,7 +742,7 @@ unlikeConfirm: "いいね解除するんか?"
fullView: "フルビュー" fullView: "フルビュー"
quitFullView: "フルビュー解除" quitFullView: "フルビュー解除"
addDescription: "説明を追加するで" addDescription: "説明を追加するで"
userPagePinTip: "個々のノートのメニューから「ピン留め」を選んどくと、ここにノートを表示しておけるで。" userPagePinTip: "個々の投稿のメニューから「ピン留め」を選んどくと、ここにそいつを表示しておけるで。"
notSpecifiedMentionWarning: "宛先に含まれてへんメンションがあるで" notSpecifiedMentionWarning: "宛先に含まれてへんメンションがあるで"
info: "情報" info: "情報"
userInfo: "ユーザー情報やで" userInfo: "ユーザー情報やで"
@ -750,7 +755,7 @@ active: "アクティブ"
offline: "オフライン" offline: "オフライン"
notRecommended: "あんま推奨しやんで" notRecommended: "あんま推奨しやんで"
botProtection: "Botプロテクション" botProtection: "Botプロテクション"
instanceBlocking: "インスタンスブロック" instanceBlocking: "連合の管理"
selectAccount: "アカウントを選んでなー" selectAccount: "アカウントを選んでなー"
switchAccount: "アカウントを変えるで" switchAccount: "アカウントを変えるで"
enabled: "有効" enabled: "有効"
@ -767,7 +772,7 @@ postToGallery: "ギャラリーへ投稿"
gallery: "ギャラリー" gallery: "ギャラリー"
recentPosts: "最近の投稿" recentPosts: "最近の投稿"
popularPosts: "人気の投稿" popularPosts: "人気の投稿"
shareWithNote: "ノートで共有" shareWithNote: "投稿で共有"
ads: "広告" ads: "広告"
expiration: "期限" expiration: "期限"
memo: "メモ" memo: "メモ"
@ -789,7 +794,7 @@ hashtags: "ハッシュタグ"
troubleshooting: "トラブルシューティング" troubleshooting: "トラブルシューティング"
useBlurEffect: "UIにぼかし効果を使うで" useBlurEffect: "UIにぼかし効果を使うで"
learnMore: "詳しく" learnMore: "詳しく"
misskeyUpdated: "Misskeyが更新されたで\nモデレーターの人らに感謝せなあかんで" misskeyUpdated: "Firefishが更新されたで\nモデレーターの人らに感謝やね"
whatIsNew: "更新情報を見るで" whatIsNew: "更新情報を見るで"
translate: "翻訳" translate: "翻訳"
translatedFrom: "{x}から翻訳するで" translatedFrom: "{x}から翻訳するで"
@ -834,7 +839,7 @@ cannotUploadBecauseInappropriate: "不適切な内容を含むかもしれへん
cannotUploadBecauseNoFreeSpace: "ドライブの空き容量が無いでアップロードできまへん。" cannotUploadBecauseNoFreeSpace: "ドライブの空き容量が無いでアップロードできまへん。"
beta: "ベータ" beta: "ベータ"
enableAutoSensitive: "自動NSFW判定" enableAutoSensitive: "自動NSFW判定"
enableAutoSensitiveDescription: "使える時は、機械学習を使って自動でメディアにNSFWフラグを設定するで。この機能をオフにしても、インスタンスによっては自動で設定されることがあるで。" enableAutoSensitiveDescription: "いけるときは、機械学習を使って自動でメディアにNSFWフラグを設定するで。この機能をオフにしても、サーバーによっては自動で設定されることがあるで。"
activeEmailValidationDescription: "ユーザーのメールアドレスのバリデーションを、捨てアドかどうかや実際に通信可能かどうかとかを判定して積極的に行うで。オフにすると単に文字列として正しいかどうかだけチェックするで。" activeEmailValidationDescription: "ユーザーのメールアドレスのバリデーションを、捨てアドかどうかや実際に通信可能かどうかとかを判定して積極的に行うで。オフにすると単に文字列として正しいかどうかだけチェックするで。"
navbar: "ナビゲーションバー" navbar: "ナビゲーションバー"
shuffle: "シャッフルするで" shuffle: "シャッフルするで"
@ -868,14 +873,15 @@ _registry:
domain: "ドメイン" domain: "ドメイン"
createKey: "キーを作る" createKey: "キーを作る"
_aboutFirefish: _aboutFirefish:
about: "Misskeyはsyuiloが2014年からずっと作ってはる、オープンソースなソフトウェアや。" about: "Firefishは、ThatOneCalculatorが2022年にMisskeyをいじって作った、オープンソースなソフトウェアや。"
contributors: "主な貢献者" contributors: "主な貢献者"
allContributors: "全ての貢献者" allContributors: "全ての貢献者"
source: "ソースコード" source: "ソースコード"
translation: "Misskeyを翻訳" translation: "Firefishを翻訳"
donate: "Misskeyに寄付" donate: "Firefishに寄付"
morePatrons: "他にもぎょうさんの人からサポートしてもろてんねん。ほんまおおきに🥰" morePatrons: "他にもぎょうさんの人からサポートしてもろてんねん。ほんまおおきに🥰"
patrons: "支援者" patrons: "支援者"
misskeyContributors: フォーク元のMisskeyを作らはった人ら
_mfm: _mfm:
cheatSheet: "MFMチートシート" cheatSheet: "MFMチートシート"
mention: "メンション" mention: "メンション"
@ -896,6 +902,7 @@ _mfm:
blur: "ぼかし" blur: "ぼかし"
font: "フォント" font: "フォント"
rotate: "回転" rotate: "回転"
intro: MFMは、MisskeyやFirefish、Akkomaなどの様々な場所で使用できるマークアップ言語なんよ。ここでは、MFMで使用可能な構文一覧が確認できるで。
_instanceTicker: _instanceTicker:
none: "表示せん" none: "表示せん"
remote: "リモートユーザーに表示" remote: "リモートユーザーに表示"
@ -958,7 +965,7 @@ _theme:
hashtag: "ハッシュタグ" hashtag: "ハッシュタグ"
mention: "メンション" mention: "メンション"
mentionMe: "うち宛てのメンション" mentionMe: "うち宛てのメンション"
renote: "Renote" renote: "ブースト"
modalBg: "モーダルの背景" modalBg: "モーダルの背景"
divider: "分割線" divider: "分割線"
scrollbarHandle: "スクロールバーの取っ手" scrollbarHandle: "スクロールバーの取っ手"
@ -985,8 +992,8 @@ _theme:
accentLighten: "アクセント (明るめ)" accentLighten: "アクセント (明るめ)"
fgHighlighted: "強調されとる文字" fgHighlighted: "強調されとる文字"
_sfx: _sfx:
note: "ノート" note: "投稿"
noteMy: "ノート(自分)" noteMy: "投稿(自分)"
notification: "通知" notification: "通知"
chat: "チャット" chat: "チャット"
_ago: _ago:
@ -1017,8 +1024,8 @@ _permissions:
_auth: _auth:
permissionAsk: "このアプリは次の権限を要求しとるで" permissionAsk: "このアプリは次の権限を要求しとるで"
_antennaSources: _antennaSources:
all: "みんなのノート" all: "みんなの投稿"
homeTimeline: "フォローしとるユーザーのノート" homeTimeline: "フォローしとるユーザーの投稿"
_weekday: _weekday:
sunday: "日曜日" sunday: "日曜日"
monday: "月曜日" monday: "月曜日"
@ -1072,7 +1079,7 @@ _profile:
name: "名前" name: "名前"
username: "ユーザー名" username: "ユーザー名"
_exportOrImport: _exportOrImport:
allNotes: "全てのノート" allNotes: "すべての投稿"
followingList: "フォロー" followingList: "フォロー"
muteList: "ミュート" muteList: "ミュート"
blockingList: "ブロック" blockingList: "ブロック"
@ -1082,10 +1089,10 @@ _charts:
apRequest: "リクエスト" apRequest: "リクエスト"
usersTotal: "ユーザーの合計" usersTotal: "ユーザーの合計"
activeUsers: "アクティブユーザー数" activeUsers: "アクティブユーザー数"
notesIncDec: "ノートの増減" notesIncDec: "投稿の増減"
localNotesIncDec: "ローカルのノートの増減" localNotesIncDec: "ローカルの投稿の増減"
remoteNotesIncDec: "リモートのノートの増減" remoteNotesIncDec: "リモートの投稿の増減"
notesTotal: "ノートの合計" notesTotal: "投稿の合計"
filesIncDec: "ファイルの増減" filesIncDec: "ファイルの増減"
filesTotal: "ファイルの合計" filesTotal: "ファイルの合計"
storageUsageIncDec: "ストレージ使用量の増減" storageUsageIncDec: "ストレージ使用量の増減"
@ -1094,8 +1101,8 @@ _instanceCharts:
requests: "リクエスト" requests: "リクエスト"
users: "ユーザーの増減" users: "ユーザーの増減"
usersTotal: "ユーザーの累積" usersTotal: "ユーザーの累積"
notes: "ノートの増減" notes: "投稿の増減"
notesTotal: "ノートの累積" notesTotal: "投稿の累積"
ff: "フォロー/フォロワーの増減" ff: "フォロー/フォロワーの増減"
ffTotal: "フォロー/フォロワーの累積" ffTotal: "フォロー/フォロワーの累積"
cacheSize: "キャッシュサイズの増減" cacheSize: "キャッシュサイズの増減"
@ -1165,9 +1172,9 @@ _pages:
id: "キャンバスID" id: "キャンバスID"
width: "幅" width: "幅"
height: "高さ" height: "高さ"
note: "ノート埋め込み" note: "投稿の埋め込み"
_note: _note:
id: "ノートID" id: "投稿のID"
detailed: "詳細な表示" detailed: "詳細な表示"
switch: "スイッチ" switch: "スイッチ"
_switch: _switch:
@ -1385,14 +1392,14 @@ _notification:
all: "すべて" all: "すべて"
follow: "フォロー" follow: "フォロー"
mention: "メンション" mention: "メンション"
renote: "Renote" renote: "ブースト"
quote: "引用" quote: "引用"
reaction: "リアクション" reaction: "リアクション"
receiveFollowRequest: "フォロー許可してほしいみたいやで" receiveFollowRequest: "フォロー許可してほしいみたいやで"
followRequestAccepted: "フォローが受理されたで" followRequestAccepted: "フォローが受理されたで"
_actions: _actions:
reply: "返事" reply: "返事"
renote: "Renote" renote: "ブースト"
_deck: _deck:
alwaysShowMainColumn: "いつもメインカラムを表示" alwaysShowMainColumn: "いつもメインカラムを表示"
columnAlign: "カラムの寄せ" columnAlign: "カラムの寄せ"
@ -1413,3 +1420,12 @@ _deck:
list: "リスト" list: "リスト"
mentions: "あんた宛て" mentions: "あんた宛て"
direct: "ダイレクト" direct: "ダイレクト"
_experiments:
postImportsCaption:
ユーザーが過去の投稿をFirefish・Misskey・Mastodon・Akkoma・Pleromaからインポートできるようにするで。キューが溜まっとるときにインポートするとサーバーに負荷がかかるかもしれんね。
searchPlaceholder: Firefishを検索
addInstance: サーバーを追加
editNote: 投稿を編集
edited: '編集済み: {date} {time}'
deleted: 削除済み
noThankYou: いらんわ

View file

@ -305,7 +305,7 @@ emptyDrive: "Диск порожній"
emptyFolder: "Тека порожня" emptyFolder: "Тека порожня"
unableToDelete: "Видалення неможливе" unableToDelete: "Видалення неможливе"
inputNewFileName: "Введіть ім'я нового файлу" inputNewFileName: "Введіть ім'я нового файлу"
inputNewDescription: "Введіть новий заголовок" inputNewDescription: "Введіть новий опис"
inputNewFolderName: "Введіть ім'я нової теки" inputNewFolderName: "Введіть ім'я нової теки"
circularReferenceFolder: "Ви намагаєтесь перемістити папку в її підпапку." circularReferenceFolder: "Ви намагаєтесь перемістити папку в її підпапку."
hasChildFilesOrFolders: "Ця тека не порожня і не може бути видалена." hasChildFilesOrFolders: "Ця тека не порожня і не може бути видалена."
@ -591,8 +591,8 @@ disablePlayer: "Закрити відеоплеєр"
expandTweet: "Розгорнути твіт" expandTweet: "Розгорнути твіт"
themeEditor: "Редактор тем" themeEditor: "Редактор тем"
description: "Опис" description: "Опис"
describeFile: "Додати підпис" describeFile: "Додати опис"
enterFileDescription: "Введіть підпис" enterFileDescription: "Введіть опис"
author: "Автор" author: "Автор"
leaveConfirm: "Зміни не збережені. Ви дійсно хочете скасувати зміни?" leaveConfirm: "Зміни не збережені. Ви дійсно хочете скасувати зміни?"
manage: "Управління" manage: "Управління"
@ -1985,7 +1985,7 @@ showUpdates: Показувати спливаюче вікно при онов
updateAvailable: Можливо, є доступне оновлення! updateAvailable: Можливо, є доступне оновлення!
recommendedInstancesDescription: Рекомендовані сервери відокремлюються переведенням recommendedInstancesDescription: Рекомендовані сервери відокремлюються переведенням
рядка, щоб з'явитися на стрічці рекомендацій. рядка, щоб з'явитися на стрічці рекомендацій.
caption: Автоматичний підпис caption: Автоматичний опис
showAdminUpdates: Вказати, що доступна нова версія Firefish (тільки для адміністратора) showAdminUpdates: Вказати, що доступна нова версія Firefish (тільки для адміністратора)
defaultReaction: Емодзі реакція за замовчуванням для вихідних і вхідних записів defaultReaction: Емодзі реакція за замовчуванням для вихідних і вхідних записів
license: Ліцензія license: Ліцензія
@ -2151,3 +2151,7 @@ deletePasskeysConfirm: Це видалить усі ключ-паролі і к
записі без можливости відмінити цю дію. Продовжити? записі без можливости відмінити цю дію. Продовжити?
addRe: Додати "re:" на початку коментаря у відповідь на запис із попередженням про addRe: Додати "re:" на початку коментаря у відповідь на запис із попередженням про
вміст вміст
confirm: Підтвердити
importZip: Імпортувати ZIP
exportZip: Експортувати ZIP
emojiPackCreator: Генератор паків емодзі

View file

@ -92,7 +92,7 @@ export async function downloadUrl(url: string, path: string): Promise<void> {
logger.succ(`Download finished: ${chalk.cyan(url)}`); logger.succ(`Download finished: ${chalk.cyan(url)}`);
} }
function isPrivateIp(ip: string): boolean { export function isPrivateIp(ip: string): boolean {
for (const net of config.allowedPrivateNetworks || []) { for (const net of config.allowedPrivateNetworks || []) {
const cidr = new IPCIDR(net); const cidr = new IPCIDR(net);
if (cidr.contains(ip)) { if (cidr.contains(ip)) {

View file

@ -167,7 +167,6 @@ export default async function (ctx: Koa.Context) {
return; return;
} }
ctx.length = file.size;
ctx.set("Content-Disposition", contentDisposition("inline", filename)); ctx.set("Content-Disposition", contentDisposition("inline", filename));
ctx.set("Content-Type", contentType); ctx.set("Content-Type", contentType);
@ -192,7 +191,6 @@ export default async function (ctx: Koa.Context) {
ctx.set("Accept-Ranges", "bytes"); ctx.set("Accept-Ranges", "bytes");
} else { } else {
ctx.status = 206; ctx.status = 206;
ctx.length = readable.size;
readable.on("close", async () => { readable.on("close", async () => {
await fileHandle.close(); await fileHandle.close();
}); });

View file

@ -1,7 +1,7 @@
import { URL } from "node:url"; import { URL } from "node:url";
import type { User } from "@/models/entities/user.js"; import type { User } from "@/models/entities/user.js";
import { createTemp } from "@/misc/create-temp.js"; import { createTemp } from "@/misc/create-temp.js";
import { downloadUrl } from "@/misc/download-url.js"; import { downloadUrl, isPrivateIp } from "@/misc/download-url.js";
import type { DriveFolder } from "@/models/entities/drive-folder.js"; import type { DriveFolder } from "@/models/entities/drive-folder.js";
import type { DriveFile } from "@/models/entities/drive-file.js"; import type { DriveFile } from "@/models/entities/drive-file.js";
import { DriveFiles } from "@/models/index.js"; import { DriveFiles } from "@/models/index.js";
@ -35,7 +35,15 @@ export async function uploadFromUrl({
requestIp = null, requestIp = null,
requestHeaders = null, requestHeaders = null,
}: Args): Promise<DriveFile> { }: Args): Promise<DriveFile> {
let name = new URL(url).pathname.split("/").pop() || null; const parsedUrl = new URL(url);
if (
process.env.NODE_ENV === "production" &&
isPrivateIp(parsedUrl.hostname.replaceAll(/(\[)|(\])/g, ""))
) {
throw new Error("Private IP is not allowed");
}
let name = parsedUrl.pathname.split("/").pop() || null;
if (name == null || !DriveFiles.validateFileName(name)) { if (name == null || !DriveFiles.validateFileName(name)) {
name = null; name = null;
} }

View file

@ -139,8 +139,7 @@ if (!["http:", "https:"].includes(requestUrl.protocol))
throw new Error("invalid url"); throw new Error("invalid url");
if ( if (
requestUrl.hostname === "twitter.com" || ["twitter.com", "mobile.twitter.com", "x.com"].includes(requestUrl.hostname)
requestUrl.hostname === "mobile.twitter.com"
) { ) {
const m = requestUrl.pathname.match(/^\/.+\/status(?:es)?\/(\d+)/); const m = requestUrl.pathname.match(/^\/.+\/status(?:es)?\/(\d+)/);
if (m) tweetId.value = m[1]; if (m) tweetId.value = m[1];