forked from cory/tildefriends
		
	Show potential room connections differently.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4027 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
		| @@ -1 +1 @@ | |||||||
| {"type":"tildefriends-app","files":{"app.js":"&jLRr14wP54BEkzBMIf1vCdeylqYExD8+jnHwgsqV9a4=.sha256","lit-all.min.js":"&N4A12AsifdQgwdpII0SFtG513BfoLpmPjdJ9VTDftpg=.sha256","index.html":"&4uvb7ESTRYeImX1lsIQOWRec6HmMBaYipGgYf0EFVPY=.sha256","script.js":"&G8puK9Q4MngHy3D4ppcKyT49WKbHD2OCeUcAw2ghTDE=.sha256","lit-all.min.js.map":"&oFY9wO4MnujgfGNGv4VggHc5V5JwX4C8csqKZ6KJYbE=.sha256","tf-id-picker.js":"&9BDffV4HY9FqhL7XI4it+UQJB4cYwbDNsY3S1cxy2vw=.sha256","tf-app.js":"&qqpOZHnkJQevhLGPUEJ7br2S/LNH+nQtC91vz3CrYrE=.sha256","tf-message.js":"&VuxfyhBr0YLYydk+7Ivpr99VCJdiU0KHcN6xus0AxwU=.sha256","tf-user.js":"&bXTedgBudTQLXEBPY9R8OLfQ/ZLpo8YRU9Oq/wuGG3Y=.sha256","tf-utils.js":"&N2yKZwFnb2GbPeipgQtu6xFvezENNOgud9G7EhCQ/K0=.sha256","commonmark.min.js":"&bfBaMLU19d1p/vPBF9hlARqDX002KXG/UOfxOahZhe4=.sha256","tf-compose.js":"&ZGWHQZPTUl4QU5++WkGwGbyj+hxhQrTg9nLmZCrl/1g=.sha256","emojis.json":"&h3P4pez+AI4aYdsN0dJ3pbUEFR0276t9AM20caj/W/s=.sha256","emojis.js":"&pqYLDE/13PyEt2ceeFqvnwZ8NqWfPfpDBt4vP8SeHbs=.sha256","tf-styles.js":"&Zw90HptAvGwX/vBnEhRVfNrYjMSssFnnKpp8bzwXQH0=.sha256","tf-profile.js":"&vRKjsnYvOiHCQahzEfznCvP5YDwUPtltlpWf+pxwZ1Y=.sha256","commonmark-linkify.js":"&X+hNNkmSRvKY86khyAun+cXksquXbMakZdINbGbx30g=.sha256","tf-tab-search.js":"&ESt2vMG19sH5j6ungKua/ZuvIGslyuWyb3juXdOCecg=.sha256","tf-tab-news.js":"&SSHoFxBG2DiKUbfMNxiBjxqtAccQDSAEUTSN/IN/MlY=.sha256","tf-tab-connections.js":"&wdkYIS6cNyVlaAtSi174Jj6JyxbTwx1O/xMNckj9NcU=.sha256","tf-news.js":"&/Ij0SaBTohV2myuA1gQAPlgmyq/AmmvYIhSCm3wfmow=.sha256","tribute.css":"&9FogMzZHKXCfGb7mlh7z+/wiNZzBsOB/tKoh6MfYJno=.sha256","tribute.esm.js":"&P1wKqCfYULpR/ahSB98JP8xaxfikuZwwtT6I/SAo7/Y=.sha256"}} | {"type":"tildefriends-app","files":{"app.js":"&jLRr14wP54BEkzBMIf1vCdeylqYExD8+jnHwgsqV9a4=.sha256","lit-all.min.js":"&N4A12AsifdQgwdpII0SFtG513BfoLpmPjdJ9VTDftpg=.sha256","index.html":"&4uvb7ESTRYeImX1lsIQOWRec6HmMBaYipGgYf0EFVPY=.sha256","script.js":"&G8puK9Q4MngHy3D4ppcKyT49WKbHD2OCeUcAw2ghTDE=.sha256","lit-all.min.js.map":"&oFY9wO4MnujgfGNGv4VggHc5V5JwX4C8csqKZ6KJYbE=.sha256","tf-id-picker.js":"&9BDffV4HY9FqhL7XI4it+UQJB4cYwbDNsY3S1cxy2vw=.sha256","tf-app.js":"&qqpOZHnkJQevhLGPUEJ7br2S/LNH+nQtC91vz3CrYrE=.sha256","tf-message.js":"&VuxfyhBr0YLYydk+7Ivpr99VCJdiU0KHcN6xus0AxwU=.sha256","tf-user.js":"&bXTedgBudTQLXEBPY9R8OLfQ/ZLpo8YRU9Oq/wuGG3Y=.sha256","tf-utils.js":"&N2yKZwFnb2GbPeipgQtu6xFvezENNOgud9G7EhCQ/K0=.sha256","commonmark.min.js":"&bfBaMLU19d1p/vPBF9hlARqDX002KXG/UOfxOahZhe4=.sha256","tf-compose.js":"&ZGWHQZPTUl4QU5++WkGwGbyj+hxhQrTg9nLmZCrl/1g=.sha256","emojis.json":"&h3P4pez+AI4aYdsN0dJ3pbUEFR0276t9AM20caj/W/s=.sha256","emojis.js":"&pqYLDE/13PyEt2ceeFqvnwZ8NqWfPfpDBt4vP8SeHbs=.sha256","tf-styles.js":"&Zw90HptAvGwX/vBnEhRVfNrYjMSssFnnKpp8bzwXQH0=.sha256","tf-profile.js":"&vRKjsnYvOiHCQahzEfznCvP5YDwUPtltlpWf+pxwZ1Y=.sha256","commonmark-linkify.js":"&X+hNNkmSRvKY86khyAun+cXksquXbMakZdINbGbx30g=.sha256","tf-tab-search.js":"&ESt2vMG19sH5j6ungKua/ZuvIGslyuWyb3juXdOCecg=.sha256","tf-tab-news.js":"&SSHoFxBG2DiKUbfMNxiBjxqtAccQDSAEUTSN/IN/MlY=.sha256","tf-tab-connections.js":"&PjreVhTR/vxlGHVKQbY0P9BuD6udtPMHDUv9HPCHuKw=.sha256","tf-news.js":"&/Ij0SaBTohV2myuA1gQAPlgmyq/AmmvYIhSCm3wfmow=.sha256","tribute.css":"&9FogMzZHKXCfGb7mlh7z+/wiNZzBsOB/tKoh6MfYJno=.sha256","tribute.esm.js":"&P1wKqCfYULpR/ahSB98JP8xaxfikuZwwtT6I/SAo7/Y=.sha256"}} | ||||||
| @@ -39,11 +39,35 @@ class TfTabConnectionsElement extends LitElement { | |||||||
| 	render_connection_summary(connection) { | 	render_connection_summary(connection) { | ||||||
| 		if (connection.address && connection.port) { | 		if (connection.address && connection.port) { | ||||||
| 			return html`(<small>${connection.address}:${connection.port}</small>)`; | 			return html`(<small>${connection.address}:${connection.port}</small>)`; | ||||||
|  | 		} else if (connection.tunnel) { | ||||||
|  | 			return html`(room peer)`; | ||||||
| 		} else { | 		} else { | ||||||
| 			return JSON.stringify(connection); | 			return JSON.stringify(connection); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	render_room_peers(connection) { | ||||||
|  | 		let self = this; | ||||||
|  | 		let peers = this.broadcasts.filter(x => x.tunnel?.id == connection); | ||||||
|  | 		if (peers.length) { | ||||||
|  | 			return html` | ||||||
|  | 				<ul> | ||||||
|  | 					${peers.map(x => html`${self.render_broadcast(x)}`)} | ||||||
|  | 				</ul> | ||||||
|  | 			`; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	render_broadcast(connection) { | ||||||
|  | 		return html` | ||||||
|  | 			<li> | ||||||
|  | 				<input type="button" @click=${() => tfrpc.rpc.connect(connection)} value="Connect"></input> | ||||||
|  | 				<tf-user id=${connection.pubkey} .users=${this.users}></tf-user> | ||||||
|  | 				${this.render_connection_summary(connection)} | ||||||
|  | 			</li> | ||||||
|  | 		` | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	render() { | 	render() { | ||||||
| 		let self = this; | 		let self = this; | ||||||
| 		return html` | 		return html` | ||||||
| @@ -52,13 +76,7 @@ class TfTabConnectionsElement extends LitElement { | |||||||
| 			<input type="button" @click=${() => tfrpc.rpc.connect(self.renderRoot.getElementById('code').value)} value="Connect"></input> | 			<input type="button" @click=${() => tfrpc.rpc.connect(self.renderRoot.getElementById('code').value)} value="Connect"></input> | ||||||
| 			<h2>Broadcasts</h2> | 			<h2>Broadcasts</h2> | ||||||
| 			<ul> | 			<ul> | ||||||
| 				${this.broadcasts.map(x => html` | 				${this.broadcasts.filter(x => x.address).map(x => self.render_broadcast(x))} | ||||||
| 					<li> |  | ||||||
| 						<input type="button" @click=${() => tfrpc.rpc.connect(x)} value="Connect"></input> |  | ||||||
| 						<tf-user id=${x.pubkey} .users=${this.users}></tf-user> |  | ||||||
| 						${self.render_connection_summary(x)} |  | ||||||
| 					</li> |  | ||||||
| 				`)} |  | ||||||
| 			</ul> | 			</ul> | ||||||
| 			<h2>Connections</h2> | 			<h2>Connections</h2> | ||||||
| 			<ul> | 			<ul> | ||||||
| @@ -66,6 +84,7 @@ class TfTabConnectionsElement extends LitElement { | |||||||
| 					<li> | 					<li> | ||||||
| 						<input type="button" @click=${() => tfrpc.rpc.closeConnection(x)} value="Close"></input> | 						<input type="button" @click=${() => tfrpc.rpc.closeConnection(x)} value="Close"></input> | ||||||
| 						<tf-user id=${x} .users=${this.users}></tf-user> | 						<tf-user id=${x} .users=${this.users}></tf-user> | ||||||
|  | 						${self.render_room_peers(x)} | ||||||
| 					</li> | 					</li> | ||||||
| 				`)} | 				`)} | ||||||
| 			</ul> | 			</ul> | ||||||
|   | |||||||
| @@ -2476,7 +2476,7 @@ static void _tf_ssb_on_broadcast_listener_recv(uv_udp_t* handle, ssize_t nread, | |||||||
| 	tf_free(buf->base); | 	tf_free(buf->base); | ||||||
| } | } | ||||||
|  |  | ||||||
| void tf_ssb_visit_broadcasts(tf_ssb_t* ssb, void (*callback)(const struct sockaddr_in* addr, tf_ssb_connection_t* tunnel, const uint8_t* pub, void* user_data), void* user_data) | void tf_ssb_visit_broadcasts(tf_ssb_t* ssb, void (*callback)(const char* host, const struct sockaddr_in* addr, tf_ssb_connection_t* tunnel, const uint8_t* pub, void* user_data), void* user_data) | ||||||
| { | { | ||||||
| 	time_t now = time(NULL); | 	time_t now = time(NULL); | ||||||
| 	tf_ssb_broadcast_t* next = NULL; | 	tf_ssb_broadcast_t* next = NULL; | ||||||
| @@ -2485,7 +2485,7 @@ void tf_ssb_visit_broadcasts(tf_ssb_t* ssb, void (*callback)(const struct sockad | |||||||
| 		next = node->next; | 		next = node->next; | ||||||
| 		if (node->mtime - now < 60) | 		if (node->mtime - now < 60) | ||||||
| 		{ | 		{ | ||||||
| 			callback(&node->addr, node->tunnel_connection, node->pub, user_data); | 			callback(node->host, &node->addr, node->tunnel_connection, node->pub, user_data); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|   | |||||||
| @@ -80,7 +80,7 @@ void tf_ssb_run(tf_ssb_t* ssb); | |||||||
| void tf_ssb_append_message_with_keys(tf_ssb_t* ssb, const char* author, const uint8_t* private_key, JSValue message); | void tf_ssb_append_message_with_keys(tf_ssb_t* ssb, const char* author, const uint8_t* private_key, JSValue message); | ||||||
| bool tf_ssb_whoami(tf_ssb_t* ssb, char* out_id, size_t out_id_size); | bool tf_ssb_whoami(tf_ssb_t* ssb, char* out_id, size_t out_id_size); | ||||||
|  |  | ||||||
| void tf_ssb_visit_broadcasts(tf_ssb_t* ssb, void (*callback)(const struct sockaddr_in* addr, tf_ssb_connection_t* tunnel, const uint8_t* pub, void* user_data), void* user_data); | void tf_ssb_visit_broadcasts(tf_ssb_t* ssb, void (*callback)(const char* host, const struct sockaddr_in* addr, tf_ssb_connection_t* tunnel, const uint8_t* pub, void* user_data), void* user_data); | ||||||
|  |  | ||||||
| tf_ssb_connection_t* tf_ssb_get_connection(tf_ssb_t* ssb, const char* id); | tf_ssb_connection_t* tf_ssb_get_connection(tf_ssb_t* ssb, const char* id); | ||||||
| const char** tf_ssb_get_connection_ids(tf_ssb_t* ssb); | const char** tf_ssb_get_connection_ids(tf_ssb_t* ssb); | ||||||
|   | |||||||
| @@ -341,13 +341,11 @@ typedef struct _broadcasts_t | |||||||
| 	int length; | 	int length; | ||||||
| } broadcasts_t; | } broadcasts_t; | ||||||
|  |  | ||||||
| static void _tf_ssb_broadcasts_visit(const struct sockaddr_in* addr, tf_ssb_connection_t* tunnel, const uint8_t* pub, void* user_data) | static void _tf_ssb_broadcasts_visit(const char* host, const struct sockaddr_in* addr, tf_ssb_connection_t* tunnel, const uint8_t* pub, void* user_data) | ||||||
| { | { | ||||||
| 	broadcasts_t* broadcasts = user_data; | 	broadcasts_t* broadcasts = user_data; | ||||||
| 	JSValue entry = JS_NewObject(broadcasts->context); | 	JSValue entry = JS_NewObject(broadcasts->context); | ||||||
| 	char address[256]; |  | ||||||
| 	char pubkey[k_id_base64_len]; | 	char pubkey[k_id_base64_len]; | ||||||
| 	uv_ip4_name(addr, address, sizeof(address)); |  | ||||||
| 	tf_ssb_id_bin_to_str(pubkey, sizeof(pubkey), pub); | 	tf_ssb_id_bin_to_str(pubkey, sizeof(pubkey), pub); | ||||||
| 	if (tunnel) | 	if (tunnel) | ||||||
| 	{ | 	{ | ||||||
| @@ -355,7 +353,7 @@ static void _tf_ssb_broadcasts_visit(const struct sockaddr_in* addr, tf_ssb_conn | |||||||
| 	} | 	} | ||||||
| 	else | 	else | ||||||
| 	{ | 	{ | ||||||
| 		JS_SetPropertyStr(broadcasts->context, entry, "address", JS_NewString(broadcasts->context, address)); | 		JS_SetPropertyStr(broadcasts->context, entry, "address", JS_NewString(broadcasts->context, host)); | ||||||
| 		JS_SetPropertyStr(broadcasts->context, entry, "port", JS_NewInt32(broadcasts->context, ntohs(addr->sin_port))); | 		JS_SetPropertyStr(broadcasts->context, entry, "port", JS_NewInt32(broadcasts->context, ntohs(addr->sin_port))); | ||||||
| 	} | 	} | ||||||
| 	JS_SetPropertyStr(broadcasts->context, entry, "pubkey", JS_NewString(broadcasts->context, pubkey)); | 	JS_SetPropertyStr(broadcasts->context, entry, "pubkey", JS_NewString(broadcasts->context, pubkey)); | ||||||
|   | |||||||
| @@ -264,7 +264,7 @@ void tf_ssb_test_ssb(const tf_test_options_t* options) | |||||||
| 	sqlite3_close(db1); | 	sqlite3_close(db1); | ||||||
| } | } | ||||||
|  |  | ||||||
| static void _broadcasts_visit(const struct sockaddr_in* addr, tf_ssb_connection_t* tunnel, const uint8_t* pub, void* user_data) | static void _broadcasts_visit(const char* host, const struct sockaddr_in* addr, tf_ssb_connection_t* tunnel, const uint8_t* pub, void* user_data) | ||||||
| { | { | ||||||
| 	int* count = user_data; | 	int* count = user_data; | ||||||
| 	(*count)++; | 	(*count)++; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user