Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9707d68

Browse files
committed
check project name length, url length
1 parent f41ed9b commit 9707d68

File tree

4 files changed

+16
-18
lines changed

4 files changed

+16
-18
lines changed

pyspider/database/base/projectdb.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,10 @@ def check_update(self, timestamp, fields=None):
5454

5555
def split_group(self, group, lower=True):
5656
return re.split("\W+", (group or '').lower())
57+
58+
def verify_project_name(self, name):
59+
if len(name) > 64:
60+
return False
61+
if re.search(r"[^\w]", name):
62+
return False
63+
return True

pyspider/libs/base_handler.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ def _crawl(self, url, **kwargs):
216216
"""
217217
task = {}
218218

219+
assert len(url) < 1024, "Maximum URL length error: len(url) > 1024"
220+
219221
if kwargs.get('callback'):
220222
callback = kwargs['callback']
221223
if isinstance(callback, six.string_types) and hasattr(self, callback):

pyspider/webui/debug.py

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,11 @@
3232
default_script = inspect.getsource(sample_handler)
3333

3434

35-
def verify_project_name(project):
36-
if re.search(r"[^\w]", project):
37-
return False
38-
return True
39-
40-
4135
@app.route('/debug/<project>', methods=['GET', 'POST'])
4236
def debug(project):
43-
if not verify_project_name(project):
44-
return 'project name is not allowed!', 400
4537
projectdb = app.config['projectdb']
38+
if not projectdb.verify_project_name(project):
39+
return 'project name is not allowed!', 400
4640
info = projectdb.get(project, fields=['name', 'script'])
4741
if info:
4842
script = info['script']
@@ -169,9 +163,9 @@ def run(project):
169163

170164
@app.route('/debug/<project>/save', methods=['POST', ])
171165
def save(project):
172-
if not verify_project_name(project):
173-
return 'project name is not allowed!', 400
174166
projectdb = app.config['projectdb']
167+
if not projectdb.verify_project_name(project):
168+
return 'project name is not allowed!', 400
175169
script = request.form['script']
176170
project_info = projectdb.get(project, fields=['name', 'status', 'group'])
177171
if project_info and 'lock' in projectdb.split_group(project_info.get('group')) \
@@ -208,9 +202,9 @@ def save(project):
208202

209203
@app.route('/debug/<project>/get')
210204
def get_script(project):
211-
if not verify_project_name(project):
212-
return 'project name is not allowed!', 400
213205
projectdb = app.config['projectdb']
206+
if not projectdb.verify_project_name(project):
207+
return 'project name is not allowed!', 400
214208
info = projectdb.get(project, fields=['name', 'script'])
215209
return json.dumps(utils.unicode_obj(info)), \
216210
200, {'Content-Type': 'application/json'}

pyspider/webui/webdav.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,6 @@
1818
from .app import app
1919

2020

21-
def verify_project_name(project):
22-
if re.search(r"[^\w]", project):
23-
return False
24-
return True
25-
2621
class ContentIO(BytesIO):
2722
def close(self):
2823
self.content = self.getvalue()
@@ -49,7 +44,7 @@ def project(self):
4944
if projectdb:
5045
self._project = projectdb.get(self.project_name)
5146
if not self._project:
52-
if verify_project_name(self.project_name) and self.name.endswith('.py'):
47+
if projectdb.verify_project_name(self.project_name) and self.name.endswith('.py'):
5348
self.new_project = True
5449
self._project = {
5550
'name': self.project_name,

0 commit comments

Comments
 (0)