Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3518959
  • 博文数量: 864
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10634
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/zytc2009/BigTeam_learning

文章分类

全部博文(864)

文章存档

2023年(1)

2021年(1)

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(69)

2011年(103)

2010年(357)

2009年(283)

2008年(22)

分类: LINUX

2009-10-31 09:57:04

在导入 ClearCase 过程中,不少公司都碰到了类似的问题,即在没有域的环境下,无法多用户使用 ClearCase。笔者在导入 ClearCase 过程中进行摸索和尝试,本文是东南融通在非域环境下成功导入 ClearCase 实践的总结。

笔者所在的公司位于国内主要 39 家银行应用软件企业的第一梯队,属于 IT 综合服务商中的佼佼者。随着公司业务的不断发展、软件规模的增大,使用开源配置管理工具已经不能满足项目开发的需要了。为了提高配置管理效率,公司引入了业界领先的软件配置管理工具——IBM Rational ClearCase。

在 ClearCase 的安装手册中,提到的推荐安装模式要求所有的 ClearCase 用户必须是域用户。但是这有个问题,就是现在很多公司都不使用域的方式进行网络管理,那么如何在不使用域的方式下仍能使用 ClearCase,就成为是否能够顺利导入 ClearCase 的关键了。本文以东南融通公司的实践,说明如何在非域的环境下导入 ClearCase 进行配置管理工作。

本文有以下四个目的:

  1. 实现分布式安装和配置 ClearCase 架构中的服务器,并让他们能够协同工作。
  2. 实现从 Windows 访问 Linux 上的 ClearCase VOB(Versioned Object Base)资源
  3. 实现在非域(nondomain)环境访问 ClearCase VOB 资源
  4. 在这种分布式环境下,跨平台架构使用 UCM(Unified Change Management)进行开发。




回页首


ClearCase 与域的密切关系主要是与 ClearCase 的访问控制有关。在 7.0.0 以及之前的版本中,ClearCase 本身不管理自己的用户和用户组账号。ClearCase 的用户管理依赖于操作系统,通过用户在操作系统中的登录识别用户,并由此确定用户是否具有进行 ClearCase 操作的资格。UNIX 和 Windows 中都提供了能胜任诸如 ClearCase 这种分布式程序权限要求的用户名和组名的数据库。在 UNIX 中,该数据库是网络信息系统(NIS,Network Information System)。在Windows 中该数据库则是 Windows 域服务器系统的一部分。

在以上两种操作系统中,用户登录系统都必须要有自己的用户名,ClearCase 把该用户名作为用户身份或叫做用户 ID。一个用户 ID 可以是一个或多个组的成员,在这些组中有一个组叫做用户的 Primary Group,它区别于其它用户组。在 UNIX 中用户的 Primary Group 是 NIS 的 passwd 条目中用户信息的一个数据项。在 Windows 中,当创建域用户账号时就赋予该账号所属的 Primary Group。ClearCase 根据用户 ID 和用户的 Primary Group 来决定用户对 ClearCase 对象的访问控制权限。

当以某一用户 ID 登录到安装了 ClearCase 的系统主机上以后,这个用户 ID 就已经决定了某种信任,这种信任是可以控制用户对于 VOB 和 View 中的 Element 的访问控制权限。简单地说,就是以什么样的用户登录系统,就具备了已经赋予了该用户的所有访问控制权限。

由于一般的 ClearCase 使用环境中,普通用户都是在 Windows 上使用 ClearCase 传统客户端与 VOB 进行交互,所以,才存在“ClearCase 必须在域环境下使用”的说法。如果我们可以让普通用户不需要通过 Windows 域来提供身份认证,那么从客户端角度来说,我们就可以摆脱域的限制了。现在我们可以使用 IBM Rational ClearCase Remote Client(ClearCase 远程客户端软件,简称 CCRC)实现 ClearCase 客户端跳过 Windows 域限制的功能。





回页首


ClearCase Remote Client 是 IBM Rational 推出的用于在广域网环境下进行资源配置管理的产品,是一个基于 Eclipse Rich Client 技术开发的产品,它利用特别设计的协议在高延迟的网络上高效地通信。CCRC 为用户提供了一种通过 ClearCase Web 服务器访问与使用 ClearCase 服务的便捷方式。普通用户安装 CCRC 客户端后,无论本机是否装有 ClearCase 完整的客户端,都可以使用 CCRC 客户端通过URL的方式连接 ClearCase Web 服务器,并将处于 ClearCase 控制下的资源像普通文件和目录一样装入本地 ClearCase 视图。要连接到 ClearCase Web 服务器,用户必须使用该服务器上有效的用户名和密码来认证自己,也就是 ClearCase Web 服务器上的用户名和密码。这种方式使得普通用户的客户端不需要加入 Windows 域,就可以通过 CCRC 客户端远程访问 ClearCase VOB 资源。

除了 ClearCase 传统客户端方式存在着身份验证问题,ClearCase VOB 服务器、ClearCase Web 服务器之间也存在着用户的认证/授权问题。为了让用户能够通过 ClearCase Web 服务器访问 ClearCase VOB,ClearCase Web 服务器与 ClearCase VOB 服务器就必须是同一台机器,或者是位于同一个域中的两台机器。在本案例中,为了让服务器也能跳过域的限制,所以,我们选择 ClearCase Web 服务器与 ClearCase VOB 服务器是同一台机器的方式。在这种情况下,ClearCase Web 服务器不需要进行额外的身份认证,就可以访问 ClearCase VOB 服务器的一个或多个 VOB。

通过 CCRC 以及让 ClearCase Web 服务器与 ClearCase VOB 服务器为同一台机器的方式,我们实现了客户端和服务器都不需要加入域的目的,彻底摆脱了 Windows 域的限制。





回页首


了解了上述原理之后,我们就可以开始在非域环境下进行 ClearCase 架构的设计和搭建。在本案例中,我们一共设置了一台服务器,两台客户端。服务器使用 Linux 操作系统,两台客户端均使用 Windows 操作系统。

也许有读者会问,为什么要使用跨平台环境进行 ClearCase 环境的搭建。这主要出于使用效率的考虑。在笔者实际使用中对比发现,如果 VOB Server 搭建在 Windows 操作系统上,用户通过 CCRC 访问 VOB 时,操作的响应速度很慢,严重影响普通用户的使用。当我们将 VOB Server 迁移到同等配置的机器,但是操作系统改为 Linux 后,用户通过 CCRC 操作 VOB,操作的响应速度提高了 10 倍。所以,我们建议读者可以考虑使用跨平台环境进行 ClearCase 环境的搭建。

在跨平台操作系统中,我们至少需要两个 region。在 ClearCase 中要求 Windows 和 Linux 的机器必须分别划分到不同的 region 中。在本文中,我们创建了两个 region:cc_linux 和 cc_win。其中,cc_linux 是在 Linux 上安装 ClearCase 时指定并创建的,cc_win 是在 Linux 的 ClearCase 安装后使用下面的命令行创建:

cleartool mkreg –tag cc_win

为了描述方便,我们先对每台机器进行描述,包括机器名、用途,以及每台机器所属 region 信息。

主机名 主机 IP 操作系统 用途 Region
VobServ 192.168.1.1 RedHat ES4 ClearCase VOB Server
ClearCase View Server
ClearCase Registry Server
ClearCase License Serve
ClearCase Web Server
cc_linux
WinAdm 192.168.1.2 Windows 2003 Windows管理客户端 cc_win
Dev 192.168.1.3 Windows XP ClearCase Remote Client客户端

系统架构图如图一所示:



东南融通 ClearCase 系统架构图

在上述架构中,管理客户端提供给管理员进行日常管理操作。普通用户使用 CCRC 与 VOB 进行交互。为了能通过 CCRC 访问配置库,我们必须在 Linux 服务器上安装 ClearCase Web component。





回页首


本节将通过以下五小节来呈现在非域环境下搭建 ClearCase 分布式环境的步骤:

  • ClearCase 用户环境准备
    介绍在非域环境下,如何解决 ClearCase 用户认证问题。
  • 配置 Linux 服务器环境
    在正常使用 Linux 的 ClearCase 资源之前,我们需要对 Linux 服务器做少量配置,包括:修改 Linux 用户口令加密方式、ClearCase 目录权限的设置,以及 VOB 和 View Storage Location 创建。
  • 在Linux 上配置 Samba
    通过对 Samba 服务的验证模式、Samba 共享,以及 Samba 用户的配置,我们实现了从 Windows 管理端访问 Linux 上 ClearCase 资源的目的。
  • 配置Windows管理端
    完成配置 Windows 管理端的 ClearCase 属性后,管理员完成从 Windows 管理端对 VOB 进行日常维护操作的第一步。
  • 在 Windows 管理端导入 Linux 的 VOB tag
    为了让 Windows 管理端所属的 region 可以看到并操作 Linux 上的 VOB,我们需要执行本步操作。

在非域环境下,尤其是在跨平台环境中,我们最需要解决的就是用户的身份认证问题。在本案例中,我们需要考虑两个问题:

  1. 普通用户,即 CCRC 用户的身份认证问题;
  2. Windows 管理客户端用户与 Linux 用户的认证问题。

对于第一个问题,在本案例中,CCRC 用户即 Linux 操作系统的用户,所以 CCRC 用户的身份认证不需要进行额外处理。

在 VOB 的访问控制信息中,记录着 VOB 的 owner、group 信息。如果 Windows 上的用户名或用户组名和 Linux 上的用户名或用户组名不一致时,在 Windows 上看到的 VOB 控制信息中的用户名或用户组名将变成 NONE,此时在 Windows 上执行 Deliver 等操作时将会出错。所以,在 Windows 管理端中,需要创建和 Linux 上相同名字的用户、用户组。同时,在 Windows 上的用户和用户组名是大小写不敏感的,而 Linux 的用户和用户组名则是大小写敏感的。所以,对于在跨平台操作系统中,Windows 和 Linux 上的用户名不但要相同,而且大小写也要相同,但是 ClearCase 在交互操作的平台下密码是可以不同的。也就是说,让 Linux 用户账号具有一套密码,而在 Windows 中可以自行定义另一套密码。

在创建 Windows 和 Linux 用户的时候,需要注意以下两点:

  • 所有 CCRC 用户都必须属于一个组,这个组有权限访问 Linux 上的 VOB 或者 View。
  • CCRC 用户的 Primary Group 名称必须和 Windows 管理客户端用户的 Primary Group 名称相同。

在本案例中,用户设定如下:

  • 在 Windows 管理端上,除了安装 ClearCase 时自动创建的 clearcase 组和 clearcase_albd 用户外,我们需要再创建组 ccusers、用户 ccadm。其中,clearcase_albd 用户属于 clearcase 组,ccadm 用户属于 ccusers 组。
  • 在Linux 服务器上,创建组 ccusers,用户 ccadm。

在完成用户信息的设置后,我们离可以正常使用 ClearCase 还有一步之遥。因为我们还需要对 Linux 环境进行一些设置。

由于 ClearCase 对 Linux 用户的密码不支持使用 Linux 默认的 ND5 加密方式,所以如果我们没有修改 Linux 默认的口令加密方式的话,普通用户在 CCRC 登录时,系统会提示用户密码错误。解决这个问题的办法就是取消 Linux 使用 ND5 的口令加密方式。操作方法:在终端输入 authconfig,按 F12 进入下一页,取消选中“使用 ND5 口令”。然后,使用 passwd 命令修改系统已有用户的密码,如 root、ccadm 账号。

Linux 用户可以正常登录 ClearCase Web 服务器后,但是此时系统还没有创建 VOB 和项目。在创建 VOB 之前,我们需要创建专门的 VOB Storage、View Storage,以及 VOB tag 的 mount 目录。所以,我们接下来就需要创建 ClearCase 目录,并赋予相应的权限。在本案例中,我们创建 /vobstore/viewstore/vobs 目录。其中,/vobstore 目录是VOB Storage,/viewstore 目录是 View Storage,/vobs 目录是 VOB tag 存放的目录。然后我们为这三个目录赋予 755 的权限,并且设置目录的 owner 和 group 分别为 ccadm 和 ccusers。

虽然有了 VOB Storage 和 View Storage 目录后,但是此时 ClearCase 还不认识这两个目录就是用来存放 VOB 和 View 信息的。我们需要通过 mkstgloc 命令来创建 VOB Storage Location 和 View Storage Location。我们可以分别执行 cleartool mkstgloc –vob vob_linux /vobstorecleartool mkstgloc –view view_linux /viewstore 来分别创建 VOB Storage Location 和 View Storage Location。执行完 mkstgloc 命令后,我们可以使用 cleartool lsstg 来查看 VOB Storage Location 和 View Storage Location 是否建立成功。

至此,我们已经完成了所有 Linux 上需要配置的内容,管理员这时可以开始在 Linux 上进行项目配置管理环境的搭建,以及日常 VOB 的维护了。但是,对于不是很熟悉 Linux 的一般管理员而言,如果每项操作都通过 Linux 来执行的话,会增加他们的工作量,同时影响公司导入 ClearCase 的进度。为了解决这个问题,我们在实际使用时设置了专门的 Windows 管理端,目的是为了方便管理员的日常操作,比如对 VOB 的维护、创建项目等。

在非域环境下,要实现 Windows 管理端的用户可以直接访问 Linux 上的 VOB 资源这个目标,我们需要解决两个问题:

  • 如何在 Windows 的“网络邻居”中像访问 Windows 机器一样来访问 Linux 服务器?
  • 如何解决 Windows 管理端与 Linux 的身份认证问题?

对于本案例这种只有少数 Windows 机器的情况,我们可以使用 Samba 服务来解决这两个问题,并实现 Windows 管理端访问 Linux 资源的功能。

在 Redhat ES4 中,操作系统已经缺省安装了 Samba,只需要启动 Samba 服务,并进行一些配置就可以实现我们的目的。

首先,我们需要启动 Samba 服务,才能进行后续的操作。启动 Samba 服务的步骤如下:

  1. 进入:系统设置-服务器设置-服务,打开“服务配置”对话框
  2. 选中“smb”,点击“开始”按钮,启动服务。
  3. 点击“保存”按钮,将设置保存服务设置,下次重启时,就可以自动启动 Samba 服务。

然后,我们需要设置 Samba 的身份验证模式。Samba 的身份验证模式有很多种,如共享、用户、服务器等。其中,服务器模式,是由 Password Server 进行身份的验证;共享模式,则无论你用什么用户登录 Windows,你都可以在“网上邻居”中打开 Linux 服务器,并看到其所有的共享资源;用户模式,则当登录用户在访问的 Linux 服务器的共享资源时,都需要根据提示输入 Samba 的用户名和密码,然后由被访问的 Linux 服务器进行身份验证。根据我们的需要,在本案例种我们选择“用户”这种“验证模式”。我们可以进入“Samba 服务”对话框中,选择菜单:首选项-服务器设置,在“服务器设置”对话框中选择“安全性”Tab 页,选择“验证模式”为“用户”,保存退出即可。完成 Samba 身份验证模式的修改后,我们需要重启 Samba 服务,以便使新的设置生效。

重启 Samba 服务后,接下来我们就需要将 Linux 上需要提供给 Windows 用户操作的目录进行共享。在 ClearCase 实际使用中,Windows 用户只需要对 VOB Storage 和 View Storage 进行操作。所以,我们需要将 /vobstore/viewstore 目录设置共享。设置 Samba 共享的步骤如下:

  1. 进入:系统设置-服务器设置-Samba,打开“Samba 服务”对话框。
  2. 点击“增加”按钮,弹出“创建 Samba 共享”对话框。在“基本”Tab 页中,“目录”输入框输入 /vobstore,“基本权限”设置为“读/写”。在“访问”Tab 页,选中“允许所有用户访问”
  3. 重复步骤 2,创建第二个 Samba 共享,目录为 /viewstore

有了 Samba 共享之后,此时 Windows 用户在访问 Linux 的 Samba 共享时,系统会提示输入用户名和密码。这个用户名和密码可不是 Linux 或 Windows 上的用户名和密码。为了能顺利访问 Linux 已经设置的 Samba 共享目录,我们需要通过独立的 Samba 用户将 Windows 用户与 Linux 用户进行映射。简单说,就是要在 Linux 上创建 Samba 用户,这个用户就是我们在通过 Windows 上访问 Linux 的共享目录时需要输入的用户验证信息。定义 Samba 用户的步骤如下:

  1. 进入:系统设置-服务器设置-Samba,打开“Samba 服务”对话框,选择菜单:首选项-服务器设置,打开“Samba 用户”对话框
  2. 点击“添加用户”按钮,打开“创建新Samba 用户”对话框
  3. 在“Unix 用户名”下拉框选择 ccadm 用户
  4. 在“Windows 用户名”输入框输入:ccadm
  5. 在口令输入框输入该 Samba 用户登录的 Samba 口令,这里设置为 123456。再次输入确认口令。
  6. 点击“确定”按钮,完成 ccadm 这个 Samba 用户的创建。

完成上面的所有设置后,我们可以采用下面的方法来验证设置是否成功。在 Windows 资源管理器的“地址栏”输入创建共享所在的地址,如:\\192.168.1.1\vobstore,然后在弹出的登录对话框中使用新创建的 Samba 用户 ccadm 登录。如果可以登录成功,表示 Samba 设置成功了。

关于 Samba 用户,笔者建议 Samba 用户的密码和 Windows 管理端对应的用户(如 ccadm)设置为相同的密码。如果两个用户设置为不同的密码时,当用户在 Windows 客户端对 VOB 进行操作之前,需要先访问 Linux 的 Samba 共享目录。如果没有先登录 Linux 的 Samba 共享目录,当用户打开 ClearCase Project Explorer 对话框时,系统会提示“Error 0x3ea trying to mount VOB vob_tag”。假如这两个用户的密码设置为相同密码时,用户可以不需要额外登录 Samba 共享目录,就可以直接在 Windows 上对 Linux 上的 VOB 进行操作。

至此,我们完成了 Linux 上的所有配置,同时,我们在 Windows 上也可以访问 Linux 的共享目录了。但是为了管理员在 Windows 管理端可以自如的操作 ClearCase 资源,我们还需要对 Windows 管理端进行配置,然后将 Linux 的 VOB tag 导入。在本节中,我们先介绍 Windows 管理端的配置。

为了让 Windows 可以访问 Linux 的 ClearCase 资源,我们首先需要解决的是将 Windows 管理端加入正确的 region。我们在 第四节“ClearCase架构设计” 已经为 Windows 创建了专用的 region——cc_win。下面我们就开始为 Windows 管理端设置正确的 region,操作步骤如下:

  1. 在控制面板中,打开“ClearCase Properties”对话框,弹出“ClearCase Properties”对话框。
  2. 2. 在打开的“ClearCase Properties”对话框中,选择“Use registry server on host:”选项,在输入框输入 Registry Server 的 IP 地址,如:192.168.1.1
  3. 点击“应用”按钮
  4. 打开“Windows Region”下拉框,这时,在“Windows Region”可以看到我们在 Linux 服务器上定义的两个 region。我们在“Windows Region”下拉框选择“cc_win”,在“Peer UNIX Region”下拉框选择“cc_linux”,保存退出,这就完成了 Windows 管理端 region 的设置。

完成 region 的设置后,我们会发现这台 Windows 管理端的用户仍无法正常访问 Linux 的 ClearCase 资源。我们在 第二节“使用ClearCase传统客户端访问ClearCase与域控制的关系” 有提到,ClearCase 是根据用户 ID 和用户的 Primary Group 来决定用户对 ClearCase 对象的访问控制权限。但是由于我们没有使用域进行用户的身份验证,而在没有安装域服务器的 Windows 操作系统中,所有登录用户默认没有 Primary Group 这个属性,这就导致访问 ClearCase 出现异常。为了解决这个问题,我们需要通过设置用户环境变量的方式,人为的为登录用户添加 Primary Group 信息。这里,我们需要新建用户环境变量 CLEARCASE_PRIMARY_GROUP,变量值等于 Linux 上设置的 Primary Group,这里设置为 ccusers。注意最好不要设置为系统环境变量,避免导致因这个环境变量的设置而导致系统运行错误

在上一节中,我们为 Windows 管理端设置了正确的 region 以及 Primary Group。但是,这时如果我们进入“Project Explorer”,会发现系统中没有任何 PVOB。执行 lsvob 命令,也会发现在 Windows 当前所属的 region 中,没有任何 VOB,但是实际上此时在 Linux 上不仅有 VOB,还有 PVOB。出现这个问题的原因是由于我们没有将 Linux 的 VOB tag 导入到 Windows 管理端所属的 region。

在 Windows 管理端进行创建和配置项目操作之前,我们首先需要将 Linux 的 VOB tag 导入 Windows 管理端所属的 region。如果要将 Linux 的 VOB 或者 View 共享给 Windows 管理端使用,我们需要将它们的 tag 同步到 Windows 管理端所属的 region中。

为了实现这个目的,我们需要使用 Region Synchronizer 来进行 VOB tag、View tag 的同步。使用 Region Synchronizer 的步骤如下:

  1. 启动 Region Synchronizer:开始 -> 程序 -> IBM Rational -> IBM Rational ClearCase -> Administration -> region synchronizer。
  2. 在“Import Types”中选择“VOB Tags”,Windows 用户可以看到 Linux 所属 region 下的所有未导入的 VOB tag。如果选择“View Tags”,则可以看到 Linux 所属 region 下的 View。这里我们选择“VOB Tags”。
  3. 选中其中一个希望导入 Windows region 的 VOB tag,点击“Import”按钮,进入“Create VOB Tag”界面。这里需要注意的是 Global Storage Path,这个路径就是 Linux 服务器共享出来的 VOB Storage Location 路径。
  4. 点击“OK”按钮导入 VOB tag 后,我们可以采用在 Windows 管理客户端使用 cleartool lsvob 命令来验证 VOB 是否有导入成功。如果执行结果中可以看到刚导入的 VOB tag,那么就说明该 VOB 已成功导入。

在 Windows 所在 region 导入 VOB Tag 后,就可以在 Windows 管理端上的 Project Explorer 中进行创建组件、创建项目、创建流操作,这些操作和普通 Windows 下的创建项目环境操作类似,请参考 ClearCase 管理手册,这里不赘述。





回页首


完成了 ClearCase 项目创建、流策略定义后,普通用户就可以使用 ClearCase Remote Client 进行日常的配置管理操作。在进行日常操作之前,用户需要对 CCRC 的属性进行设置。在 CCRC 菜单选择:窗口-首选项,勾选“在服务器上使用此主组”,并输入和 Linux 上 ClearCase 用户的 Primary Group 一致的组名,这里输入 ccusers。如果不设置这个属性,会导致通过 CCRC 添加源控制的 ElementownerNONE,使得 Element 的权限出错。

设置 CCRC 属性后,需要重启 CCRC,属性方会生效。



CCRC 属性设置

假设我们使用 UCM 模式。配置完 CCRC 后,我们需要通过连接 UCM 项目的方式来创建 UCM 视图,如图三所示:



创建 UCM 视图

在弹出的“连接 UCM 项目”对话框中,在“ClearCase Web 服务器 URL”输入框中输入 Linux 服务器上 CCWeb 地址,这里填入 ,并输入 Linux 上的用户名和密码。



连接 ClearCase Web 服务器

点击“下一步”按钮,按照界面提示,完成加入项目操作。CCRC 上后续的加入项目操作和传统 ClearCase 客户端的 Join Project 操作类似,这里不再赘述。

加入项目,创建视图后,我们点击视图 tag 后,就可以列出该 View 的 Load Rule 中加载的所有目录,如图五所示:



ClearCase Remote Client 主界面

当视图中 VOB 正常加载后,我们就可以通过 CCRC 来对 VOB 进行操作了,如添加源控制、检出、检入、删除文件。下面图六是将一个已检出文件检入到配置库的过程。在此过程中,由于是 UCM 模式,所以需要指定活动。在检入时,系统默认选择检出时使用的活动。



检入资源





回页首


本文通过笔者所在公司实际网络环境中搭建 ClearCase 分布式环境的案例,描述了如何在非域的环境下搭建 ClearCase 分布式环境,包括以下内容:

介绍使用 ClearCase 传统客户端访问 ClearCase 资源与控制的关系,然后介绍了使用 CCRC 搭建非域环境的配置管理解决方案。完成本案例搭建原理的介绍后,使用东南融通实际的案例进行详细说明如何在非域环境搭建 ClearCase 分布式环境,以及如何在 Windows 下使用 CCRC 进行日常操作。希望本文能够给正在或即将在非域环境下搭建 ClearCase 分布式环境的用户或学习者提供一个有用的帮助。



阅读(1331) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~