成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > golang 通過ssh代理連接mysql的操作

golang 通過ssh代理連接mysql的操作

熱門標(biāo)簽:杭州人工智能電銷機(jī)器人費(fèi)用 江蘇呼叫中心外呼系統(tǒng)有效果嗎 400開頭電話怎樣申請 利用地圖標(biāo)注位置 貴州電話智能外呼系統(tǒng) 官渡電銷外呼管理系統(tǒng)怎么收費(fèi) 赤峰電銷 地圖區(qū)域圖標(biāo)注后導(dǎo)出 谷歌美發(fā)店地圖標(biāo)注

我就廢話不多說了,大家還是直接看代碼吧~

package main
import (
	"bytes"
	"context"
	"database/sql"
	"errors"
	"fmt"
	"github.com/go-sql-driver/mysql"
	"golang.org/x/crypto/ssh"
	"io"
	"io/ioutil"
	"net"
	"os"
)
type ViaSSHDialer struct {
	client *ssh.Client
	_ *context.Context
}
 
func (self *ViaSSHDialer) Dial(context context.Context,addr string) (net.Conn, error) {
	return self.client.Dial("tcp", addr)
}
type remoteScriptType byte
type remoteShellType byte
 
const (
	cmdLine remoteScriptType = iota
	rawScript
	scriptFile 
	interactiveShell remoteShellType = iota
	nonInteractiveShell
)
 
type Client struct {
	client *ssh.Client
}
func main() {
	client, err := DialWithPasswd("ip:port", "user", "password")
	if err != nil {
		panic(err)
	}
	out, err := client.Cmd("ls -l").Output()
	if err != nil {
		panic(err)
	}
	fmt.Println(string(out))
	// Now we register the ViaSSHDialer with the ssh connection as a parameter
	mysql.RegisterDialContext("mysql+tcp", (ViaSSHDialer{client.client,nil}).Dial)
	//mysql.RegisterDial("mysql+tcp", (ViaSSHDialer{client.client}).Dial)
	if db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@mysql+tcp(%s)/%s","Aiqitest", "uf6amk146d2aoemi7", "139.196.174.234:3306", "Aiqitest"));
	err == nil {
		fmt.Printf("Successfully connected to the db\n")
		if rows, err := db.Query("SELECT id, name FROM table ORDER BY id"); err == nil {
			for rows.Next() {
				var id int64
				var name string
				rows.Scan(id, name)
				fmt.Printf("ID: %d Name: %s\n", id, name)
			}
			rows.Close()
		} else {
			fmt.Printf("Failure: %s", err.Error())
		}
 
		db.Close()
}
	}
 
// DialWithPasswd starts a client connection to the given SSH server with passwd authmethod.
func DialWithPasswd(addr, user, passwd string) (*Client, error) {
	config := ssh.ClientConfig{
		User: user,
		Auth: []ssh.AuthMethod{
			ssh.Password(passwd),
		},
		HostKeyCallback: ssh.HostKeyCallback(func(hostname string, remote net.Addr, key ssh.PublicKey) error { return nil }),
	}
 
	return Dial("tcp", addr, config)
}
 
// DialWithKey starts a client connection to the given SSH server with key authmethod.
func DialWithKey(addr, user, keyfile string) (*Client, error) {
	key, err := ioutil.ReadFile(keyfile)
	if err != nil {
		return nil, err
	}
 
	signer, err := ssh.ParsePrivateKey(key)
	if err != nil {
		return nil, err
	}
 
	config := ssh.ClientConfig{
		User: user,
		Auth: []ssh.AuthMethod{
			ssh.PublicKeys(signer),
		},
		HostKeyCallback: ssh.HostKeyCallback(func(hostname string, remote net.Addr, key ssh.PublicKey) error { return nil }),
	}
 
	return Dial("tcp", addr, config)
}
 
// DialWithKeyWithPassphrase same as DialWithKey but with a passphrase to decrypt the private key
func DialWithKeyWithPassphrase(addr, user, keyfile string, passphrase string) (*Client, error) {
	key, err := ioutil.ReadFile(keyfile)
	if err != nil {
		return nil, err
	}
 
	signer, err := ssh.ParsePrivateKeyWithPassphrase(key, []byte(passphrase))
	if err != nil {
		return nil, err
	}
 
	config := ssh.ClientConfig{
		User: user,
		Auth: []ssh.AuthMethod{
			ssh.PublicKeys(signer),
		},
		HostKeyCallback: ssh.HostKeyCallback(func(hostname string, remote net.Addr, key ssh.PublicKey) error { return nil }),
	} 
	return Dial("tcp", addr, config)
}
 
// Dial starts a client connection to the given SSH server.
// This is wrap the ssh.Dial
func Dial(network, addr string, config *ssh.ClientConfig) (*Client, error) {
	client, err := ssh.Dial(network, addr, config)
	if err != nil {
		return nil, err
	}
	return Client{
		client: client,
	}, nil
}
 
func (c *Client) Close() error {
	return c.client.Close()
}
 
// Cmd create a command on client
func (c *Client) Cmd(cmd string) *remoteScript {
	return remoteScript{
		_type: cmdLine,
		client: c.client,
		script: bytes.NewBufferString(cmd + "\n"),
	}
}
 
// Script
func (c *Client) Script(script string) *remoteScript {
	return remoteScript{
		_type: rawScript,
		client: c.client,
		script: bytes.NewBufferString(script + "\n"),
	}
}
 
// ScriptFile
func (c *Client) ScriptFile(fname string) *remoteScript {
	return remoteScript{
		_type:   scriptFile,
		client:   c.client,
		scriptFile: fname,
	}
}
 
type remoteScript struct {
	client   *ssh.Client
	_type   remoteScriptType
	script   *bytes.Buffer
	scriptFile string
	err    error
 
	stdout io.Writer
	stderr io.Writer
}
 
// Run
func (rs *remoteScript) Run() error {
	if rs.err != nil {
		fmt.Println(rs.err)
		return rs.err
	}
 
	if rs._type == cmdLine {
		return rs.runCmds()
	} else if rs._type == rawScript {
		return rs.runScript()
	} else if rs._type == scriptFile {
		return rs.runScriptFile()
	} else {
		return errors.New("Not supported remoteScript type")
	}
}
 
func (rs *remoteScript) Output() ([]byte, error) {
	if rs.stdout != nil {
		return nil, errors.New("Stdout already set")
	}
	var out bytes.Buffer
	rs.stdout = out
	err := rs.Run()
	return out.Bytes(), err
}
 
func (rs *remoteScript) SmartOutput() ([]byte, error) {
	if rs.stdout != nil {
		return nil, errors.New("Stdout already set")
	}
	if rs.stderr != nil {
		return nil, errors.New("Stderr already set")
	}
 
	var (
		stdout bytes.Buffer
		stderr bytes.Buffer
	)
	rs.stdout = stdout
	rs.stderr = stderr
	err := rs.Run()
	if err != nil {
		return stderr.Bytes(), err
	}
	return stdout.Bytes(), err
}
 
func (rs *remoteScript) Cmd(cmd string) *remoteScript {
	_, err := rs.script.WriteString(cmd + "\n")
	if err != nil {
		rs.err = err
	}
	return rs
}
 
func (rs *remoteScript) SetStdio(stdout, stderr io.Writer) *remoteScript {
	rs.stdout = stdout
	rs.stderr = stderr
	return rs
}
 
func (rs *remoteScript) runCmd(cmd string) error {
	session, err := rs.client.NewSession()
	if err != nil {
		return err
	}
	defer session.Close()
 
	session.Stdout = rs.stdout
	session.Stderr = rs.stderr
 
	if err := session.Run(cmd); err != nil {
		return err
	}
	return nil
}
 
func (rs *remoteScript) runCmds() error {
	for {
		statment, err := rs.script.ReadString('\n')
		if err == io.EOF {
			break
		}
		if err != nil {
			return err
		}
 
		if err := rs.runCmd(statment); err != nil {
			return err
		}
	}
 
	return nil
}
 
func (rs *remoteScript) runScript() error {
	session, err := rs.client.NewSession()
	if err != nil {
		return err
	}
 
	session.Stdin = rs.script
	session.Stdout = rs.stdout
	session.Stderr = rs.stderr 
	if err := session.Shell(); err != nil {
		return err
	}
	if err := session.Wait(); err != nil {
		return err
	}
 
	return nil
}
 
func (rs *remoteScript) runScriptFile() error {
	var buffer bytes.Buffer
	file, err := os.Open(rs.scriptFile)
	if err != nil {
		return err
	}
	_, err = io.Copy(buffer, file)
	if err != nil {
		return err
	}
 
	rs.script = buffer
	return rs.runScript()
}
 
type remoteShell struct {
	client     *ssh.Client
	requestPty   bool
	terminalConfig *TerminalConfig
 
	stdin io.Reader
	stdout io.Writer
	stderr io.Writer
}
 
type TerminalConfig struct {
	Term  string
	Hight int
	Weight int
	Modes ssh.TerminalModes
}
 
// Terminal create a interactive shell on client.
func (c *Client) Terminal(config *TerminalConfig) *remoteShell {
	return remoteShell{
		client:     c.client,
		terminalConfig: config,
		requestPty:   true,
	}
}
 
// Shell create a noninteractive shell on client.
func (c *Client) Shell() *remoteShell {
	return remoteShell{
		client:   c.client,
		requestPty: false,
	}
}
 
func (rs *remoteShell) SetStdio(stdin io.Reader, stdout, stderr io.Writer) *remoteShell {
	rs.stdin = stdin
	rs.stdout = stdout
	rs.stderr = stderr
	return rs
}
 
// Start start a remote shell on client
func (rs *remoteShell) Start() error {
	session, err := rs.client.NewSession()
	if err != nil {
		return err
	}
	defer session.Close()
 
	if rs.stdin == nil {
		session.Stdin = os.Stdin
	} else {
		session.Stdin = rs.stdin
	}
	if rs.stdout == nil {
		session.Stdout = os.Stdout
	} else {
		session.Stdout = rs.stdout
	}
	if rs.stderr == nil {
		session.Stderr = os.Stderr
	} else {
		session.Stderr = rs.stderr
	}
 
	if rs.requestPty {
		tc := rs.terminalConfig
		if tc == nil {
			tc = TerminalConfig{
				Term:  "xterm",
				Hight: 40,
				Weight: 80,
			}
		}
		if err := session.RequestPty(tc.Term, tc.Hight, tc.Weight, tc.Modes); err != nil {
			return err
		}
	}
 
	if err := session.Shell(); err != nil {
		return err
	}
 
	if err := session.Wait(); err != nil {
		return err
	} 
	return nil
}

補(bǔ)充:用golang寫socks5代理服務(wù)器2-ssh遠(yuǎn)程代理

上次用golang來實(shí)現(xiàn)本地socks5代理,然而使用代理當(dāng)然是為了和諧上網(wǎng),所以這次來介紹用ssh來實(shí)現(xiàn)遠(yuǎn)程代理,用到官方ssh包

golang.org/x/crypto/ssh

用golang連接ssh并不難

讀取密鑰,設(shè)置配置,連接服務(wù)器就ok了(不建議用用戶名+密碼方式連接ssh)

 b, err := ioutil.ReadFile("/home/myml/.ssh/id_rsa")
 if err != nil {
 log.Println(err)
 return
 }
 pKey, err := ssh.ParsePrivateKey(b)
 if err != nil {
 log.Println(err)
 return
 }
 config := ssh.ClientConfig{
 User: "userName",
 Auth: []ssh.AuthMethod{
  ssh.PublicKeys(pKey),
 },
 }
 client, err = ssh.Dial("tcp", "Host:22", config)
 if err != nil {
 log.Println(err)
 return
 }
 log.Println("連接服務(wù)器成功")
 defer client.Close()

這樣你就得到了一個(gè)client,它有個(gè)Dial()函數(shù)用來創(chuàng)建socket連接,這個(gè)是在服務(wù)器上創(chuàng)建的,也就可以突破網(wǎng)絡(luò)限制了,加上上次的sock5代理,把net.Dial改為client.Dial,就能讓服務(wù)器來代理訪問了

 server, err := client.Dial("tcp", addr)
 if err != nil {
 log.Println(err)
 return
 }
 conn.Write([]byte{0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
 go io.Copy(server, conn)
 io.Copy(conn, server)

下面是能成功運(yùn)行并進(jìn)行遠(yuǎn)程代理的代碼(在Chrome和proxychains測試),ssh服務(wù)器和配置信息要修改為自己的

// socks5ProxyProxy project main.go
package main 
import (
 "bytes"
 "encoding/binary"
 "fmt"
 "io"
 "io/ioutil"
 "log"
 "net" 
 "golang.org/x/crypto/ssh"
)
 
func socks5Proxy(conn net.Conn) {
 defer conn.Close()
 
 var b [1024]byte 
 n, err := conn.Read(b[:])
 if err != nil {
 log.Println(err)
 return
 }
 log.Printf("% x", b[:n]) 
 conn.Write([]byte{0x05, 0x00})
 
 n, err = conn.Read(b[:])
 if err != nil {
 log.Println(err)
 return
 }
 log.Printf("% x", b[:n])
 
 var addr string
 switch b[3] {
 case 0x01:
 sip := sockIP{}
 if err := binary.Read(bytes.NewReader(b[4:n]), binary.BigEndian, sip); err != nil {
  log.Println("請求解析錯(cuò)誤")
  return
 }
 addr = sip.toAddr()
 case 0x03:
 host := string(b[5 : n-2])
 var port uint16
 err = binary.Read(bytes.NewReader(b[n-2:n]), binary.BigEndian, port)
 if err != nil {
  log.Println(err)
  return
 }
 addr = fmt.Sprintf("%s:%d", host, port)
 }
 
 server, err := client.Dial("tcp", addr)
 if err != nil {
 log.Println(err)
 return
 }
 conn.Write([]byte{0x05, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
 go io.Copy(server, conn)
 io.Copy(conn, server)
}
 
type sockIP struct {
 A, B, C, D byte
 PORT    uint16
}
 
func (ip sockIP) toAddr() string {
 return fmt.Sprintf("%d.%d.%d.%d:%d", ip.A, ip.B, ip.C, ip.D, ip.PORT)
}
 
func socks5ProxyStart() {
 log.SetFlags(log.Ltime | log.Lshortfile)
 
 server, err := net.Listen("tcp", ":8080")
 if err != nil {
 log.Panic(err)
 }
 defer server.Close()
 log.Println("開始接受連接")
 for {
 client, err := server.Accept()
 if err != nil {
  log.Println(err)
  return
 }
 log.Println("一個(gè)新連接")
 go socks5Proxy(client)
 }
}
 
var client *ssh.Client 
func main() {
 b, err := ioutil.ReadFile("/home/myml/.ssh/id_rsa")
 if err != nil {
 log.Println(err)
 return
 }
 pKey, err := ssh.ParsePrivateKey(b)
 if err != nil {
 log.Println(err)
 return
 }
 config := ssh.ClientConfig{
 User: "user",
 Auth: []ssh.AuthMethod{
  ssh.PublicKeys(pKey),
 },
 }
 client, err = ssh.Dial("tcp", "host:22", config)
 if err != nil {
 log.Println(err)
 return
 }
 log.Println("連接服務(wù)器成功")
 defer client.Close()
 client.Dial()
 socks5ProxyStart()
 return
}
 

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • golang中連接mysql數(shù)據(jù)庫
  • Golang操作MySql數(shù)據(jù)庫的完整步驟記錄
  • golang實(shí)現(xiàn)mysql數(shù)據(jù)庫事務(wù)的提交與回滾

標(biāo)簽:武漢 鷹潭 松原 宜春 河池 保定 泰安 黔西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《golang 通過ssh代理連接mysql的操作》,本文關(guān)鍵詞  golang,通過,ssh,代理,連接,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang 通過ssh代理連接mysql的操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang 通過ssh代理連接mysql的操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产精品久久久久久吹潮| 污的视频网站| 国产美女主播视频一区| 成人女保姆的销魂服务| 欧美黄色免费| 一本色道久久加勒比88综合| 亚洲美女尤物影院| 99久久免费视频.com| 精品国产美女福利到在线不卡| 国产卡一卡二卡三| 欧美a级网站| 91精品观看| 九九精品九九| 日韩一级片在线播放| 免费久久一级欧美特大黄| a4yy在线播放免费观看视频| 欧美视频一区二区| 中文字幕日韩专区| av中文字幕在线观看第一页| 欧美激情亚洲综合一区| 97人妻精品一区二区三区免费| 999国产在线视频| 欧美成人精品一区二区免费看片| 国产黄色片免费在线观看| 精品国产青草久久久久福利| 狠狠综合久久av一区二区小说| 久久免费一级片| heyzo视频在线播放| 精品国产高清自在线一区二区三区| 天天靠夜夜靠| 在线观看完整版免费| 亚洲图片小说在线| 久久中文字幕在线视频| 中文日产幕无线码一区二区| 性色一区二区三区| 日本在线观看免费视频| 欧美性猛交 xxxx| 无码人妻av一区二区三区波多野| 精品久久影院| av在线播放一区二区三区| 最新四虎影在线在永久观看www| 韩国无码一区二区三区精品| 免费av不卡| 韩国女同性做爰三级| 欧美xxxx黑人又粗又长精品| 麻豆成人久久精品二区三区小说| 中文字幕色av一区二区三区| 91精品黄色片免费大全| 国产精品久久久久久影视| 污污视频在线免费观看| 丁香五精品蜜臀久久久久99网站| 精品少妇一区| 亚洲在线视频一区| 五月综合激情网| 中文字幕永久在线不卡| 精品88久久久久88久久久| 妖精一区二区三区精品视频| 美女的尿口免费视频| 中文字幕手机在线视频| 国产在线a视频| 国产精品一区二区三区av麻| 亚洲综合免费观看高清完整版在线| 国产手机精品在线| 亚洲桃色综合影院| 亚洲国产资源| free性护士videos欧美| 樱花草在线观看www| 久久综合加勒比| 中文字幕久久精品| 天堂av在线中文| 国产日本亚洲高清| а√天堂www在线а√天堂视频| 高清欧美性猛交xxxx| av超碰在线观看| 牛牛在线精品视频| 另类欧美视频| 好男人社区在线视频| 国产污视频在线播放| 日韩欧美国产综合在线一区二区三区| av网站一区二区三区| 国语对白做受69按摩| 日本一区二区三区精品视频| 亚洲专区**| 97在线观看免费观看高清| 久久婷婷开心| www.91视频| 欧美性受xxxx黑人xyx| 国产福利小视频在线| 欧美国产小视频| 亚洲午夜未满十八勿入免费观看全集| 毛片在线播放a| av网站在线不卡| 污污视频在线观看网站| 欧美爱爱视频网站| 日韩精品中文字幕视频在线| 中文字幕在线一区二区三区| 亚洲激情视频在线| 成人爽a毛片免费啪啪| 日韩中文影院| 久久综合狠狠综合久久综青草| theav精尽人亡av| 精品久久久久久久久久久久久久久久久| 一本久道久久综合多人| 在线观看美女网站大全免费| 久久精品国产亚洲7777| 国产精品久久久久久久久动漫| 妞干网在线观看视频| 蜜桃传媒在线观看免费进入| 国产污污在线观看| 中文一区二区完整视频在线观看| 男男电影完整版在线观看| 久久男人中文字幕资源站| 美女精品在线| 色偷偷av一区二区三区| 人妻 丝袜美腿 中文字幕| 精品国产乱码久久久久久88av| 玖玖精品国产| 在线观看污污视频| 又黄又爽在线免费观看| 少妇精品一区二区| 成人av片网址| 91美女在线观看| 先锋影音资源综合在线播放av| 韩日中文字幕第一页| 色婷婷777777仙踪林| 午夜日韩在线电影| 国产成人精品777777| 日本中文字幕二区| 91超碰caoporn97人人| 欧美激情第一页在线观看| 久久精品资源| 亚洲v中文字幕| 少妇视频一区二区| 日本一二三区视频免费高清| 日韩av毛片在线观看| 欧美久久一二区| 欧美高清自拍一区| 日本三级一区二区| 欧美成人69| 日韩av电影在线观看| 一本久道久久综合多人| 全部av―极品视觉盛宴亚洲| 综合激情丁香| 国产成人精品免费视频网站| 国产精品18久久久久久久久久| 怡红院成永久免费人全部视频| 一区二区三区成人精品| 18禁一区二区三区| 日韩精品视频久久| 成年人视频网站在线| 欧洲天堂在线观看| 亚洲免费播放| 久久久久久12| 亚洲国产欧美国产综合一区| 国产在视频一区二区三区吞精| 一区二区三区不卡在线| 精品人妻av一区二区三区| 亚洲jjzzjjzz在线观看| 精品国产一区二区三| 在线欧美日韩精品| jizz一区二区三区| 不许穿内裤随时挨c调教h苏绵| 国产suv精品一区二区6| 亚洲色图偷窥| 午夜久久久久久久久久影院| 一级毛片免费看| 国产精品免费看久久久无码| 最新av免费看| 久久精品国产亚洲精品2020| 日本精品一区二区三区四区的功能| 四虎国产精品永久在线国在线| 最新中文字幕在线播放| 国产一精品一aⅴ一免费| 国产乡下妇女三片| 国产二区在线播放| 福利在线白白| 亚洲毛片亚洲毛片亚洲毛片| 久久久久久久久97黄色工厂| 怡红院红怡院欧美aⅴ怡春院| 久久久久久久国产精品| 国产精品一区二区久久国产| 99精品视频免费版的特色功能| 影音先锋久久精品| 国产精品理论在线| 1024手机在线视频| 污视频网站免费观看| 2023国产精品久久久精品双| 日韩精品一区二区不卡| 亚洲综合第一| 欧美精品hd| 女人在下体塞跳蛋在线观看| 中文字幕在线播放第一页| 日韩在线一级片| 丰满人妻av一区二区三区| 亚洲视频一二| 精品人妻无码一区二区三区换脸| 日韩中文首页| 1024手机在线视频| 日韩色淫视频| 色琪琪一区二区三区亚洲区| 在线这里只有精品| 亚洲一区二区在线视频观看| 色综合91久久精品中文字幕| 久在线观看视频| 成人免费图片免费观看| 久久精品国产一区| 中国在线观看免费国语版电影| 亚洲品质自拍视频| 亚洲欧洲99久久| 亚洲欧美国产精品专区久久| 最近免费中文字幕中文高清百度| 韩国日本不卡在线| 日本中文字幕一区二区有码在线| 国产精品中文久久久久久| 中文字幕国产在线观看| 93久久精品日日躁夜夜躁欧美| 黄色av免费在线看| 99热这里只有精品在线观看| 夜夜夜久久久| 影音先锋在线影院| 久久综合伊人77777尤物| аⅴ资源天堂资源库在线| 欧美精品一区二区久久婷婷| 奇米影视狠狠狠| 亚洲美女性生活视频| 九热这里只有精品| av免费在线观看不卡| 日韩欧美一区二区久久婷婷| 色天堂在线视频| 欧美国产一区二区在线观看| av电影在线观看完整版一区二区| 欧美狂野激情性xxxx在线观| 精品视频一区二区| 欧美成人精品3d动漫h| 国产成人高清视频| 美女视频黄 久久| 精品欧美日韩精品| 免费人成a大片在线观看动漫| 亚洲欧美一区二区三区四区| 日本午夜精品一区二区三区电影| 精品久久久网| 丰满爆乳一区二区三区| 91成人在线播放| 黄色精品一区二区| 一区二区三区四区精品| 日本xxxxxx| 日韩中文字幕观看| 97免费公开视频| 国产精品午夜剧场| 女同毛片一区二区三区| 在线日韩av| 国产免费观看高清视频| jvid福利在线一区二区| 欧美精品一二| 加勒比久久高清| 日本免费在线播放| 国产freexxxx性播放麻豆| 国产伦理片在线观看| 黄色国产网站在线观看| 性生交大片免费全黄| 日本一区二区欧美| 成年人在线免费观看视频网站| 日韩欧美国产麻豆| 欧美成人午夜免费视在线看片| 欧美色欧美亚洲另类二区| 深夜激情久久| 四虎海外影库www4hu| 美女黄视频在线观看| 欧美日韩激情一区| 国产98色在线| www.国产| 开心激情五月网| 亚洲人成人77777线观看| 欧洲av无码放荡人妇网站| 女一区二区三区| 精品视频一区二区观看| 国产成人av电影在线| 在线精品视频视频中文字幕| 男人舔女人下部高潮全视频| 欧美在线视频一二三| 日韩午夜精品视频| 欧美一区二区三区免费观看视频| 大片免费播放在线视频| 亚洲综合一二区| 久久亚洲精精品中文字幕| 亚洲一区二区少妇| 欧美激情国产精品免费| 精品久久久久久久久久久国产字幕| 暴力调教一区二区三区| 尤物tv在线精品| 国产最新精品| 一区二区三区不卡在线视频| 欧美激情一区三区| 99久久免费国产精品| 国模大胆一区二区三区| 男人的天堂免费在线视频| 电影一区二区在线观看| 少妇视频一区| 成人激情开心网| 日韩成人毛片视频| 男人日女人网站| 欧美精品久久久| 国产精品中文久久久久久| 久久看片网站| 欧美成人三级| 欧美女子与性| 最新地址在线观看| 懂色aⅴ精品一区二区三区| eeuss影院网站免费观看| 亚洲 高清 成人 动漫| 亚洲性生活视频在线观看| 日本一区二区三级电影在线观看| 色噜噜狠狠狠综合曰曰曰88av| 91精品麻豆日日躁夜夜躁| 国产九九在线观看| 97超级碰碰人国产在线观看| 老司机aⅴ毛片免费观看| 成人免费视频国产免费观看| 亚洲人成在线观看| 欧美日韩久久久久| 日韩理论在线观看| 亚洲成色最大综合在线| 九九热这里有精品| 亚洲欧美在线磁力| 5566中文字幕| 天天综合网天天| 亚洲精品成人精品456| 久久er99精品|