Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
Svn-to-Git
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王进波
Svn-to-Git
Commits
0bcad0a3
Commit
0bcad0a3
authored
Mar 05, 2019
by
王进波
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
47828d9c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
694 additions
and
0 deletions
+694
-0
工作交接.md
doc/工作交接.md
+694
-0
No files found.
doc/工作交接.md
0 → 100644
View file @
0bcad0a3
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents**
*generated with [DocToc](https://github.com/thlorenz/doctoc)*
-
[
工作交接
](
#%E5%B7%A5%E4%BD%9C%E4%BA%A4%E6%8E%A5
)
-
[
云平台运维服务
](
#%E4%BA%91%E5%B9%B3%E5%8F%B0%E8%BF%90%E7%BB%B4%E6%9C%8D%E5%8A%A1
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0
)
-
[
代码组织结构
](
#%E4%BB%A3%E7%A0%81%E7%BB%84%E7%BB%87%E7%BB%93%E6%9E%84
)
-
[
编译和部署
](
#%E7%BC%96%E8%AF%91%E5%92%8C%E9%83%A8%E7%BD%B2
)
-
[
泵房数据采集Quartz.net服务
](
#%E6%B3%B5%E6%88%BF%E6%95%B0%E6%8D%AE%E9%87%87%E9%9B%86quartznet%E6%9C%8D%E5%8A%A1
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0-1
)
-
[
编译和部署
](
#%E7%BC%96%E8%AF%91%E5%92%8C%E9%83%A8%E7%BD%B2-1
)
-
[
营收系统
](
#%E8%90%A5%E6%94%B6%E7%B3%BB%E7%BB%9F
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0-2
)
-
[
Nginx服务端跨域
](
#nginx%E6%9C%8D%E5%8A%A1%E7%AB%AF%E8%B7%A8%E5%9F%9F
)
-
[
Fiddler 拦截
](
#fiddler-%E6%8B%A6%E6%88%AA
)
-
[
FlaskServer
](
#flaskserver
)
-
[
BIM三位数据模型展示
](
#bim%E4%B8%89%E4%BD%8D%E6%95%B0%E6%8D%AE%E6%A8%A1%E5%9E%8B%E5%B1%95%E7%A4%BA
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0-3
)
-
[
GitLabServer
](
#gitlabserver
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0-4
)
-
[
配置文件维护
](
#%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%BB%B4%E6%8A%A4
)
-
[
Zabbix
](
#zabbix
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0-5
)
-
[
电子书网站
](
#%E7%94%B5%E5%AD%90%E4%B9%A6%E7%BD%91%E7%AB%99
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0-6
)
-
[
高德地图api分析
](
#%E9%AB%98%E5%BE%B7%E5%9C%B0%E5%9B%BEapi%E5%88%86%E6%9E%90
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0-7
)
-
[
运服务器及内网Nginx
](
#%E8%BF%90%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8F%8A%E5%86%85%E7%BD%91nginx
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0-8
)
-
[
域名及HTTPS证书管理
](
#%E5%9F%9F%E5%90%8D%E5%8F%8Ahttps%E8%AF%81%E4%B9%A6%E7%AE%A1%E7%90%86
)
-
[
描述
](
#%E6%8F%8F%E8%BF%B0-9
)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
# 工作交接
### 云平台运维服务
代码仓库:https://g.civnet.cn:8443/CivDevelope/CloudPlatform.git
所属群组:CivDevelope
#### 描述
服务包含主站服务(AdminServer)和子站服务(TenantServer),共享同一套代码,通过配置文件区分角色,配置文件说明除配置文件注释外,有文档记录
[
CloudPlatform服务部署
](
https://g.civnet.cn:8443/wangjinbo/Svn-to-Git/blob/master/doc/CloudPlatform%E6%9C%8D%E5%8A%A1%E9%83%A8%E7%BD%B2.md
)
。
目前 TenantServer部署时会自动检查并部署 IIS, Java环境,Tomcat 服务,GeoServer,PgSQL,MongoDB。
TenantService安装及后续自动部署可以通过一条命令触发,说明记录在
[
实施自动部署脚本的部署方法
](
https://g.civnet.cn:8443/wangjinbo/Svn-to-Git/blob/master/doc/%E9%83%A8%E7%BD%B2%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA--%E9%9D%A2%E5%90%91%E5%AE%9E%E6%96%BD.md#%E6%9B%B4%E6%96%B0-2019-02-14%E5%AE%9E%E6%96%BD%E8%87%AA%E5%8A%A8%E9%83%A8%E7%BD%B2%E8%84%9A%E6%9C%AC%E7%9A%84%E9%83%A8%E7%BD%B2%E6%96%B9%E6%B3%95
)
。
> 自动部署脚本为一条命令行指令,在安装 Git Bash 的服务器中以管理员权限打开 Git Bash ,输入以下命令,回车
>
> git clone https://g.civnet.cn:8443/wangjinbo/AutoDeploy.git && cd AutoDeploy && start InstallTenant.bat
> 根据提示操作,这条命令会下载,安装和运行一个自动部署的服务,服务启动后会完成其他部分部署工作,通过查看服务日志,判断服务运行状况
#### 代码组织结构
服务代码列举工程结构及程序入口
```
shell
.
├── CloudPlatformAssistant
#该文件夹为云平台早期原型,以控制台应用程序承载,具备单机运维的创建站点,│ 销毁站点的基本功能,现在项目对此没有依赖,运服务器中重启 VPN 以及 微信│ token更新的服务是用的这个
│ ├── App.config
│ ├── BaseTask.cs
│ ├── CloudPlatformAssistant.csproj
│ ├── Config
│ │ ├── App-12-12.config
│ │ └── App-12-9.config
│ ├── Database
│ │ ├── IDefaultOperation.cs
│ │ ├── MongoDBHelper.cs
│ │ ├── MySQLHelper.cs
│ │ ├── RobotDBHelper.cs
│ │ └── SqlServerOperation.cs
│ ├── Entity
│ │ ├── Tags.cs
│ │ └── UList.cs
│ ├── Nginx
│ │ ├── NginxTask.cs
│ │ └── VpnTask.cs
│ ├── Program.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Push
│ │ ├── MsgPushTask.cs
│ │ └── MsgRefreshTask.cs
│ ├── Site
│ │ ├── EchoCreateSite.cs
│ │ ├── FolderHelper.cs
│ │ ├── SiteBreakTask.cs
│ │ ├── SiteDestroyer.cs
│ │ ├── SiteFactory.cs
│ │ └── SiteMakeTask.cs
│ ├── Util
│ │ ├── ConfigHelper.cs
│ │ ├── JsonHelper.cs
│ │ └── Util.cs
│ ├── WeChat
│ │ ├── AcessTokenTask.cs
│ │ ├── ErrorPushTask.cs
│ │ ├── JsonObject.cs
│ │ ├── PublishEnvironmentSimulationWXLoginTask.cs
│ │ ├── TestEnvironmentSimulationWXLoginTask.cs
│ │ └── WXErrInfoPush.cs
│ ├── WohitechPushOper.cs
│ └── Zabbix
│ ├── ApiQuery.cs
│ ├── PostHelper.cs
│ ├── ZabbixDeploy.cs
│ └── ZabbixDestroy.cs
├── CloudPlatform.sln
├── DLL
│ ├── Microsoft.Web.Administration.dll
│ ├── MongoDB.Bson.dll
│ ├── MongoDB.Bson.xml
│ ├── MongoDB.Driver.dll
│ ├── MongoDB.Driver.xml
│ ├── Newtonsoft.Json.dll
│ ├── System.IO.Compression.dll
│ ├── System.IO.Compression.FileSystem.dll
│ └── websocket-sharp.dll
├── IDL
│ ├── gen-csharp
│ │ └── UserSyncService.cs
│ ├── thrift.exe
│ └── User.thrift
├── README.md
├── Thrift
# Thrift 库的开源代码,编译成 Thrift.dll 依赖,ThriftInterface.dll 需要
│ ├── Collections
│ │ ├── TCollections.cs
│ │ └── THashSet.cs
│ ├── Net35
│ │ └── ExtensionsNet35.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Protocol
│ │ ├── TAbstractBase.cs
│ │ ├── TBase64Utils.cs
│ │ ├── TBase.cs
│ │ ├── TBinaryProtocol.cs
│ │ ├── TCompactProtocol.cs
│ │ ├── TField.cs
│ │ ├── TJSONProtocol.cs
│ │ ├── TList.cs
│ │ ├── TMap.cs
│ │ ├── TMessage.cs
│ │ ├── TMessageType.cs
│ │ ├── TMultiplexedProcessor.cs
│ │ ├── TMultiplexedProtocol.cs
│ │ ├── TProtocol.cs
│ │ ├── TProtocolDecorator.cs
│ │ ├── TProtocolException.cs
│ │ ├── TProtocolFactory.cs
│ │ ├── TProtocolUtil.cs
│ │ ├── TSet.cs
│ │ ├── TStruct.cs
│ │ └── TType.cs
│ ├── Server
│ │ ├── TServer.cs
│ │ ├── TServerEventHandler.cs
│ │ ├── TSimpleServer.cs
│ │ ├── TThreadedServer.cs
│ │ └── TThreadPoolServer.cs
│ ├── TApplicationException.cs
│ ├── TAsyncProcessor.cs
│ ├── TControllingHandler.cs
│ ├── TException.cs
│ ├── Thrift.csproj
│ ├── TProcessor.cs
│ ├── TProcessorFactory.cs
│ ├── TPrototypeProcessorFactory.cs
│ ├── Transport
│ │ ├── TBufferedTransport.cs
│ │ ├── TFramedTransport.cs
│ │ ├── THttpClient.cs
│ │ ├── THttpHandler.cs
│ │ ├── THttpTaskAsyncHandler.cs
│ │ ├── TMemoryBuffer.cs
│ │ ├── TNamedPipeClientTransport.cs
│ │ ├── TNamedPipeServerTransport.cs
│ │ ├── TServerSocket.cs
│ │ ├── TServerTransport.cs
│ │ ├── TSilverlightSocket.cs
│ │ ├── TSocket.cs
│ │ ├── TSocketVersionizer.cs
│ │ ├── TStreamTransport.cs
│ │ ├── TTLSServerSocket.cs
│ │ ├── TTLSSocket.cs
│ │ ├── TTransport.cs
│ │ ├── TTransportException.cs
│ │ └── TTransportFactory.cs
│ └── TSingletonProcessorFactory.cs
├── ThriftInterface
#自定义 Thrift 接口的 C# 编译文件,编译成 ThriftInterface.dll 依赖
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── ThriftFiles
│ │ ├── AdminServer.thrift
│ │ ├── CompileMe.thrift
│ │ ├── CompileThrift.bat
│ │ ├── Entity.thrift
│ │ ├── gen-csharp
│ │ │ └── Platform
│ │ │ ├── Admin
│ │ │ │ └── HostManage
│ │ │ │ ├── ManageService.cs
│ │ │ │ ├── MonitorService.cs
│ │ │ │ ├── RegisterService.cs
│ │ │ │ ├── StatusService.cs
│ │ │ │ └── VersionService.cs
│ │ │ ├── Common
│ │ │ │ └── Entity
│ │ │ │ ├── CPU.cs
│ │ │ │ ├── CpuHistory.cs
│ │ │ │ ├── HardDisk.cs
│ │ │ │ ├── HardDiskHistory.cs
│ │ │ │ ├── HistoryFilter.cs
│ │ │ │ ├── HostInfo.cs
│ │ │ │ ├── HostInfoFilter.cs
│ │ │ │ ├── ItemType.cs
│ │ │ │ ├── Memory.cs
│ │ │ │ ├── MemoryHistory.cs
│ │ │ │ ├── Network.cs
│ │ │ │ ├── NetworkHistory.cs
│ │ │ │ ├── RegRep.cs
│ │ │ │ ├── Rep.cs
│ │ │ │ ├── ResourceOperation.cs
│ │ │ │ ├── ServerOperation.cs
│ │ │ │ ├── Service.cs
│ │ │ │ ├── StartUpType.cs
│ │ │ │ ├── SvcStatus.cs
│ │ │ │ ├── TenantServerOperator.cs
│ │ │ │ ├── TenantServiceOperator.cs
│ │ │ │ ├── ThreadHistory.cs
│ │ │ │ ├── VersionCtl.cs
│ │ │ │ ├── VersionOpr.cs
│ │ │ │ ├── Volume.cs
│ │ │ │ └── Zabbix.cs
│ │ │ └── Tenant
│ │ │ └── Worker
│ │ │ ├── DataCollectService.cs
│ │ │ ├── DeployService.cs
│ │ │ ├── StatusService.cs
│ │ │ └── VersionService.cs
│ │ ├── TenantAgent.thrift
│ │ └── thrift-0.11.0.exe
│ └── ThriftInterface.csproj
├── WHSchedule
# 云平台运维服务全部功能的实现,编译成 WHSchedule.dll
│ ├── AdminClient
# 是TenantServer的客户端封装,供AdminServer实例化调用,简化代码
│ │ └── BaseClientOfTenant.cs
│ ├── AdminImpl
# 是对AdminServer部分功能自定义Thrift接口的实现
│ │ ├── AStatusServiceImpl.cs
│ │ ├── ManageServiceImpl.cs
│ │ ├── MonitorHistory.cs
│ │ ├── MonitorIntime.cs
│ │ ├── MonitorServiceImpl.cs
│ │ ├── RegisterServiceImpl.cs
│ │ └── VersionServiceImpl.cs
│ ├── AdminServer.cs
# AdminServer 构建和启动
│ ├── app.config
│ ├── BaseTask.cs
│ ├── Config
# 早期保存的不同服务器配置文件的备份,没有用到了
│ │ ├── App-12-12.config
│ │ └── App-12-9.config
│ ├── Database
# 数据库访问类
│ │ ├── IDefaultOperation.cs
│ │ ├── MongoDBHelper.cs
│ │ ├── MySQLHelper.cs
│ │ ├── RobotDBHelper.cs
│ │ ├── SMO.cs
│ │ └── SqlServerOperation.cs
│ ├── Entity
# 工具类
│ │ ├── Tags.cs
│ │ └── UList.cs
│ ├── Helper
# 各种 Helper 类
│ │ ├── ByteHelper.cs
│ │ ├── CommandHelper.cs
│ │ ├── ConfigHelper.cs
│ │ ├── DateHelper.cs
│ │ ├── FileHelper.cs
│ │ ├── FolderHelper.cs
│ │ ├── GitHelper.cs
│ │ ├── GitlabHelper.cs
│ │ ├── IISHelper.cs
│ │ ├── JavaPropertyHelper.cs
│ │ ├── JsonHelper.cs
│ │ ├── NetworkHelper.cs
│ │ ├── ProcessHelper.cs
│ │ ├── RegexHelper.cs
│ │ ├── ServiceHelper.cs
│ │ ├── StringHelper.cs
│ │ └── SvnHelper.cs
│ ├── job_scheduling_data_2_0.xsd
│ ├── Models
│ │ ├── Generated
│ │ │ ├── Database.cs
│ │ │ ├── Database.tt
│ │ │ ├── PetaPoco.Core.ttinclude
│ │ │ └── PetaPoco.Generator.ttinclude
│ │ ├── PetaPoco.cs
│ │ └── SiteResources.cs
│ ├── Nginx
# Nginx 相关的类
│ │ ├── NginxConfigure.cs
│ │ ├── NginxTask.cs
│ │ └── VpnTask.cs
│ ├── packages.config
│ ├── Program.cs
# Main 方法入口
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Push
# 微信消息推送
│ │ ├── MsgPushTask.cs
│ │ └── MsgRefreshTask.cs
│ ├── QuartzJob
# 自动定时执行任务
│ │ ├── HostStatusJob.cs
│ │ ├── QuartzTask.cs
│ │ ├── SiteClearJob.cs
│ │ ├── SiteRedundanceJob.cs
│ │ ├── SvnUpdateJob.cs
│ │ └── WXDoingPushJob.cs
│ ├── ScheduleService.cs
# 命令行启动入口,没有用了
│ ├── Site
# 子站站点创建和销毁相关类
│ │ ├── EchoCreateSite.cs
│ │ ├── FolderHelper.cs
│ │ ├── SiteBreakTask.cs
│ │ ├── SiteDestroyer.cs
│ │ ├── SiteFactory.cs
│ │ ├── SiteMakeTask.cs
│ │ └── TomcatDeploy.cs
│ ├── Status
# 子站及子站主机状态维护
│ │ ├── HostStatus.cs
│ │ └── ServiceStatus.cs
│ ├── TenantAgent.cs
# TenantServer的非ThriftServer服务,包括启动后的检查和必要│ 的初始化操作
│ ├── TenantClient
│ │ └── BaseClientOfAdmin.cs
│ ├── TenantImpl
# TenantServer的自定义Thrift接口实现
│ │ ├── DataCollectServiceImpl.cs
│ │ ├── DeployProcess.cs
│ │ ├── DeployServiceImpl.cs
│ │ ├── InitService.cs
│ │ ├── TStatusServiceImpl.cs
│ │ └── VersionServiceImpl.cs
│ ├── Util
# 工具类
│ │ ├── ConfigHelper.cs
│ │ ├── GISDeployer.cs
│ │ ├── IISDeployer.cs
│ │ ├── MongoDBDeployer.cs
│ │ ├── ProjectSiteDeployer.cs
│ │ ├── RsaKey.cs
│ │ └── Util.cs
│ ├── Version
# 子站站点版本更新相关的类,有 SVN 的实现和 Git 的实现
│ │ ├── Cityinterface.cs
│ │ ├── CityOms.cs
│ │ ├── CityOmsGit.cs
│ │ ├── ConfigSync.cs
│ │ └── DataBaseSync.cs
│ ├── WebSocketService
│ │ └── WSDataCollect.cs
│ ├── WeChat
│ │ ├── AcessTokenTask.cs
│ │ ├── ErrorPushTask.cs
│ │ ├── JsonObject.cs
│ │ └── WXErrInfoPush.cs
│ ├── WHSchedule.csproj
│ └── Zabbix
# 子站 Zabbix Agent 部署相关功能
│ ├── ApiQuery.cs
│ ├── PostHelper.cs
│ ├── ZabbixConfig.cs
│ ├── ZabbixDataMaintain.cs
│ ├── ZabbixDeploy.cs
│ └── ZabbixDestroy.cs
├── WHScheduleTest
# 测试用例,没有启用
│ ├── app.config
│ ├── packages.config
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── UnitTest1.cs
│ └── WHScheduleTest.csproj
└── WohiScheduleService
# WindowsServer服务外壳,功能在WHSchedule.dll中
├── App.config
├── App.Debug.config
├── App.Release.config
├── packages.config
├── Program.cs
├── ProjectInstaller.cs
├── ProjectInstaller.Designer.cs
├── ProjectInstaller.resx
├── Properties
│ └── AssemblyInfo.cs
├── Service1.cs
├── Service1.Designer.cs
├── Service1.resx
├── WohiScheduleService.csproj
├── WohiScheduleServiceInstaller.cs
└── WohiScheduleServiceInstaller.Designer.cs
```
#### 编译和部署
由于服务需要更新到正式/测试等不同环境,可能出现交叉更新,甚至功能模块的差异,这样在不同的环境中配置也可能是不同的,如果每次编译时手动去改配置,会比较不方便。引入了不同的支持自定义编译配置文件的 Visual Studio 插件
[
ConfigTransform
](
https://marketplace.visualstudio.com/items?itemName=GolanAvraham.ConfigurationTransform
)
。它的作用是,可以根据编译时选择的方案(debug|release)生成对应模式下差异化的配置文件,这样只需要维护一个通用配置,对不同编译方案维护各自的差异配置,编译时会自动将差异插入到通用配置中。
### 泵房数据采集Quartz.net服务
代码仓库:https://g.civnet.cn:8443/wangjinbo/QuartzScheduler.git
所属群组:放在个人项目中,因为是临时项目,为避免污染群组,帐号:wangjinbo/wangjinbo
#### 描述
这个起初是为了满足青浦泵房数据采集需求写的运行在 LinqPad 中的 C# 脚本,后封装成 Windows 服务了,没什么好说的,就是定时读取接口,然后按照业务规则插入到数据库中,代码逻辑比较简单,有对后续项目接入的扩展的考虑。服务后来引入了荔波的数据采集功能,荔波数据采集中使用了 ORM 框架 Entity Framework。需要注意更新表结构时,需要同步Entity Framework 的配置,并重新编译。
#### 编译和部署
这个服务在部署时需要按照项目名称不同,在配置文件中设置ServiceName配置项,服务会据此安装成不同的名称,即不同项目会对应一个WindowsService,但是只有一套代码,差异化的配置文件同样使用了 Visual Studio 插件
[
ConfigTransform
](
https://marketplace.visualstudio.com/items?itemName=GolanAvraham.ConfigurationTransform
)
,编译对应项目的服务是,需要选择对应的编译方案。
### 营收系统
代码仓库:无
所属群组:无
#### 描述
营收系统是将第三方营收系统通过 Nginx 服务端跨域后嵌入到我们系统页面中的一个小小的 Hack,除了 Nginx 服务端跨域以外,还通过 Fiddler 截获和修改的请求的资源来达到修改页面样式的目的以及在 Fiddler 中进行免登录代理,免登录代理需要一个 Python 的简单脚本支持,这个脚本被部署成一个 WindowsService ,安装在 12.12 服务器中,Fiddler也部署在 12.12 服务器中。下面详细介绍下
#### Nginx服务端跨域
营收系统源域名为 http://demo.hbtsoft.cn:8081 。我们注册了一个 hbtsoft.wohitech.com的域名,在wohitech.com云服务器的Nginx中反向代理到 12.12 服务器的 8888 端口,监听该端口的程序为Fiddler,最终请求被转发给域名http://demo.hbtsoft.cn:8081。
#### Fiddler 拦截
Fiddler 中做了很多配置,不能随意替换,Fiddler程序的启动目录为 12.12 服务器的 D:
\P
rograms
\F
iddler 目录
Fiddler 拦截请求后,会通过AutoResponser功能匹配请求是否为静态资源,是否在以配置的资源列表中,如果是,则读取保存在本地的静态资源作为请求的真实响应,欺骗浏览器,从而达到修改样式的目的;
除了这样修改样式,还需要对每一次经过 Fiddler 的请求判断是否为转发到 http://demo.hbtsoft.cn:8081 的,如果是,则读取保存在12.12服务器上
`FiddlerScript`
脚本文件中的
`JSessionID`
,调用 Python 的FlaskServer 的api 判断是否过期,如果过期,则自动登录并获取最新的JSessionID保存在本地供后续请求使用。
具体逻辑在下面代码中,代码是
`FiddlerScript`
中做了修改的两个方法,分别对应请求转发前和请求响应前两个阶段对请求所做的过滤和修改操作。
```
C#
static function OnBeforeRequest(oSession: Session) {
// Sample Rule: Color ASPX requests in RED
// if (oSession.uriContains(".aspx")) { oSession["ui-color"] = "red"; }
// Sample Rule: Flag POSTs to fiddler2.com in italics
// if (oSession.HostnameIs("www.fiddler2.com") && oSession.HTTPMethodIs("POST")) { oSession["ui-italic"] = "yup"; }
// Sample Rule: Break requests for URLs containing "/sandbox/"
// if (oSession.uriContains("/sandbox/")) {
// oSession.oFlags["x-breakrequest"] = "yup"; // Existence of the x-breakrequest flag creates a breakpoint; the "yup" value is unimportant.
// }
if ((null != gs_ReplaceToken) && (oSession.url.indexOf(gs_ReplaceToken)>-1)) { // Case sensitive
oSession.url = oSession.url.Replace(gs_ReplaceToken, gs_ReplaceTokenWith);
}
if ((null != gs_OverridenHost) && (oSession.host.toLowerCase() == gs_OverridenHost)) {
oSession["x-overridehost"] = gs_OverrideHostWith;
}
if ((null!=bpRequestURI) && oSession.uriContains(bpRequestURI)) {
oSession["x-breakrequest"]="uri";
}
if ((null!=bpMethod) && (oSession.HTTPMethodIs(bpMethod))) {
oSession["x-breakrequest"]="method";
}
if ((null!=uiBoldURI) && oSession.uriContains(uiBoldURI)) {
oSession["ui-bold"]="QuickExec";
}
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
}
if (m_DisableCaching) {
oSession.oRequest.headers.Remove("If-None-Match");
oSession.oRequest.headers.Remove("If-Modified-Since");
oSession.oRequest["Pragma"] = "no-cache";
}
// User-Agent Overrides
if (null != sUA) {
oSession.oRequest["User-Agent"] = sUA;
}
if (m_Japanese) {
oSession.oRequest["Accept-Language"] = "ja";
}
if (m_AutoAuth) {
// Automatically respond to any authentication challenges using the
// current Fiddler user's credentials. You can change (default)
// to a domain\\username:password string if preferred.
//
// WARNING: This setting poses a security risk if remote
// connections are permitted!
oSession["X-AutoAuth"] = "(default)";
}
if (m_AlwaysFresh && (oSession.oRequest.headers.Exists("If-Modified-Since") || oSession.oRequest.headers.Exists("If-None-Match")))
{
oSession.utilCreateResponseAndBypassServer();
oSession.responseCode = 304;
oSession["ui-backcolor"] = "Lavender";
}
if (oSession.host.toLowerCase() == "192.168.12.12:8888") {
oSession.host = "demo.hbtsoft.cn:8081";
}
if (oSession.host.toLowerCase() == "demo.hbtsoft.cn:8081" && oSession.PathAndQuery=="/common/main") {
var http = " HTTP/1.1\r\nHost: localhost:5000\r\nConnection: keep-alive\r\nContent-Length: 0\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nOrigin: http://localhost\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36\r\nAccept: */*\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.8\r\n\r\n";
var login = "GET http://localhost:5000/login" + http;
try{
FiddlerObject.utilIssueRequest(login);
}
catch(e){
MessageBox.Show("send failed" + e.ToString());
}
}
// if (oSession.host.toLowerCase() == "demo.hbthost.cn:8082" && oSession.PathAndQuery=="/common/home") {
// oSession.oRequest.headers.Remove("Referer");
// }
if (oSession.HostnameIs("demo.hbtsoft.cn") && oSession.url != "demo.hbtsoft.cn:8081/") {
oSession.oRequest["Cookie"] = "JSESSIONID=CCCB2463FAA374F93F86EECA94B9F873";
}
}
```
```
C#
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304) {
oSession["ui-hide"] = "true";
}
if (oSession.HostnameIs("demo.hbtsoft.cn") && oSession.oResponse.headers.ExistsAndContains("Content-Type","text/html")){
oSession.utilDecodeResponse();
//oSession.utilReplaceInResponse('class="pf-user"','class="pf-user" style="display: none;"');
//oSession.utilReplaceInResponse('src=\"/resources/static/blue/images/login_logo_w.png\" style=\"height: 65px;width: 121px;\"','src=\"https://test.wohitech.com/assets/image/logo/%E7%86%8A%E7%8C%AB%E6%96%B0%E9%BB%91%E7%99%BD.png\" style=\"margin: 20px 50px;\"');
//oSession.utilReplaceInResponse('上海中地','');
}
// if (oSession.host.toLowerCase() == "localhost:5000" && oSession.PathAndQuery=="/login"){
// // var bodystr=oSession.GetResponseBodyAsString();
// // if (bodystr == "")
// // {
// // MessageBox.Show("No JSESSIONID");
// // }
// // var http = " HTTP/1.1\r\nHost: localhost:5000\r\nConnection: keep-alive\r\nContent-Length: 0\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nOrigin: http://localhost\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36\r\nAccept: */*\r\nAccept-Encoding: gzip, deflate\r\nAccept-Language: zh-CN,zh;q=0.8\r\n\r\n";
// // var register = "GET http://localhost:5000/register/"+ bodystr + http;
// // try{
// // FiddlerObject.utilIssueRequest(register);
// // }
// // catch(e){
// // MessageBox.Show("send failed" + e.ToString());
// // }
// }
}
```
#### FlaskServer
这只是一个不到100行代码的Python脚本,主要功能是实现JSessionID的过期检验和登录并更新FiddlerScript本地JSessionID,将这两个操作通过Flask的包发布成api,供FiddlerScript中的请求处理消费。
代码位置:12.12服务器的 D:
\F
laskServer 目录下
### BIM三位数据模型展示
代码仓库:https://g.civnet.cn:8443/wangjinbo/haianbim.git
所属群组:放在个人项目中,因为是临时项目,为避免污染群组,帐号:wangjinbo/wangjinbo
#### 描述
该项目也没什么好说的,用了一个国外大神写的开源插件,将AutoDesk的Revit三维数据模型转换成了支持Three.js 的Json数据格式,然后用Three.js 进行了简单展示。具体看代码,包含了项目的十多个数据。
关于这个插件以及数据转换的具体资料:
[
Add-In Integration
](
http://help.autodesk.com/view/RVT/2019/ENU/?guid=Revit_API_Revit_API_Developers_Guide_Introduction_Add_In_Integration_html
)
[
RvtVa3c Source Code
](
https://github.com/va3c/RvtVa3c
)
[
Exporting RVT BIM to JSON, WebGL and Forge
](
https://thebuildingcoder.typepad.com/blog/2016/07/exporting-rvt-bims-to-webgl-and-forge.html
)
### GitLabServer
代码仓库:无
所属群组:无
#### 描述
GitLabServer 是我们公司的中心Git仓库,运行在12.1服务器上,12.1服务器装的是CentOS操作系统, 然后GitLabServer使用的是官网提供的 Omnibus GitLab 方案,它是一个完整的开箱即用的软件包,包含了自身需要的全部软件服务支持,简单部署就可以立即使用,使用的安装方式是 Docker 安装,官网的操作文档在
[
这里
](
https://docs.gitlab.com/omnibus/docker/README.html
)
。我也记录了Docker run的运行命令,在
[
这里
](
https://g.civnet.cn:8443/wangjinbo/Svn-to-Git/blob/master/doc/%E5%85%B3%E4%BA%8E12.1%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E9%85%8D%E7%BD%AE.md#%E6%9C%8D%E5%8A%A1%E5%99%A8
)
。
```
shell
sudo
docker run
--detach
\
--hostname
gitlab.wohitech.com
\
--publish
443:443
\
--publish
80:80
\
--publish
22:22
\
--publish
8880:8880
\
--publish
8443:8443
\
--publish
8822:8822
\
--name
gitlab
\
--restart
always
\
--volume
/srv/gitlab/config:/etc/gitlab
\
--volume
/srv/gitlab/logs:/var/log/gitlab
\
--volume
/srv/gitlab/data:/var/opt/gitlab
\
registry.docker-cn.com/gitlab/gitlab-ce:latest
```
在这条 Docker run 命令中,
`--hostname`
进行了域名绑定,但是实际上可以运行后在配置文件中修改,目前绑定的域名是
`g.civnet.cn:8443`
。
`--publish`
进行了容器和主机之间的端口映射。
`--name`
指定容器名称,当前的容器名称是
`gitlab-bak`
,
`gitlab`
那个没有 启动,也不需要启动,可以移除了。
`--restart`
指定自动重启行为。
`--volume`
指定了Docker容器路径挂载到主机文件系统中的路径。
在上述命令中,我其实将我们的代码仓库的实体文件保存在了宿主机中。及时删除了这个Docker容器,只要用同样的命令启动了一个新的容器,只要启动参数保持和上面一直,新启动的容器是可以完全代替删除的容器继续工作。
#### 配置文件维护
GitLab Server的配置文件路径在宿主机的 /srv/gitlab/config/gitlab.rb 中,配置项相当多,但是官网有详细解释,可以去看,如果没有复杂需求,目前的配置是满足使用的。
如果修改了配置文件,需要重启Docker才能生效,命令为
```
shell
sudo
docker
exec
-it
gitlab-bak gitlab-ctl reconfigure
```
### Zabbix
代码仓库:无
所属群组:无
#### 描述
Zabbix监控系统,也是部署在 12.1 服务器上的,以Docker 容器的方式部署,具体操作和配置我有写文档,看
[
这里
](
https://g.civnet.cn:8443/wangjinbo/Svn-to-Git/blob/master/doc/%E5%85%B3%E4%BA%8E12.1%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E9%85%8D%E7%BD%AE.md#zabbix-%E7%9B%91%E6%8E%A7
)
就可以了
Zabbix和GitlabServer 不同,前者运行了3个Docker容器,分别是mysql数据库,zabbixserver容器,和zabbix-web-nginx-mysql容器
Docker run脚本在
[
这里
](
https://g.civnet.cn:8443/wangjinbo/Svn-to-Git/blob/master/doc/%E5%85%B3%E4%BA%8E12.1%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E9%85%8D%E7%BD%AE.md#%E6%9C%8D%E5%8A%A1%E5%99%A8
)
,Zabbix监控数据保存在mysql容器中,mysql容器的数据库文件通过文件系统映射挂载在主机系统下了,所以可以像GitlabServer一样安全地删除容器, 只要用相同的命令重新创建容器,亦然可以继续工作
### 电子书网站
代码仓库:无
所属群组:无
#### 描述
这个没什么好说的,可有可无,也是运行在Docker容器中,运行命令在
[
这里
](
https://g.civnet.cn:8443/wangjinbo/Svn-to-Git/blob/master/doc/%E5%85%B3%E4%BA%8E12.1%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E9%85%8D%E7%BD%AE.md#Calibre-web
)
,那个东西的使用操作方法在
[
这里
](
https://g.civnet.cn:8443/wangjinbo/Svn-to-Git/blob/master/doc/Calibre-web%E7%9A%84%E4%BD%BF%E7%94%A8.md
)
### 高德地图api分析
代码仓库:无
所属群组:无
#### 描述
这是一个难产的项目, 做到一半做不下去了,但是我把前面做的工作总结了一下,记录在
[
这里
](
https://g.civnet.cn:8443/wangjinbo/Svn-to-Git/blob/master/doc/%E5%88%86%E6%9E%90%E9%AB%98%E5%BE%B7%E5%9C%B0%E5%9B%BE%E8%A1%8C%E6%94%BF%E5%8C%BA%E6%B3%A8%E8%AE%B0%E6%95%B0%E6%8D%AE.md
)
,后面如果继续做,可以借鉴经验或者吸取一下教训。
### 运服务器及内网Nginx
代码仓库:无
所属群组:无
#### 描述
这部分工作内容就是维护 wohitech.com 运服务器上的 Nginx 反向代理配置,需要为项目增加一些域名和HTTPS证书,对一些特殊需求, 需要修改代理参数配置等等,配置都在服务器上,Nginx 配置只能去看文档了
修改配置后需要运行
`nginx -t`
,在显示格式验证成功的情况下才可以
`nginx -s reload`
### 域名及HTTPS证书管理
代码仓库:无
所属群组:无
#### 描述
这部分比Nginx稍微麻烦一点点,因为 wohitech.com 这个主域名下最多只能同时申请20个二级域名的HTTPS证书,已经用完了,新申请的二级域名必须在申请满1年后才可以注销,那么如果需要新增二级域名和HTTPS证书怎么办,使用 Let’sEncrypt 免费证书,优点是免费,缺点是有效期只有3个月,90天,但是certbot工具每天会自动检测证书是否过期,如果过期会自动更新
配置方法记录在
[
这里
](
https://g.civnet.cn:8443/wangjinbo/Svn-to-Git/blob/master/doc/Certbot%E9%83%A8%E7%BD%B2LetsEncrypt%E7%9A%84HTTPS%E8%AF%81%E4%B9%A6.md
)
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment