Mk:apiで外部サーバーとの接続を禁止 (#11883)

* Mk:url(): no automatic token attaching when ep is url

* Limit requests to external servers by Mk:api

* remove unused import

* Update CHANGELOG.md

* Update packages/frontend/src/scripts/aiscript/api.ts

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>

---------

Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
This commit is contained in:
FineArchs 2023-09-24 14:41:41 +09:00 committed by GitHub
parent d05563c448
commit 30b231225c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 1 deletions

View file

@ -86,6 +86,7 @@
- Fix: 複数の階層があるメニューで、短くタップすると正常に動かない場合がある問題を修正 - Fix: 複数の階層があるメニューで、短くタップすると正常に動かない場合がある問題を修正
- Fix: アニメーションがオフのとき、スマホで子メニューの選択ができない問題を修正 - Fix: アニメーションがオフのとき、スマホで子メニューの選択ができない問題を修正
- Fix: ドロワーメニューで、親メニュー項目をマウスでホバーすると子メニューが表示されてしまう問題を修正 - Fix: ドロワーメニューで、親メニュー項目をマウスでホバーすると子メニューが表示されてしまう問題を修正
- Fix: AiScriptでMk:apiが外部と通信できる問題を修正
### Server ### Server
- Change: cacheRemoteFilesの初期値はfalseになりました - Change: cacheRemoteFilesの初期値はfalseになりました

View file

@ -34,12 +34,15 @@ export function createAiScriptEnv(opts) {
return confirm.canceled ? values.FALSE : values.TRUE; return confirm.canceled ? values.FALSE : values.TRUE;
}), }),
'Mk:api': values.FN_NATIVE(async ([ep, param, token]) => { 'Mk:api': values.FN_NATIVE(async ([ep, param, token]) => {
utils.assertString(ep);
if (ep.value.includes('://')) throw new Error('invalid endpoint');
if (token) { if (token) {
utils.assertString(token); utils.assertString(token);
// バグがあればundefinedもあり得るため念のため // バグがあればundefinedもあり得るため念のため
if (typeof token.value !== 'string') throw new Error('invalid token'); if (typeof token.value !== 'string') throw new Error('invalid token');
} }
return os.api(ep.value, utils.valToJs(param), token ? token.value : (opts.token ?? null)).then(res => { const actualToken: string|null = token?.value ?? opts.token ?? null;
return os.api(ep.value, utils.valToJs(param), actualToken).then(res => {
return utils.jsToVal(res); return utils.jsToVal(res);
}, err => { }, err => {
return values.ERROR('request_failed', utils.jsToVal(err)); return values.ERROR('request_failed', utils.jsToVal(err));