mirror of https://github.com/hashicorp/boundary
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
420 lines
9.8 KiB
420 lines
9.8 KiB
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package target
|
|
|
|
const (
|
|
setChangesQuery = `
|
|
with
|
|
set_sources (source_id, type) as (
|
|
-- returns the SET list
|
|
select public_id, type
|
|
from credential_source_all_types
|
|
where public_id in (%s)
|
|
),
|
|
current_sources (source_id, type) as (
|
|
-- returns the current list
|
|
select credential_library_id, 'library'
|
|
from target_credential_library
|
|
where target_id = @target_id
|
|
and credential_purpose = @purpose
|
|
union
|
|
select credential_static_id, 'static'
|
|
from target_static_credential
|
|
where target_id = @target_id
|
|
and credential_purpose = @purpose
|
|
),
|
|
keep_sources (source_id) as (
|
|
-- returns the KEEP list
|
|
select source_id
|
|
from current_sources
|
|
where source_id in (select source_id from set_sources)
|
|
),
|
|
delete_sources (source_id, type) as (
|
|
-- returns the DELETE list
|
|
select source_id, type
|
|
from current_sources
|
|
where source_id not in (select source_id from set_sources)
|
|
),
|
|
insert_sources (source_id, type) as (
|
|
-- returns the ADD list
|
|
select source_id, type
|
|
from set_sources
|
|
where source_id not in (select * from keep_sources)
|
|
),
|
|
final (action, source_id, type) as (
|
|
select 'delete', source_id, type
|
|
from delete_sources
|
|
union
|
|
select 'add', source_id, type
|
|
from insert_sources
|
|
)
|
|
select * from final
|
|
order by action, source_id;
|
|
`
|
|
|
|
targetPublicIdList = `
|
|
select public_id, project_id from target
|
|
%s
|
|
;
|
|
`
|
|
|
|
estimateCountTargets = `
|
|
select sum(reltuples::bigint) as estimate from pg_class where oid in ('target_tcp'::regclass, 'target_ssh'::regclass, 'target_rdp'::regclass)
|
|
`
|
|
|
|
listTargetsTemplate = `
|
|
with targets as (
|
|
select public_id
|
|
from target
|
|
where %s -- search condition for applying permissions is constructed
|
|
order by create_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
tcp_targets as (
|
|
select *
|
|
from target_tcp
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
ssh_targets as (
|
|
select *
|
|
from target_ssh
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
rdp_targets as (
|
|
select *
|
|
from target_rdp
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
final as (
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
null as storage_bucket_id,
|
|
false as enable_session_recording,
|
|
'tcp' as type
|
|
from tcp_targets
|
|
union
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
storage_bucket_id,
|
|
enable_session_recording,
|
|
'ssh' as type
|
|
from ssh_targets
|
|
union
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
storage_bucket_id,
|
|
enable_session_recording,
|
|
'rdp' as type
|
|
from rdp_targets
|
|
)
|
|
select *
|
|
from final
|
|
order by create_time desc, public_id desc;
|
|
`
|
|
|
|
listTargetsPageTemplate = `
|
|
with targets as (
|
|
select public_id
|
|
from target
|
|
where (create_time, public_id) < (@last_item_create_time, @last_item_id)
|
|
and %s -- search condition for applying permissions is constructed
|
|
order by create_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
tcp_targets as (
|
|
select *
|
|
from target_tcp
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
ssh_targets as (
|
|
select *
|
|
from target_ssh
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
rdp_targets as (
|
|
select *
|
|
from target_rdp
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
final as (
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
null as storage_bucket_id,
|
|
false as enable_session_recording,
|
|
'tcp' as type
|
|
from tcp_targets
|
|
union
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
storage_bucket_id,
|
|
enable_session_recording,
|
|
'ssh' as type
|
|
from ssh_targets
|
|
union
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
storage_bucket_id,
|
|
enable_session_recording,
|
|
'rdp' as type
|
|
from rdp_targets
|
|
)
|
|
select *
|
|
from final
|
|
order by create_time desc, public_id desc;
|
|
`
|
|
|
|
refreshTargetsTemplate = `
|
|
with targets as (
|
|
select public_id
|
|
from target
|
|
where update_time > @updated_after_time
|
|
and %s -- search condition for applying permissions is constructed
|
|
order by update_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
tcp_targets as (
|
|
select *
|
|
from target_tcp
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
ssh_targets as (
|
|
select *
|
|
from target_ssh
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
rdp_targets as (
|
|
select *
|
|
from target_rdp
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
final as (
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
null as storage_bucket_id,
|
|
false as enable_session_recording,
|
|
'tcp' as type
|
|
from tcp_targets
|
|
union
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
storage_bucket_id,
|
|
enable_session_recording,
|
|
'ssh' as type
|
|
from ssh_targets
|
|
union
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
storage_bucket_id,
|
|
enable_session_recording,
|
|
'rdp' as type
|
|
from rdp_targets
|
|
)
|
|
select *
|
|
from final
|
|
order by update_time desc, public_id desc;
|
|
`
|
|
|
|
refreshTargetsPageTemplate = `
|
|
with targets as (
|
|
select public_id
|
|
from target
|
|
where update_time > @updated_after_time
|
|
and (update_time, public_id) < (@last_item_update_time, @last_item_id)
|
|
and %s -- search condition for applying permissions is constructed
|
|
order by update_time desc, public_id desc
|
|
limit %d
|
|
),
|
|
tcp_targets as (
|
|
select *
|
|
from target_tcp
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
ssh_targets as (
|
|
select *
|
|
from target_ssh
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
rdp_targets as (
|
|
select *
|
|
from target_rdp
|
|
where public_id in (select public_id from targets)
|
|
),
|
|
final as (
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
null as storage_bucket_id,
|
|
false as enable_session_recording,
|
|
'tcp' as type
|
|
from tcp_targets
|
|
union
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
storage_bucket_id,
|
|
enable_session_recording,
|
|
'ssh' as type
|
|
from ssh_targets
|
|
union
|
|
select public_id,
|
|
project_id,
|
|
name,
|
|
description,
|
|
default_port,
|
|
session_max_seconds,
|
|
session_connection_limit,
|
|
version,
|
|
create_time,
|
|
update_time,
|
|
worker_filter,
|
|
egress_worker_filter,
|
|
ingress_worker_filter,
|
|
default_client_port,
|
|
storage_bucket_id,
|
|
enable_session_recording,
|
|
'rdp' as type
|
|
from rdp_targets
|
|
)
|
|
select *
|
|
from final
|
|
order by update_time desc, public_id desc;
|
|
`
|
|
|
|
getCredentialLibraryCredentialTypeQuery = `
|
|
select credential_type
|
|
from credential_library
|
|
where public_id = ?
|
|
`
|
|
)
|