Skip to content

Commit

Permalink
Merge branch 'release/2.3.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
javipalanca committed Nov 3, 2017
2 parents a9f0bd9 + 2a36271 commit afa3b03
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 43 deletions.
2 changes: 1 addition & 1 deletion runspade.py
Expand Up @@ -19,7 +19,7 @@
from xmppd.xmppd import Server

__author__ = "Gustavo Aranda <gusarba@gmail.com> and Javier Palanca <jpalanca@gmail.com>"
__version__ = "2.3"
__version__ = "2.3.1"
__copyright__ = "Copyright (C) 2006-2017"
__license__ = "LGPL"

Expand Down
13 changes: 12 additions & 1 deletion spade/Agent.py
Expand Up @@ -45,7 +45,7 @@
try:
import json
except ImportError:
import simplejson as json
import simplejson as json


import DF
Expand Down Expand Up @@ -135,7 +135,9 @@ def __init__(self, agentjid, serverplatform, p2p=False):
self.wui.registerController("logout", self.WUIController_logout)
self.wui.registerController("admin", self.WUIController_admin)
self.wui.registerController("log", self.WUIController_log)
self.wui.registerController("log_json", self.WUIController_log_json)
self.wui.registerController("messages", self.WUIController_messages)
self.wui.registerController("messages_json", self.WUIController_messages_json)
self.wui.registerController("search", self.WUIController_search)
self.wui.registerController("send", self.WUIController_sendmsg)
self.wui.registerController("sent", self.WUIController_sent)
Expand Down Expand Up @@ -215,6 +217,10 @@ def WUIController_admin(self):
def WUIController_log(self):
return "log.pyra", {"name": self.getName(), "log": self.getLog()}

@require_login
def WUIController_log_json(self):
return None, {"name": self.getName(), "log": self.getLog()}

@require_login
def WUIController_roster(self):
roster = {}
Expand All @@ -224,6 +230,11 @@ def WUIController_roster(self):
roster[friend] = self.roster.getContact(friend)
return "agent_roster.pyra", {"name": self.getName(), "roster": roster}

@require_login
def WUIController_messages_json(self, agents=None):
_, data = self.WUIController_messages(agents=agents)
return None, data

@require_login
def WUIController_messages(self, agents=None):
index = 0
Expand Down
93 changes: 52 additions & 41 deletions spade/wui.py
Expand Up @@ -2,12 +2,13 @@
import SocketServer
import SimpleHTTPServer
import BaseHTTPServer
import json

import pyratemp
import os
import sys
import traceback
import urllib
import time
import random
import socket
import Cookie
Expand Down Expand Up @@ -318,44 +319,54 @@ def do_GET(self):
if sess.user_authenticated is True:
authenticated = True
ret['authenticated'] = authenticated
try:
if os.path.exists(self.server.owner.template_path + os.sep + template):
t = pyratemp.Template(filename=self.server.owner.template_path + os.sep + template, data=ret)
else:
#olddir = os.path.curdir
#os.chdir(self.server.spade_path)
t = pyratemp.Template(filename=self.server.owner.spade_path + os.sep + "templates" + os.sep + template, data=ret)
#print template, ret
#os.chdir(olddir)
except pyratemp.TemplateSyntaxError, e:
_exception = sys.exc_info()
if _exception[0]:
_err = ''.join(traceback.format_exception(_exception[0], _exception[1], _exception[2])).rstrip()
t = pyratemp.Template(filename=self.server.owner.spade_path + os.sep + "templates" + os.sep + "501.pyra", data={"template": template, "error": str(_err), "name": self.server.owner.owner.getName(), "authenticated":authenticated})
code = 501
except Exception, e:
#No template
_exception = sys.exc_info()
if _exception[0]:
_err = ''.join(traceback.format_exception(_exception[0], _exception[1], _exception[2])).rstrip()
#print "###", _err, "###"
t = pyratemp.Template(filename=self.server.owner.spade_path + os.sep + "templates" + os.sep + "503.pyra", data={"page": template, "name": self.server.owner.owner.getName(), "authenticated":authenticated})
code = 503
try:
result = t()
except Exception, e:
#Error in template
_exception = sys.exc_info()
if _exception[0]:
_err = ''.join(traceback.format_exception(_exception[0], _exception[1], _exception[2])).rstrip()
t = pyratemp.Template(filename=self.server.owner.spade_path + os.sep + "templates" + os.sep + "501.pyra", data={"template": template, "error": str(_err), "name": self.server.owner.owner.getName(), "authenticated":authenticated})
result = t()
code = 501

r = result.encode("ascii", 'xmlcharrefreplace')
if template:
try:
if os.path.exists(self.server.owner.template_path + os.sep + template):
t = pyratemp.Template(filename=self.server.owner.template_path + os.sep + template, data=ret)
else:
#olddir = os.path.curdir
#os.chdir(self.server.spade_path)
t = pyratemp.Template(filename=self.server.owner.spade_path + os.sep + "templates" + os.sep + template, data=ret)
#print template, ret
#os.chdir(olddir)
except pyratemp.TemplateSyntaxError, e:
_exception = sys.exc_info()
if _exception[0]:
_err = ''.join(traceback.format_exception(_exception[0], _exception[1], _exception[2])).rstrip()
t = pyratemp.Template(filename=self.server.owner.spade_path + os.sep + "templates" + os.sep + "501.pyra", data={"template": template, "error": str(_err), "name": self.server.owner.owner.getName(), "authenticated":authenticated})
code = 501
except Exception, e:
#No template
_exception = sys.exc_info()
if _exception[0]:
_err = ''.join(traceback.format_exception(_exception[0], _exception[1], _exception[2])).rstrip()
#print "###", _err, "###"
t = pyratemp.Template(filename=self.server.owner.spade_path + os.sep + "templates" + os.sep + "503.pyra", data={"page": template, "name": self.server.owner.owner.getName(), "authenticated":authenticated})
code = 503
try:
result = t()
except Exception, e:
#Error in template
_exception = sys.exc_info()
if _exception[0]:
_err = ''.join(traceback.format_exception(_exception[0], _exception[1], _exception[2])).rstrip()
t = pyratemp.Template(filename=self.server.owner.spade_path + os.sep + "templates" + os.sep + "501.pyra", data={"template": template, "error": str(_err), "name": self.server.owner.owner.getName(), "authenticated":authenticated})
result = t()
code = 501

r = result.encode("ascii", 'xmlcharrefreplace')

self.send_response(code)
for morsel in self.cookie.values():
self.send_header('Set-Cookie', morsel.output(header='').lstrip())
self.end_headers()
self.wfile.write(r)

self.send_response(code)
for morsel in self.cookie.values():
self.send_header('Set-Cookie', morsel.output(header='').lstrip())
self.end_headers()
self.wfile.write(r)
elif code == 200 and isinstance(ret, dict):
# template is None, so this is an AJAX request
self.send_response(code)
for morsel in self.cookie.values():
self.send_header('Set-Cookie', morsel.output(header='').lstrip())
self.send_header('Content-Type', 'application/json')
self.end_headers()
self.wfile.write(json.dumps(ret))

0 comments on commit afa3b03

Please sign in to comment.