source_ma - Universität Rostock

Werbung
Quellen der LBS-Erweiterung für einen rollenbasierten Zugang zu
elektronischen Ressourcen - UB Rostock - Stand: 04.06.2008
Lokales Bibliothekssystem: LBS-PICA, Version: LBS3-Port/LBS4
Verzeichnisdienst: Microsoft W2K3 / Active Directory
1) Skripts zur Ausführung auf dem LBS-Host
- Abgleich der Tabelle xprivate_adstore mit den LBS-Benutzerkonten (Snapshot)
Benutzte Tabellen der LBS-Datenbank (LBS3-Port/LBS4):
borrower (primäre Tabelle Benutzer)
create table dbo.borrower (
address_id_nr
int not null,
borrower_bar
udvc_borrower_bar
null,
iln smallint
not null,
reminder_address
tinyint not null,
ill_number udsi_ill_number not null,
name_key
udch_name_key
null,
registration_number udvc_registration_number
null,
borrower_status udti_borrower_status
not null,
borrower_type
udti_borrower_type not null,
date_of_birth
uddt_date
null,
edit_date
uddt_edit_date not null,
first_name_initials_prefix udvc_initials_prefix
null,
free_text
udvc_free_text null,
gender udti_gender not null,
input_date uddt_input_date not null,
language_code
udch_language_code not null,
message varchar(120)
null,
name
udvc_name
null,
person_titles
udvc_title null,
proof_of_identity
udvc_proof_of_identity null,
query_name udvc_query_name not null,
source udti_source not null,
sub_query_name udch_sub_query_name not null,
borrower_ts timestamp
null,
free_text_block udvc_text
null,
email_address
udvc_address
null,
institution_code
smallint
null,
date_time_last_active
uddt_date
null,
pica_timestamp int null,
end_user_key
nvarchar(16)
null,
no_log_action_idm
tinyint null
)
create clustered index borrower_ind06
on dbo.borrower (sub_query_name, query_name, address_id_nr)
on 'ous_default_segment'
create unique nonclustered index borrower_ind01
on dbo.borrower (address_id_nr)
on 'ous_default_segment'
create nonclustered index borrower_ind02
on dbo.borrower (borrower_bar, iln)
on 'ous_default_segment'
create nonclustered index borrower_ind03
on dbo.borrower (name_key, query_name, address_id_nr)
on 'ous_default_segment'
create nonclustered index borrower_ind04
on dbo.borrower (ill_number)
on 'ous_default_segment'
create nonclustered index borrower_ind05
on dbo.borrower (registration_number)
on 'ous_default_segment'
Trigger: borrower_del, borrower_ins, borrower_upd
1
membershp (Mitgliedschaft Benutzer)
create table dbo.membershp (
address_id_nr
int not null,
department_group_nr tinyint not null,
cum_total_outstand_reminders
udit_cum
not null,
cum_total_received_reminders
udit_cum
not null,
cum_total_requests udit_cum
not null,
cum_total_reservations udit_cum
not null,
expiry_date uddt_date
null,
iln smallint
not null,
membership_ts
timestamp
null,
pica_timestamp int null
)
create unique clustered index membership_ind01
on dbo.membershp (address_id_nr, department_group_nr)
on 'ous_default_segment'
Trigger: membershp_del_LBS3, membershp_ins, membershp_upd
xprivate_adstore (Steuerung Abgleich LBS-Benutzerverwaltung mit AD)
create table dbo.xprivate_adstore (
iln smallint
not null,
address_id_nr
int not null,
borrower_bar
varchar(20) not null,
borrower_type
tinyint not null,
borrower_type_ads
tinyint not null,
date_of_birth
datetime not null,
ins_date
datetime
not null,
upd_date
datetime
not null,
del_date
datetime
not null,
ads_action char(1) not null
)
create unique nonclustered index xprivate_adstore_ind01
on dbo.xprivate_adstore (borrower_bar, borrower_type_ads)
on 'ous_default_segment'
Relationen der Tabellen:
borrower
address_id_nr (primary key)
borrower_bar, iln (secondary key)
1:n (0..2)
1:n
membershp
address_id_nr (foreign key)
xprivate_adstore
iln = 62
borrower_bar (foreign key)
hro_ADStore (Shell-Skript LBS-Host für Erstellung Snapshot ) / Auszug
#
#
#
#
#
#
#
#
#
#
###############################################
hro_ADStore
History
02-06-2008
js:
- Version V008, AD-Client holt Snapshot via sql-script (bislang ftp) und
generiert sich selbst die Kommandoscripts fuer DEL,INS,UPD der Benutzer im AD
- Ausfuehrung hro_ADStore nur, wenn alle records auf no_action (X), d.h.
Bearbeitung durch AD-Client abgeschlossen wurde
###############################################
...
# starts only, if all records are set to "X"
$SYBASE/OCS-12_0/bin/isql -U$user -P$bla -i${HOME}/com/hro_ADStore_checkstart_sql | grep –i "(0
rows affected)" > ${HOME}/log/hro_ADStore_ckeckstart
if [ ! -s ${HOME}/log/hro_ADStore_ckeckstart ]
2
then
{
echo "From: sqlscript"
echo "Subject: SQL-LOG_062: hro_ADStore ERROR"
echo "AD-Client does not process the last Snapshot in xprivate_adstore!"
echo "Exit hro_ADStore !!!"
echo ""
echo "Please execute the AD-Client procedures !!!"
} | /usr/lib/sendmail -t [email protected]
exit 1
fi
$SYBASE/OCS-12_0/bin/isql -U$user -P$bla -i${HOME}/com/hro_ADStore_sql | tee -a
${HOME}/log/hro_ADStore
...
hro_ADStore_checkstart_sql (Skript für Check letzte Bearbeitung durch AD-Client)
/* Historie: */
/* 02-06-2008 - js:
ueberpruefen, ob alle records in xprivate_adstore auf no_action ("X") gesetzt
sind */
/*
nur dann soll Snapshot LBS zu xprivate_adstore gestartet werden */
/* ----------------------------------------------------------------------------------------- */
USE lbsdb
go
select * from xprivate_adstore where ads_action <> "X"
go
hro_ADStore_sql (Abgleich xprivate_adstore mit LBS-Benutzerverwaltung)
/* Historie: */
/* 17-10-2007 - js:
borrower_type_ads ergaenzt fuer virtuelle Nutzertypen */
/*
Virtueller Nutzertyp 118 = Jugendliche < 18 Jahre mit 3 Tagen Kulanz */
/* 18-01-2008 - js:
Unique Index in Tabelle auf borrower_bar, borrower_type_ads gesetzt */
/*
Insert Select Statement veraendert: */
/*
where x.address_id_nr = b.address_id_nr and x.borrower_bar = b.borrower_bar and
x.ads_action <> "D" */
/*
DELETE vor INSERT gezogen */
/* 01-06-2008 - js:
date_of_birth wieder in xprivate_adstore aufgenommen fuer vollstaendigen Snapshot
*/
/* ----------------------------------------------------------------------------------------- */
USE lbsdb
go
/* Taegliche Ausfuehrung */
/* ---------------------------------------------------- */
/* ACHTUNG LOESCHEN UND RUECKSETZEN TABLE xprivate_adstore SATZWEISE DURCH AUSFUEHRENDEN ADS-CLIENT
UB1LB001 */
/* via SQL-Script NACH KONTROLLE AUSFUEHRUNG DER JEWEILIGEN AKTION ! */
/* Historie: 07-10-17 - js: Nutzertyp 71 und virtueller Nutzertyp Jugendliche (118) ergaenzt */
/* DELETE vor UPDATE ausfuehren ! */
/* ---------------------------------------------------- */
SET ROWCOUNT 0
go
/* SET TO DELETE */
/* Kontrollliste */
/* 17-10-2007 - js: einen Tag vor 18. Geburtstag loeschen, am Folgetag dann Insert mit realem Nutzertyp
! */
PRINT 'FOR DELETE SELECTED :'
SELECT
x.address_id_nr, b.query_name, b.borrower_bar, b.borrower_type, x.borrower_type_ads
FROM
borrower b, membershp m, xprivate_adstore x
WHERE
b.iln=62
and (
b.borrower_status = 9 /* Nutzersperre */
or SUBSTRING (b.borrower_bar, 1, 1) = 'X' /* X-Barcodes */
or DATEDIFF(day,GETDATE(),m.expiry_date) < 0 /* ungueltige Mitgliedschaft */
/* 3 Tage vor 18. Geburtstag bereits umtragen */
or (
DATEDIFF(dd,GETDATE(),DATEADD(yy,18,b.date_of_birth)) < 3
AND x.borrower_type_ads = 118
)
3
or (
DATEDIFF(dd,GETDATE(),DATEADD(yy,18,b.date_of_birth)) > 3
AND x.borrower_type_ads <> 118
)
/* Inital NTYP118: */
/* or DATEADD(yy,18,b.date_of_birth) > GETDATE() */
)
and
and
and
and
and
and
m.department_group_nr = 1 /* Abt.Gruppe 1 = UB */
x.ads_action = 'X' /* vorhergehendes erfolgreiches Insert oder Update */
b.address_id_nr = m.address_id_nr
b.address_id_nr = x.address_id_nr
b.borrower_bar = x.borrower_bar
b.borrower_type = x.borrower_type
go
/* DELETE */
UPDATE
xprivate_adstore
SET
x.del_date = getdate(), x.ads_action = 'D'
FROM
borrower b, membershp m, xprivate_adstore x
WHERE
b.iln=62
and (
b.borrower_status = 9 /* Nutzersperre */
or SUBSTRING (b.borrower_bar, 1, 1) = 'X' /* X-Barcodes */
or DATEDIFF(day,GETDATE(),m.expiry_date) < 0 /* ungueltige Mitgliedschaft */
/* 3 Tage vor 18. Geburtstag bereits umtragen */
or (
DATEDIFF(dd,GETDATE(),DATEADD(yy,18,b.date_of_birth)) < 3
AND x.borrower_type_ads = 118
)
or (
DATEDIFF(dd,GETDATE(),DATEADD(yy,18,b.date_of_birth)) > 3
AND x.borrower_type_ads <> 118
)
/* Inital NTYP118: */
/* or DATEADD(yy,18,b.date_of_birth) > GETDATE() */
)
and m.department_group_nr = 1 /* Abt.Gruppe 1 = UB */
and x.ads_action = 'X' /* vorhergehendes erfolgreiches Insert oder Update */
and b.address_id_nr = m.address_id_nr
and b.address_id_nr = x.address_id_nr
and b.borrower_bar = x.borrower_bar
and b.borrower_type = x.borrower_type
go
/* Records loeschen, die keinen Bezug mehr zu borrower haben */
/* Notwendig bei Loeschen Nutzer, Wechsel Barcode, Wechsel Nutzertyp */
SET ROWCOUNT 1
go
DECLARE @address_id_nr int,
@address_id_nr_tmp int,
@borrower_type tinyint,
@borrower_bar varchar(20)
SELECT @address_id_nr_tmp = 0
WHILE EXISTS (
select * from xprivate_adstore x
where
x.ads_action <> 'I' /* Loesche nur Inserted Records U oder X */
and x.ads_action <> 'D' /* Loeschen nicht ueberschreiben */
and NOT EXISTS (select b.address_id_nr from borrower b
where x.address_id_nr = b.address_id_nr and x.borrower_bar = b.borrower_bar and
x.borrower_type = b.borrower_type)
)
BEGIN
SELECT @address_id_nr = x.address_id_nr, @borrower_bar = x.borrower_bar, @borrower_type =
x.borrower_type
from xprivate_adstore x
where
x.ads_action <> 'I' /* Loesche nur Inserted Records U oder X */
and x.ads_action <> 'D' /* Loeschen nicht ueberschreiben */
and NOT EXISTS (select b.address_id_nr from borrower b
where x.address_id_nr = b.address_id_nr and x.borrower_bar = b.borrower_bar and
x.borrower_type = b.borrower_type)
IF @address_id_nr = @address_id_nr_tmp
BEGIN
SELECT 'Break WHILE - DELETE, because address_id_nr was repeated: ' +
convert(varchar(10),@address_id_nr)
BREAK
END
/* Delete xprivate_adstore */
SELECT 'FOR DELETE SELECTED : ' + convert(varchar(10),@address_id_nr) + ' - ' + @borrower_bar
+ ' - ' + convert(char(2), @borrower_type)
/* SET TO DELETE */
UPDATE
4
xprivate_adstore
SET
del_date = getdate(), ads_action='D'
WHERE
address_id_nr = @address_id_nr
and borrower_bar = @borrower_bar
and borrower_type = @borrower_type
SELECT @address_id_nr_tmp = @address_id_nr
END
go
/* Neue Records uebertragen */
SET ROWCOUNT 1
go
/* Fehlende Records hinzufuegen */
PRINT 'FOR INSERT SELECTED :'
DECLARE @address_id_nr int,
@address_id_nr_tmp int,
@borrower_type tinyint,
@borrower_type_ads tinyint,
@borrower_type1 tinyint,
@borrower_type2 tinyint,
@borrower_type3 tinyint,
@borrower_type4 tinyint,
@borrower_type5 tinyint,
@borrower_type6 tinyint,
@borrower_type7 tinyint,
@borrower_type71 tinyint,
@borrower_type8 tinyint,
@borrower_bar varchar(20),
@date_of_birth datetime
SELECT @borrower_type1 = 10 /* Studenten UNI */
SELECT @borrower_type2 = 20 /* Studenten MV */
SELECT @borrower_type3 = 30 /* Professoren UNI */
SELECT @borrower_type4 = 40 /* Mitarbeiter UNI */
SELECT @borrower_type5 = 50 /* Mitarbeiter extern */
SELECT @borrower_type6 = 60 /* Mitarbeiter UB */
SELECT @borrower_type7 = 70 /* Externe Nutzer */
SELECT @borrower_type71 = 71 /* Externe Nutzer Wissenschaftlich */
SELECT @borrower_type8 = 80 /* Projekte */
SELECT @address_id_nr_tmp = 0
WHILE EXISTS (
select * from borrower b, membershp m
where
b.iln=62
and b.borrower_status <> 9 /* keine Nutzersperre */
and SUBSTRING (b.borrower_bar, 1, 1) <> 'X' /* keine X-Barcodes */
and m.department_group_nr = 1 /* Abt.Gruppe 1 = UB */
and DATEDIFF(day,GETDATE(),m.expiry_date) >= 0 /* gueltige Mitgliedschaft */
and (
b.borrower_type = @borrower_type1
OR b.borrower_type = @borrower_type2
OR b.borrower_type = @borrower_type3
OR b.borrower_type = @borrower_type4
OR b.borrower_type = @borrower_type5
OR b.borrower_type = @borrower_type6
OR b.borrower_type = @borrower_type7
OR b.borrower_type = @borrower_type71
OR b.borrower_type = @borrower_type8
)
and b.address_id_nr = m.address_id_nr
and NOT EXISTS (select x.address_id_nr from xprivate_adstore x
/* where x.address_id_nr = b.address_id_nr and x.borrower_bar =
b.borrower_bar and x.borrower_type = b.borrower_type) */
/* Modifiziert 18.01.08 - js */
where x.address_id_nr = b.address_id_nr and x.borrower_bar =
b.borrower_bar and x.ads_action <> "D")
)
BEGIN
SELECT @address_id_nr = b.address_id_nr, @borrower_bar = b.borrower_bar, @borrower_type =
b.borrower_type, @date_of_birth = b.date_of_birth
from borrower b, membershp m
where
b.iln=62
and b.borrower_status <> 9 /* keine Nutzersperre */
and SUBSTRING (b.borrower_bar, 1, 1) <> 'X' /* keine X-Barcodes */
and m.department_group_nr = 1 /* Abt.Gruppe 1 = UB */
and DATEDIFF(day,GETDATE(),m.expiry_date) >= 0 /* gueltige Mitgliedschaft */
and (
b.borrower_type = @borrower_type1
OR b.borrower_type = @borrower_type2
OR b.borrower_type = @borrower_type3
OR b.borrower_type = @borrower_type4
5
OR b.borrower_type = @borrower_type5
OR b.borrower_type = @borrower_type6
OR b.borrower_type = @borrower_type7
OR b.borrower_type = @borrower_type71
OR b.borrower_type = @borrower_type8
)
and b.address_id_nr = m.address_id_nr
and NOT EXISTS (select x.address_id_nr from xprivate_adstore x
/* where x.address_id_nr = b.address_id_nr and x.borrower_bar =
b.borrower_bar and x.borrower_type = b.borrower_type) */
/* Modifiziert 18.01.08 - js */
where x.address_id_nr = b.address_id_nr and x.borrower_bar =
b.borrower_bar and x.ads_action <> "D")
IF @address_id_nr = @address_id_nr_tmp
BEGIN
SELECT 'Break WHILE - INSERT, because address_id_nr was repeated: ' +
convert(varchar(10),@address_id_nr)
BREAK
END
/* virtuelle Gruppen abfragen */
/* Nutzertyp 118 = Jugendliche < 18 Jahre */
IF DATEDIFF(dd,GETDATE(),DATEADD(yy,18,@date_of_birth)) > 3
SELECT @borrower_type_ads = 118
ELSE
SELECT @borrower_type_ads = @borrower_type
SELECT @date_of_birth, DATEDIFF(dd,GETDATE(),DATEADD(yy,18,@date_of_birth)), @borrower_type_ads
/* Insert xprivate_adstore */
SELECT 'FOR INSERT SELECTED : ' + convert(varchar(10),@address_id_nr) + ' - ' + @borrower_bar
+ ' - ' + convert(char(2), @borrower_type) + ' - ' + convert(char(3), @borrower_type_ads)
INSERT
xprivate_adstore
VALUES
(62, @address_id_nr, @borrower_bar, @borrower_type, @borrower_type_ads, @date_of_birth,
getdate(), getdate(), '01.01.1800', 'I')
SELECT @address_id_nr_tmp = @address_id_nr
END
go
SET ROWCOUNT 0
go
/* SET TO UPDATE */
/* Kontrollliste */
PRINT 'FOR UPDATE SELECTED :'
SELECT
x.address_id_nr, b.query_name, b.borrower_bar, b.borrower_type, x.borrower_type_ads
FROM
borrower b, membershp m, xprivate_adstore x
WHERE
b.iln=62
and DATEDIFF(day,b.edit_date,x.upd_date) <= 0
and b.borrower_status <> 9 /* keine Nutzersperre */
and SUBSTRING (b.borrower_bar, 1, 1) <> 'X' /* keine X-Barcodes */
and m.department_group_nr = 1 /* Abt.Gruppe 1 = UB */
and DATEDIFF(day,GETDATE(),m.expiry_date) >= 0 /* gueltige Mitgliedschaft */
and x.ads_action = 'X' /* vorhergehendes erfolgreiches Insert oder Update */
and b.address_id_nr = m.address_id_nr
and b.address_id_nr = x.address_id_nr
and b.borrower_type = x.borrower_type
go
SET ROWCOUNT 1
go
/* UPDATE */
WHILE EXISTS (
select * from borrower b, membershp m, xprivate_adstore x
where
and
and
and
and
and
and
and
and
b.iln=62
and DATEDIFF(day,b.edit_date,x.upd_date) <= 0
b.borrower_status <> 9 /* keine Nutzersperre */
SUBSTRING (b.borrower_bar, 1, 1) <> 'X' /* keine X-Barcodes */
m.department_group_nr = 1 /* Abt.Gruppe 1 = UB */
DATEDIFF(day,GETDATE(),m.expiry_date) >= 0 /* gueltige Mitgliedschaft */
x.ads_action = 'X' /* vorhergehendes erfolgreiches Insert oder Update */
b.address_id_nr = m.address_id_nr
b.address_id_nr = x.address_id_nr
b.borrower_type = x.borrower_type
)
BEGIN
/* Geburtsdatum wird bei Update uebertragen */
6
UPDATE
xprivate_adstore
SET
x.upd_date = getdate(), x.date_of_birth = b.date_of_birth, x.ads_action = 'U'
FROM
borrower b, membershp m, xprivate_adstore x
WHERE
b.iln=62
and DATEDIFF(day,b.edit_date,x.upd_date) <= 0
and b.borrower_status <> 9 /* keine Nutzersperre */
and SUBSTRING (b.borrower_bar, 1, 1) <> 'X' /* keine X-Barcodes */
and m.department_group_nr = 1 /* Abt.Gruppe 1 = UB */
and DATEDIFF(day,GETDATE(),m.expiry_date) >= 0 /* gueltige Mitgliedschaft */
and x.ads_action = 'X' /* vorhergehendes erfolgreiches Insert oder Update */
and b.address_id_nr = m.address_id_nr
and b.address_id_nr = x.address_id_nr
and b.borrower_type = x.borrower_type
END
go
SET ROWCOUNT 0
go
hro_update_userdat_sql (Auszug)
- täglich ausgeführtes SQL-Skript zur Pflege der LBS-Datenbank
(automatischer Wechsel Benutzergruppe 71 zu 70 bei Ablauf der Mitgliedschaft)
PRINT ''
PRINT '///////////////////////////////////////////////////////'
PRINT '062-7a. NTYP 71 zu 70 bei Ende Mitgliedschaft'
PRINT 'LBS3/LBS3Port - ready'
PRINT '///////////////////////////////////////////////////////'
PRINT ''
SELECT "62:check 71 to 70 start "= getdate ()
go
DECLARE @iln smallint,
@borrower_type tinyint,
@borrower_type_to tinyint,
@dep_group tinyint
SELECT @iln = 62 /* UB ROSTOCK */,
@borrower_type = 71 /* from Nutzertyp */,
@borrower_type_to = 70 /* to Nutzertyp */,
@dep_group = 1 /* Abteilungsgruppe */
SELECT
b.address_id_nr,
b.borrower_bar,
b.borrower_status,
m.expiry_date,
b.query_name
FROM
borrower b, membershp m
WHERE
b.iln=@iln
AND b.borrower_type = @borrower_type
AND m.department_group_nr = @dep_group
AND DATEDIFF(day,GETDATE(),m.expiry_date) < 0
AND b.address_id_nr = m.address_id_nr
AND b.iln = m.iln
go
/* **** JETZT borrower UPDATEN **** */
SELECT "start update ..."
go
SET ROWCOUNT 1
go
DECLARE @iln smallint,
@borrower_type tinyint,
@borrower_type_to tinyint,
@dep_group tinyint
SELECT @iln = 62 /* UB ROSTOCK */,
@borrower_type = 71 /* from Nutzertyp */,
@borrower_type_to = 70 /* to Nutzertyp */,
7
@dep_group = 1 /* Abteilungsgruppe */
WHILE EXISTS(select *
FROM
borrower b, membershp m
WHERE
b.iln=@iln
AND b.borrower_type = @borrower_type
AND m.department_group_nr = @dep_group
AND DATEDIFF(day,GETDATE(),m.expiry_date) < 0
AND b.address_id_nr = m.address_id_nr
AND b.iln = m.iln )
BEGIN
UPDATE
borrower
SET
b.borrower_type = @borrower_type_to
FROM
borrower b, membershp m
WHERE
b.iln=@iln
AND b.borrower_type = @borrower_type
AND m.department_group_nr = @dep_group
AND DATEDIFF(day,GETDATE(),m.expiry_date) < 0
AND b.address_id_nr = m.address_id_nr
AND b.iln = m.iln
END
go
SET ROWCOUNT 0
go
SELECT "62:check 71 to 70 end "= getdate ()
go
2) Skripts zur Ausführung auf dem AD-Client
- Generieren Kommandoskript
- Einarbeiten der Benutzerdaten in das AD (Delete, Insert, Update)
- Setzen der Gruppenzugehörigkeit im AD
- Bestätigung der erfolgreichen AD-Aktionen durch Update (ads_action=X) oder Löschen
der entspr. Datensätze in xprivate_adstore
LBSUser_To_ADS_complete.bat (Main-Skript)
@echo off
SET
SET
SET
SET
GROUPFILE=E:\usr\lbs\admin\LBSUser_TO_ADS\hro_ADStoreINS_SetGroup.bat
CMDFILESQL=C:\BATCH\LBSUser_To_ADS_CMD.sql
CMDFILE=E:\usr\lbs\admin\LBSUser_TO_ADS\hro_ADStore_CMD.bat
TRANSACTFILE=E:\usr\lbs\admin\LBSUser_TO_ADS\hro_ADStore_TRANSACT.sql
rem 0. Altes Kommandofile loeschen
del %CMDFILE%
rem 1. Generieren der Kommandofiles aus LBS-Tabelle xprivate_adstore
echo Generieren Kommandofile aus LBS-Tabelle xprivate_adstore ...
echo C:\Soft\Tools\isql -Uuser -Ppassword -Shost.ub.uni-rostock.de -i%CMDFILESQL%
C:\Soft\Tools\isql -Uuser -Ppassword -Shost.ub.uni-rostock.de -i%CMDFILESQL% | findstr "LBSUser" >
%CMDFILE%
rem 2. Ausführen Kommandofile - User DELETE, INSERT, UPDATE
rem Gruppenfile Initialisieren
echo Initialisieren %GROUPFILE% ...
echo @echo off > %GROUPFILE%
echo. >> %GROUPFILE%
echo rem Zuordnung der INSERT-User zu Nutzergruppen >> %GROUPFILE%
echo. >> %GROUPFILE%
rem Transactfile Initialisieren
echo Initialisieren %TRANSACTFILE% ...
echo /* SQL-Script zur Bestaetigung der angeforderten Transactionen in der ADS */ > %TRANSACTFILE%
echo use lbsdb >> %TRANSACTFILE%
echo go >> %TRANSACTFILE%
echo PRINT 'SQL-Script zur Bestaetigung der angeforderten Transactionen in der ADS' >> %TRANSACTFILE%
echo go >> %TRANSACTFILE%
echo. >> %TRANSACTFILE%
rem WICHTIG - ZUERST LOESCHEN, DAMIT NTYP-WECHSEL MOEGLICH MIT GLEICHEM BARCODE !!! -
8
rem REIHENFOLGE IN %CMDFILE%: DEL, INS, UPD
echo Start ADS-Aktionen: %CMDFILE% ...
call %CMDFILE%
echo 20 sec pause ...
sleep 20
:setgroup
rem 3. Setzen der Gruppenzugehoerigkeit fuer Inserted User
echo Gruppenzugehoerigkeit setzen ...
echo call E:\usr\lbs\admin\LBSUser_TO_ADS\hro_ADStoreINS_SetGroup.bat
call E:\usr\lbs\admin\LBSUser_TO_ADS\hro_ADStoreINS_SetGroup.bat
echo 5 sec pause ...
sleep 5
:transact
rem 4. Transaktionen in LBS-Tabelle xprivate_adstore bestaetigen
echo Transaktionen in LBS-Tabelle xprivate_adstore bestaetigen ...
echo C:\Soft\Tools\isql -Uuser -Ppassword -Shost.ub.uni-rostock.de -i%TRANSACTFILE%
C:\Soft\Tools\isql -Uuser -Ppassword -Shost.ub.uni-rostock.de -i%TRANSACTFILE%
SET
SET
SET
SET
GROUPFILE=
CMDFILESQL=
CMDFILE=
TRANSACTFILE=
echo 10 sec pause ...
sleep 10
c:\soft\tools\now.exe "LBS-Snapshot to Active Directory on %COMPUTERNAME% processed." |
C:\Soft\tools\wmailto -s"AD-Client %COMPUTERNAME%: hro_ADStore" [email protected] f%COMPUTERNAME% -:ende
echo --- ende ---
LBSUser_To_ADS.bat (Sub-Skript zur Ausführung der AD-Aktionen)
Hinweis: hier mit festem Passwort (-canchpwd no -pwdneverexpires yes)
@echo off
SET GRPFILE=E:\usr\lbs\admin\LBSUser_TO_ADS\hro_ADStoreINS_SetGroup.bat
SET TRFILE=E:\usr\lbs\admin\LBSUser_TO_ADS\hro_ADStore_TRANSACT.sql
:check_syntax
IF "%1" ==
IF "%2" ==
IF "%3" ==
IF "%4" ==
IF "%5" ==
IF "%6" ==
goto start
""
""
""
""
""
""
goto
goto
goto
goto
goto
goto
syntax
syntax
syntax
syntax
syntax
syntax
:syntax
echo.
echo %1 %2 %3 %4 %5 %6
echo LBSUser_To_ADS [INS,UPD,DEL] borrower_bar borrower_type date_of_birth actual_date
borrower_type_ads
echo.
goto ende
goto ende
:TRINS
echo echo admod -b "cn=User_LBS_NTYP%6_Group,ou=User_LBS_NTYP_Groups,dc=ub,dc=unirostock,dc=de" "member:+:cn=%2,ou=user_lbs_ntyp%6,dc=ub,dc=uni-rostock,dc=de" -h ubdc.ub.uni-rostock.de
>> %GRPFILE%
echo admod -b "cn=User_LBS_NTYP%6_Group,ou=User_LBS_NTYP_Groups,dc=ub,dc=uni-rostock,dc=de"
"member:+:cn=%2,ou=user_lbs_ntyp%6,dc=ub,dc=uni-rostock,dc=de" -h ubdc.ub.uni-rostock.de >> %GRPFILE%
echo sleep -m 300 >> %GRPFILE%
echo update xprivate_adstore set ads_action = 'X' where borrower_bar = '%2' and borrower_type =
%3 and ads_action = 'I' >>%TRFILE%
echo go >>%TRFILE%
goto ende
:TRINSUPD
echo update xprivate_adstore set ads_action = 'X' where borrower_bar = '%2' and borrower_type =
%3 and ads_action = 'I' >>%TRFILE%
echo go >>%TRFILE%
9
goto ende
:TRUPD
echo update xprivate_adstore set ads_action = 'X' where borrower_bar = '%2' and borrower_type =
%3 and ads_action = 'U' >>%TRFILE%
echo go >>%TRFILE%
goto ende
:TRUPDADD
echo echo admod -b "cn=User_LBS_NTYP%6_Group,ou=User_LBS_NTYP_Groups,dc=ub,dc=unirostock,dc=de" "member:+:cn=%2,ou=user_lbs_ntyp%6,dc=ub,dc=uni-rostock,dc=de" -h ubdc.ub.unirostock.de >> %GRPFILE%
echo admod -b "cn=User_LBS_NTYP%6_Group,ou=User_LBS_NTYP_Groups,dc=ub,dc=uni-rostock,dc=de"
"member:+:cn=%2,ou=user_lbs_ntyp%6,dc=ub,dc=uni-rostock,dc=de" -h ubdc.ub.uni-rostock.de >> %GRPFILE%
echo sleep -m 300 >> %GRPFILE%
echo update xprivate_adstore set ads_action = 'X' where borrower_bar = '%2' and borrower_type =
%3 and ads_action = 'U' >>%TRFILE%
echo go >>%TRFILE%
goto ende
:TRDEL
echo delete xprivate_adstore where borrower_bar = '%2' and borrower_type = %3 and ads_action =
'D' >>%TRFILE%
echo go >>%TRFILE%
goto ende
:start
echo.
echo %1 %2 %3 %4
IF "%1" == "INS"
IF "%1" == "UPD"
IF "%1" == "DEL"
goto syntax
%5 %6
goto insert
goto update
goto delete
rem --------------------------------------------------------------------------------:insert
echo --- INSERT new user from LBS to ADS --echo - insert user adfind -b dc=ub,dc=uni-rostock,dc=de -f name=%2 -tdc -h ubdc.ub.uni-rostock.de | findstr %2
if errorlevel 1 goto insadd
if errorlevel 0 goto insmod
:insadd
echo dsadd user "CN=%2,OU=User_LBS_NTYP%6,DC=ub,DC=uni-rostock,DC=de" -pwd %4 -desc %3_%6_LBSINS%5 loscr login.bat -canchpwd no -pwdneverexpires yes -disabled no -s ubdc.ub.uni-rostock.de
dsadd user "CN=%2,OU=User_LBS_NTYP%6,DC=ub,DC=uni-rostock,DC=de" -pwd %4 -desc %3_%6_LBSINS%5 -loscr
login.bat -canchpwd no -pwdneverexpires yes -disabled no -s ubdc.ub.uni-rostock.de
if errorlevel 0 goto TRINS
:insmod
echo - user already exist - MAKE UPDATE
dsmod user "CN=%2,OU=User_LBS_NTYP%6,DC=ub,DC=uni-rostock,DC=de" -pwd %4 -desc %3_%6_LBSUPD%5 -loscr
login.bat -canchpwd no -pwdneverexpires yes -disabled no -s ubdc.ub.uni-rostock.de
if errorlevel 0 goto TRINSUPD
goto ende
rem --------------------------------------------------------------------------------:update
echo --- UPDATE user from LBS to ADS --echo - update user adfind -b dc=ub,dc=uni-rostock,dc=de -f name=%2 -tdc -h ubdc.ub.uni-rostock.de | findstr %2
if errorlevel 1 goto updadd
:updmod
echo dsmod user "CN=%2,OU=User_LBS_NTYP%6,DC=ub,DC=uni-rostock,DC=de" -pwd %4 -desc %3_%6_LBSUPD%5 loscr login.bat -canchpwd no -pwdneverexpires yes -disabled no -s ubdc.ub.uni-rostock.de
dsmod user "CN=%2,OU=User_LBS_NTYP%6,DC=ub,DC=uni-rostock,DC=de" -pwd %4 -desc %3_%6_LBSUPD%5 -loscr
login.bat -canchpwd no -pwdneverexpires yes -disabled no -s ubdc.ub.uni-rostock.de
if errorlevel 0 goto TRUPD
:updadd
echo - user not exist - MAKE INSERT
dsadd user "CN=%2,OU=User_LBS_NTYP%6,DC=ub,DC=uni-rostock,DC=de" -pwd %4 -desc %3_%6_LBSINS%5 -loscr
login.bat -canchpwd no -pwdneverexpires yes -disabled no
if errorlevel 0 goto TRUPDADD
goto ende
rem --------------------------------------------------------------------------------:delete
echo --- DELETE user from LBS to ADS --echo - delete user rem echo dsrm "CN=%2,OU=User_LBS_NTYP%6,DC=ub,DC=uni-rostock,DC=de" -noprompt
dsrm "CN=%2,OU=User_LBS_NTYP%6,DC=ub,DC=uni-rostock,DC=de" -noprompt -s ubdc.ub.uni-rostock.de
if errorlevel 0 goto TRDEL
echo not errorlevel0 - user not deleted
goto ende
:ende
echo --- ende --sleep -m 300
echo.
10
LBSUser_To_ADS_CMD.sql (SQL-Skript zur Abfrage der AD-Aktionen vom LBS-Host)
use lbsdb
go
/* ADStore Basisscript setzt Nutzer auf DELETE AD */
/* Historie: 2007-10-17 - js:
virtuellen Nutzertyp borrower_type_ads ergaenzt */
/* ---------------------------------------------------------------------------- */
/* ----------- ERZEUGE DELETE STATEMENTS --------------------- */
PRINT "# CREATE DELETE STATEMENTS ..."
SELECT
"CALL LBSUser_To_ADS DEL " +
+ convert(char(11), x.borrower_bar) + ' '
+ convert(char(2), x.borrower_type) + ' '
+ ' dummy'
+ ' dummy' + ' '
+ convert(char(3), x.borrower_type_ads)
FROM
xprivate_adstore x
WHERE
x.iln = 62
and x.ads_action = 'D' /* DELETE */
go
/* ADStore Basisscript setzt neue Nutzer auf INSERT AD
*/
/* Historie: 2007-10-17 - js: virtuellen Nutzertyp borrower_type_ads ergaenzt */
/* -------------------------------------------------------------------------- */
/* ----------- ERZEUGE INSERT STATEMENTS --------------------- */
PRINT "# CREATE INSERT STATEMENTS ..."
SELECT
"CALL LBSUser_To_ADS INS " +
+ convert(char(11), x.borrower_bar) + ' ' /* Barcode */
+ convert(char(2), x.borrower_type) + ' ' /* Nutzertyp */
+ RIGHT('0'+DATENAME(dd, x.date_of_birth),2) + RIGHT('0'+RTRIM(convert(char(2),DATEPART(month,
x.date_of_birth))),2) + SUBSTRING(DATENAME(yy, x.date_of_birth),3,2) + ' ' /* Geburtsdatum */
+ DATENAME(dd, getdate()) + RIGHT('0'+RTRIM(convert(char(2),DATEPART(month, getdate()))),2) +
SUBSTRING(DATENAME(yy, getdate()),3,2) + ' ' /* Aktuelles Datum */
+ convert(char(3), x.borrower_type_ads) /* virtueller Nutzertyp */
FROM
xprivate_adstore x
WHERE
x.iln = 62
AND x.ads_action = 'I' /* INSERT */
go
/* ADStore Basisscript setzt Nutzer auf UPDATE AD
*/
/* Historie: 2007-10-17 - js: virtuellen Nutzertyp borrower_type_ads ergaenzt */
/* -------------------------------------------------------------------------- */
/* ----------- ERZEUGE UPDATE STATEMENTS --------------------- */
PRINT "# CREATE UPDATE STATEMENTS ..."
SELECT
"CALL LBSUser_To_ADS UPD " +
+ convert(char(11), x.borrower_bar) + ' '
+ convert(char(2), x.borrower_type) + ' '
+ RIGHT('0'+DATENAME(dd, x.date_of_birth),2) + RIGHT('0'+RTRIM(convert(char(2),DATEPART(month,
x.date_of_birth))),2) + SUBSTRING(DATENAME(yy, x.date_of_birth),3,2) + ' '
+ DATENAME(dd, getdate()) + RIGHT('0'+RTRIM(convert(char(2),DATEPART(month, getdate()))),2) +
SUBSTRING(DATENAME(yy, getdate()),3,2) + ' '
+ convert(char(3), x.borrower_type_ads)
FROM
xprivate_adstore x
WHERE
x.iln = 62
AND x.ads_action = 'U' /* UPDATE */
go
11
3) KiXtart-Skript zur Zuweisung der Proxy-Instanzen (Aufruf (Call) aus dem
Anmeldeskript logub.kix)
setenv.kix
break off
;********************
;Domain Controller
;********************
$DC01="\\139.30.98.98"
$DC02="\\139.30.99.99"
;********************
;Basis-Adressen
;********************
$BaseDir=$DC01
$CurDir=$DC01 + "\Netlogon"
$ScriptDir=$DC01 + "\Netlogon\ub_scripts"
;********************
;Proxy-Einstellungen
;********************
;folgende Proxys stehen zur Verfuegung
; ----------;PROXYS UB
;Benutzergruppe A: Hochschulangehoerige
;proxy1.ub.uni-rostock.de:3127 - ohne Einschraenkungen / squid
;proxy2.ub.uni-rostock.de:3127 - ohne Einschraenkungen / squid
;Benutzergruppe B: wissenschaftl.-nichtkommerzielle Benutzer
;proxy1.ub.uni-rostock.de:3128 - Blacklist / squid
;proxy2.ub.uni-rostock.de:3128 - Blacklist / squid
;Benutzergruppe C: sonstige Benutzer
;proxy1.ub.uni-rostock.de:3129 - Whitelist + Blacklist / squid
;proxy2.ub.uni-rostock.de:3129 - Whitelist + Blacklist / squid
; ----------;PROXYS RZ
;proxy.uni-rostock.de:8080 - ohne Einschraenkungen
$ProxyRZ="proxy.uni-rostock.de"
; ----------; in der lokalen Liste nur die Eintraege, die fuer einen Notbetrieb ohne proxy notwendig sind !
$BasicOverride = "http://www.uni-rostock.de;http://katalog.ub.uni-rostock.de;https://katalog.ub.unirostock.de;http://bix.hdm-stuttgart.de;<local>"
; ----------; Standard UB Proxy-Server
$ProxyUB="proxy2.ub.uni-rostock.de"
SELECT
;********************
;Nutzer mit Auswahl Internetzugang
;********************
CASE
( Ingroup("$DC01\g_ub_group_selcon","$DC02\g_ub_group_selcon") )
Gosub "SelectConnection"
;********************
;Rechner ohne Proxy
;********************
CASE (
( @LDOMAIN="RECHENZENTRUM" )
AND
(
@WKSTA="UB1MA999" ; Basic d530cmt
OR
@WKSTA="UB1MA888" ; Basic dc7800
)
)
$ReturnCode = KeyExist("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings")
If $ReturnCode
WriteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings","ProxyEnable","0","REG_DWORD")
Endif
;********************
;Katalog-APC
;********************
12
CASE
(
@WKSTA="UB1NU001" ;BB1 Eingangsbereich
OR
@WKSTA="UB1NU002" ;BB1 Eingangsbereich
OR
@WKSTA="UB1NU005" ;BB1 Microfilm APC
OR
@WKSTA="UB1NU006" ;BB1 Microfilm APC
OR
@WKSTA="UB1NU007" ;BB1 Microfilm APC
OR
@WKSTA="UB1NU008" ;BB1 Microfilm APC
OR
@WKSTA="UB1NU049" ;BB1 OPAC-PC 1.OG
OR
@WKSTA="UB1NU052" ;BB1 OPAC-PC 1.OG
OR
@WKSTA="UB1NU054" ;BB1 OPAC-PC 2.OG
OR
@WKSTA="UB1NU055" ;BB1 OPAC-PC 2.OG
OR
@WKSTA="UB1NU057" ;BB1 OPAC-PC 3.OG
OR
@WKSTA="UB1NU059" ;BB1 OPAC-PC 3.OG
)
SetProxy ("1", "$ProxyUB:3129", $BasicOverride)
Gosub "MsgKatalogAPC"
;********************
;Hochschulangehoerige ohne Einschraenkungen
;ROLLE A
;********************
CASE
(
@LDOMAIN="RECHENZENTRUM"
OR
Ingroup("User_LBS_NTYP10_Group","User_LBS_NTYP30_Group","User_LBS_NTYP40_Group",
"User_LBS_NTYP60_Group")
)
SetProxy ("1", "$ProxyUB:3127", $BasicOverride)
Gosub "GroupAOverride"
;********************
;wissenschaftl.-nichtkommerzielle Benutzer / Blacklist
;ROLLE B
;********************
CASE
(
Ingroup("User_LBS_NTYP20_Group","User_LBS_NTYP50_Group","User_LBS_NTYP71_Group")
)
SetProxy ("1", "$ProxyUB:3128", $BasicOverride)
;********************
;sonstige Benutzer / Whitelist + Blacklist
;ROLLE C
;********************
CASE
(
Ingroup("User_LBS_NTYP80_Group","User_LBS_NTYP118_Group","User_LBS_NTYP70_Group")
)
SetProxy ("1", "$ProxyUB:3129", $BasicOverride)
Gosub "MsgWhiteList"
;********************
;sonstige andere Benutzer / Whitelist + Blacklist
;********************
CASE
1
SetProxy ("1", "$ProxyUB:3129", $BasicOverride)
ENDSELECT
Return
;**********************************************************************
;* END OF MAIN - NOW THE FUNCTIONS:
;**********************************************************************
;**********************************************************************
;* FUNCTION SETPROXY
;**********************************************************************
Function SetProxy ($ProxyEnabled, $ProxyServer, $ProxyOverride)
$ReturnCode = KeyExist("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings")
If $ReturnCode
WriteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings","ProxyEnable",$ProxyEnabled,"REG_DWORD")
WriteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings","ProxyServer",$ProxyServer,"REG_SZ")
WriteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings","ProxyOverride",$ProxyOverride,"REG_SZ")
DelValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings","AutoConfigURL")
13
EndIf
EndFunction
;**********************************************************************
;* Proxy Special Overrides
;* overrides fuer einzelne ip-addressen oder subnetze
;**********************************************************************
:GroupAOverride
$IPSubnet = LTRIM(SUBSTR(@IPAddress0, 1, 4)) + LTRIM(SUBSTR(@IPAddress0, 5, 4)) +
LTRIM(SUBSTR(@IPAddress0, 9, 4))
$IP = $IPSubnet + LTRIM(SUBSTR(@IPAddress0, 13, 3))
$GAOverride = $BasicOverride
;--- Ressourcen 48-er Subnetz
If ( $IPSubnet = "139.30.48." )
; zfbb
- http://*uni-jena.de
$GAOverride = "http://*uni-jena.de;" + $BasicOverride
Endif
WriteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings","ProxyOverride",$GAOverride,"REG_SZ")
Return
;**********************************************************************
;* Message Katalog Arbeitsplatz
;**********************************************************************
:MsgKatalogAPC
Messagebox('ACHTUNG !
Dieser PC ist hauptsächlich für Recherchen vorgesehen und gestattet
nur den Zugriff auf die Ressourcen der Universität Rostock und
ausgewählte externe Ressourcen !
',
'--- INTERNET-PC mit eingeschränkter Nutzung ---' ,4160,360)
Return
;**********************************************************************
;* Message Whitelist Benutzergruppen
;**********************************************************************
:MsgWhiteList
If ( Ingroup("User_LBS_NTYP118_Group") )
Messagebox('ACHTUNG !
Da Sie noch nicht das 18. Lebensjahr vollendet haben, sind wir nach
Jugendschutzgesetz (JuSchG) und Jugendmedienschutz-Staatsvertrag (JMStV)
verpflichtet, Ihren Zugang zum Internet auf ausgewählte Ressourcen zu beschränken!
',
'--- INTERNET-PC mit eingeschränkter Nutzung ---' ,4160,360)
Else
Messagebox('ACHTUNG !
Aufgrund rechtlicher Regelungen:
- Benutzungsordnung für das Rostocker Universitätsnetz RUN
(http://www.uni-rostock.de/Rechenzentrum/URZ-Home/Netzordnung.shtml)
- Vertragsbedingungen zur Nutzung lizenzierter elektronischer Ressourcen
ist der Zugang zum Internet auf ausgewählte Ressourcen beschränkt.
',
'--- INTERNET-PC mit eingeschränkter Nutzung ---' ,4160,360)
EndIf
Return
;**********************************************************************
;* Auswahl Internetzugang
;**********************************************************************
:SelectConnection
$Selection1 = Messagebox('Möchten Sie über einen Proxy-Server mit dem Internet
verbunden werden ?
Zur Auswahl stehen:
JA: Verbindung über einen Proxy-Server der UB (DEFAULT) oder des Rechenzentrums
14
NEIN : direkte Verbindung zum Internet mit der IP-Adresse Ihres Rechners
PROXY-SERVER DER UB
1) Standard-Proxyserver der UB ist derzeit:
- $ProxyUB
2) Mögliche UB-Proxy-Server:
- proxy1.ub.uni-rostock.de
- proxy2.ub.uni-rostock.de
3) Ports der UB-Proxy-Server:
- 3127 (freier Zugang zum Internet)
- 3128 (Blacklist)
- 3129 (Whitelist)
PROXY-SERVER DES RECHENZENTRUMS
1) Standard-Proxy-Server des Rechenzentrums ist derzeit:
- $ProxyRZ
2) Mögliche RZ-Proxy-Server:
- proxy.uni-rostock.de
3) Ports der RZ-Proxy-Server:
- 8080 (freier Zugang zum Internet)
',
'--- Auswahl des Internetzugangs ---' ,4131,15)
If ($Selection1 = 6 OR $Selection1 = 2 OR $Selection1 = -1)
$Selection2 = Messagebox('Möchten Sie den Proxy-Server der UB ($ProxyUB:3127)
verwenden ?',
'--- Auswahl des Internetzugangs ---' ,4131,15)
If ($Selection2 = 6 OR $Selection1 = 2 OR $Selection1 = -1)
SetProxy ("1", "$ProxyUB:3127", $BasicOverride)
Gosub "GroupAOverride"
Messagebox('Sie werden über den Proxy-Server der UB:
($ProxyUB:3127)
mit dem Internet verbunden.',
'--- Auswahl des Internetzugangs ---' ,4128,5)
Else
SetProxy ("1", "$ProxyRZ:8080", $BasicOverride)
Gosub "GroupAOverride"
Messagebox('Sie werden über den Proxy-Server des Rechenzentrums:
($ProxyRZ:8080)
mit dem Internet verbunden.',
'--- Auswahl des Internetzugangs ---' ,4128,5)
EndIf
Else
;--- ohne Proxy
$ReturnCode = KeyExist("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings")
If $ReturnCode
WriteValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings","ProxyEnable","0","REG_DWORD")
Endif
Messagebox('Sie werden direkt mit dem Internet verbunden.',
'--- Auswahl des Internetzugangs ---' ,4128,5)
EndIf
Return
15
Herunterladen