-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsql.sql
210 lines (144 loc) · 4.26 KB
/
sql.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
/*
Created: 02/22/2019
Modified: 09/11/2019
Model: PostgreSQL 10
Database: PostgreSQL 10
*/
-- Create tables section -------------------------------------------------
-- Table hash
CREATE TABLE hash(
hash Text NOT NULL,
source Text,
first_seen Timestamp,
path Text,
name Text
)
;
-- Create indexes for table hash
CREATE INDEX IX_Relationship10 ON hash (name)
;
-- Add keys for table hash
ALTER TABLE hash ADD CONSTRAINT hashKey PRIMARY KEY (hash)
;
-- Table possibles
CREATE TABLE possibles(
id Bigint NOT NULL,
hash Text NOT NULL,
download Boolean,
valid Boolean,
possible Boolean,
num Bigint,
"projectName" Text
)
;
-- Create indexes for table possibles
CREATE INDEX IX_Relationship7 ON possibles ("projectName")
;
-- Add keys for table possibles
ALTER TABLE possibles ADD CONSTRAINT possibleKey PRIMARY KEY (hash)
;
-- Table project
CREATE TABLE project(
"projectName" Text NOT NULL,
date Timestamp
)
;
-- Add keys for table project
ALTER TABLE project ADD CONSTRAINT projectKey PRIMARY KEY ("projectName")
;
-- Table download
CREATE TABLE download(
date Timestamp NOT NULL,
ip Inet NOT NULL,
port int,
hash Text NOT NULL,
"projectName" Text
)
;
-- Create indexes for table download
CREATE INDEX IX_Relationship3 ON download (ip)
;
CREATE INDEX IX_Relationship5 ON download (hash)
;
CREATE INDEX IX_Relationship6 ON download (date)
;
-- Add keys for table download
ALTER TABLE download ADD CONSTRAINT downloadKey PRIMARY KEY (ip,hash,date,port)
;
-- Table ip
CREATE TABLE ip(
ip Inet NOT NULL,
"projectName" Text
)
;
-- Create indexes for table ip
CREATE INDEX IX_Relationship11 ON ip ("projectName")
;
-- Add keys for table ip
ALTER TABLE ip ADD CONSTRAINT ipKey PRIMARY KEY (ip)
;
-- Table monitor
CREATE TABLE monitor(
hash Text NOT NULL,
userName Text,
"projectName" Text
)
;
-- Create indexes for table monitor
CREATE INDEX IX_Relationship8 ON monitor ("projectName")
;
-- Add keys for table monitor
ALTER TABLE monitor ADD CONSTRAINT monitorKey PRIMARY KEY (hash)
;
-- Table alert
CREATE TABLE alert(
list Text NOT NULL,
userName Text,
ip Inet NOT NULL,
"projectName" Text
)
;
-- Create indexes for table alert
CREATE INDEX IX_Relationship9 ON alert ("projectName")
;
-- Add keys for table alert
ALTER TABLE alert ADD CONSTRAINT alertKey PRIMARY KEY (ip)
;
-- Create foreign keys (relationships) section -------------------------------------------------
ALTER TABLE download ADD CONSTRAINT Relationship3 FOREIGN KEY (ip) REFERENCES ip (ip) ON DELETE NO ACTION ON UPDATE NO ACTION
;
ALTER TABLE download ADD CONSTRAINT Relationship5 FOREIGN KEY (hash) REFERENCES hash (hash) ON DELETE NO ACTION ON UPDATE NO ACTION
;
ALTER TABLE alert ADD CONSTRAINT Relationship6 FOREIGN KEY (ip) REFERENCES ip (ip) ON DELETE NO ACTION ON UPDATE NO ACTION
;
ALTER TABLE possibles ADD CONSTRAINT Relationship7 FOREIGN KEY ("projectName") REFERENCES project ("projectName") ON DELETE NO ACTION ON UPDATE NO ACTION
;
ALTER TABLE monitor ADD CONSTRAINT Relationship8 FOREIGN KEY ("projectName") REFERENCES project ("projectName") ON DELETE NO ACTION ON UPDATE NO ACTION
;
ALTER TABLE alert ADD CONSTRAINT Relationship9 FOREIGN KEY ("projectName") REFERENCES project ("projectName") ON DELETE NO ACTION ON UPDATE NO ACTION
;
--ALTER TABLE hash ADD CONSTRAINT Relationship10 FOREIGN KEY ("projectName") REFERENCES project ("projectName") ON DELETE NO ACTION ON UPDATE NO ACTION
--;
ALTER TABLE ip ADD CONSTRAINT Relationship11 FOREIGN KEY ("projectName") REFERENCES project ("projectName") ON DELETE NO ACTION ON UPDATE NO ACTION
;
--alert
CREATE OR REPLACE FUNCTION notify_event() RETURNS TRIGGER AS $$
DECLARE
data json;
notification json;
counter int;
response TEXT;
BEGIN
--check if is in alert
select COUNT(*) into counter from alert where ip >>= NEW.ip;
--if its in alert notify
IF (counter != 0 ) THEN
response = 'DATE: ' || NEW.date::text || ', IP: ' ||NEW.ip::text || ', HASH: ' || NEW.hash::text || ', projectName: ' || NEW."projectName"::text ;
PERFORM pg_notify('events', response);
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER download_notify_event
AFTER INSERT ON download
FOR EACH ROW EXECUTE PROCEDURE notify_event();