Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Video AG Infrastruktur
website
Commits
3996a7b4
Commit
3996a7b4
authored
Aug 29, 2016
by
Julian Rother
Browse files
Added logging to new 'log' table and fixed sqlite wrapper
parent
c12fa866
Changes
2
Hide whitespace changes
Inline
Side-by-side
db_schema.sql
View file @
3996a7b4
...
...
@@ -99,6 +99,15 @@ CREATE TABLE IF NOT EXISTS `site_texts` (
`modified_when`
datetime
NOT
NULL
,
`modified_by`
text
NOT
NULL
);
CREATE
TABLE
IF
NOT
EXISTS
`log`
(
`ip`
varchar
(
64
),
`id`
varchar
(
64
),
`time`
datetime
NOT
NULL
,
`object`
varchar
(
10
),
`obj_id`
INTEGER
,
`path`
varchar
(
255
)
NOT
NULL
,
PRIMARY
KEY
(
ip
,
id
,
time
,
path
)
);
CREATE
TABLE
IF
NOT
EXISTS
`streams`
(
`handle`
varchar
(
32
)
NOT
NULL
PRIMARY
KEY
,
`active`
INTEGER
NOT
NULL
,
...
...
server.py
View file @
3996a7b4
...
...
@@ -2,6 +2,7 @@
from
flask
import
*
from
functools
import
wraps
import
datetime
import
sqlite3
import
os
import
re
...
...
@@ -55,6 +56,7 @@ def query(operation, *params):
if
'db'
not
in
g
:
g
.
db
=
sqlite3
.
connect
(
config
[
'SQLITE_DB'
])
g
.
db
.
row_factory
=
dict_factory
g
.
db
.
isolation_level
=
None
if
not
hasattr
(
request
,
'db'
):
request
.
db
=
g
.
db
.
cursor
()
request
.
db
.
execute
(
operation
,
params
)
...
...
@@ -62,6 +64,12 @@ def query(operation, *params):
return
[]
return
request
.
db
.
fetchall
()
@
app
.
teardown_request
def
commit_db
(
*
args
):
if
hasattr
(
request
,
'db'
):
request
.
db
.
close
()
g
.
db
.
commit
()
def
searchquery
(
text
,
columns
,
match
,
tables
,
suffix
,
*
suffixparams
):
params
=
[]
subexprs
=
[]
...
...
@@ -235,7 +243,7 @@ def edit():
tabs
=
{
'courses'
:
(
'courses_data'
,
'id'
,
[
'visible'
,
'listed'
,
'title'
,
'short'
,
'handle'
,
'organizer'
,
'subject'
,
'credits'
,
'semester'
,
'downloadable'
,
'internal'
,
'responsible'
]),
'internal'
,
'responsible'
,
'description'
]),
'lectures'
:
(
'lectures_data'
,
'id'
,
[
'visible'
,
'title'
,
'comment'
,
'internal'
,
'speaker'
,
'place'
,
'time'
,
'duration'
,
'jumplist'
,
'titlefile'
]),
...
...
@@ -262,16 +270,18 @@ def auth(): # For use with nginx auth_request
if
'X-Original-Uri'
not
in
request
.
headers
:
return
'Internal Server Error'
,
500
url
=
request
.
headers
[
'X-Original-Uri'
].
lstrip
(
config
[
'VIDEOPREFIX'
])
videos
=
query
(
'''SELECT videos.path
ip
=
request
.
headers
.
get
(
'X-Real-IP'
,
''
)
videos
=
query
(
'''SELECT videos.path, videos.id
FROM videos
JOIN lectures ON (videos.lecture_id = lectures.id)
JOIN courses ON (lectures.course_id = courses.id)
WHERE videos.path = ?
AND (? OR (courses.visible AND lectures.visible AND videos.visible))'''
,
url
,
ismod
())
if
videos
and
url
.
startswith
(
'pub'
):
if
videos
and
(
url
.
startswith
(
'pub'
)
or
ismod
()):
query
(
'INSERT INTO log VALUES (?, "", ?, "video", ?, ?)'
,
ip
,
datetime
.
datetime
.
now
(),
videos
[
0
][
'id'
],
url
)
return
"OK"
,
200
elif
videos
and
ismod
(
):
elif
url
.
endswith
(
'jpg'
):
return
"OK"
,
200
else
:
return
"Not allowed"
,
403
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment