git-svn-id: http://locode01.ad.dom/svn/WEBMIP/trunk@50874 248e525c-4dfb-0310-94bc-949c084e9493

This commit is contained in:
andrew.gilmore
2012-03-19 11:57:19 +00:00
parent 2a0f4900c3
commit 0e9ca75d77
1587 changed files with 500863 additions and 0 deletions

View File

@@ -0,0 +1,538 @@
CREATE OR REPLACE PACKAGE BODY EFT_NOM.saco_licensing IS
--
-- Private Declaration
--
FUNCTION get_license RETURN VARCHAR2 IS
--
CURSOR cur_lsng IS
SELECT lsng.license_key
FROM licensing lsng;
--
v_return licensing.license_key%TYPE;
--
BEGIN
--
OPEN cur_lsng;
FETCH cur_lsng
INTO v_return;
--
IF cur_lsng%NOTFOUND THEN
--
v_return := NULL;
--
END IF;
--
CLOSE cur_lsng;
--
RETURN v_return;
--
END get_license;
--
FUNCTION return_key RETURN VARCHAR2 IS
--
v_return VARCHAR2(2000);
v_key VARCHAR2(2000);
--
BEGIN
--
v_return := 'ENCKEY1234567890';
--
v_return := NULL;
v_return := v_return || CHR(87);
v_key := v_key || CHR(83);
v_key := v_key || CHR(97);
v_return := v_return || CHR(115);
v_return := v_return || CHR(73);
v_return := v_return || CHR(99);
v_key := v_key || CHR(112);
v_return := v_return || CHR(97);
v_return := v_return || CHR(97);
v_return := v_return || CHR(107);
v_key := v_key || CHR(255);
v_return := v_return || CHR(63);
--
RETURN v_return;
--
END return_key;
--
FUNCTION decrypt (p_license_key IN licensing.license_key%TYPE) RETURN VARCHAR2 IS
--
v_return LONG := NULL;
--
BEGIN
--
IF p_license_key IS NOT NULL THEN
--
-- Within it's own program unit to ignore bad conversion and decryption
--
BEGIN
--
dbms_obfuscation_toolkit.desdecrypt(input_string => utl_raw.cast_to_varchar2(hextoraw(p_license_key))
,key_string => return_key
,decrypted_string => v_return);
--
IF INSTR(v_return, CHR(0)) > 0 THEN
--
v_return := SUBSTR(v_return, 1, INSTR(v_return, CHR(0))-1);
--
END IF;
--
EXCEPTION
WHEN OTHERS THEN
NULL;
END;
--
END IF;
--
RETURN v_return;
--
END decrypt;
--
FUNCTION get_item (p_license_key IN VARCHAR2
,p_item IN VARCHAR2) RETURN VARCHAR2 IS
--
v_return VARCHAR2(1000) := NULL;
v_delimiter VARCHAR2(1) := '!';
--
BEGIN
--
IF INSTR(UPPER(p_license_key),UPPER(p_item),1) > 0 THEN
--
v_return := SUBSTR(p_license_key
,INSTR(UPPER(p_license_key),UPPER(p_item))+LENGTH(p_item)+1
,INSTR(p_license_key,v_delimiter,INSTR(UPPER(p_license_key),UPPER(p_item))+LENGTH(p_item)+1)-(INSTR(UPPER(p_license_key),UPPER(p_item))+LENGTH(p_item)+1));
--
END IF;
--
RETURN v_return;
--
END get_item;
--
PROCEDURE display_header(v_screen_name IN VARCHAR2,
v_body_atts IN VARCHAR2 DEFAULT NULL) IS
BEGIN
--
htp.htmlopen;
htp.headopen;
--
htp.meta('Content-Type', 'SACO_LICENSING', 'text/html');
htp.meta('Expires', '', '0');
htp.meta('Pragma', '', 'no-cache');
--
htp.linkrel('stylesheet', 'caco_system.css?p_type=logon');
--
htp.headclose;
--
htp.bodyopen(cattributes => v_body_atts);
--
htp.title(v_screen_name);
--
htp.p('<h1>' || v_screen_name || '</h1>');
--
htp.br;
htp.br;
--
END display_header;
--
PROCEDURE display_footer IS
BEGIN
--
htp.bodyclose;
htp.htmlclose;
--
END display_footer;
--
FUNCTION check_valid RETURN BOOLEAN IS
--
v_return BOOLEAN := FALSE;
--
BEGIN
--
IF get_item(decrypt(get_license),'COMPANY NAME') IS NOT NULL THEN
--
v_return := TRUE;
--
END IF;
--
RETURN v_return;
--
END check_valid;
--
FUNCTION check_expired RETURN BOOLEAN IS
--
v_return BOOLEAN := FALSE;
--
BEGIN
--
-- Used NVL as the license key may NOT expire
--
IF NVL(get_item(decrypt(get_license),'EXPIRY DATE'),TRUNC(SYSDATE)) >= TRUNC(SYSDATE) THEN
--
v_return := TRUE;
--
END IF;
--
RETURN v_return;
--
END check_expired;
--
FUNCTION check_machine RETURN BOOLEAN IS
--
v_return BOOLEAN := FALSE;
--
BEGIN
--
IF get_item(decrypt(get_license),'SERVER NAME') IS NOT NULL THEN
--
IF INSTR(UPPER(get_item(decrypt(get_license),'SERVER NAME'))||','
,UPPER(owa_util.get_cgi_env('SERVER_NAME'))||',') > 0 THEN
--
v_return := TRUE;
--
END IF;
--
ELSE
--
v_return := TRUE;
--
END IF;
--
RETURN v_return;
--
END check_machine;
--
FUNCTION get_sessions RETURN NUMBER IS
--
v_return NUMBER;
--
BEGIN
--
-- Remove any expired sessions
--
caco_security.remove_expired_sessions;
--
-- Looping but only once!
--
FOR cur_sess_rec IN ( SELECT COUNT(sess.client_id) AS sessions FROM sessions sess ) LOOP
--
v_return := cur_sess_rec.sessions;
--
END LOOP;
--
RETURN v_return;
--
END get_sessions;
--
FUNCTION get_syus_count RETURN NUMBER IS
--
v_return NUMBER;
--
BEGIN
--
-- Looping but only once!
--
FOR cur_syus_rec IN ( SELECT COUNT(syus.syus_id) AS syus FROM system_users syus WHERE syus.syus_id <> caco_utilities.get_system_user ) LOOP
--
v_return := cur_syus_rec.syus;
--
END LOOP;
--
RETURN v_return;
--
END get_syus_count;
--
-- Public Declaration
--
PROCEDURE call_license_form IS
--
--
BEGIN
--
htp.p('<SCRIPT><!--');
htp.p('frmLogon = open("saco_licensing.show_license_form","winLogon","scrollbars=no,resizable=yes,width=400,height=300");');
htp.p('if (frmLogon.opener == null) {');
htp.p('frmLogon.opener = self;');
htp.p('};');
htp.p('//-->');
htp.p('</SCRIPT>');
htp.p('<NOSCRIPT>');
display_header('Enter License Key');
htp.bodyopen(cattributes => 'onLoad="return License_OnLoad()"');
show_license_form(TRUE);
display_footer;
htp.p('</NOSCRIPT>');
--
END call_license_form;
--
PROCEDURE show_license_form(p_embedded IN BOOLEAN
,p_license_key IN VARCHAR2 DEFAULT NULL) IS
--
CURSOR cur_lsng IS
SELECT NULL
FROM licensing lsng
FOR UPDATE OF lsng.license_key NOWAIT;
--
v_dummy VARCHAR2(10);
--
BEGIN
--
IF p_license_key IS NULL THEN
--
IF NOT p_embedded THEN
--
display_header('Enter License Key');
htp.bodyopen(cattributes => 'onLoad="return License_OnLoad()"');
--
END IF;
--
-- Output JavaScript for handling onLoad event for setting
-- the focus to the license key field upon invocation.
--
htp.p('<SCRIPT><!--');
htp.p('function License_OnLoad (ctl, index) {');
htp.p('document.LicenseForm.p_license_key.focus();');
htp.p('}');
htp.p('//-->');
htp.p('</SCRIPT>');
--
htp.header(4
,'Please enter your license key.');
--
htp.formopen(curl => 'saco_licensing.show_license_form'
,ctarget => ''
,cattributes => 'NAME="LicenseForm"');
--
htp.tableopen;
htp.tablerowopen;
htp.tabledata('<I>' || 'License Key:' || ' </I>');
htp.tabledata(htf.formtext(cname => 'p_license_key',csize => 40));
htp.tablerowclose;
htp.tabledata(NULL);
htp.tabledata(htf.paragraph(calign => 'Right')||htf.formsubmit(cvalue => 'Validate'));
htp.tablerowclose;
htp.tableclose;
htp.formclose;
--
IF NOT p_embedded THEN
--
display_footer;
--
END IF;
--
ELSE
--
IF NOT p_embedded THEN
--
display_header('Process License Key');
htp.bodyopen(cattributes => 'onLoad="return License_OnLoad()"');
--
END IF;
--
OPEN cur_lsng;
FETCH cur_lsng
INTO v_dummy;
--
IF cur_lsng%NOTFOUND THEN
--
INSERT INTO licensing (license_key)
VALUES (p_license_key);
--
ELSE
--
UPDATE licensing lsng
SET lsng.license_key = p_license_key
WHERE CURRENT OF cur_lsng;
--
END IF;
--
CLOSE cur_lsng;
--
IF NOT check_license THEN
--
-- License key is invalid, requires reentry
--
htp.bodyopen(cattributes => 'onLoad="return License_OnLoad()"');
htp.header(2
,'License key is invalid');
htp.hr;
--
show_license_form(TRUE);
--
ELSE
--
-- License key is valid, close pop-up
--
htp.bodyopen;
htp.header(2
,wsgl.msggettext(606
,wsglm.sec606_logon_success));
htp.header(4
,wsgl.msggettext(607
,wsglm.sec607_navigate_back));
htp.script('<!--
//opener.location.reload(true);
opener.location = "caco_home";
//-->');
htp.script('<!--
self.close();
//-->');
--
END IF;
--
IF NOT p_embedded THEN
--
display_footer;
--
END IF;
--
END IF;
--
END show_license_form;
--
FUNCTION status_line (p_css_class IN VARCHAR2 DEFAULT 'splashtagline') RETURN VARCHAR2 IS
--
v_return VARCHAR2(1000);
--
BEGIN
--
v_return := v_return || htf.tableopen(cattributes => 'WIDTH=100% class="'||p_css_class||'" cellspacing="1" cellpadding="0"');
v_return := v_return || htf.tablerowopen;
--
IF NOT check_valid THEN
--
-- Key entered is not valid
--
v_return := v_return || htf.tabledata('Invalid License Key');
--
ELSE
--
IF NOT check_expired THEN
--
v_return := v_return || htf.tabledata('License key has expired');
--
ELSE
--
IF NOT check_machine THEN
--
v_return := v_return || htf.tabledata('Machine name is invalid');
--
ELSE
--
IF get_item(decrypt(get_license),'Company Name') IS NOT NULL THEN
--
v_return := v_return || htf.tabledata('Licensed to: ' || get_item(decrypt(get_license),'Company Name'));
--
END IF;
--
IF get_item(decrypt(get_license),'Serial Number') IS NOT NULL THEN
--
v_return := v_return || htf.tabledata('Serial Number: '|| get_item(decrypt(get_license),'Serial Number'));
--
END IF;
--
IF get_item(decrypt(get_license),'Expiry Date') IS NOT NULL THEN
--
v_return := v_return || htf.tabledata('License Expires: '|| get_item(decrypt(get_license),'Expiry Date'));
--
END IF;
--
IF get_item(decrypt(get_license),'Concurrent Users') IS NOT NULL THEN
--
v_return := v_return || htf.tabledata('Concurrent Users: '||get_sessions||' of '|| get_item(decrypt(get_license),'Concurrent Users'));
--
END IF;
--
IF get_item(decrypt(get_license),'Licensed Users') IS NOT NULL THEN
--
v_return := v_return || htf.tabledata('Licensed Users: '||get_syus_count||' of '|| get_item(decrypt(get_license),'Licensed Users'));
--
END IF;
--
END IF;
--
END IF;
--
END IF;
--
v_return := v_return || htf.tablerowclose;
v_return := v_return || htf.tableclose;
--
RETURN v_return;
--
END status_line;
--
FUNCTION check_license RETURN BOOLEAN IS
--
v_return BOOLEAN := FALSE;
--
BEGIN
--
IF check_valid
AND check_expired
AND check_machine THEN
--
v_return := TRUE;
--
END IF;
--
RETURN v_return;
--
END check_license;
--
FUNCTION check_users RETURN BOOLEAN IS
--
v_return BOOLEAN := FALSE;
--
BEGIN
--
IF get_item(decrypt(get_license),'Concurrent Users') IS NOT NULL THEN
--
IF get_sessions < get_item(decrypt(get_license),'Concurrent Users') THEN
--
v_return := TRUE;
--
END IF;
--
ELSE
--
v_return := TRUE;
--
END IF;
--
RETURN v_return;
--
END check_users;
--
FUNCTION create_syus_check RETURN BOOLEAN IS
--
v_return BOOLEAN := FALSE;
--
BEGIN
--
IF get_item(decrypt(get_license),'Licensed Users') IS NOT NULL THEN
--
IF get_syus_count < get_item(decrypt(get_license),'Licensed Users') THEN
--
v_return := TRUE;
--
END IF;
--
ELSE
--
v_return := TRUE;
--
END IF;
--
RETURN v_return;
--
END create_syus_check;
--
BEGIN
--
-- Initialization
--
NULL;
--
END saco_licensing;
/