1 """
2 add external_files table for security
3
4 @contact: Debian FTP Master <ftpmaster@debian.org>
5 @copyright: 2012 Gergely Nagy <algernon@debian.org>
6 @license: GNU General Public License version 2 or later
7 """
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import psycopg2
26 from daklib.dak_exceptions import DBUpdateError
27 from daklib.config import Config
28
29 statements = [
30 """
31 CREATE TABLE external_files (
32 id integer,
33 filename text NOT NULL,
34 size bigint NOT NULL,
35 md5sum text NOT NULL,
36 last_used timestamp with time zone,
37 sha1sum text,
38 sha256sum text,
39 created timestamp with time zone DEFAULT now() NOT NULL,
40 modified timestamp with time zone DEFAULT now() NOT NULL
41 );
42 """,
43 """
44 INSERT INTO config(name, value) VALUES ('use_extfiles', 0);
45 """
46 ]
47
48
49
50
52 print(__doc__)
53 try:
54 cnf = Config()
55
56 c = self.db.cursor()
57
58 for stmt in statements:
59 c.execute(stmt)
60
61 c.execute("UPDATE config SET value = '87' WHERE name = 'db_revision'")
62 self.db.commit()
63
64 except psycopg2.ProgrammingError as msg:
65 self.db.rollback()
66 raise DBUpdateError('Unable to apply sick update 87, rollback issued. Error message: {0}'.format(msg))
67