Пример #1
0
def alfred2():
    try:
        start_time = time.time()
        mysql = FreifunkMySQL()
        banned = mysql.fetchall("""
			SELECT mac FROM banned
		""", (), "mac")
        hoodsv2 = mysql.fetchall("""
			SELECT name FROM hoodsv2
		""", (), "name")
        statstime = utcnow()
        netifdict = mysql.fetchdict("SELECT id, name FROM netifs", (), "name",
                                    "id")
        hoodsdict = mysql.fetchdict("SELECT id, name FROM hoods", (), "name",
                                    "id")

        r = make_response(json.dumps({}))
        r.mimetype = 'application/json'
        if request.method == 'POST':
            try:
                alfred_data = request.get_json()
            except Exception as e:
                writelog(
                    CONFIG["debug_dir"] + "/fail_alfred2.txt",
                    "{} - {}".format(request.environ['REMOTE_ADDR'],
                                     'JSON parsing failed'))
                writefulllog(
                    "Warning: Error converting ALFRED2 data to JSON:\n__%s" %
                    (request.get_data(True, True).replace("\n", "\n__")))
                r.headers['X-API-STATUS'] = "JSON parsing failed"
                return r

            if alfred_data:
                # load router status xml data
                i = 1
                for mac, xml in alfred_data.items():
                    import_nodewatcher_xml(mysql, mac, xml, banned, hoodsv2,
                                           netifdict, hoodsdict, statstime)
                    if (i % 500 == 0):
                        mysql.commit()
                    i += 1
                mysql.commit()
                r.headers['X-API-STATUS'] = "ALFRED2 data imported"
        mysql.close()

        writelog(
            CONFIG["debug_dir"] + "/apitime.txt",
            "%s - %.3f seconds (alfred2)" %
            (request.environ['REMOTE_ADDR'], time.time() - start_time))
        return r
    except Exception as e:
        writelog(CONFIG["debug_dir"] + "/fail_alfred.txt",
                 "{} - {}".format(request.environ['REMOTE_ADDR'], str(e)))
        writefulllog("Warning: Error while processing ALFRED2 data: %s\n__%s" %
                     (e, traceback.format_exc().replace("\n", "\n__")))
        r.headers['X-API-STATUS'] = "ERROR processing ALFRED2 data"
        return r
Пример #2
0
def alfred():
	try:
		start_time = time.time()
		mysql = FreifunkMySQL()
		#set_alfred_data = {65: "hallo", 66: "welt"}
		set_alfred_data = {}
		r = make_response(json.dumps(set_alfred_data))
		#import cProfile, pstats, io
		#pr = cProfile.Profile()
		#pr.enable()
		banned = mysql.fetchall("""
			SELECT mac FROM banned
		""",(),"mac")
		statstime = utcnow()
		netifdict = mysql.fetchdict("SELECT id, name FROM netifs",(),"name","id")
		if request.method == 'POST':
			alfred_data = request.get_json()
			
			if alfred_data:
				# load router status xml data
				i = 1
				for mac, xml in alfred_data.get("64", {}).items():
					import_nodewatcher_xml(mysql, mac, xml, banned, netifdict, statstime)
					if (i%500 == 0):
						mysql.commit()
					i += 1
				mysql.commit()
				r.headers['X-API-STATUS'] = "ALFRED data imported"
		mysql.close()
		#pr.disable()
		#s = io.StringIO()
		#sortby = 'cumulative'
		#ps = pstats.Stats(pr, stream=s).sort_stats(sortby)
		#ps.print_stats()
		#print(s.getvalue())
		
		writelog(CONFIG["debug_dir"] + "/apitime.txt", "%s - %.3f seconds" % (request.environ['REMOTE_ADDR'],time.time() - start_time))
		
		r.mimetype = 'application/json'
		return r
	except Exception as e:
		writelog(CONFIG["debug_dir"] + "/fail_alfred.txt", "{} - {}".format(request.environ['REMOTE_ADDR'],str(e)))
		import traceback
		writefulllog("Warning: Error while processing ALFRED data: %s\n__%s" % (e, traceback.format_exc().replace("\n", "\n__")))