annotate farol/main.py @ 18:d547b6a0038e

Add more and more error handling in the /new page.
author Benoît Allard <benoit.allard@greenbone.net>
date Tue, 30 Sep 2014 16:27:42 +0200
parents deced0345829
children 56cab60172ad
rev   line source
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
1 # -*- encoding: utf-8 -*-
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
2 # Description:
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
3 # Farol Web Application
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
4 #
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
5 # Authors:
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
6 # BenoƮt Allard <benoit.allard@greenbone.net>
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
7 #
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
8 # Copyright:
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
9 # Copyright (C) 2014 Greenbone Networks GmbH
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
10 #
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
11 # This program is free software; you can redistribute it and/or
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
12 # modify it under the terms of the GNU General Public License
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
13 # as published by the Free Software Foundation; either version 2
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
14 # of the License, or (at your option) any later version.
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
15 #
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
16 # This program is distributed in the hope that it will be useful,
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
19 # GNU General Public License for more details.
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
20 #
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
21 # You should have received a copy of the GNU General Public License
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
22 # along with this program; if not, write to the Free Software
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
23 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
24
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
25 import os
13
d5265a0da13a Always log exceptions to file.
Benoît Allard <benoit.allard@greenbone.net>
parents: 12
diff changeset
26 import logging
d5265a0da13a Always log exceptions to file.
Benoît Allard <benoit.allard@greenbone.net>
parents: 12
diff changeset
27 from logging import FileHandler
17
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
28 import urllib2
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
29 from xml.etree import ElementTree as ET
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
30
15
f8d51aaac8bc Display sessionID in about page as well as various versions
Benoît Allard <benoit.allard@greenbone.net>
parents: 13
diff changeset
31 import farolluz
7
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
32 from farolluz.cvrf import CVRF, ValidationError
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
33 from farolluz.parsers.cvrf import parse
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
34 from farolluz.py2 import urlopen
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
35 from farolluz.renderer import render as render_cvrf
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
36 from farolluz.utils import utcnow
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
37
15
f8d51aaac8bc Display sessionID in about page as well as various versions
Benoît Allard <benoit.allard@greenbone.net>
parents: 13
diff changeset
38 import flask
7
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
39 from flask import Flask, request, render_template, redirect, url_for, flash
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
40 from werkzeug import secure_filename
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
41
15
f8d51aaac8bc Display sessionID in about page as well as various versions
Benoît Allard <benoit.allard@greenbone.net>
parents: 13
diff changeset
42 from . import __version__, cache
7
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
43 from .document import document
12
4219d6fb4c38 Implement three kind of caches
Benoît Allard <benoit.allard@greenbone.net>
parents: 11
diff changeset
44 from .session import get_current, set_current, has_current, document_required
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
45 from .vulnerability import vulnerability
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
46 from .producttree import producttree
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
47
1
63b00c10ada8 Add Configuration support, warning when in DEBUG mode, and Deployment instruction
Benoît Allard <benoit.allard@greenbone.net>
parents: 0
diff changeset
48 app = Flask(__name__, instance_relative_config=True)
63b00c10ada8 Add Configuration support, warning when in DEBUG mode, and Deployment instruction
Benoît Allard <benoit.allard@greenbone.net>
parents: 0
diff changeset
49 app.config.from_object('farol.config.Config')
63b00c10ada8 Add Configuration support, warning when in DEBUG mode, and Deployment instruction
Benoît Allard <benoit.allard@greenbone.net>
parents: 0
diff changeset
50 app.config.from_pyfile('farol.cfg', silent=True)
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
51
12
4219d6fb4c38 Implement three kind of caches
Benoît Allard <benoit.allard@greenbone.net>
parents: 11
diff changeset
52 app.register_blueprint(cache.mod, url_prefix='/cache')
7
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
53 app.register_blueprint(document, url_prefix='/document')
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
54 app.register_blueprint(vulnerability, url_prefix='/vulnerability')
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
55 app.register_blueprint(producttree, url_prefix='/producttree')
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
56
13
d5265a0da13a Always log exceptions to file.
Benoît Allard <benoit.allard@greenbone.net>
parents: 12
diff changeset
57 file_handler = FileHandler(os.path.join(app.instance_path, 'farol.log'))
d5265a0da13a Always log exceptions to file.
Benoît Allard <benoit.allard@greenbone.net>
parents: 12
diff changeset
58 file_handler.setLevel(logging.WARNING)
d5265a0da13a Always log exceptions to file.
Benoît Allard <benoit.allard@greenbone.net>
parents: 12
diff changeset
59 app.logger.addHandler(file_handler)
3
3478e20885fd Add a ReverseProxy and fix the cache path everywhere
Benoît Allard <benoit.allard@greenbone.net>
parents: 1
diff changeset
60
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
61 @app.context_processor
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
62 def cache_content():
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
63 """ List the documents in cache """
12
4219d6fb4c38 Implement three kind of caches
Benoît Allard <benoit.allard@greenbone.net>
parents: 11
diff changeset
64 return dict(caching=cache.caching_type(),
4219d6fb4c38 Implement three kind of caches
Benoît Allard <benoit.allard@greenbone.net>
parents: 11
diff changeset
65 cache=cache.cache_content())
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
66
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
67 @app.context_processor
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
68 def doc_properties():
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
69 if not has_current():
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
70 return {'has_current': False}
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
71 cvrf = get_current()
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
72 vulns = [(v.getTitle(), v._ordinal) for v in cvrf._vulnerabilities]
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
73 prods = []
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
74 if cvrf._producttree:
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
75 prods = [(p._name, p._productid) for p in cvrf._producttree._products]
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
76 try:
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
77 cvrf.validate()
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
78 error = None
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
79 except ValidationError as ve:
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
80 error = ve
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
81 return dict(has_current=True, vulnerabilities=vulns, products=prods, error=error)
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
82
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
83 @app.template_filter('secure_filename')
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
84 def makeId(string):
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
85 return secure_filename(string)
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
86
7
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
87 @app.route('/')
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
88 def welcome():
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
89 return render_template('welcome.j2')
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
90
17
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
91 def set_url(url):
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
92 try: content = urlopen(url).read()
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
93 except urllib2.HTTPError as e:
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
94 flash('Unable to retrieve %s: %s' % (url, e))
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
95 return
18
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
96 set_text(content)
17
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
97
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
98 def set_RHSA(id_):
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
99 # validate input
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
100 if ':' not in id_:
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
101 flash('Wrong RHSA id: %s' % id_)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
102 return
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
103 year, index = id_.split(':', 1)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
104 try:
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
105 int(year)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
106 int(index)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
107 except ValueError:
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
108 flash('Wrong RHSA id: %s' % id_)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
109 return
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
110 # Process it
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
111 set_url("https://www.redhat.com/security/data/cvrf/%(year)s/cvrf-rhsa-%(year)s-%(index)s.xml" % {'year': year, 'index': index})
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
112
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
113 def set_oracle(id_):
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
114 try: int(id_)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
115 except ValueError:
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
116 flash('Wrong Oracle id: %s' % id_)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
117 return
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
118 set_url("http://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/%s.xml" % id_)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
119
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
120 def set_cisco(id_):
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
121 if id_.count('-') < 2:
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
122 flash('Wrong cisco id: %s' % id_)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
123 return
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
124 kind, date, name = id_.split('-', 2)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
125 try: kind = {'sa': 'Advisory', 'sr': 'Response'}[kind]
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
126 except KeyError:
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
127 flash('Wrong cisco id: %s' % id_)
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
128 return
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
129 set_url("http://tools.cisco.com/security/center/contentxml/CiscoSecurity%(kind)s/cisco-%(id)s/cvrf/cisco-%(id)s_cvrf.xml" % {'kind': kind, 'id': id_})
8
2ce3676c9b2e Ease the import of new documents
Benoît Allard <benoit.allard@greenbone.net>
parents: 7
diff changeset
130
18
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
131 def set_text(text):
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
132 try: doc = parse(content)
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
133 except ET.ParseError as e:
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
134 flash('Unable to parse %s: %s' % (url, e))
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
135 return
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
136 set_current(doc)
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
137
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
138 @app.route('/new', methods=['GET', 'POST'])
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
139 def new():
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
140 if request.method != 'POST':
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
141 return render_template('new.j2', has_document=has_current(), now=utcnow())
12
4219d6fb4c38 Implement three kind of caches
Benoît Allard <benoit.allard@greenbone.net>
parents: 11
diff changeset
142
8
2ce3676c9b2e Ease the import of new documents
Benoît Allard <benoit.allard@greenbone.net>
parents: 7
diff changeset
143 if 'rhsa' in request.form:
17
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
144 set_RHSA(request.form['id'])
8
2ce3676c9b2e Ease the import of new documents
Benoît Allard <benoit.allard@greenbone.net>
parents: 7
diff changeset
145 elif 'oracle' in request.form:
17
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
146 set_oracle(request.form['id'])
8
2ce3676c9b2e Ease the import of new documents
Benoît Allard <benoit.allard@greenbone.net>
parents: 7
diff changeset
147 elif 'cisco' in request.form:
17
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
148 set_cisco(request.form['id'])
8
2ce3676c9b2e Ease the import of new documents
Benoît Allard <benoit.allard@greenbone.net>
parents: 7
diff changeset
149 elif 'nasl' in request.form:
2ce3676c9b2e Ease the import of new documents
Benoît Allard <benoit.allard@greenbone.net>
parents: 7
diff changeset
150 flash("I'm not able to parse NASL scripts yet", 'danger')
2ce3676c9b2e Ease the import of new documents
Benoît Allard <benoit.allard@greenbone.net>
parents: 7
diff changeset
151 return redirect(url_for('new'))
2ce3676c9b2e Ease the import of new documents
Benoît Allard <benoit.allard@greenbone.net>
parents: 7
diff changeset
152 elif 'url' in request.form:
17
deced0345829 Add more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 15
diff changeset
153 set_url(request.form['url'])
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
154 elif 'local' in request.files:
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
155 upload = request.files['local']
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
156 if not upload.filename.endswith('.xml'):
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
157 flash('Uploaded files should end in .xml', 'danger')
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
158 return redirect(url_for('new'))
18
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
159 fpath = os.path.join(app.instance_path, 'tmp',
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
160 secure_filename(upload.filename))
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
161 upload.save(fpath)
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
162 with open(fpath, 'rt') as f:
18
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
163 set_text(f.read())
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
164 os.remove(fpath)
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
165 elif 'text' in request.form:
18
d547b6a0038e Add more and more error handling in the /new page.
Benoît Allard <benoit.allard@greenbone.net>
parents: 17
diff changeset
166 set_text(request.form['text'].encode('utf-8'))
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
167 else:
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
168 set_current(CVRF(request.form['title'], request.form['type']))
7
8f41bb7f4681 Move the Document management routines to a document Blueprint
Benoît Allard <benoit.allard@greenbone.net>
parents: 3
diff changeset
169 return redirect(url_for('document.view'))
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
170
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
171 @app.route('/render/<format_>')
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
172 @document_required
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
173 def render(format_):
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
174 cvrf = get_current()
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
175 doc = render_cvrf(cvrf, format_ + '.j2')
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
176 return render_template('render.j2', format_=format_, title=cvrf._title, type_=cvrf._type, doc=doc )
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
177
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
178 @app.route('/about')
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
179 def about():
15
f8d51aaac8bc Display sessionID in about page as well as various versions
Benoît Allard <benoit.allard@greenbone.net>
parents: 13
diff changeset
180 versions = (('farol', __version__), ('farolluz', farolluz.__version__), ('flask', flask.__version__))
f8d51aaac8bc Display sessionID in about page as well as various versions
Benoît Allard <benoit.allard@greenbone.net>
parents: 13
diff changeset
181 return render_template('about.j2', instance_dir=app.instance_path, versions=versions)
0
4a9f23230eba Initial Release
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff changeset
182

http://farol.wald.intevation.org