|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
From 66f2db86bf06d229a48bfa197cf93cb41e59953d Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
From: Ruben <ruben@rubenkerkhof.com>
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
Date: Sun, 17 Oct 2010 17:38:55 +0200
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
Subject: [PATCH 11/14] 25_CVE-2009-1629.diff from Debian
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
---
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
ajaxterm.js | 17 ++++++++++++++-
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
ajaxterm.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
2 files changed, 74 insertions(+), 8 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
diff --git a/ajaxterm.js b/ajaxterm.js
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
index 4edcb6c..2579a8f 100644
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
--- a/ajaxterm.js
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+++ b/ajaxterm.js
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
@@ -6,7 +6,22 @@ ajaxterm.Terminal_ctor=function(id,width,height) {
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
ie=1;
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
if (navigator.userAgent.indexOf("WebKit") >= 0)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
webkit=1;
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
- var sid=""+Math.round(Math.random()*1000000000);
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ var sid="";
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ for (var i=0; i < 255; i++) {
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ var r = 0;
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ // now get a random number between 0 and 255
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ // numbers not in the range are intentionally discarded
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ // as it reduces the chance of predicting the seed, by not
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ // using all of the numbers generated by the PRNG
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ do {
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ r = Math.round(Math.random()*1000);
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ } while(r >= 255);
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ r = r.toString(16);
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ if (r.length == 1)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ r = "0"+r;
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ sid += "%" + r;
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
if (width==0) {
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
width=80;
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
diff --git a/ajaxterm.py b/ajaxterm.py
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
index 962e685..8695590 100755
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
--- a/ajaxterm.py
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+++ b/ajaxterm.py
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
@@ -8,8 +8,14 @@ try:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
except:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
pass
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
-import array,cgi,fcntl,glob,mimetypes,optparse,os,pty,random,re,signal,select,sys,threading,time,termios,struct,pwd
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
-from datetime import datetime
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+import array,cgi,fcntl,glob,mimetypes,optparse,os,pty,random,re,signal,select,sys,threading,time,termios,struct,pwd,Cookie
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+from datetime import datetime, timedelta
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+try:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ from hashlib import sha1
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+except ImportError:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ import sha
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ sha1 = sha.new
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
os.chdir(os.path.normpath(os.path.dirname(__file__)))
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
# Optional: Add QWeb in sys path
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
@@ -517,30 +523,61 @@ class AjaxTerm:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
self.multi = Multiplex(cmd,serverport)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
self.reaper = Reaper(self.multi)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
self.session = {}
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ self.session_ip = {}
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ self.sessions_limit = 20
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ self.sessions_user_limit = 4
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ m = sha1()
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ m.update(os.urandom(128))
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ self.cookie_name = m.hexdigest()
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
def __call__(self, environ, start_response):
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
req = qweb.QWebRequest(environ, start_response,session=None)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
if req.PATH_INFO.endswith('/u'):
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ req.response_headers['Content-Type']='text/xml'
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ uid=""
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ if self.cookie_name not in req.request_cookies:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ req.write('<idem></idem>')
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ return req
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ uid = req.request_cookies[self.cookie_name].value
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
s=req.REQUEST["s"]
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
k=req.REQUEST["k"]
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
c=req.REQUEST["c"]
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
w=req.REQUEST.int("w")
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
h=req.REQUEST.int("h")
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
- if s in self.session:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
- term=self.session[s]
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ ip="unknown"
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ if environ.has_key("REMOTE_ADDR"):
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ ip=environ['REMOTE_ADDR']
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ if ip == "127.0.0.1" and environ.has_key("HTTP_X_FORWARDED_FOR"):
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ ip=environ["HTTP_X_FORWARDED_FOR"]
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ if (uid+s) in self.session:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ term=self.session[uid+s]
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ req.response_cookies.load(req.request_cookies[self.cookie_name].OutputString())
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ req.response_cookies[self.cookie_name]['expires'] = datetime.utcnow()+timedelta(seconds=60)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
if not (w>2 and w<256 and h>2 and h<100):
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
w,h=80,25
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
- term=self.session[s]=self.multi.create(w,h)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ # check if there aren't too many open sessions
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ if len(self.session) < self.sessions_limit:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ count=0
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ for i in self.session_ip.keys():
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ if self.session_ip[i] == ip:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ count+=1
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ if count <= self.sessions_user_limit:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ term=self.session[uid+s]=self.multi.create(w,h)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ self.session_ip[uid+s]=ip
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ else:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ req.write('<idem></idem>')
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ return req
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
if k:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
self.multi.proc_write(term,k)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
time.sleep(0.002)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
dump=self.multi.dump(term,c)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
- req.response_headers['Content-Type']='text/xml'
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
if isinstance(dump,str):
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
req.write(dump)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
req.response_gzencode=1
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
- del self.session[s]
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ del self.session[uid+s]
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ del self.session_ip[uid+s]
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
req.write('<idem></idem>')
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
# print "sessions %r"%self.session
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
@@ -549,9 +586,23 @@ class AjaxTerm:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
req.response_headers['Content-Type'] = self.mime.get(os.path.splitext(n)[1].lower(), 'application/octet-stream')
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
req.write(self.files[n])
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
else:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ if self.cookie_name not in req.request_cookies:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ self.genSidCookie(req)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
req.response_headers['Content-Type'] = 'text/html; charset=UTF-8'
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
req.write(self.files['index'])
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
return req
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ def genSidCookie(self, req):
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ m = sha1()
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ m.update(os.urandom(160))
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ req.response_cookies[self.cookie_name] = m.hexdigest()
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ # try to set httponly if supported (added in 2.6)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ try:
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ req.response_cookies[self.cookie_name]['httponly'] = 1
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ except (Cookie.CookieError):
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ pass
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ req.response_cookies[self.cookie_name]['path'] = req.PATH_INFO
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ req.response_cookies[self.cookie_name]['expires'] = datetime.utcnow()+timedelta(seconds=60)
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
+ return req
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
def main():
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
parser = optparse.OptionParser()
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
--
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
1.7.3.1
|
|
![](https://seccdn.libravatar.org/avatar/2a5d5ceaf38d3f35e64d348b25f1f002e64eb2cbad14763b4684a716c4444733?s=16&d=retro) |
f147723 |
|