ソースを参照

ffpb_findnode(): scan peers_repo if set

Helge Jung 9 年 前
コミット
77b838be35
1 ファイル変更16 行追加8 行削除
  1. 16 8
      modules/ffpb.py

+ 16 - 8
modules/ffpb.py

@@ -129,25 +129,33 @@ def ffpb_findnode(name):
 			return node
 
 	# still not found -> try peers_repo
-	peerfilename = '/home/ffpb-statusbot/knoten/' + name
+	peer_name = None
 	peer_mac = None
 
-	if os.path.exists(peerfilename):
-		peerfile = open(peerfilename, "r")
+	if not peers_repo is None:
+		for b in peers_repo.heads.master.commit.tree.blobs:
+			if b.name.lower() == name.lower():
+				peer_name = b.name
+				peer_file = b.abspath
+				break
+
+	if os.path.exists(peer_file):
+		peerfile = open(peer_file, "r")
 		for line in peerfile:
 			if line.startswith("# MAC:"):
 				peer_mac = line[6:].strip()
 		peerfile.close()
 
-	print("peer '", name, "': file '", peerfilename, "', MAC ", peer_mac, sep='')
-
 	if not (peer_mac is None):
-		return mac2ipv6(peer_mac)
+		return { "hostname": peer_name, "network": { "addresses": [ mac2ipv6(peer_mac, "fdca:ffee:ff12:132:") ], "mac": peer_mac } }
 
 	return None
 
-def mac2ipv6(mac):
-	return str(netaddr.EUI(mac).ipv6_link_local())
+def mac2ipv6(mac, prefix=None):
+	result = str(netaddr.EUI(mac).ipv6_link_local())
+	if (not prefix is None) and (result.startswith("fe80::")):
+		result = prefix + result[6:]
+	return result
 
 @willie.module.interval(30)
 def ffpb_updatealfred(bot):