Merge branch 'develop'

This commit is contained in:
syuilo 2019-05-16 16:14:00 +09:00
commit 5ce412aeda
No known key found for this signature in database
GPG key ID: BDC4C49D06AB9D69
15 changed files with 118 additions and 24 deletions

View file

@ -54,6 +54,14 @@ mongodb:
8. master ブランチに戻す
9. enjoy
11.15.0 (2019/05/16)
--------------------
### ✨Improvements
* 管理画面でreCAPTCHAのプレビューを表示するように
### 🐛Fixes
* オブジェクトストレージのリージョンの設定が反映されない問題を修正
11.14.0 (2019/05/16)
--------------------
### 注意

View file

@ -39,4 +39,4 @@ COPY --from=builder /misskey/node_modules ./node_modules
COPY --from=builder /misskey/built ./built
COPY . ./
CMD ["npm", "start"]
CMD ["npm", "migrateandstart"]

View file

@ -873,7 +873,6 @@ admin/views/index.vue:
users: "Uživatelé"
federation: "Z fedivesmíru"
announcements: "Oznámení"
hashtags: "Hashtagy"
queue: "Fronta úloh"
logs: "Logy"
back-to-misskey: "Zpět na Misskey"
@ -898,6 +897,7 @@ admin/views/instance.vue:
maintainer-config: "Informace o administrátorovi"
maintainer-name: "Jméno administrátora"
maintainer-email: "Kontakt na administrátora"
object-storage-endpoint: "Endpoint"
mb: "V megabajtech"
recaptcha-config: "nastavení služby reCAPTCHA"
recaptcha-info: "reCAPTCHA token je povinný. Můžete jej získat na https://www.google.com/recaptcha/intro/"

View file

@ -1063,7 +1063,6 @@ admin/views/index.vue:
users: "Users"
federation: "Federation"
announcements: "Announcements"
hashtags: "Hashtags"
abuse: "Abuse"
queue: "Job Queue"
logs: "Logs"
@ -1098,6 +1097,7 @@ admin/views/instance.vue:
maintainer-name: "Administrator name"
maintainer-email: "Contact Administrator"
drive-config: "Drive settings"
object-storage-endpoint: "Endpoint"
cache-remote-files: "Cache remote files"
cache-remote-files-desc: "Without this parameter, all remote files are linked to their host server directly. This will be an effective solution to save your server storage, however make remote files invisible to users who set direct-link disabled, since no thumbnail will be generated, increase traffic. It is recommended that this parameter set enabled."
local-drive-capacity-mb: "Volume of Drive per user"

View file

@ -910,7 +910,6 @@ admin/views/index.vue:
moderators: "Moderadores"
users: "Usuarios"
federation: "Federado"
hashtags: "Hashtags"
queue: "Cola de trabajos"
logs: "Registros"
back-to-misskey: "Volver a Misskey"

View file

@ -68,7 +68,7 @@ common:
explore: "Découvrir"
following: "Suit"
followers: "Abonné·e·s"
favorites: "Mettre cette note en favoris"
favorites: "Favorites"
permissions:
"read:account": "Afficher les informations du compte"
"write:account": "Mettre à jour les informations de votre compte"
@ -1046,7 +1046,6 @@ admin/views/index.vue:
users: "Utilisateurs"
federation: "Fédération"
announcements: "Annonces"
hashtags: "Hashtags"
abuse: "Abus"
queue: "File dattente"
logs: "Journaux"
@ -1073,14 +1072,19 @@ admin/views/instance.vue:
instance-name: "Nom de linstance"
instance-description: "Description de linstance"
host: "Hôte"
icon-url: "URL de l'icône"
logo-url: "URL do logo"
banner-url: "URL de limage de la bannière"
error-image-url: "URL de limage derreur"
languages: "Langue de linstance"
languages-desc: "Vous pouvez en définir plus dune, séparées par des espaces."
tos-url: "URL des conditions d'utilisation"
repository-url: "URL du dépôt"
maintainer-config: "Informations de ladministrateur"
maintainer-name: "Nom de ladministrateur"
maintainer-email: "Contact administratif"
drive-config: "Paramètres du lecteur"
object-storage-endpoint: "Point de terminaison"
cache-remote-files: "Mettre en cache des fichiers distants"
local-drive-capacity-mb: "Volume du lecteur par utilisateur"
remote-drive-capacity-mb: "Volume du lecteur par utilisateur distant"
@ -1474,8 +1478,11 @@ mobile/views/components/ui.nav.vue:
mobile/views/pages/drive.vue:
contextmenu:
upload: "Téléverser un fichier"
url-upload: "Transférer un fichier depuis une URL"
create-folder: "Créer un dossier"
rename-folder: "Renommer le dossier"
move-folder: "Déplacer ce dossier"
delete-folder: "Supprimer ce dossier"
mobile/views/pages/user-lists.vue:
title: "Listes"
mobile/views/pages/signup.vue:
@ -1584,6 +1591,7 @@ dev/views/apps.vue:
create-app: "Créer une app"
app-missing: "Aucune application"
dev/views/new-app.vue:
new-app: "Nouvelle application"
create-app: "Création dune application"
app-name: "Nom de lapplication"
app-name-desc: "Le nom de votre application"
@ -1616,7 +1624,9 @@ pages:
enter-variable-name: "Veuillez choisir un nom de variable"
the-variable-name-is-already-used: "Cette variable est déjà utilisée"
content-blocks: "Contenu du cadre"
input-blocks: "Entrée"
special-blocks: "Spécial"
post-from-post-form: "Publier ce contenu"
posted-from-post-form: "Publié !"
blocks:
text: "Texte"
@ -1653,11 +1663,15 @@ pages:
_counter:
name: "Nom de la variable"
text: "Titre"
inc: "Augmenter le chiffre"
_button:
text: "Titre"
action: "L'opération lorsque le bouton sera pressé"
_action:
dialog: "Afficher une fenêtre de dialogue"
_dialog:
content: "Contenu"
resetRandom: "Réinitialiser le nombre aléatoire"
script:
categories:
flow: "Contrôle"
@ -1736,13 +1750,20 @@ pages:
arg1: "Listes"
_dailyRandomPick:
arg1: "Listes"
_seedRannum:
arg2: "Min"
arg3: "Max"
_seedRandomPick:
arg2: "Listes"
pick: "Sélectionner dans la liste"
_pick:
arg1: "Listes"
arg2: "Position"
number: "Numérique"
stringToNumber: "Chaîne en chiffres"
_stringToNumber:
arg1: "Texte"
numberToString: "Chiffres en chaîne"
_numberToString:
arg1: "Numérique"
_splitStrByLine:
@ -1750,6 +1771,7 @@ pages:
ref: "Variables"
fn: "Fonction"
_fn:
slots: "Emplacement"
arg1: "Sortie"
for: "Répéter"
types:

View file

@ -1253,8 +1253,9 @@ admin/views/instance.vue:
recaptcha-config: "reCAPTCHAの設定"
recaptcha-info: "reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。"
enable-recaptcha: "reCAPTCHAを有効にする"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
recaptcha-site-key: "サイトキー"
recaptcha-secret-key: "シークレットキー"
recaptcha-preview: "プレビュー"
hidden-tags: "非表示ハッシュタグ"
hidden-tags-info: "集計から除外するハッシュタグを改行で区切って記述します。"
external-service-integration-config: "外部サービス連携"

View file

@ -836,7 +836,6 @@ admin/views/index.vue:
users: "ユーザー"
federation: "連合"
announcements: "知っといてや"
hashtags: "ハッシュタグ"
back-to-misskey: "Misskeyに戻る"
admin/views/dashboard.vue:
dashboard: "ダッシュボード"
@ -861,6 +860,7 @@ admin/views/instance.vue:
maintainer-name: "管理者名"
maintainer-email: "管理者の連絡先"
drive-config: "ドライブの設定"
object-storage-endpoint: "エンドポイント"
cache-remote-files: "リモートのファイルをキャッシュする"
cache-remote-files-desc: "この設定を無効にすると、リモートファイルをこっちで保管せずに直接リンク張るようになるで。サーバーのストレージは軽くやろうけど、プライバシー設定で直リンクを向こうにしとるユーザーはファイルが見れへんし、サムネイルが無いから通信量が増えたりするから、普通はオンにしといてな。"
local-drive-capacity-mb: "ローカルユーザーひとりあたりのドライブ容量"

View file

@ -1065,7 +1065,6 @@ admin/views/index.vue:
users: "사용자"
federation: "연합"
announcements: "공지사항"
hashtags: "해시태그"
abuse: "스팸 신고"
queue: "작업 대기열"
logs: "로그"
@ -1105,6 +1104,7 @@ admin/views/instance.vue:
maintainer-name: "관리자 이름"
maintainer-email: "관리자 연락처"
drive-config: "드라이브 설정"
object-storage-endpoint: "엔드포인트"
cache-remote-files: "원격 파일을 캐시"
cache-remote-files-desc: "이 설정을 해지하면 원격 파일을 캐시하지 않고 해당 파일을 직접 링크하게 됩니다. 그에 따라 서버의 저장 공간을 절약할 수 있지만, 프라이버시 설정에서 직접 링크를 무효로 설정한 사용자에게는 파일이 보이지 않거나, 썸네일이 생성되지 않기 때문에 통신량이 증가합니다. 일반적으로 이 설정을 ON으로 두는 것을 추천합니다."
local-drive-capacity-mb: "로컬 사용자 한 명당 드라이브 용량"

View file

@ -855,7 +855,6 @@ admin/views/index.vue:
moderators: "Moderatorzy"
users: "Użytkownicy"
announcements: "Ogłoszenia"
hashtags: "Hashtagi"
admin/views/dashboard.vue:
dashboard: "Kokpit"
accounts: "Konta"

View file

@ -145,7 +145,7 @@ common:
profile: "个人资料"
notification: "通知"
apps: "应用程序"
tags: "标签"
tags: "哈希标签"
mute-and-block: "屏蔽/拉黑"
blocking: "拉黑"
security: "安全性"
@ -168,7 +168,7 @@ common:
use-avatar-reversi-stones: "用头像作为黑白棋的棋子"
disable-animated-mfm: "在帖子中禁用动画文本"
disable-showing-animated-images: "不播放动画"
suggest-recent-hashtags: "在帖子表单上显示最近流行的主题标签"
suggest-recent-hashtags: "在帖子表单上显示最近流行的哈希标签"
always-show-nsfw: "总是显示 NSFW 的内容"
always-mark-nsfw: "总是用 NSFW 来标记附件"
show-full-acct: "不要从用户名中忽略主机名"
@ -297,7 +297,7 @@ common:
server: "服务器信息"
nav: "导航"
tips: "提示"
hashtags: "标签"
hashtags: "哈希标签"
queue: "队列"
dev: "构建应用程序失败,请再试一次。"
ai-chan-kawaii: "小蓝真可爱"
@ -469,9 +469,10 @@ common/views/components/nav.vue:
status: "状态"
wiki: "维基百科"
donors: "捐赠者"
repository: "码库"
repository: "码库"
develop: "开发人员"
feedback: "反馈"
tos: "服务条款"
common/views/components/note-menu.vue:
mention: "提到"
detail: "详细信息"
@ -584,6 +585,8 @@ common/views/components/signup.vue:
password-matched: "确认"
password-not-matched: "密码不一致"
recaptcha: "验证"
agree-to: "同意{0}"
tos: "服务条款"
create: "创建一个账户"
some-error: "由于某种原因,创建帐户失败。请再试一次。"
common/views/components/special-message.vue:
@ -713,7 +716,7 @@ common/views/widgets/posts-monitor.vue:
title: "投稿表格"
toggle: "切换视图"
common/views/widgets/hashtags.vue:
title: "标签"
title: "哈希标签"
common/views/widgets/server.vue:
title: "服务器信息"
toggle: "切换显示"
@ -1016,8 +1019,8 @@ desktop/views/components/timeline.vue:
mentions: "提到的"
messages: "直接发布"
list: "列表"
hashtag: "标签"
add-tag-timeline: "添加标签"
hashtag: "哈希标签"
add-tag-timeline: "添加哈希标签"
add-list: "添加列表"
list-name: "列表名称"
desktop/views/components/ui.header.vue:
@ -1063,7 +1066,6 @@ admin/views/index.vue:
users: "用户"
federation: "联合"
announcements: "公告"
hashtags: "标签"
abuse: "举报垃圾信息"
queue: "作业队列"
logs: "登录"
@ -1090,14 +1092,34 @@ admin/views/instance.vue:
instance-name: "实例名称"
instance-description: "实例介绍"
host: "主机名"
icon-url: "图标URL"
logo-url: "Logo URL"
banner-url: "背景图片地址"
error-image-url: "无效的图像URL"
languages: "实例语言"
languages-desc: "您可以添加多个,以空格分隔。"
tos-url: "服务条款URL"
repository-url: "源码库URL"
feedback-url: "反馈URL"
maintainer-config: "管理员信息"
maintainer-name: "管理员名称"
maintainer-email: "联系管理员"
advanced-config: "其他设置"
note-and-tl: "帖子和时间线"
drive-config: "网盘设置"
use-object-storage: "使用对象存储"
object-storage-base-url: "URL"
object-storage-bucket: "存储空间名"
object-storage-prefix: "前缀"
object-storage-endpoint: "端点"
object-storage-region: "区域"
object-storage-port: "端口"
object-storage-access-key: "访问密钥"
object-storage-secret-key: "密钥"
object-storage-use-ssl: "使用 SSL"
object-storage-s3-info: "使用Amazon S3作为对象存储时请确认{0}相关“终端”和“区域”的设置。"
object-storage-s3-info-here: "这里"
object-storage-gcs-info: "将Google Cloud Storage用作对象存储时请将“终端”设置为storage.googleapis.com并将“区域”留空。"
cache-remote-files: "远程文件缓存"
cache-remote-files-desc: "如果没有此参数,则所有远程文件都将直接链接到其主机服务器。 这将是保存服务器存储的有效解决方案,但是对于设置禁用直接链接的用户而言,远程文件不可见,因为不会生成缩略图,从而增加流量。 建议启用此参数集。"
local-drive-capacity-mb: "每个用户的网盘空间"
@ -1108,6 +1130,9 @@ admin/views/instance.vue:
enable-recaptcha: "启用 reCAPTCHA\n(请注意, 此功能在中国大陆不可用. 如果启用, 可能导致无法正常使用登录或注册等功能)"
recaptcha-site-key: "reCAPTCHA site key"
recaptcha-secret-key: "reCAPTCHA secret key"
hidden-tags: "隐藏哈希标签"
hidden-tags-info: "使用换行符分隔要从集合中排除的哈希标签。"
external-service-integration-config: "连接外部服务"
twitter-integration-config: "连接到Twitter的设置"
twitter-integration-info: "设置返回的URL{url}。"
enable-twitter-integration: "启用连接到Twitter"
@ -1139,6 +1164,7 @@ admin/views/instance.vue:
save: "保存"
saved: "保存完毕"
pinned-users: "置顶用户"
pinned-users-info: "描述您要置顶的用户,以换行符分隔。"
email-config: "电子邮件服务器设置"
email-config-info: "用于确认电子邮件和密码重置等。"
enable-email: "启用电子邮件送递"
@ -1224,6 +1250,8 @@ admin/views/users.vue:
unsilence-confirm: "解除屏蔽?"
update-remote-user: "更新远程用户信息"
remote-user-updated: "远程用户信息已更新"
delete-all-files: "删除所有文件"
delete-all-files-confirm: "删除所有文件吗?"
users:
title: "用户"
sort:
@ -1299,6 +1327,7 @@ admin/views/federation.vue:
latest-request-received-at: "上次收到的请求"
remove-all-following: "取消所有关注"
remove-all-following-info: "取消{host}的所有关注者。当实例不存在时执行。"
delete-all-files: "删除所有文件"
block: "拉黑"
marked-as-closed: "标记为已关闭"
lookup: "查询"
@ -1346,6 +1375,7 @@ admin/views/federation.vue:
hour: "每小时"
day: "每天"
blocked-hosts: "拉黑"
blocked-hosts-info: "描述您要阻止的主机,以换行符分隔。"
desktop/views/pages/welcome.vue:
about: "更多信息..."
timeline: "时间线"
@ -1367,7 +1397,7 @@ desktop/views/pages/search.vue:
not-available: "在此实例的设置中关闭搜索功能。"
not-found: "没有找到“{q}”的帖子"
desktop/views/pages/tag.vue:
no-posts-found: "没有找到带有主题标签“{q}”的帖子"
no-posts-found: "没有找到带有哈希标签“{q}”的帖子"
desktop/views/pages/user-list.users.vue:
users: "用户"
add-user: "添加用户"
@ -1443,7 +1473,7 @@ mobile/views/components/drive.file-detail.vue:
download: "下载"
rename: "重命名"
move: "移动"
hash: "Hash (md5)"
hash: "哈希(md5)"
exif: "EXIF"
nsfw: "阅读注意"
mark-as-sensitive: "标记为“敏感”"
@ -1530,7 +1560,7 @@ mobile/views/pages/home.vue:
mentions: "Mentions"
messages: "直接发布"
mobile/views/pages/tag.vue:
no-posts-found: "没有找到带有主题标签“{q}”的帖子"
no-posts-found: "没有找到带有哈希标签“{q}”的帖子"
mobile/views/pages/widgets.vue:
dashboard: "仪表盘"
widgets-hints: "您可以添加/删除/重新排列小部件。 要移动小部件,请拖动“三”。 点击“×”删除小部件。 某些小部件可以通过点击来更改显示。"
@ -1582,7 +1612,7 @@ deck:
home: "首页"
local: "Local"
hybrid: "社交"
hashtag: "标签"
hashtag: "哈希标签"
global: "Global"
mentions: "Mentions"
direct: "直接发布"

View file

@ -1,7 +1,7 @@
{
"name": "misskey",
"author": "syuilo <i@syuilo.com>",
"version": "11.14.0",
"version": "11.15.0",
"codename": "daybreak",
"repository": {
"type": "git",
@ -14,6 +14,7 @@
"init": "node ./built/init.js",
"ormconfig": "node ./built/ormconfig.js",
"migrate": "npm run ormconfig && ts-node ./node_modules/typeorm/cli.js migration:run",
"migrateandstart": "npm run migrate && npm run start",
"build": "webpack && gulp build",
"webpack": "webpack",
"watch": "webpack --watch",

View file

@ -165,6 +165,10 @@
</ui-horizon-group>
</template>
</section>
<section v-if="enableRecaptcha && recaptchaSiteKey">
<header>{{ $t('recaptcha-preview') }}</header>
<div ref="recaptcha" style="margin: 16px 0 0 0;" :key="recaptchaSiteKey"></div>
</section>
<section>
<ui-button @click="updateMeta"><fa :icon="faSave"/> {{ $t('save') }}</ui-button>
</section>
@ -376,6 +380,34 @@ export default Vue.extend({
});
},
mounted() {
const renderRecaptchaPreview = () => {
if (!(window as any).grecaptcha) return;
if (!this.$refs.recaptcha) return;
if (!this.recaptchaSiteKey) return;
(window as any).grecaptcha.render(this.$refs.recaptcha, {
sitekey: this.recaptchaSiteKey
});
};
window.onRecaotchaLoad = () => {
renderRecaptchaPreview();
};
const head = document.getElementsByTagName('head')[0];
const script = document.createElement('script');
script.setAttribute('src', 'https://www.google.com/recaptcha/api.js?onload=onRecaotchaLoad');
head.appendChild(script);
this.$watch('enableRecaptcha', () => {
renderRecaptchaPreview();
});
this.$watch('recaptchaSiteKey', () => {
renderRecaptchaPreview();
});
},
methods: {
invite() {
this.$root.api('admin/invite').then(x => {

View file

@ -199,6 +199,7 @@ async function upload(key: string, stream: fs.ReadStream | Buffer, type: string,
const minio = new Minio.Client({
endPoint: meta.objectStorageEndpoint!,
region: meta.objectStorageRegion ? meta.objectStorageRegion : undefined,
port: meta.objectStoragePort ? meta.objectStoragePort : undefined,
useSSL: meta.objectStorageUseSSL,
accessKey: meta.objectStorageAccessKey!,

View file

@ -21,6 +21,7 @@ export default async function(file: DriveFile, isExpired = false) {
const minio = new Minio.Client({
endPoint: meta.objectStorageEndpoint!,
region: meta.objectStorageRegion ? meta.objectStorageRegion : undefined,
port: meta.objectStoragePort ? meta.objectStoragePort : undefined,
useSSL: meta.objectStorageUseSSL,
accessKey: meta.objectStorageAccessKey!,