1#!/bin/sh
2
3# Copyright (C) 2019-2021 Internet Systems Consortium, Inc. ("ISC")
4#
5# This Source Code Form is subject to the terms of the Mozilla Public
6# License, v. 2.0. If a copy of the MPL was not distributed with this
7# file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
9# shellcheck disable=SC1091
10# SC1091: Not following: ... was not specified as input (see shellcheck -x).
11
12# Exit with error if commands exit with non-zero and if undefined variables are
13# used.
14set -eu
15
16# shellcheck disable=SC2034
17# SC2034: ... appears unused. Verify use (or export if used externally).
18prefix="@prefix@"
19
20# Include utilities. Use installed version if available and
21# use build version if it isn't.
22if [ -e @datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh ]; then
23    . "@datarootdir@/@PACKAGE_NAME@/scripts/admin-utils.sh"
24else
25    . "@abs_top_builddir@/src/bin/admin/admin-utils.sh"
26fi
27
28VERSION=$(mysql_version "$@")
29
30if [ "$VERSION" != "8.0" ]; then
31    printf 'This script upgrades 8.0 to 8.1. '
32    printf 'Reported version is %s. Skipping upgrade.\n' "${VERSION}"
33    exit 0
34fi
35
36mysql "$@" <<EOF
37
38# Add lifetime bounds
39ALTER TABLE dhcp4_shared_network
40    ADD COLUMN min_valid_lifetime INT(10) DEFAULT NULL,
41    ADD COLUMN max_valid_lifetime INT(10) DEFAULT NULL;
42
43ALTER TABLE dhcp4_subnet
44    ADD COLUMN min_valid_lifetime INT(10) DEFAULT NULL,
45    ADD COLUMN max_valid_lifetime INT(10) DEFAULT NULL;
46
47ALTER TABLE dhcp6_shared_network
48    ADD COLUMN min_preferred_lifetime INT(10) DEFAULT NULL,
49    ADD COLUMN max_preferred_lifetime INT(10) DEFAULT NULL,
50    ADD COLUMN min_valid_lifetime INT(10) DEFAULT NULL,
51    ADD COLUMN max_valid_lifetime INT(10) DEFAULT NULL;
52
53ALTER TABLE dhcp6_subnet
54    ADD COLUMN min_preferred_lifetime INT(10) DEFAULT NULL,
55    ADD COLUMN max_preferred_lifetime INT(10) DEFAULT NULL,
56    ADD COLUMN min_valid_lifetime INT(10) DEFAULT NULL,
57    ADD COLUMN max_valid_lifetime INT(10) DEFAULT NULL;
58
59# Create dhcp4_server insert trigger
60DELIMITER $$
61CREATE TRIGGER dhcp4_server_AINS AFTER INSERT ON dhcp4_server
62    FOR EACH ROW
63    BEGIN
64        CALL createAuditEntryDHCP4('dhcp4_server', NEW.id, "create");
65    END $$
66DELIMITER ;
67
68# Create dhcp4_server update trigger
69DELIMITER $$
70CREATE TRIGGER dhcp4_server_AUPD AFTER UPDATE ON dhcp4_server
71    FOR EACH ROW
72    BEGIN
73        CALL createAuditEntryDHCP4('dhcp4_server', NEW.id, "update");
74    END $$
75DELIMITER ;
76
77# Create dhcp4_server delete trigger
78DELIMITER $$
79CREATE TRIGGER dhcp4_server_ADEL AFTER DELETE ON dhcp4_server
80    FOR EACH ROW
81    BEGIN
82        CALL createAuditEntryDHCP4('dhcp4_server', OLD.id, "delete");
83    END $$
84DELIMITER ;
85
86# Create dhcp6_server insert trigger
87DELIMITER $$
88CREATE TRIGGER dhcp6_server_AINS AFTER INSERT ON dhcp6_server
89    FOR EACH ROW
90    BEGIN
91        CALL createAuditEntryDHCP6('dhcp6_server', NEW.id, "create");
92    END $$
93DELIMITER ;
94
95# Create dhcp6_server update trigger
96DELIMITER $$
97CREATE TRIGGER dhcp6_server_AUPD AFTER UPDATE ON dhcp6_server
98    FOR EACH ROW
99    BEGIN
100        CALL createAuditEntryDHCP6('dhcp6_server', NEW.id, "update");
101    END $$
102DELIMITER ;
103
104# Create dhcp6_server delete trigger
105DELIMITER $$
106CREATE TRIGGER dhcp6_server_ADEL AFTER DELETE ON dhcp6_server
107    FOR EACH ROW
108    BEGIN
109        CALL createAuditEntryDHCP6('dhcp6_server', OLD.id, "delete");
110    END $$
111DELIMITER ;
112
113# Put the auth key in hexadecimal (double size but far more user friendly).
114ALTER TABLE hosts
115    MODIFY COLUMN auth_key VARCHAR(32) NULL;
116
117# Update the schema version number
118UPDATE schema_version
119SET version = '8', minor = '1';
120
121# This line concludes database upgrade to version 8.1.
122
123EOF
124