Leaked source code of windows server 2003
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.
 
 
 
 
 
 

613 lines
14 KiB

-- Script: uddi.net.admin.sql
-- Author: [email protected]
-- Description: Administrative stored procedures
-- Note: This file is best viewed and edited with a tab width of 2.
-- =============================================
-- Section: Publisher administration
-- =============================================
-- =============================================
-- Name: ADM_findPublisher
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'ADM_findPublisher' AND type = 'P')
DROP PROCEDURE ADM_findPublisher
GO
CREATE PROCEDURE ADM_findPublisher
@email nvarchar(450) = NULL,
@name nvarchar(450) = NULL,
@companyName nvarchar(100) = NULL
WITH ENCRYPTION
AS
BEGIN
DECLARE
@RC int,
@error int,
@context nvarchar(4000),
@contextID uniqueidentifier,
@rows int
SET @contextID = NEWID()
-- Check parameters
IF (@email IS NULL) AND (@name IS NULL) AND (@companyName IS NULL)
BEGIN
SET @error=50009 -- E_parmError
SET @context='At least one non-null parameter must be supplied.'
GOTO errorLabel
END
IF @email IS NOT NULL
BEGIN
EXEC @RC=net_find_publisher_email @contextID, @email, @rows OUTPUT
IF @RC<>0
BEGIN
SET @error=50006 -- E_subProcFailure
SET @context=''
GOTO errorLabel
END
IF @rows = 0
BEGIN
EXEC @RC=net_find_publisher_cleanup @contextID
IF @RC<>0
BEGIN
SET @error=50006 -- E_subProcFailure
SET @context=''
GOTO errorLabel
END
RETURN 0
END
END
IF @name IS NOT NULL
BEGIN
EXEC @RC=net_find_publisher_name @contextID, @name, @rows OUTPUT
IF @RC<>0
BEGIN
SET @error=50006 -- E_subProcFailure
SET @context=''
GOTO errorLabel
END
IF @rows = 0
BEGIN
EXEC @RC=net_find_publisher_cleanup @contextID
IF @RC<>0
BEGIN
SET @error=50006 -- E_subProcFailure
SET @context=''
GOTO errorLabel
END
RETURN 0
END
END
IF @companyName IS NOT NULL
BEGIN
EXEC @RC=net_find_publisher_companyName @contextID, @companyName, @rows OUTPUT
IF @RC<>0
BEGIN
SET @error=50006 -- E_subProcFailure
SET @context=''
GOTO errorLabel
END
IF @rows = 0
BEGIN
EXEC @RC=net_find_publisher_cleanup @contextID
IF @RC<>0
BEGIN
SET @error=50006 -- E_subProcFailure
SET @context=''
GOTO errorLabel
END
RETURN 0
END
END
EXEC @RC=net_find_publisher_commit @contextID = @contextID, @sortByNameAsc = 1, @sortByEmailAsc = 0, @sortByCompanyNameAsc = 0
IF @RC<>0
BEGIN
SET @error=50006 -- E_subProcFailure
SET @context=''
GOTO errorLabel
END
RETURN 0
errorLabel:
RAISERROR (@error, 16, 1, @context)
RETURN 1
END -- ADM_findPublisher
GO
-- =============================================
-- Name: ADM_setPublisherTier
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'ADM_setPublisherTier' AND type = 'P')
DROP PROCEDURE ADM_setPublisherTier
GO
CREATE PROCEDURE ADM_setPublisherTier
@PUID nvarchar(450),
@tier nvarchar(256)
WITH ENCRYPTION
AS
BEGIN
DECLARE
@publisherID bigint,
@tModelLimit int,
@businessLimit int,
@serviceLimit int,
@bindingLimit int,
@assertionLimit int,
@error int,
@context nvarchar(4000)
SET @publisherID = dbo.publisherID(@PUID)
-- Validate publisherID
IF (@publisherID IS NULL)
BEGIN
SET @error = 60150 -- E_unknownUer
SET @context = 'Unknown publisher.'
GOTO errorLabel
END
-- Validate tier parameter
IF @tier NOT IN ('1','2','unlimited')
BEGIN
SET @error = 50009 -- E_parmError
SET @context = 'Invalid tier specified.'
GOTO errorLabel
END
IF @tier = '1'
BEGIN
SET @tModelLimit=100
SET @businessLimit=1
SET @serviceLimit=4
SET @bindingLimit=2
SET @assertionLimit=10
END
ELSE
BEGIN
IF (@tier = '2') OR (@tier = 'unlimited')
BEGIN
SET @tModelLimit=NULL
SET @businessLimit=NULL
SET @serviceLimit=NULL
SET @bindingLimit=NULL
SET @assertionLimit=NULL
END
END
UPDATE
[UDO_publishers]
SET
[tModelLimit] = @tModelLimit,
[businessLimit] = @businessLimit,
[serviceLimit] = @serviceLimit,
[bindingLimit] = @bindingLimit,
[assertionLimit] = @assertionLimit
WHERE
([publisherID] = @publisherID)
RETURN 0
errorLabel:
RAISERROR (@error, 16, 1, @context)
RETURN 1
END -- ADM_setPublisherTier
GO
-- =============================================
-- Name: ADM_removePublisher
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'ADM_removePublisher' AND type = 'P')
DROP PROCEDURE ADM_removePublisher
GO
CREATE PROCEDURE ADM_removePublisher
@PUID nvarchar(450)
WITH ENCRYPTION
AS
BEGIN
DECLARE
@publisherID bigint,
@error int,
@context nvarchar(4000)
SET @publisherID = dbo.publisherID(@PUID)
-- Validate publisherID
IF (@publisherID IS NULL)
BEGIN
SET @error = 60150 -- E_unknownUser
SET @context = 'Invalid publisherID.'
GOTO errorLabel
END
DELETE FROM
[UDO_publishers]
WHERE
([publisherID] = @publisherID)
RETURN 0
errorLabel:
RAISERROR (@error, 16, 1, @context)
RETURN 1
END
GO
-- =============================================
-- Name: ADM_setPublisherStatus
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'ADM_setPublisherStatus' AND type = 'P')
DROP PROCEDURE ADM_setPublisherStatus
GO
CREATE PROCEDURE ADM_setPublisherStatus
@PUID nvarchar(450),
@publisherStatus nvarchar(256)
WITH ENCRYPTION
AS
BEGIN
DECLARE
@publisherID bigint,
@publisherStatusID tinyint,
@error int,
@context nvarchar(4000)
SET @publisherID = dbo.publisherID(@PUID)
-- Validate publisherID
IF (@publisherID IS NULL)
BEGIN
SET @error = 60150 -- E_unknownUser
SET @context = 'Unknown publisherID.'
GOTO errorLabel
END
-- Validate publisherStatus
SET @publisherStatusID = dbo.publisherStatusID(@publisherStatus)
IF @publisherStatusID IS NULL
BEGIN
SET @error = 50009 -- E_parmError
SET @context = 'Unknown publisher status ''' + @publisherStatus + ''''
GOTO errorLabel
END
UPDATE
[UDO_publishers]
SET
[publisherStatusID] = @publisherStatusID
WHERE
([publisherID] = @publisherID)
RETURN 0
errorLabel:
RAISERROR (@error, 16, 1, @context)
RETURN 1
END -- ADM_setPublisherStatus
GO
-- =============================================
-- Section: Miscellaneous
-- =============================================
-- =============================================
-- Name: ADM_execResetKeyImmediate
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'ADM_execResetKeyImmediate' AND type = 'P')
DROP PROCEDURE ADM_execResetKeyImmediate
GO
CREATE PROCEDURE ADM_execResetKeyImmediate
@keyLastResetDate nvarchar(4000) = NULL OUTPUT
WITH ENCRYPTION
AS
BEGIN
DECLARE
@error int,
@context nvarchar(4000),
@RC int,
@oldKeyLastResetDate varchar(8000)
-- Get the original last reset date. We need this value to compare against our new one as an additional check
-- to make sure we successfully generated a new key.
SET @oldKeyLastResetDate = ISNULL(dbo.configValue('Security.KeyLastResetDate'),'Monday, January 01, 0001 12:00:00 AM') -- DateTime.MinValue
-- Run extended stored proc to update security key. The new values will be put into the config table.
EXEC @RC=master.dbo.xp_reset_key
-- Make sure we ran successfully.
IF @RC <> 0
BEGIN
SET @error = 50006 -- E_subProcFailure
SET @context = ''
GOTO errorLabel
END
-- The key generation implementation in the extended stored proc is synchronous, so we should have a new
-- key value at this point.
SET @keyLastResetDate = dbo.configValue('Security.KeyLastResetDate')
-- Make sure the date is different.
IF @keyLastResetDate = @oldKeyLastResetDate
BEGIN
GOTO errorLabel
END
-- Success.
RETURN 0
errorLabel:
RETURN 1
END -- ADM_execResetKeyImmediate
GO
-- =============================================
-- Name: ADM_addServiceAccount
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'ADM_addServiceAccount' AND type = 'P')
DROP PROCEDURE ADM_addServiceAccount
GO
CREATE PROCEDURE ADM_addServiceAccount
@accountName nvarchar(128)
WITH ENCRYPTION
AS
BEGIN
DECLARE
@error int,
@context nvarchar(4000),
@RC int,
@SID varbinary(85),
@isDbo bit
-- Grant database server access to security account
EXEC @RC=sp_grantlogin @accountName
IF @RC <> 0
BEGIN
SET @error = 50006 -- E_subProcFailure
SET @context = ''
GOTO errorLabel
END
SET @SID = SUSER_SID(@accountName)
-- Determine if user is dbo
SET @isDbo = 0
IF EXISTS( SELECT * FROM [sysusers] WHERE [name] = 'dbo' AND [sid] = @SID )
SET @isDbo = 1
-- Grant database access to security account
IF ( (@isDbo = 0) AND ( NOT EXISTS ( SELECT * FROM [sysusers] WHERE [sid] = @SID ) ) )
BEGIN
EXEC @RC=sp_grantdbaccess @accountName
IF @RC <> 0
BEGIN
SET @error = 50006 -- E_subProcFailure
SET @context = ''
GOTO errorLabel
END
END
-- Add security account to UDDIService role
IF ( (@isDbo = 0) AND ( EXISTS ( SELECT * FROM [sysusers] WHERE [sid] = @SID ) ) )
BEGIN
EXEC @RC=sp_addrolemember 'UDDIService', @accountName
IF @RC <> 0
BEGIN
SET @error = 50006 -- E_subProcFailure
SET @context = ''
GOTO errorLabel
END
END
-- Add security account to sysadmin server role
-- EXEC @RC=sp_addsrvrolemember @accountName, 'sysadmin'
--IF @RC <> 0
--BEGIN
--SET @error = 50006 -- E_subProcFailure
--SET @context = ''
--GOTO errorLabel
--END
RETURN 0
errorLabel:
RAISERROR (@error, 16, 1, @context)
RETURN 1
END -- ADM_addServiceAccount
GO
-- =============================================
-- Name: ADM_setAdminAccount
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'ADM_setAdminAccount' AND type = 'P')
DROP PROCEDURE ADM_setAdminAccount
GO
CREATE PROCEDURE ADM_setAdminAccount
@accountName nvarchar(128)
WITH ENCRYPTION
AS
BEGIN
DECLARE
@error int,
@context nvarchar(4000),
@RC int,
@SID varbinary(85),
@isDbo bit,
@tmpString nvarchar(128),
@prevAccountName sysname,
@prevAccountSID varbinary(85)
-- Grant database server access to security account
EXEC @RC=sp_grantlogin @accountName
IF @RC <> 0
BEGIN
SET @error = 50006 -- E_subProcFailure
SET @context = ''
GOTO errorLabel
END
SET @SID = SUSER_SID(@accountName)
-- Determine if user is dbo
SET @isDbo = 0
IF EXISTS( SELECT * FROM [sysusers] WHERE [name] = 'dbo' AND [sid] = @SID )
SET @isDbo = 1
-- Grant database access to security account
IF ( (@isDbo = 0) AND ( NOT EXISTS ( SELECT * FROM [sysusers] WHERE [sid] = @SID ) ) )
BEGIN
EXEC @RC=sp_grantdbaccess @accountName
IF @RC <> 0
BEGIN
SET @error = 50006 -- E_subProcFailure
SET @context = ''
GOTO errorLabel
END
END
-- Add security account to UDDIService role
IF ( (@isDbo = 0) AND ( EXISTS ( SELECT * FROM [sysusers] WHERE [sid] = @SID ) ) )
BEGIN
EXEC @RC=sp_addrolemember 'UDDIAdmin', @accountName
IF @RC <> 0
BEGIN
SET @error = 50006 -- E_subProcFailure
SET @context = ''
GOTO errorLabel
END
END
-- Get the previous account
CREATE TABLE #tempTable(
[dbRole] sysname,
[memberName] sysname,
[memberSID] varbinary(85))
INSERT #tempTable EXEC sp_helprolemember 'UDDIAdmin'
SELECT
@prevAccountName = [memberName],
@prevAccountSID = [memberSID]
FROM
#tempTable
WHERE
[memberName] <> @accountName
-- Revoke database access from old account
IF (@prevAccountName IS NOT NULL) OR (@prevAccountSID IS NOT NULL)
BEGIN
EXEC @RC=sp_revokedbaccess @prevAccountName
IF @RC <> 0
BEGIN
SET @error = 50006 -- E_subProcFailure
SET @context = ''
GOTO errorLabel
END
END
-- Add security account to sysadmin server role
--EXEC @RC=sp_addsrvrolemember @accountName, 'sysadmin'
--
--IF @RC <> 0
--BEGIN
--SET @error = 50006 -- E_subProcFailure
--SET @context = ''
--GOTO errorLabel
--END
RETURN 0
errorLabel:
RAISERROR (@error, 16, 1, @context)
RETURN 1
END -- ADM_setAdminAccount
GO
-- =============================================
-- Section: AD publication
-- =============================================
-- =============================================
-- Name: net_businessEntity_bindingTemplates_get
-- =============================================
IF EXISTS (SELECT name FROM sysobjects WHERE name = N'net_businessEntity_bindingTemplates_get' AND type = 'P')
DROP PROCEDURE net_businessEntity_bindingTemplates_get
GO
CREATE PROCEDURE net_businessEntity_bindingTemplates_get
@businessKey uniqueidentifier
WITH ENCRYPTION
AS
BEGIN
DECLARE
@error int,
@context nvarchar(4000),
@businessID bigint
SET @businessID = dbo.businessID(@businessKey)
IF @businessID IS NULL
BEGIN
SET @error = 60210
SET @context = 'businessKey=' + dbo.UUIDSTR(@businessKey)
GOTO errorLabel
END
SELECT
BT.[bindingKey],
BS.[serviceKey],
UT.[URLType],
BT.[accessPoint],
BT.[hostingRedirector]
FROM
[UDC_bindingTemplates] BT
JOIN [UDC_URLTypes] UT ON BT.[URLTypeID] = UT.[URLTypeID]
JOIN [UDC_businessServices] BS ON BT.[serviceID] = BS.[serviceID]
WHERE
(BS.[businessID] = @businessID)
RETURN 0
errorLabel:
RAISERROR (@error, 16, 1, @context)
RETURN 1
END -- net_businessEntity_bindingTemplates_get
GO