Web Connections
Invoker Procedures
DROP PROCEDURE _Base_Web_Connections_Create_Out;
DELIMITER //
CREATE PROCEDURE _Base_Web_Connections_Create_Out
(
$connection_server_name CHAR(99),
$connection_ip_remote CHAR(45),
OUT $connection_csrf_token CHAR(64)
)
SQL SECURITY INVOKER
BEGIN
DECLARE $CONNECTION_ID INT DEFAULT 0;
DECLARE $connection_csrf_expiry DATETIME DEFAULT 0;
SELECT CONNECTION_ID, connection_csrf_token
INTO $CONNECTION_ID, $connection_csrf_token
FROM base_web_connections
WHERE connection_server_name = $connection_server_name
AND connection_ip_remote = $connection_ip_remote
AND NOW() < DATE_SUB( connection_csrf_expiry, INTERVAL 10 MINUTE )
ORDER BY connection_csrf_expiry DESC
LIMIT 1;
IF NOT $CONNECTION_ID THEN
SET $connection_csrf_token = GenerateSalt();
SET $connection_csrf_expiry = DATE_ADD( NOW(), INTERVAL 1 HOUR );
REPLACE INTO base_web_connections
( CONNECTION_ID, connection_server_name, connection_ip_remote )
VALUES
( 0, $connection_server_name, $connection_ip_remote );
SET $CONNECTION_ID = LAST_INSERT_ID();
UPDATE base_web_connections
SET
connection_csrf_token = $connection_csrf_token,
connection_csrf_expiry = $connection_csrf_expiry
WHERE CONNECTION_ID = $CONNECTION_ID;
END IF;
DELETE FROM base_web_connections WHERE connection_csrf_expiry < NOW();
END
//
DELIMITER ;