日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hyperledge工具-configtxgen

發(fā)布時(shí)間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hyperledge工具-configtxgen 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考http://www.blockchainbrother.com/article/1339

configtxgen是Hyperledger Fabric提供的用于通道配置的實(shí)用程序,主要生成以下3種文件:

  • 排序服務(wù)節(jié)點(diǎn)使用的創(chuàng)世區(qū)塊;
  • 創(chuàng)建通道使用的通道配置交易;
  • 更新通道用的錨節(jié)點(diǎn)交易。

目前,該工具主要側(cè)重于生成排序服務(wù)節(jié)點(diǎn)的創(chuàng)世區(qū)塊,但是將來預(yù)計(jì)增加生成新通道的配置以及重新配置已有的通道。

?

1.編譯生成該configtxgen工具的方法與cryptogen相似,有兩種辦法:

該工具的源碼在github.com/hyperledger/fabric/common/tools/configtxgen
1)在github.com/hyperledger/fabric目錄下運(yùn)行:

vagrant@ubuntu-xenial:/opt/gopath/src/github.com/hyperledger/fabric$ configtxgen --help configtxgen: command not found vagrant@ubuntu-xenial:/opt/gopath/src/github.com/hyperledger/fabric$ make configtxgen .build/bin/configtxgen CGO_CFLAGS=" " GOBIN=/opt/gopath/src/github.com/hyperledger/fabric/.build/bin go install -tags "" -ldflags "-X github.com/hyperledger/fabric/common/tools/configtxgen/metadata.CommitSHA=325999f" github.com/hyperledger/fabric/common/tools/configtxgen Binary available as .build/bin/configtxgen

然后會(huì)生成./build/bin/configtxgen可執(zhí)行文件

2)在github.com/hyperledger/fabric/common/tools/configtxgen目錄下運(yùn)行g(shù)o build

?

2.編譯成功后查看其參數(shù)信息:

vagrant@ubuntu-xenial:/opt/gopath/src/github.com/hyperledger/fabric$ configtxgen --help Usage of configtxgen:-asOrg string作為特定的組織(按名稱string)執(zhí)行配置生成,只包括org(可能)有權(quán)設(shè)置的寫集中的值。如用來指明生成的錨節(jié)點(diǎn)所在的組織-channelCreateTxBaseProfile string指定一個(gè)概要文件作為orderer系統(tǒng)通道當(dāng)前狀態(tài),以允許在通道創(chuàng)建tx生成期間修改非應(yīng)用程序參數(shù)。僅在與“outputCreateChannelTx”組合時(shí)有效。-channelID string在configtx中使用的通道ID,即通道名稱,默認(rèn)是"testchainid"-configPath string包含要使用的配置的路徑(如果設(shè)置的話)-inspectBlock string按指定路徑打印塊中包含的配置,用于檢查和輸出通道中創(chuàng)世區(qū)塊的內(nèi)容,錨節(jié)點(diǎn)在configtx.yaml中的AnchorPeers中指定-inspectChannelCreateTx string按指定路徑打印交易中包含的配置,用來檢查通道的配置交易信息-outputAnchorPeersUpdate string創(chuàng)建一個(gè)配置更新來更新錨節(jié)點(diǎn)(僅在默認(rèn)通道創(chuàng)建時(shí)工作,并且僅在第一次更新時(shí)工作)-outputBlock string將genesis塊寫入(如果設(shè)置)的路徑。configtx.yaml文件中的Profiles要指定Consortiums,否則啟動(dòng)排序服務(wù)節(jié)點(diǎn)會(huì)失敗-outputCreateChannelTx string將通道配置交易文件寫入(如果設(shè)置)的路徑。configtx.yaml文件中的Profiles必須包含Application,否則創(chuàng)建通道會(huì)失敗-printOrg string將組織的定義打印為JSON。(對(duì)于手動(dòng)向通道添加組織非常有用)-profile string指定使用的是configtx.yaml中某個(gè)用于生成的Profiles配置項(xiàng)。(默認(rèn)為“SampleInsecureSolo”)-version顯示版本信息

?

3.使用代碼分析命令:

在github.com/hyperledger/fabric-samples/first-network/byfn.sh文件中使用該工具來生成orderer genesis塊、通道配置交易和錨節(jié)點(diǎn)更新交易,代碼如下:

?

function generateChannelArtifacts() {which configtxgenif [ "$?" -ne 0 ]; thenecho "configtxgen tool not found. exiting"exit 1fiecho "##########################################################"echo "######### Generating Orderer Genesis block ##############"echo "##########################################################"# Note: For some unknown reason (at least for now) the block file can't be# named orderer.genesis.block or the orderer will fail to launch!echo "CONSENSUS_TYPE="$CONSENSUS_TYPE #查看共識(shí)類型set -xif [ "$CONSENSUS_TYPE" == "solo" ]; thenconfigtxgen -profile TwoOrgsOrdererGenesis -channelID byfn-sys-channel -outputBlock ./channel-artifacts/genesis.blockelif [ "$CONSENSUS_TYPE" == "kafka" ]; thenconfigtxgen -profile SampleDevModeKafka -channelID byfn-sys-channel -outputBlock ./channel-artifacts/genesis.blockelseset +xecho "unrecognized CONSESUS_TYPE='$CONSENSUS_TYPE'. exiting"exit 1fires=$?set +xif [ $res -ne 0 ]; thenecho "Failed to generate orderer genesis block..."exit 1fiechoecho "#################################################################"echo "### Generating channel configuration transaction 'channel.tx' ###"echo "#################################################################"set -xconfigtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAMEres=$?set +xif [ $res -ne 0 ]; thenecho "Failed to generate channel configuration transaction..."exit 1fiechoecho "#################################################################"echo "####### Generating anchor peer update for Org1MSP ##########"echo "#################################################################"set -xconfigtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSPres=$?set +xif [ $res -ne 0 ]; thenecho "Failed to generate anchor peer update for Org1MSP..."exit 1fiechoecho "#################################################################"echo "####### Generating anchor peer update for Org2MSP ##########"echo "#################################################################"set -xconfigtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate \./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSPres=$?set +xif [ $res -ne 0 ]; thenecho "Failed to generate anchor peer update for Org2MSP..."exit 1fiecho }

?

1)首先是生成orderer創(chuàng)世區(qū)塊

if [ "$CONSENSUS_TYPE" == "solo" ]; thenconfigtxgen -profile TwoOrgsOrdererGenesis -channelID byfn-sys-channel -outputBlock ./channel-artifacts/genesis.blockelif [ "$CONSENSUS_TYPE" == "kafka" ]; thenconfigtxgen -profile SampleDevModeKafka -channelID byfn-sys-channel -outputBlock ./channel-artifacts/genesis.blockelse

-profile TwoOrgsOrdererGenesis : 指定使用的是configtx.yaml中Profiles配置項(xiàng)中的TwoOrgsOrdererGenesis配置,即:

Profiles:TwoOrgsOrdererGenesis:<<: *ChannelDefaultsOrderer:<<: *OrdererDefaultsOrganizations:- *OrdererOrgCapabilities:<<: *OrdererCapabilitiesConsortiums:SampleConsortium:Organizations:- *Org1- *Org2

?

-profile SampleDevModeKafka :指定使用的是configtx.yaml中Profiles配置項(xiàng)中的SampleDevModeKafka配置,即:

SampleDevModeKafka:<<: *ChannelDefaultsCapabilities:<<: *ChannelCapabilitiesOrderer:<<: *OrdererDefaultsOrdererType: kafkaKafka:Brokers:- kafka.example.com:9092Organizations:- *OrdererOrgCapabilities:<<: *OrdererCapabilitiesApplication:<<: *ApplicationDefaultsOrganizations:- <<: *OrdererOrgConsortiums:SampleConsortium:Organizations:- *Org1- *Org2

-channelID byfn-sys-channel :將通道名稱命名為byfn-sys-channel

-outputBlock ./channel-artifacts/genesis.block :為生成的創(chuàng)世區(qū)塊文件名及保存路徑

?

2)生成通道配置交易

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME

-profile TwoOrgsChannel : 指定使用的是configtx.yaml中Profiles配置項(xiàng)中的TwoOrgsChannel配置,即:

TwoOrgsChannel:Consortium: SampleConsortiumApplication:<<: *ApplicationDefaultsOrganizations:- *Org1- *Org2Capabilities:<<: *ApplicationCapabilities

-outputCreateChannelTx ./channel-artifacts/channel.tx :指明生成的通道配置交易存儲(chǔ)的路徑及文件名

-channelID $CHANNEL_NAME :通道名為自己設(shè)置的$CHANNEL_NAME值

3)生成組織的錨節(jié)點(diǎn)

configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP ... configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP

-outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx : 為生成錨節(jié)點(diǎn)的更新交易文件及保存路徑-asOrg Org1MSP : 指明該錨節(jié)點(diǎn)所在的組織

?

除了上面的函數(shù)能夠?qū)崿F(xiàn)的這三個(gè)功能外,configtxgen還能夠:

4)查看創(chuàng)世區(qū)塊信息

configtxgen -profile TwoOrgsOrdererGenesis -inspectBlock ./channel-artifacts/genesis.block

-inspectBlock ./channel-artifacts/genesis.block :指定要查看的創(chuàng)世區(qū)塊文件

?

5)查看通道配置交易信息

configtxgen -profile TwoOrgsChannel -inspectChannelCreateTx ./channel-artifacts/channel.tx

-inspectChannelCreateTx ./channel-artifacts/channel.tx : 指定要查看的通道配置交易信息

?

4.configtx.yaml文件

此配置文件主要分為3部分。

1)Profiles部分。它是默認(rèn)的,這部分包含一些用于開發(fā)或測(cè)試場(chǎng)景的示例配置,這些配置涉及fabric目錄中的加密部分。configtxgen工具允許通過-profile標(biāo)簽來指定配置文件。Profiles部分可以顯式聲明所有配置,但是通常都是從默認(rèn)配置中繼承。

2)Organizations部分。它是默認(rèn)的,這部分包含示例配置MSP定義的單一引用。對(duì)于生產(chǎn)部署,應(yīng)該刪除這部分配置,并以新網(wǎng)絡(luò)成員的MSP定義來替代它。組織中每一個(gè)元素都必須帶有錨標(biāo)簽,如&orgName,這些標(biāo)簽可以在Profiles中部分引用。

3)默認(rèn)部分。此部分是Orderer和Application的配置,包括一些屬性配置,如BatchTimeout和一般用作繼承的基礎(chǔ)值。

github.com/hyperledger/fabric-samples/first-network/configtx.yaml:

如果沒學(xué)過yaml,可見yaml的簡(jiǎn)單學(xué)習(xí)

# Copyright IBM Corp. All Rights Reserved. # # SPDX-License-Identifier: Apache-2.0 #--- ################################################################################ # # Section: Organizations # # - 本節(jié)定義了不同的組織標(biāo)識(shí),這些標(biāo)識(shí)將在稍后的配置中引用。 # ################################################################################ Organizations:# SampleOrg使用sampleconfig定義了一個(gè)MSP。它不應(yīng)該在生產(chǎn)中使用,但可以用作其他定義的模板- &OrdererOrg# DefaultOrg定義了使用在fabric.git開發(fā)環(huán)境的sampleconfig中的組織Name: OrdererOrg# ID 下載MSP的IDID: OrdererMSP# MSPDir是包含MSP配置的文件系統(tǒng)路徑,由cryptogen工具生成的加密材料路徑MSPDir: crypto-config/ordererOrganizations/example.com/msp# Policies定義了在這個(gè)配置樹級(jí)別的策略集# 對(duì)于組織策略,它們的規(guī)范路徑通常是/Channel/<Application|Orderer>/<OrgName>/<PolicyName>Policies:Readers:Type: SignatureRule: "OR('OrdererMSP.member')"Writers:Type: SignatureRule: "OR('OrdererMSP.member')"Admins:Type: SignatureRule: "OR('OrdererMSP.admin')"- &Org1# DefaultOrg定義了使用在fabric.git開發(fā)環(huán)境的sampleconfig中的組織Name: Org1MSP# ID 下載MSP的IDID: Org1MSPMSPDir: crypto-config/peerOrganizations/org1.example.com/msp# Policies定義了在這個(gè)配置樹級(jí)別的策略集# 對(duì)于組織策略,它們的規(guī)范路徑通常是/Channel/<Application|Orderer>/<OrgName>/<PolicyName>Policies:Readers:Type: SignatureRule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"Writers:Type: SignatureRule: "OR('Org1MSP.admin', 'Org1MSP.client')"Admins:Type: SignatureRule: "OR('Org1MSP.admin')"# 將此標(biāo)志設(shè)置為true.AnchorPeers: #指明org1中使用peer0作為錨節(jié)點(diǎn)# AnchorPeers定義了可以用于跨組織gossip通信的節(jié)點(diǎn)的位置# 注意,這個(gè)值只在應(yīng)用程序部分上下文的genesis塊中編碼- Host: peer0.org1.example.comPort: 7051- &Org2# DefaultOrg定義了使用在fabric.git開發(fā)環(huán)境的sampleconfig中的組織Name: Org2MSP# ID 來指定下載的MSP定義ID: Org2MSPMSPDir: crypto-config/peerOrganizations/org2.example.com/msp# Policies定義了在這個(gè)配置樹級(jí)別的策略集# 對(duì)于組織策略,它們的規(guī)范路徑通常是/Channel/<Application|Orderer>/<OrgName>/<PolicyName>Policies:Readers:Type: SignatureRule: "OR('Org2MSP.admin', 'Org2MSP.peer', 'Org2MSP.client')"Writers:Type: SignatureRule: "OR('Org2MSP.admin', 'Org2MSP.client')"Admins:Type: SignatureRule: "OR('Org2MSP.admin')"AnchorPeers: #指明org2中使用peer0作為錨節(jié)點(diǎn)# AnchorPeers定義了可以用于跨組織gossip通信的節(jié)點(diǎn)的位置# 注意,這個(gè)值只在應(yīng)用程序部分上下文的genesis塊中編碼- Host: peer0.org2.example.comPort: 9051################################################################################ # # SECTION: Capabilities # # - 本節(jié)定義fabric network的功能。這是v1.1.0的一個(gè)新概念,不應(yīng)該在帶有v1.0.x版本orderers和peers的混合網(wǎng)絡(luò)中使用。 # 功能定義了fabric二進(jìn)制文件中必須提供的特性,以便該二進(jìn)制文件安全地參與fabric網(wǎng)絡(luò)。 # 例如,如果添加了新的MSP類型,較新的二進(jìn)制文件可能會(huì)識(shí)別并驗(yàn)證來自該類型的簽名,而沒有此支持的較老的二進(jìn)制文件將無法驗(yàn)證這些交易。 # 這可能導(dǎo)致不同版本的fabric二進(jìn)制文件具有不同的世界狀態(tài)。相反,為通道定義一個(gè)功能會(huì)通知那些沒有這個(gè)功能的二進(jìn)制文件,它們必須停止處理交易,直到它們被升級(jí)。 # 對(duì)于v1.0.x 版本,如果定義了任何功能(包括關(guān)閉所有功能的映射),v1.0.x版本的節(jié)點(diǎn)可能會(huì)故意崩潰。 # ################################################################################ Capabilities:# 通道功能同時(shí)適用于orderers和peers,并且必須得到雙方的支持。# 將功能的值設(shè)置為true以滿足需要。Channel: &ChannelCapabilities#Channel的V1.3是一個(gè)用來表示運(yùn)行在V1.3.x版本上的所有orderers和peers都需要的行為的catchall標(biāo)志,但這將與以前版本中的orderers和peers不兼容。# 在啟用V1.3通道功能之前,請(qǐng)確保通道上的所有orderers和peers都位于v1.3.0或更高版本。V1_3: true# Orderer功能只適用于Orderer,并且可以安全地與以前版本的節(jié)點(diǎn)一起使用。# 將功能的值設(shè)置為true以滿足需要Orderer: &OrdererCapabilities# Orderer的V1.1是一個(gè)用來表示確定被在v1.1.x中運(yùn)行的所有orderers所需要的行為的catchall標(biāo)志,但這與以前版本中的orderers不兼容。# 在啟用V1.1 orderer功能之前,請(qǐng)確保通道上的所有orderer都處于v1.1.0或更高版本。V1_1: true# Application功能只應(yīng)用于peer網(wǎng)絡(luò),并且可以安全地與以前的版本的orderers一起使用。# 將功能的值設(shè)置為true以滿足需要Application: &ApplicationCapabilities# Application的V1.3用來啟用新的非向后兼容特性fabric V1.3的補(bǔ)丁V1_3: true# Application的V1.2用來啟用新的非向后兼容特性和fabric V1.2的補(bǔ)丁(注意,如果設(shè)置了之后的版本的功能,則不需要設(shè)置此功能)V1_2: false# Application的V1.1啟用新的非向后兼容特性和fabric V1.1的補(bǔ)丁(注意,如果設(shè)置了之后的版本的功能,則不需要設(shè)置此特性)。# 所以這里設(shè)置是V1_3為true,另外兩個(gè)為falseV1_1: false################################################################################ # # SECTION: Application # # - 本節(jié)為Application相關(guān)參數(shù)定義要編碼到配置交易或創(chuàng)世區(qū)塊中的值 # 注意,只有在創(chuàng)建channel tx時(shí)才會(huì)用Application,否則是創(chuàng)建區(qū)塊 # ################################################################################ Application: &ApplicationDefaults# Organizations是定義為網(wǎng)絡(luò)應(yīng)用程序端參與者的組織列表Organizations:# Policies定義了在這個(gè)配置樹級(jí)別的策略集# 對(duì)于組織策略,它們的規(guī)范路徑通常是/Channel/<Application|Orderer>/<OrgName>/<PolicyName>Policies:Readers:Type: ImplicitMetaRule: "ANY Readers"Writers:Type: ImplicitMetaRule: "ANY Writers"Admins:Type: ImplicitMetaRule: "MAJORITY Admins"Capabilities:<<: *ApplicationCapabilities ################################################################################ # # SECTION: Orderer # # - 本節(jié)為orderer相關(guān)參數(shù)定義要編碼到配置交易或創(chuàng)世區(qū)塊中的值 # ################################################################################ Orderer: &OrdererDefaults# Orderer 類型: 要啟動(dòng)的Orderer實(shí)現(xiàn)類型# 可用的類型有“solo”和“kafka”O(jiān)rdererType: soloAddresses:- orderer.example.com:7050# Batch Timeout: 創(chuàng)建批處理之前要等待的時(shí)間BatchTimeout: 2s# Batch Size: 控制成塊的消息數(shù)量BatchSize:# Max Message Count: 批處理中允許的最大消息數(shù)MaxMessageCount: 10# Absolute Max Bytes: 批處理中允許序列化消息的絕對(duì)最大字節(jié)數(shù)。AbsoluteMaxBytes: 99 MB# Preferred Max Bytes: 批處理中允許序列化消息的首選最大字節(jié)數(shù)。# 大于首選最大字節(jié)的消息將導(dǎo)致批處理大于改值。PreferredMaxBytes: 512 KBKafka:# Brokers: orderer連接到的Kafka代理的列表# NOTE: Use IP:port notationBrokers:- 127.0.0.1:9092# Organizations是組織的列表,組織被定義為網(wǎng)絡(luò)的orderer方的參與者Organizations:# Policies定義了在這個(gè)配置樹級(jí)別的策略集# 對(duì)于Orderer策略,它們的規(guī)范路徑通常是/Channel/Orderer/<PolicyName>Policies:Readers:Type: ImplicitMetaRule: "ANY Readers"Writers:Type: ImplicitMetaRule: "ANY Writers"Admins:Type: ImplicitMetaRule: "MAJORITY Admins"# BlockValidation指定必須包含來自orderer的哪些簽名,以便peer對(duì)其進(jìn)行驗(yàn)證。BlockValidation:Type: ImplicitMetaRule: "ANY Writers"################################################################################ # # CHANNEL # # 本節(jié)為channel相關(guān)參數(shù)定義要編碼到配置交易或創(chuàng)世區(qū)塊中的值 # ################################################################################ Channel: &ChannelDefaults# Policies定義了在這個(gè)配置樹級(jí)別的策略集# 對(duì)于Channel策略,它們的規(guī)范路徑通常是/Channel/<PolicyName>Policies:# 誰可能調(diào)用'Deliver' APIReaders:Type: ImplicitMetaRule: "ANY Readers"# 誰可能調(diào)用'Broadcast' APIWriters:Type: ImplicitMetaRule: "ANY Writers"# 默認(rèn),誰可能調(diào)用在這個(gè)配置級(jí)別的元素Admins:Type: ImplicitMetaRule: "MAJORITY Admins"# Capabilities描述通道級(jí)功能,有關(guān)詳細(xì)描述,請(qǐng)參閱此文件中其他部分的專用功能部分Capabilities:<<: *ChannelCapabilities################################################################################ # # Profile # # - 這里可以編碼不同的配置概要文件,將其指定為configtxgen工具的參數(shù) # ################################################################################ Profiles:TwoOrgsOrdererGenesis:<<: *ChannelDefaultsOrderer:<<: *OrdererDefaultsOrganizations:- *OrdererOrgCapabilities:<<: *OrdererCapabilitiesConsortiums:SampleConsortium:Organizations:- *Org1- *Org2TwoOrgsChannel:Consortium: SampleConsortiumApplication:<<: *ApplicationDefaultsOrganizations:- *Org1- *Org2Capabilities:<<: *ApplicationCapabilitiesSampleDevModeKafka:<<: *ChannelDefaultsCapabilities:<<: *ChannelCapabilitiesOrderer:<<: *OrdererDefaultsOrdererType: kafkaKafka:Brokers:- kafka.example.com:9092Organizations:- *OrdererOrgCapabilities:<<: *OrdererCapabilitiesApplication:<<: *ApplicationDefaultsOrganizations:- <<: *OrdererOrgConsortiums:SampleConsortium:Organizations:- *Org1- *Org2

?

轉(zhuǎn)載于:https://www.cnblogs.com/wanghui-garcia/p/10496849.html

總結(jié)

以上是生活随笔為你收集整理的hyperledge工具-configtxgen的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 好男人影视www | 午夜激情网址 | 一区二区三区精品久久久 | 日韩在线观看视频一区二区 | 97精品自拍| 欧美网站在线 | 亚洲AV无码精品久久一区二区 | 日韩电影在线一区二区 | 亚洲欧美激情一区二区三区 | 免费a级网站 | 欧美精品观看 | 亚洲欧美精品一区二区三区 | 人妖黄色片 | 美女在线国产 | 国产精品一区二区亚洲 | 久久久在线 | 粗大黑人巨茎大战欧美成人免费看 | 成人av在线播放网站 | 午夜精品久久久久久久久久久久 | 日韩在线综合 | 手机看片国产 | 88av视频 | 国产精品99久久免费黑人人妻 | av毛片在线| 写真福利片hd在线播放 | 僵尸叔叔在线观看国语高清免费观看 | 法国空姐在线观看完整版 | bt男人天堂| 麻豆传媒一区二区 | 男人捅爽女人 | 欧美性在线观看 | 主播福利在线 | 久久中文字幕视频 | 影音先锋在线中文字幕 | 免费黄色链接 | 狠狠干成人 | 欧美色综合天天久久综合精品 | 99国产精品99久久久久久 | 丁香激情小说 | 一区二区黄色 | 国产无码精品在线观看 | 亚洲天堂日本 | 激情啪啪网站 | 欧美性免费 | 天天插天天狠 | 免费成人在线视频观看 | 国产高清在线一区 | 一级黄色免费大片 | 丝袜av在线播放 | 国产精品视频999 | 一级片一级片 | 亚洲精品资源 | 精品无码av一区二区三区 | 奇米影视77777 | 成人免费片 | 夜夜春av| 欧美成人影音 | 日本亲与子乱xxx | 日韩美女啪啪 | 麻豆爱爱 | 国产精品久久久无码一区 | 91国内 | 国产无遮挡又黄又爽 | 亚洲国产成人精品视频 | 天堂av亚洲 | 国产又大又粗又爽的毛片 | 林雅儿欧洲留学恋爱日记在线 | 亚洲综合色婷婷 | 3p在线播放 | 超色视频| 深夜在线观看 | h文在线观看 | 成av在线 | 91久久久久一区二区 | 香蕉久操 | 视频在线观看电影完整版高清免费 | 插插插色综合 | 中文字幕11页中文字幕11页 | 啄木乌欧美一区二区三区 | 少妇荡乳情欲办公室456视频 | 日本一区二区三区免费电影 | 神马午夜国产 | 午夜黄视频 | 精品国产一区二 | 成人国产精品久久久 | 国产视频综合在线 | 九九热精品在线视频 | 最新色视频 | 色婷婷视频在线 | 亚洲在线综合 | 亚洲天堂男人天堂 | 精品国产一二 | 日韩精品影视 | 亚洲丝袜一区 | 野外一级片 | 秋霞一区二区 | a∨鲁丝一区鲁丝二区鲁丝三区 | 在线观看亚洲一区二区 | 亚洲一区二区自偷自拍 |