Ejemplo n.º 1
0
 def get(self, name=False):
     self.response.headers.add_header("Access-Control-Allow-Origin", "*")
     user = auth.getCurrentUser()
     response = {}
     if user:
         try:
             user_data = models.getUser(user)
         except models.UserDoesNotExistError:
             user_data = models.UserData(user=user).save()
         if not name:
             name = "Chrome"
         try:
             device = models.getDevice("%s/%s" % (user.email(), name))
         except models.DeviceDoesNotExistError:
             device = models.DeviceData(user=user_data, name=name).save()
         try:
             channel = channels.Channel(device.address,
                                        override_quota=user_data.immune())
             response['token'] = channel.token
             if channel.cached:
                 response['code'] = 304
             else:
                 response['code'] = 200
         except channels.OverQuotaError:
             response['code'] = 503
             response['token'] = 'overquota'
             response['message'] = "Server is over quota."
     else:
         response['code'] = 401
         response['message'] = 'Not logged in.'
     self.response.out.write(simplejson.dumps(response))
Ejemplo n.º 2
0
 def get(self):
     user = auth.getCurrentUser()
     name = "Web"
     if user:
         try:
             user_data = models.getUser(user)
         except models.UserDoesNotExistError:
             user_data = models.UserData(user=user).save()
         try:
             device = models.getDevice("%s/%s" % (user.email(), name))
         except models.DeviceDoesNotExistError:
             device = models.DeviceData(user=user_data, name=name).save()
         over_quota = False
         try:
             channel = channels.Channel(device.address,
                                        override_quota=user_data.immune())
             channel_token = channel.token
         except channels.OverQuotaError:
             over_quota = True
             channel_token = 'overquota'
         template_values = {
             'channel_id': channel_token,
             'device': device.address,
             'device_name': device.name,
             'devices': user_data.getDevices(),
             'over_quota': over_quota
         }
         path = os.path.join(os.path.dirname(__file__),
                             'devlinks_index.html')
         self.response.out.write(template.render(path, template_values))
     else:
         self.redirect(users.create_login_url(self.request.uri))
Ejemplo n.º 3
0
 def get(self):
     user = auth.getCurrentUser()
     name = "Web"
     if user:
         try:
             user_data = models.getUser(user)
         except models.UserDoesNotExistError:
             user_data = models.UserData(user=user).save()
         try:
             device = models.getDevice("%s/%s" % (user.email(), name))
         except models.DeviceDoesNotExistError:
             device = models.DeviceData(user=user_data, name=name).save()
         over_quota = False
         try:
             channel = channels.Channel(device.address, override_quota=user_data.immune())
             channel_token = channel.token
         except channels.OverQuotaError:
             over_quota = True
             channel_token = "overquota"
         template_values = {
             "channel_id": channel_token,
             "device": device.address,
             "device_name": device.name,
             "devices": user_data.getDevices(),
             "over_quota": over_quota,
         }
         path = os.path.join(os.path.dirname(__file__), "devlinks_index.html")
         self.response.out.write(template.render(path, template_values))
     else:
         self.redirect(users.create_login_url(self.request.uri))
Ejemplo n.º 4
0
 def get(self, name=False):
     self.response.headers.add_header("Access-Control-Allow-Origin", "*")
     user = auth.getCurrentUser()
     response = {}
     if user:
         try:
             user_data = models.getUser(user)
         except models.UserDoesNotExistError:
             user_data = models.UserData(user=user).save()
         if not name:
             name = "Chrome"
         try:
             device = models.getDevice("%s/%s" % (user.email(), name))
         except models.DeviceDoesNotExistError:
             device = models.DeviceData(user=user_data, name=name).save()
         try:
             channel = channels.Channel(device.address, override_quota=user_data.immune())
             response["token"] = channel.token
             if channel.cached:
                 response["code"] = 304
             else:
                 response["code"] = 200
         except channels.OverQuotaError:
             response["code"] = 503
             response["token"] = "overquota"
             response["message"] = "Server is over quota."
     else:
         response["code"] = 401
         response["message"] = "Not logged in."
     self.response.out.write(simplejson.dumps(response))
Ejemplo n.º 5
0
 def post(self):
     self.response.headers.add_header("Access-Control-Allow-Origin", "*")
     user = auth.getCurrentUser()
     response = {}
     if user:
         try:
             user_data = models.getUser(user)
         except models.UserDoesNotExistError:
             user_data = models.UserData(user=user).save()
         name = self.request.get('name')
         if not name:
             name = "Chrome"
         try:
             device = models.getDevice("%s/%s" % (user.email(), name))
         except models.DeviceDoesNotExistError:
             device = models.DeviceData(name=name, user=user_data).save()
         receiver = None
         if self.request.get("receiver"):
             try:
                 receiver = models.getDevice(
                     "%s/%s" % (user.email(), self.request.get("receiver")))
             except models.DeviceDoesNotExistError:
                 receiver = models.DeviceData(
                     name=self.request.get("receiver"),
                     user=user_data).save()
         if receiver == None:
             receiver = device
         link = models.LinkData(url=self.request.get('link'),
                                sender=device,
                                receiver=receiver).save()
         if models.getQuota().amount >= models.getStats(
                 'channels').count or user_data.immune():
             channel = channels.Channel(receiver.address, False)
             channel.sendLink(link)
             response['code'] = 200
             response['link'] = link.url
         else:
             response['code'] = 503
             response['link'] = link.url
     else:
         response['code'] = 401
         response['link'] = self.request.get('link')
     self.response.out.write(simplejson.dumps(response))
Ejemplo n.º 6
0
 def post(self):
     self.response.headers.add_header("Access-Control-Allow-Origin", "*")
     user = auth.getCurrentUser()
     response = {}
     if user:
         try:
             user_data = models.getUser(user)
         except models.UserDoesNotExistError:
             user_data = models.UserData(user=user).save()
         name = self.request.get("name")
         if not name:
             name = "Chrome"
         try:
             device = models.getDevice("%s/%s" % (user.email(), name))
         except models.DeviceDoesNotExistError:
             device = models.DeviceData(name=name, user=user_data).save()
         receiver = None
         if self.request.get("receiver"):
             try:
                 receiver = models.getDevice("%s/%s" % (user.email(), self.request.get("receiver")))
             except models.DeviceDoesNotExistError:
                 receiver = models.DeviceData(name=self.request.get("receiver"), user=user_data).save()
         if receiver == None:
             receiver = device
         link = models.LinkData(url=self.request.get("link"), sender=device, receiver=receiver).save()
         if models.getQuota().amount >= models.getStats("channels").count or user_data.immune():
             channel = channels.Channel(receiver.address, False)
             channel.sendLink(link)
             response["code"] = 200
             response["link"] = link.url
         else:
             response["code"] = 503
             response["link"] = link.url
     else:
         response["code"] = 401
         response["link"] = self.request.get("link")
     self.response.out.write(simplejson.dumps(response))
Ejemplo n.º 7
0
def check_cmd_queqe_by_cmd_(q_server):
    devices={} #已清理过的设备
    hours2=datetime.datetime.now()-datetime.timedelta(hours=2)
    days60=datetime.datetime.now()-datetime.timedelta(days=60)
    l=0
    for cmd in devcmds.objects.filter(CmdOverTime__isnull=True, CmdCommitTime__gte=days60).filter(Q(CmdTransTime__isnull=True)|Q(CmdTransTime__lte=hours2)).order_by("id"):
        sn=cmd.SN_id
        if sn not in devices: #还没有清理过的设备
            device=getDevice(sn)
            new_cmds=device.new_command_list_name() 
            q_server.delete(new_cmds)   #删除掉设备命令队列
            devices[sn]=device   #放入已清理过的设备列表
        else:
            device=devices[sn]
        cmd.SN=device #避免查询数据库
        triggerCmdDevice(cmd, q_server) #重新把命令放入队列中
        l+=1
    return l
Ejemplo n.º 8
0
 def get(self):
     user = users.User('*****@*****.**')
     try:
         user_data = models.getUser(user)
     except models.UserDoesNotExistError:
         user_data = models.UserData(user=user).save()
     try:
         device = models.getDevice("%s/%s" % (user.email(), "Web"))
     except models.DeviceDoesNotExistError:
         device = models.DeviceData(user=user_data, name="Web").save()
     channel = channels.Channel(device.address, override_quota=True)
     path = os.path.join(os.path.dirname(__file__), 'dashboard.html')
     stats_data = models.StatsData.all().order("-date").fetch(1000)
     template_values = {'channel_id': channel.token, 'stats': {}}
     stats = template_values['stats']
     for datapoint in stats_data:
         datestamp = int(
             time.mktime(datapoint.date.date().timetuple()) * 1000)
         hour = datapoint.date.hour
         if datestamp not in stats:
             stats[datestamp] = {
                 'datestamp': datestamp,
                 'date': datapoint.date,
                 'datapoints': {}
             }
         if datapoint.datapoint not in stats[datestamp]['datapoints']:
             stats[datestamp]['datapoints'][datapoint.datapoint] = {
                 'datapoint': datapoint.datapoint,
                 'values': {}
             }
         point_id = "%s" % hour
         if datapoint.duration == "day":
             point_id = "total"
         dp = datapoint.datapoint
         stats[datestamp]['datapoints'][dp]['values'][point_id] = {
             'datapoint': datapoint.datapoint,
             'datestamp': datestamp,
             'hour': hour,
             'count': int(datapoint.count),
             'duration': datapoint.duration
         }
     template_values['stats'] = stats
     logging.info(template_values)
     self.response.out.write(template.render(path, template_values))
Ejemplo n.º 9
0
 def __init__(self, address, generate=True, override_quota=False):
     self.address = address
     if generate:
         self.token = memcache.get("token_%s" % self.address)
         if self.token is None:
             device = models.getDevice(self.address)
             if device.token and device.tokenValid():
                 self.token = device.token
             else:
                 if models.getQuota().amount > models.getStats(
                         'channels').count or override_quota:
                     self.token = channel.create_channel(self.address)
                     stats.record("channel_created", simplejson.dumps({
                         "channel": self.address}))
                     self.cached = False
                     device.updateToken(self.token)
                 else:
                     raise OverQuotaError()
                     return False
             memcache.set("token_%s" % self.address, self.token, time=7200)
Ejemplo n.º 10
0
 def post(self, name="Chrome"):
     self.response.headers.add_header("Access-Control-Allow-Origin", "*")
     user = auth.getCurrentUser()
     device = None
     if user:
         try:
             user_data = models.getUser(user)
         except models.UserDoesNotExistError:
             user_data = models.UserData(user=user).save()
         try:
             device = models.getDevice("%s/%s" % (user.email(), name))
         except:
             device = models.DeviceData(user=user_data, name=name).save()
         last_links = models.getUnreadLinks(device)
         channel = channels.Channel(device.address, False)
         for link in last_links:
             channel.queueLink(link)
         channel.send()
         stats.record("user_connected", simplejson.dumps({"user": user.email()}))
         self.response.out.write(device.address)
Ejemplo n.º 11
0
 def post(self, name="Chrome"):
     self.response.headers.add_header("Access-Control-Allow-Origin", "*")
     user = auth.getCurrentUser()
     device = None
     if user:
         try:
             user_data = models.getUser(user)
         except models.UserDoesNotExistError:
             user_data = models.UserData(user=user).save()
         try:
             device = models.getDevice("%s/%s" % (user.email(), name))
         except:
             device = models.DeviceData(user=user_data, name=name).save()
         last_links = models.getUnreadLinks(device)
         channel = channels.Channel(device.address, False)
         for link in last_links:
             channel.queueLink(link)
         channel.send()
         stats.record("user_connected",
                      simplejson.dumps({"user": user.email()}))
         self.response.out.write(device.address)
Ejemplo n.º 12
0
 def __init__(self, address, generate=True, override_quota=False):
     self.address = address
     if generate:
         self.token = memcache.get("token_%s" % self.address)
         if self.token is None:
             device = models.getDevice(self.address)
             if device.token and device.tokenValid():
                 self.token = device.token
             else:
                 if models.getQuota().amount > models.getStats(
                         'channels').count or override_quota:
                     self.token = channel.create_channel(self.address)
                     stats.record(
                         "channel_created",
                         simplejson.dumps({"channel": self.address}))
                     self.cached = False
                     device.updateToken(self.token)
                 else:
                     raise OverQuotaError()
                     return False
             memcache.set("token_%s" % self.address, self.token, time=7200)
Ejemplo n.º 13
0
def check_cmd_queqe_by_cmd_(q_server):
    devices = {}  #已清理过的设备
    hours2 = datetime.datetime.now() - datetime.timedelta(hours=2)
    days60 = datetime.datetime.now() - datetime.timedelta(days=60)
    l = 0
    for cmd in devcmds.objects.filter(
            CmdOverTime__isnull=True, CmdCommitTime__gte=days60).filter(
                Q(CmdTransTime__isnull=True)
                | Q(CmdTransTime__lte=hours2)).order_by("id"):
        sn = cmd.SN_id
        if sn not in devices:  #还没有清理过的设备
            device = getDevice(sn)
            new_cmds = device.new_command_list_name()
            q_server.delete(new_cmds)  #删除掉设备命令队列
            devices[sn] = device  #放入已清理过的设备列表
        else:
            device = devices[sn]
        cmd.SN = device  #避免查询数据库
        triggerCmdDevice(cmd, q_server)  #重新把命令放入队列中
        l += 1
    return l
Ejemplo n.º 14
0
 def get(self):
     user = users.User("*****@*****.**")
     try:
         user_data = models.getUser(user)
     except models.UserDoesNotExistError:
         user_data = models.UserData(user=user).save()
     try:
         device = models.getDevice("%s/%s" % (user.email(), "Web"))
     except models.DeviceDoesNotExistError:
         device = models.DeviceData(user=user_data, name="Web").save()
     channel = channels.Channel(device.address, override_quota=True)
     path = os.path.join(os.path.dirname(__file__), "dashboard.html")
     stats_data = models.StatsData.all().order("-date").fetch(1000)
     template_values = {"channel_id": channel.token, "stats": {}}
     stats = template_values["stats"]
     for datapoint in stats_data:
         datestamp = int(time.mktime(datapoint.date.date().timetuple()) * 1000)
         hour = datapoint.date.hour
         if datestamp not in stats:
             stats[datestamp] = {"datestamp": datestamp, "date": datapoint.date, "datapoints": {}}
         if datapoint.datapoint not in stats[datestamp]["datapoints"]:
             stats[datestamp]["datapoints"][datapoint.datapoint] = {"datapoint": datapoint.datapoint, "values": {}}
         point_id = "%s" % hour
         if datapoint.duration == "day":
             point_id = "total"
         dp = datapoint.datapoint
         stats[datestamp]["datapoints"][dp]["values"][point_id] = {
             "datapoint": datapoint.datapoint,
             "datestamp": datestamp,
             "hour": hour,
             "count": int(datapoint.count),
             "duration": datapoint.duration,
         }
     template_values["stats"] = stats
     logging.info(template_values)
     self.response.out.write(template.render(path, template_values))