1. 连接器/对接

如果需要进行连接器对接,需要按照这个文档实现OPEN-C3定义的接口。

2. 登录

2.1. 获取用户信息

说明:

通过cookie查询用户的信息,配置示例:
http://api.connector.open-c3.org/internal/user/username?cookie=

系统调用的时候会把用户的cookie带入进行查询。

调用示例:

[root@openc3-srv-docker /]# curl 'http://api.connector.open-c3.org/internal/user/username?cookie=v2aOqUGsQ2mdNrVgynQW73qzWTrXwPlXKgRClIJQdIIZYPPmD7Zz0q2HqhQx3Svd'
{
   "stat" : true,
   "data" : {
      "admin" : 1,
      "showconnector" : 1,
      "company" : "default",
      "user" : "open-c3"
   }
}

返回结果说明:

stat: true # 查询正常,固定内容。如果系统故障可以返回false
data: 返回查询的内容
data.admin # 0 或 1, 1时表示该用户为管理员,OPEN-C3会通过这个控制前端的显示,有些页面只有管理员可见。
data.showconnector # 0 或 1, OPEN-C3通过这个来控制前端是否显示连接器页面。1为显示。
data.company # 表示公司的名称,为一个字符串。用来控制镜像和密钥共享(密钥和镜像可以选择共享给组织内部)。
data.user # 用户名称,这里最好返回的是用户的邮箱。

2.2. 用户登出

说明:

通过cookie调用注销用户的登录:
http://api.connector.open-c3.org/default/user/logout?sid=
系统调用的时候会把用户的cookie带入进行调用。

调用示例:

[root@openc3-srv-docker /]# curl 'http://api.connector.open-c3.org/default/user/logout?sid=v2aOqUGsQ2mdNrVgynQW73qzWTrXwPlXKgRClIJQdIIZYPPmD7Zz0q2HqhQx3Svd'
{
   "stat" : true,
   "info" : "ok"
}

2.3. 回调

说明:

该地址为当检查到用户没有登录时要跳转的页面,有如下两种格式

格式一:/#/login?callback=

格式二:http://sso.mydomain.org/login?callback=

(格式一不是以http开通,系统会默认带上OPEN-C3当前的域名。)

跳转过程中会把访问OPEN-C3的地址带在后面,如:

http://sso.mydomain.org/login?callback=http://www.open-c3.org/#/connector/config/123

2.4. cookie名

平台用的cookie名称。

3. 服务树

3.1. 用户服务树

说明:

通过cookie查询用户的服务树信息,配置示例:
http://api.connector.open-c3.org/default/tree

系统调用的时候会把用户的cookie带入进行查询。

调用示例:

[root@openc3-srv-docker /]# curl 'http://api.connector.open-c3.org/default/tree?cookie=j8wKymLzyeJGT0GLIF4QIDLgRWo8vD3Kk7Kjcjsvw0gHG68U9kKGfxDW0xdtGWtK'
{
   "stat" : true,
   "data" : [
      {
         "children" : [
            {
               "children" : [
                  {
                     "children" : [
                        {
                           "id" : 10,
                           "name" : "c3_demo"
                        }
                     ],
                     "id" : 9,
                     "name" : "opsdev"
                  }
               ],
               "id" : 8,
               "name" : "ops"
            }
         ],
         "id" : 7,
         "name" : "open-c3"
      }
   ]
}

3.2. 全量服务树

说明:

通过appname、appkey查询平台的全量服务树。配置示例:
http://api.connector.open-c3.org/default/tree/map

调用示例:

[root@openc3-srv-docker /]# curl -H 'appname: jobx' -H 'appkey: 14318225215653259055111884215373' http://api.connector.open-c3.org/default/tree/map
{
   "stat" : true,
   "data" : [
      {
         "id" : 7,
         "name" : "open-c3",
         "update_time" : "0000-00-00 00:00:00",
         "len" : 1
      },
      {
         "update_time" : "0000-00-00 00:00:00",
         "len" : 2,
         "id" : 8,
         "name" : "open-c3.ops"
      },
      {
         "update_time" : "0000-00-00 00:00:00",
         "len" : 3,
         "name" : "open-c3.ops.opsdev",
         "id" : 9
      },
      {
         "name" : "open-c3.ops.opsdev.c3_demo",
         "id" : 10,
         "update_time" : "0000-00-00 00:00:00",
         "len" : 4
      }
   ]
}

3.3. 服务树资源

说明:

通过appname、appkey查询指定服务树节点机器资源。配置示例:
http://api.connector.open-c3.org/default/node/api/

查询过程中会在末尾添加查询的服务树节点号。

调用示例:

[root@openc3-srv-docker /]# curl -H 'appname: jobx' -H 'appkey: 14318225215653259055111884215373' http://api.connector.open-c3.org/default/node/api/0 
{
   "data" : [],
   "stat" : true
}
[root@openc3-srv-docker /]# curl -H 'appname: jobx' -H 'appkey: 14318225215653259055111884215373' http://api.connector.open-c3.org/default/node/api/10
{
   "stat" : true,
   "data" : [
      {
         "id" : 0,
         "type" : "idc",
         "exip" : "",
         "inip" : "10.60.77.61",
         "name" : "10.60.77.61"
      },
      {
         "inip" : "10.60.77.62",
         "name" : "10.60.77.62",
         "exip" : "",
         "id" : 1,
         "type" : "idc"
      },
      {
         "exip" : "",
         "type" : "idc",
         "id" : 2,
         "inip" : "10.60.77.75",
         "name" : "10.60.77.75"
      }
   ]
}

3.4. 权限控制

权限点分两种类型,一种是和服务树相关,另一种是服务树无关。

服务树接口示例:
http://api.connector.open-c3.org/default/auth/point

服务树无关:
http://api.connector.open-c3.org/default/auth/point?point=$point&cookie=$cookie

服务树相关:
http://api.connector.open-c3.org/default/auth/point?point=$point&treeid=$treeid&cookie=$cookie

权限点:

    #级别说明: 0=> 登录用户 1 => 研发 2 => 运维 3 => 管理员

    # 全局权限点
    my %pointG = (
        openc3_job_root          => [          3 ], # job管理员
        openc3_jobx_root         => [          3 ], # jobx管理员
        openc3_ci_root           => [          3 ], # ci管理员
        openc3_agent_root        => [          3 ], # agent管理员
        openc3_connector_root    => [          3 ], # connector管理员
    );

    # 服务树相关权限点
    my %pointT = (
        openc3_job_read          => [ 0, 1, 2, 3 ], # 读取job的信息
        openc3_job_write         => [       2, 3 ], # 修改job的配置
        openc3_job_delete        => [       2, 3 ], # 删除job的配置
        openc3_job_vssh          => [       2, 3 ], # 使用虚拟终端
        openc3_job_vsshnobody    => [    1, 2, 3 ], # 使用nobody用户的虚拟终端
        openc3_job_control       => [    1, 2, 3 ], # 操作job

        openc3_jobx_read         => [ 0, 1, 2, 3 ], # 读取jobx的信息
        openc3_jobx_write        => [       2, 3 ], # 修改jobx的配置
        openc3_jobx_delete       => [       2, 3 ], # 删除jobx的配置
        openc3_jobx_control      => [    1, 2, 3 ], # 操作jobx

        openc3_ci_read           => [ 0, 1, 2, 3 ], # 读取ci的信息
        openc3_ci_write          => [       2, 3 ], # 修改ci的配置
        openc3_ci_delete         => [       2, 3 ], # 删除ci的配置
        openc3_ci_control        => [    1, 2, 3 ], # 操作ci

        openc3_agent_read        => [ 0, 1, 2, 3 ], # 读取agent的信息
        openc3_agent_write       => [       2, 3 ], # 修改agent的配置
        openc3_agent_delete      => [       2, 3 ], # 删除agent的配置

        openc3_connector_read    => [ 0, 1, 2, 3 ], # 读取connector的信息
        openc3_connector_write   => [       2, 3 ], # 修改conector的配置
        openc3_connector_delete  => [       2, 3 ], # 删除connector的配置
    );

调用示例:

[root@openc3-srv-docker /]# curl 'http://api.connector.open-c3.org/default/auth/point?point=openc3_job_read&cookie=j8wKymLzyeJGT0GLIF4QIDLgRWo8vD3Kk7Kjcjsvw0gHG68U9kKGfxDW0xdtGWtK'
{
   "data" : 1,
   "stat" : true
}
[root@openc3-srv-docker /]# curl 'http://api.connector.open-c3.org/default/auth/point?point=openc3_job_read&treeid=10&cookie=j8wKymLzyeJGT0GLIF4QIDLgRWo8vD3Kk7Kjcjsvw0gHG68U9kKGfxDW0xdtGWtK'
{
   "data" : 1,
   "stat" : true
}

返回结果说明:

stat: true # 查询正常
data: 是否有权限,1为有权限,0为无权限

4. 消息出口

消息出口需要appname和appkey完成验证【添加http的Header】。

4.1. 邮件

配置的地址示例:
http://api.connector.open-c3.org/default/mail

调用方式:POST

参数
user:用户名,接口需要自己查询对应的用户的邮箱地址
title: 邮件标题
content: 邮件内容

返回:{ stat: true }

4.2. 短信

配置的地址如下:
http://api.connector.open-c3.org/default/mesg

调用方式:POST

参数
user:用户名,接口需要自己查询对应的用户的手机号
mesg: 短信内容

返回:{ stat: true }

4.3. 语音

配置的地址如下:
http://api.connector.open-c3.org/default/mesg
#使用内置是和短信接口一样

调用方式:POST

参数
user:用户名,接口需要自己查询对应的用户的手机号
mesg: 语音内容

返回:{ stat: true }

5. 外部辅助审批

用于辅助审批,如有OA系统,可以进行OA审批对接。

可以缺省,缺省情况下说明无外部审批功能。

5.1. 审批接口

审批接口示例: http://api.connector.open-c3.org/connectorx/approval

需要实现两个调用,GET和POST,POST用于提交审批,GET用于查询审批状态。

方法:POST
参数
content: 审批内容
submitter: 提交人
approver: 审批人
返回 { stat: true, data: $uuid } #其中$uuid为外部系统的审批单号


方法:GET
参数:uuid
返回{ stat: true, data: { status: $status, reason: 'null' } } 
其中$status 为审批单据的状态,状态可以为agree(同意)、refuse(拒绝)、unconfirmed(未审批)

6. 其他

连接器使用的HTTP Header进行验证的部分,在前端页面上不是每一个都可以进行配置,
如果前端上没有进行显示,可以直接修改配置文件/data/open-c3/Connector/config.inix。

可以参考下面配置:

cookiekey: sid
pmspoint: http://console.jy.com/api/keystone/platform/permission
pmspointenv:
  appkey: kkk
  appname: ad

ssocallback: http://console.jy.com/account/login?from=openc3&redirect=http://openc3.org/api/connector/connectorx/setcookie?c3redirect=
ssochpasswd: http://console.jy.com/setting/personalGroup/myprofile
ssologoutaddr: http://console.jy.com/account/login?from=openc3logout&redirect=http://openc3.org/api/connector/connectorx/setcookie?c3redirect=http://openc3.org
ssousername: http://console.jy.com/api/keystone/platform/user?cookie=
ssousernameenv:
  appkey: kkk
  appname: ad

usertree: http://console.jy.com/api/keystone/platform/servicetree
usertreeenv:
  appkey: kkk
  appname: ad

nodeinfo: http://console.jy.com/api/platform/c3/serviceTree/node/
nodeinfoenv:
  appkey: kkk
  appname: ad

treemap:  http://console.jy.com/api/keystone/platform/allservicetree
treemapenv:
  appkey: kkk
  appname: ad

usermail: http://api.connector.open-c3.org/default/mail
usermailenv:
  appkey: c3random
  appname: jobx

usermesg: http://api.connector.open-c3.org/default/mesg
usermesgenv:
  appkey: c3random
  appname: jobx

上面配置中使用到了http://openc3.org/api/connector/connectorx/setcookie接口进行cookie的单独处理。

把http://openc3.org改成本服务的地址。
把http://console.jy.com改成提供连接器接口的地址。
在页面上重新保存不会影响多出来的参数。

关于登出接口,如果有ssologoutapi,会使用该接口进行api调用进行登出,
如果没有ssologoutapi而是配置了ssologoutaddr,会通过重定向到ssologoutaddr进行登出。
如果ssologoutapi和ssologoutaddr都没有系统会报错。

6.1. 资源释放

连接器中的服务树被外部系统接管后,服务树节点的删除要询问OPEN-C3系统该节点是否可以删除,从而保证系统一致。

询问方法:

http://open-c3.my.domain/api/connector/release?id=服务树节点id
接口会返回两种情况,都为字符串,分别为: true 、 false 【其中true表示服务树可以释放可以删除,false表示不能删除】
Copyright 2020 - 2020. all right reserved,powered by Gitbook该文件修订时间: 2024-03-10 12:41:21

results matching ""

    No results matching ""