Edge Microgateway の CLI リファレンス

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

Edge AppSheet v. 2.4.x

概要

Edge Appliance CLI を使用すると、Edge AppSheet のあらゆる側面を制御および管理できます。 作成します。

証明書の管理

cert コマンドを使用すると、公開鍵/秘密鍵をインストールして管理できます クライアントが Edge を介して安全な呼び出しを行うために使用する署名なしトークンの署名に使用されるペア。 接続できます。鍵は、Apigee Edge に暗号化された Key-Value マップ(KVM)で保存されます。Edge Appliance は、 署名付きの署名なしトークンを検証できます。これらの鍵は、Edgemicro の Terraform 構成を使用する必要があります。詳しくは、 構成する手順について説明します。次を使用: ここで説明する cert コマンドを使用して、これらの鍵を再生成して管理する できます。

証明書をインストールする

Apigee Edge セキュアストア サービスを使用して、暗号化された Key-Value マップ(KVM)に鍵をインストールし、 できます。鍵ペアのスコープは、指定された組織に設定されます。

使用目的

edgemicro cert install -o [organization] -e [environment] -u [username] -p [password] --force

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-u, --username Apigee のユーザー名。指定したサービスの組織管理者である必要があります。 できます。
-p, --password (省略可)パスワード。Google Cloud コンソールにこのパラメータを指定しない場合は、 実行します。
-f, --force (省略可)鍵が暗号化された KVM にすでに格納されている場合は、強制的に置き換えます。
-h, --help 使用方法に関する情報を出力します。

edgemicro cert install -o docs -e test -u jdoe@example.com -f

出力

current nodejs version is v6.1.0
current edgemicro version is 2.2.4-beta
password:
deleting vault
creating vault
adding private_key
adding public_key
installed cert

証明書を削除する

組織の鍵ペアを削除します。

使用目的

edgemicro cert delete -o [organization] -e [environment] -u [username] -p [password]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-u, --username Apigee のユーザー名。指定したサービスの組織管理者である必要があります。 できます。
-p, --password (省略可)パスワード。Google Cloud コンソールにこのパラメータを指定しない場合は、 実行します。
-h, --help 使用方法に関する情報を出力します。

edgemicro cert delete -o docs -e test -u jdoe@example.com 

出力

deleting vault
Vault deleted!

証明書を確認する

組織に証明書がインストールされていることを確認します。

使用目的

edgemicro cert check -o [organization] -e [environment] -u [username] -p [password]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-u, --username Apigee のユーザー名。指定したサービスの組織管理者である必要があります。 できます。
-p, --password (省略可)パスワード。Google Cloud コンソールにこのパラメータを指定しない場合は、 実行します。
-h, --help 使用方法に関する情報を出力します。

edgemicro cert check -o docs -e test -u jdoe@example.com

出力 (成功)

checked cert successfully

出力 (失敗)

証明書が存在しない場合は、エラーが返されます。

公開鍵を取得する

指定した組織の公開鍵を返します。認証は必要ありません。

使用目的

edgemicro cert public-key -o [organization] -e [environment]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-h, --help 使用方法に関する情報を出力します。

edgemicro cert public-key -o docs -e test

出力 (サンプル)

-----BEGIN CERTIFICATE----- 

MIICpDCCAYwCCQCKpXWGum9uTjANBgkq9w0BAQsFADAUMRIwEAYDVQQDEwls
b2NhbGhvc3cNMTYxMTAyMjAxNTA2WhcNMTYxMTAzMjAxNTA2WjAUMRIwEAYD
VQQDEwlsb2Nvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDD
ETr/ne/gP47+9LgjLvBJjpbFVdaeUabZZ3wbA7sSIVnnNXWt3yPklrWSfIh+
L2+dq4k+YunsQE2+dwPdXA2x8DPGvqGcCdWPxnpZ7ix5Akbs8i/J+Ue0pXT4
jkpWbaDDftGL2tcxwP45yI+slpDYvmWRps07TFXkAPjGEHYPvCT9/v/35GkL
0h4v0S+XfpcjS5c47o7CIWlkgEM5GBosQUb17kuVR48392vGFPsnCP34iNe7
zguhiCXYg2zkOcj/N3AE4xKIhCz0QcewULy08GltWMmyjJ/30zs8P41JqoA4
RwfeEZ8RenN3rJQim1ppAAEwDQYJKoZIhvcNAQELBQADggEBAHcORIfc+ySe
2FMmqicNe6Wt5V/5zOaBMLsGQdqGOHB5cQc79sMBrk680KVhrwHXZ2nBIkVe
UEL+2qLY1VLfswBNAvcNwV9U4TwHq4eIANiD751oJK1tHmM/ujThQkwNf96o
6I7Ws+wfpGO3ppJCttRbtnATIxrwsCHN4i5lbW/tJSL7t/Zf6T1B+YSJU9AF
xuvLq22cCqyYJQdmKq2vVS55WRZdllm+mRtJrv7MLM9gfDPRxVlwrBz/eQHy
Fv+dwzxcvQjkz03RNhZUodzuD34DPJoYeK++rItsddwQ26KTahH80yYTAFzY
x9gfPf1/+qo=  

-----END CERTIFICATE-----

Apigee 用に Edge Appliance を構成する エッジクラウド

Edge Gateway が Apigee Edge Cloud インスタンスと連携できるようにします。ラップして実行され 必要な認証プロキシを Edge にデプロイするための一連のコマンド、認証の生成 構成ファイルが更新されます。完全な動作例については、 構成する手順について説明します

<ph type="x-smartling-placeholder">

使用目的

edgemicro configure -o [organization] -e [environment] -u [username] -p [password]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-u, --username Apigee のユーザー名。指定したサービスの組織管理者である必要があります。 できます。
-p, --password (省略可)パスワード。Google Cloud コンソールにこのパラメータを指定しない場合は、 実行します。
-r, --url (省略可)organization:environment の仮想ホスト エイリアスを指定します。詳しくは、 Edge のドキュメントで仮想ホストの詳細をご覧ください。 デフォルト: org-env.apigee.net
-c, --configDir (省略可)Edge AppSheet 構成ファイルのパスを指定します。デフォルトでは 構成ファイルは ./config/config.yaml にあります。(追加済み v2.4.x)
-x, --proxyName (省略可)edgemicro-auth プロキシのベースパスを設定します。 edgemicro-auth プロキシが別のパスにデプロイされている場合 デフォルトの /edgemicro-auth から、この機能を使用して、 新しいパスを作成します。デフォルトでは、 /edgemicro-auth を指定します。(v2.4.x で追加)。
-t, --token (省略可)ユーザー名/パスワードの代わりに OAuth トークンを認証に使用できます。 例:

edgemicro configure -o docs -e test -t <your token>
-v, --virtualHosts (省略可)デフォルトの仮想ホスト( 「default,secure」このオプションは、サービス アカウントに仮想ホストが指定されている場合に これらのデフォルト以外のエッジ組織:環境。Edge のドキュメントをご覧ください。 詳しく学びます。
-d, --debug (省略可)デバッグ情報を提供します。
-h, --help 使用方法に関する情報を出力します。

使用上の注意

このコマンドは、構成情報を 約 /.edgemicro/org-env-config.yaml

edgemicro configure -o docs -e test -u jdoe@example.com

出力

成功すると、Edge の起動時に使用する必要がある一連のキーが返されます。 接続できます。

...

The following credentials are required to start edge micro
  key: d2f0a246ad52b5d2a8b04ba65b43c76348aba586691cf6185cd7bb9fb78fe9f
  secret: 59813bc1db4a7ada182705ae40893c28a6fae680c3deb42aefbf1a4db42e372

edgemicro configuration complete!

キーの生成

genkeys コマンドは、Edge で使用される鍵とシークレットのペアを生成します。 Apigee に分析データを非同期で送信する際に、独自に認証する Apigee 。

使用目的

edgemicro genkeys -o [organization] -e [environment] -u [username] -p [password]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-u, --username Apigee のユーザー名。指定したサービスの組織管理者である必要があります。 できます。
-p, --password (省略可)パスワード。Google Cloud コンソールにこのパラメータを指定しない場合は、 実行します。
-h, --help 使用方法に関する情報を出力します。

使用上の注意

成功すると、このコマンドは 3 つのアイテムを返します。1 つ目の URL は 確認します。他の 2 つは、Edge の起動時に必要なキーペアです。 接続されます。

  • ブートストラップ URL: この URL は、 Apigee Edge に分析データを送信する Edge Appliance インスタンス。その URL をコピーして を Edge Appliance 構成ファイル ~/.edgemicro/org-env-config.yaml に配置します。
  • key: 鍵。このキーとシークレットは、CLI への入力として必要です。 コマンドを使用します。
  • secret: シークレット。

edgemicro genkeys -o docs -e test -u jdoe@example.com

出力 (サンプル)

成功すると、Edge の起動時に使用する必要がある一連のキーが返されます。 接続できます。

configuring host edgemicroservices-us-east-1.apigee.net for region us-east-1
Please copy the following property to the edge micro agent config
  bootstrap: https://edgemicroservices-us-east-1.apigee.net/edgemicro/bootstrap/organization/jdoe/environment/test

The following credentials are required to start edge micro
  key: db39324077989c75eac34c13d285772ea8e3b982b957b3f52916f3048511443f
  secret: 5bf8da39de0056f88fdd5f25a8602d22f312c1c8c870580a5fef55ac6637b7ae

finished

次のサービス用に Edge Appliance を構成する Apigee Edge プライベート クラウド

Apigee Edge Private Cloud インストールと連携するように Edge Appliance を構成します。

使用目的

edgemicro private configure -o [organization] -e [environment] -u [username] -p [password]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-u, --username Apigee のユーザー名。指定したサービスの組織管理者である必要があります。 できます。
-p, --password (省略可)パスワード。Google Cloud コンソールにこのパラメータを指定しない場合は、 実行します。
-r, --runtime-url プライベート クラウド インスタンスのランタイム URL を指定します。
-m, --mgmt-url プライベート クラウド インスタンスの管理サーバーの URL。
-v, --virtualHosts 組織:環境の仮想ホストのカンマ区切りのリスト。デフォルト 「default,secure
-c, --configDir (省略可)Edge AppSheet 構成ファイルのパスを指定します。デフォルトでは 構成ファイルは ./config/config.yaml にあります。(追加済み v2.4.x)
-t, --token (省略可)ユーザー名/パスワードの代わりに OAuth トークンを認証に使用できます。 例:

edgemicro configure -o docs -e test -t <your token>
-d, --debug (省略可)デバッグ情報を提供します。
-h, --help 使用方法に関する情報を出力します。

使用上の注意

このコマンドは、構成情報を 約 /.edgemicro/org-env-config.yaml

edgemicro private configure -o docs -e test -u jdoe@example.com -r http://192.162.55.100:9002 -m http://192.162.55.100:8080

出力

成功すると、Edge の起動時に使用する必要がある一連のキーが返されます。 接続できます。

...

The following credentials are required to start edge micro
  key: d2f0a246ad52b5d2a8b04ba65b43c76348aba586691cf6185cd7bb9fb78fe9f
  secret: 59813bc1db4a7ada182705ae40893c28a6fae680c3deb42aefbf1a4db42e372

edgemicro configuration complete!

Edge Appliance の起動

Edge Appliance を起動する前に、まず edgemicro config(パブリック クラウド)または edgemicro private 構成する(プライベート クラウド)。Configure コマンドは、キーとシークレットの値を返す いくつかあります。

使用目的

edgemicro start -o [organization] -e [environment] -k [public-key] -s [secret-key]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-k, --key edgemicro configure」の実行時に返される Key-Value使用できます。
-s, --secret edgemicro configure」の実行時に返されるシークレットの値使用できます。
-p, --processes (省略可)開始するプロセスの数。デフォルト: デバイスのコア数 ありません
-d, --pluginDir (省略可)プラグイン ディレクトリの絶対パス。
-r, --port (省略可) 約 /.edgemicro/org-env-config.yaml ファイル。デフォルト: 8000
-c, --cluster

(省略可)Edge AppSheet をクラスタモードで起動します。

注: v2.3.1 から、このオプションは削除されました。イン v2.3.1 以降のバージョンでは、Edge Micro は常にクラスタモードで起動します。

-c, --configDir (省略可)Edge AppSheet 構成ファイルのパスを指定します。デフォルトでは 構成ファイルは ./config/config.yaml にあります。(追加済み v2.4.x)
-d, --debug (省略可)デバッグ情報を提供します。
-h, --help 使用方法に関する情報を出力します。

ポートの設定

start コマンドを使用すると、ポート番号を指定してポートをオーバーライドできます。 必要があります。Cloud Shell を使用して、ポート番号を PORT 環境変数を使用します。例:

edgemicro start -o docs -e test -k abc123 -s xyz456 -p 2 --port 8002

または

export PORT=8002 
edgemicro start -o org -e test -k key -s secret -p 2

ポートが使用中の場合、Edge Gateway はエラーを返します。

クラスタリングについて

Edge Appliance は、Node.js クラスタ モジュールを使用して、クラスタリングを有効にします。クラスタリングを使用すると、Edge マルチコア システムの長所を兼ね備えています。詳細については、こちらの Node.js ドキュメントをご覧ください。

<ph type="x-smartling-placeholder">

edgemicro start -o docs -e test -k abc123 -s xyz456

出力例:

...

PROCESS PID : 54709
installed plugin from analytics
installed plugin from analytics
installed plugin from oauth
installed plugin from oauth
installed plugin from analytics
installed plugin from oauth
5a86b570-a142-11e6-aa1f-6730e9065d6c edge micro listening on port 8000
5a86dc80-a142-11e6-962c-43d9cc723190 edge micro listening on port 8000
5a8751b0-a142-11e6-8241-cf1c517c91eb edge micro listening on port 8000
installed plugin from analytics
installed plugin from oauth
5a924e30-a142-11e6-8740-2944162ce275 edge micro listening on port 8000

トークンの管理

token コマンドを使用すると、署名付き OAuth2 の取得、デコード、検証を行うことができます。 できます。セキュリティ OAuth2 アクセス トークンを使用した API 呼び出し

トークンをデコードする

署名付きのエンコードされた署名なしトークンを、書式なしテキストの JSON JWT(Java Web Token)にデコードします。 必要があります。トークンは、Apigee Edge デベロッパー アプリに関する情報を アプリケーション名、client_id、商品リストなど、トークンの作成に使用されるキー。

使用目的

edgemicro token decode -f [filename]

パラメータ

パラメータ 説明
-f, --file デコードする JWT トークンを含むファイルの名前。
-h, --help 使用方法に関する情報を出力します。

edgemicro token decode -f token.jwt

出力(サンプル)

{ header: { typ: 'JWT', alg: 'RS256' },

  payload:
   { application_name: 'b43342ef-86f6-4666-a121-b9ac2025d217',
     client_id: 'O9ZQRZKnn1rdgcKQgsABSMdOsKS',
     scopes: [],
     api_product_list: [ 'MicroTest' ],
     iat: 1436280566,
     exp: 1436282365 },
  signature: ... }

トークンを生成する

署名付きの署名なしトークンを生成します。このトークンにより、クライアント アプリは認証済みの API 呼び出しを行うことができます 接続しますこのトークンは、OAuth 2.0 準拠の JSON Web Token(JWT)です。要件は次のとおりです。 登録済みのネットワークからコンシューマ キー(クライアント ID)とコンシューマ シークレット(クライアント シークレット)の値を入力 Apigee Edge 上のデベロッパー アプリです。セキュリティ OAuth2 アクセス トークンを使用した API 呼び出し

使用目的

edgemicro token get -o [org] -e [env] -i [client_id] -s [client_secret]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-1, --key Dataproc 対応に関連付けられたデベロッパー アプリのクライアント ID あります。
-s, --secret Dataproc 対応に関連付けられているデベロッパー アプリのクライアント シークレット あります。
-h, --help 使用方法に関する情報を出力します。

edgemicro token get -o docs -e test -i 5UzOwAXGoOeo60aew94PPG5MAZE3aJp -s 6vahKFGS9a3qMLwz

出力(サンプル)

{ token: 'eyJ0eXAiOiJKV1JhbGciOiJSUzI1NiJ9Glvbl9uYW1lIjoiNWNiMGY0NTV6TV3
EtOWMzOC00YmJjLWIzNzEtZGMxZTQzOGMxIiwiY2xpZW50X2lkIjoiNVV6T3dBWEdvSU9lbz
YwYWV3OTRQN0c1TUFaRTNhSnAiLCJzY2MiOltdLCJhcGlfcHJvZHVjdF9saXN0IjpbIkVkZ2
VNaWNyb1Rlc3RQcm9kdWN0Il0sImlhdCI3ODEyMzQ2MSwiZXhwIjoxNDc4MTI1MjYwfQ.Dx5
f5U7PXm8koNGmFX4N6VrxKMJnpndKgoJ5zWSJvBZ6Ccvhlpd85ipIIA5S2A5nx4obYWp_rpY
RJpIGYwyxP6Oq2j0rxnVjdCC4qyYMgthZjhKgEBVBe3s1ndP72GP2vV6PsSA9RQ2-yzsy9r0
TzhAZ3NJTxT1tS0XKqKngE-OhR3fJHVLAzdMDT0AmS9H0Z2NAJtQOuK6RTpCjG9B6Bc48AEM
sj7QSM-1LWiQ8LdY8k_BoC06qsTI7bCQGWwTuqL-ismbcx2bxovUxSemZIaoROfuF-dCZHG3
2aTP75WxBvvNgBBvPvQtPzbeSOtEaww' }

トークンを取得するための HTTP リクエストの実行

未加工の HTTP リクエストを作成してトークンを取得することもできます。curl の例を次に示します。置換のみ URL の組織名と環境名を確認し、コンシューマ ID とコンシューマ シークレットに代入します。 クライアント ID と client_secret パラメータの値を 2 つ使用します。

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" -d '{"grant_type": "client_credentials", "client_id": "4t8X137pOUUtMR7wag3M1yZTcRxeK", "client_secret": "RAcOFVOvO0jns"}' -H "Content-Type: application/json"

トークンを検証する

Apigee Edge に保存されている、指定された公開鍵に対する署名なしトークンを検証します。 組織と環境の両方が含まれます。

使用目的

edgemicro token verify -o [org] -e [env] -f [filename]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-f, --file 検証する JWT を含むファイルの名前。
-h, --help 使用方法に関する情報を出力します。

edgemicro token get -o docs -e test -f token.jwt

有効なトークンの出力例

{ application_name: 'b43342ef-86f6-4666-a121-b9ac2025d217',

  client_id: 'O9ZQRZKnn1rdgcKQsAZUBkQSMdOsKS',

  scopes: [],

  api_product_list: [ 'MicroTest' ],

  iat: 1436396155,

  exp: 1436397954 }

無効なトークンの出力例

{ [JsonWebTokenError: invalid token] name: 'JsonWebTokenError', message: 'invalid token' }

期限切れのトークンの出力例

{ [TokenExpiredError: jwt expired]

  name: 'TokenExpiredError',

  message: 'jwt expired',

  expiredAt: Tue Jul 07 2015 09:19:25 GMT-0600 (MDT) }

署名なしトークンの直接取得

署名なしトークンに HTTP リクエストを送信して、トークンを直接取得することもできます。 Apigee Edge 上にあります。実際のトークン エンドポイントは、デプロイされたプロキシに実装されます。 CLI コマンドを使用します

curl の例を次に示します。URL の組織名と環境名を置き換えて、 Apigee のデベロッパー アプリから取得したコンシューマ ID とコンシューマ シークレットの値に置き換えます エッジ client_id パラメータと client_secret パラメータ:

curl -i -X POST "http://<org>-<test>.apigee.net/edgemicro-auth/token" -d '{"grant_type": "client_credentials", "client_id": "4t8X137pOUUtMR7wag3M1yZTcRxeK", "client_secret": "RAcOFVOvO0jns"}' -H "Content-Type: application/json"

出力例:

HTTP/1.1 200 OK

X-Powered-By: Express

Cache-Control: no-store

Pragma: no-cache

Content-Type: application/json; charset=utf-8

Content-Length: 640

ETag: W/"280-ze/g/k+c9taqp110vjYQ"

Date: Fri, 17 07 2015 15:49:24 GMT

Connection: keep-alive

"<long string of numbers and letters>"

新しい Edge Appliance の初期化 構成

このコマンドを 1 回実行してから、Edge API を最初にインストールしてください。新しいデフォルトを作成します 構成ファイル(~/.edgemicro/default.yaml)。

使用目的

edgemicro init 

パラメータ

パラメータ 説明
-c, --configDir (省略可)Edge AppSheet 構成ファイルのパスを指定します。デフォルトでは 構成ファイルは ./config/config.yaml にあります。(追加済み v2.4.x)
-h, --help 使用方法に関する情報を出力します。

edgemicro init

出力 (成功)

config initialized to /MyHome/.edgemicro/default.yaml

Edge Appliance の構成の確認

Edge AppSheet が正しく構成されていることを確認します。

使用目的

edgemicro verify -o [organization] -e [environment] -k [public-key] -s [secret-key]

パラメータ

edgemicro verify -o docs -e test -k abc123 -s xyz456

出力 (成功)

logging to /var/tmp/edgemicro-My-Machine.local-a0c48610-a148-11e6-8466-93f081b05988
installed plugin from analytics
installed plugin from oauth
a0c48610-a148-11e6-8466-93f081b05988 edge micro listening on port 8000
verifying analytics negative case: OK
verifying bootstrap url availability:OK
verifying jwt_public_key availability: OK
verifying products availability: OK
verifying quota with configured products: OK
verifying analytics with payload: OK
verification complete

マイクロサービス クラスタのステータスを確認する

追加: v2.2.4-beta

デフォルトでは、Edge Gateway はクラスタモードで起動します。このコマンドを使用して ステータスが表示されます。

使用目的

edgemicro status

パラメータ

パラメータ 説明
-h, --help 使用方法に関する情報を出力します。

edgemicro status

出力 (成功)

current nodejs version is v6.1.0
current edgemicro version is 2.2.4-beta
edgemicro is running with 4 workers

Apigee クラスタを停止する

追加: v2.2.4-beta

Edge Scanner クラスタを停止します。

使用目的

edgemicro stop

パラメータ

パラメータ 説明
-h, --help 使用方法に関する情報を出力します。

edgemicro stop

出力 (成功)

current nodejs version is v6.1.0
current edgemicro version is 2.2.4-beta
Stop Completed Successfully

Microgateway クラスタの再読み込み

追加: v2.2.4-beta

構成の変更後にダウンタイムなしで再起動できます。次の時間までに Edge Appliance を再読み込みします。 使用します。

使用目的

edgemicro reload -o [organization] -e [environment] -k [public-key] -s [secret-key]

パラメータ

パラメータ 説明
-o, --org Edge Appliance を構成した Apigee 組織。
-e, --env Edge Appliance を構成した環境。
-k, --key edgemicro configure」の実行時に返される Key-Value使用できます。
-s, --secret edgemicro configure」の実行時に返されるシークレットの値使用できます。
-h, --help 使用方法に関する情報を出力します。

edgemicro reload -o docs -e test -k abc123 -s xyz456

出力 (成功)

...

Reload Completed Successfully