From shawn at git.icu Mon Jun 11 02:40:43 2018 From: shawn at git.icu (Shawn Landden) Date: Sun, 10 Jun 2018 18:40:43 -0700 Subject: [Iftop-users] [PATCH] options: select interface that is IPv4 default route (Closes: #644998) Message-ID: <20180611014043.11546-1-shawn@git.icu> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=644998 --- options.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/options.c b/options.c index a075357..efff2c7 100644 --- a/options.c +++ b/options.c @@ -6,8 +6,13 @@ #include "config.h" +#ifdef __linux__ +#define _GNU_SOURCE +#endif + #include +#include #include #include #include @@ -90,6 +95,72 @@ static int is_bad_interface_name(char *i) { return 0; } +/* none of these errors are expected, so I think it is OK to print them */ +static char *get_interface_for_default_ipv4_route(void) { +#ifdef __linux__ + pid_t pid; + int fds[2]; + int r; + char buf[4096]; + char *p, *q; + + r = pipe2(fds, O_CLOEXEC); + if (r < 0) { + fprintf(stderr, "get_interface_for_default_ipv4_route: pipe() failed: %s, continuing...", strerror(r)); + return NULL; + } + pid = fork(); + if (pid < 0) { + fprintf(stderr, "get_interface_for_default_ipv4_route: fork() failed: %s, continuing...", strerror(r)); + return NULL; + } else if (pid == 0) { + /* child */ + r = dup2(fds[0], STDOUT_FILENO); + if (r < 0) { + char buf[1] = {'\n'}; + + /* we have to write something as the other end is expecting something */ + r = write(fds[0], &buf, sizeof(buf)); + _exit(EXIT_FAILURE); + } + + execlp("ip", /* add "-6", here to make default IPv6 route */ "route", NULL); + char buf[1] = {'\n'}; + + /* we have to write something as the other end is expecting something */ + r = write(fds[0], &buf, sizeof(buf)); + _exit(EXIT_FAILURE); + } + /* parent */ + close(fds[1]); + r = read(fds[1], &buf, sizeof(buf)); + if (r < 0) { + fprintf(stderr, "get_interface_for_default_ipv4_route: read() failed: %s, continuing...", strerror(r)); + return NULL; + } + + p = strstr((char *)&buf, "default via "); + if (!p) + return NULL; + p += strlen("default via "); + q = p; + for (;*p != '\n' && *p; p++) + ; + *p = '\0'; + p = strstr(q, " dev "); + if (!p) + return NULL; + p += strlen(" dev "); + q = p; + for (;*p != ' ' && *p; p++) + ; + *p = '\0'; + return xstrdup(q); +#else + return NULL; +#endif +} + /* This finds the first interface which is up and is not the loopback * interface or one of the interface types listed in bad_interface_names. */ static char *get_first_interface(void) { @@ -123,9 +194,13 @@ static char *get_first_interface(void) { void options_set_defaults() { char *s; + + if (!options.interface) + options.interface = get_interface_for_default_ipv4_route(); /* Should go through the list of interfaces, and find the first one which * is up and is not lo or dummy*. */ - options.interface = get_first_interface(); + if (!options.interface) + options.interface = get_first_interface(); if (!options.interface) options.interface = "eth0"; -- 2.17.1 From pdw at ex-parrot.com Mon Jun 11 10:18:16 2018 From: pdw at ex-parrot.com (Paul Warren) Date: Mon, 11 Jun 2018 10:18:16 +0100 Subject: [Iftop-users] [PATCH] options: select interface that is IPv4 default route (Closes: #644998) In-Reply-To: <20180611014043.11546-1-shawn@git.icu> References: <20180611014043.11546-1-shawn@git.icu> Message-ID: Hi Shawn, Thanks for this.? Unfortunately, it doesn't work: r = read(fds[1], &buf, sizeof(buf)); fds[1] is the write end of the pipe, so reading from it doesn't work. This highlights another problem: fprintf(stderr, "get_interface_for_default_ipv4_route: read() failed: %s, continuing...", strerror(r)); vs. ?"On error, -1 is returned, and errno is set appropriately." Paul On 11/06/18 02:40, Shawn Landden wrote: > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=644998 > --- > options.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 76 insertions(+), 1 deletion(-) > > diff --git a/options.c b/options.c > index a075357..efff2c7 100644 > --- a/options.c > +++ b/options.c > @@ -6,8 +6,13 @@ > > #include "config.h" > > +#ifdef __linux__ > +#define _GNU_SOURCE > +#endif > + > #include > > +#include > #include > #include > #include > @@ -90,6 +95,72 @@ static int is_bad_interface_name(char *i) { > return 0; > } > > +/* none of these errors are expected, so I think it is OK to print them */ > +static char *get_interface_for_default_ipv4_route(void) { > +#ifdef __linux__ > + pid_t pid; > + int fds[2]; > + int r; > + char buf[4096]; > + char *p, *q; > + > + r = pipe2(fds, O_CLOEXEC); > + if (r < 0) { > + fprintf(stderr, "get_interface_for_default_ipv4_route: pipe() failed: %s, continuing...", strerror(r)); > + return NULL; > + } > + pid = fork(); > + if (pid < 0) { > + fprintf(stderr, "get_interface_for_default_ipv4_route: fork() failed: %s, continuing...", strerror(r)); > + return NULL; > + } else if (pid == 0) { > + /* child */ > + r = dup2(fds[0], STDOUT_FILENO); > + if (r < 0) { > + char buf[1] = {'\n'}; > + > + /* we have to write something as the other end is expecting something */ > + r = write(fds[0], &buf, sizeof(buf)); > + _exit(EXIT_FAILURE); > + } > + > + execlp("ip", /* add "-6", here to make default IPv6 route */ "route", NULL); > + char buf[1] = {'\n'}; > + > + /* we have to write something as the other end is expecting something */ > + r = write(fds[0], &buf, sizeof(buf)); > + _exit(EXIT_FAILURE); > + } > + /* parent */ > + close(fds[1]); > + r = read(fds[1], &buf, sizeof(buf)); > + if (r < 0) { > + fprintf(stderr, "get_interface_for_default_ipv4_route: read() failed: %s, continuing...", strerror(r)); > + return NULL; > + } > + > + p = strstr((char *)&buf, "default via "); > + if (!p) > + return NULL; > + p += strlen("default via "); > + q = p; > + for (;*p != '\n' && *p; p++) > + ; > + *p = '\0'; > + p = strstr(q, " dev "); > + if (!p) > + return NULL; > + p += strlen(" dev "); > + q = p; > + for (;*p != ' ' && *p; p++) > + ; > + *p = '\0'; > + return xstrdup(q); > +#else > + return NULL; > +#endif > +} > + > /* This finds the first interface which is up and is not the loopback > * interface or one of the interface types listed in bad_interface_names. */ > static char *get_first_interface(void) { > @@ -123,9 +194,13 @@ static char *get_first_interface(void) { > > void options_set_defaults() { > char *s; > + > + if (!options.interface) > + options.interface = get_interface_for_default_ipv4_route(); > /* Should go through the list of interfaces, and find the first one which > * is up and is not lo or dummy*. */ > - options.interface = get_first_interface(); > + if (!options.interface) > + options.interface = get_first_interface(); > if (!options.interface) > options.interface = "eth0"; > From shawn at git.icu Mon Jun 11 13:00:23 2018 From: shawn at git.icu (Shawn Landden) Date: Mon, 11 Jun 2018 05:00:23 -0700 Subject: [Iftop-users] [PATCH] options: select interface that is IPv4 default route (Closes: #644998) In-Reply-To: References: <20180611014043.11546-1-shawn@git.icu> Message-ID: On Mon, Jun 11, 2018 at 2:19 AM Paul Warren wrote: > Hi Shawn, > > Thanks for this. Unfortunately, it doesn't work: > > r = read(fds[1], &buf, sizeof(buf)); > > > > Ahh, on my Ubuntu machine optimization led the close() on the wrong fd to run _after_ the read(), so it worked. But thankfully you caught it (this is why we test!). -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0001-options-select-interface-that-is-default-route-Close.patch Type: text/x-patch Size: 3834 bytes Desc: not available URL: From shawn at git.icu Mon Jun 11 13:05:35 2018 From: shawn at git.icu (Shawn Landden) Date: Mon, 11 Jun 2018 05:05:35 -0700 Subject: [Iftop-users] [PATCH] options: select interface that is default route (Closes: #644998) In-Reply-To: References: Message-ID: <20180611120535.12901-1-shawn@git.icu> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=644998 IPv4 detection first, cause iftop does not work with v4tunnel --- options.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/options.c b/options.c index a075357..1363597 100644 --- a/options.c +++ b/options.c @@ -6,8 +6,14 @@ #include "config.h" +#ifdef __linux__ +#define _GNU_SOURCE +#endif + #include +#include +#include #include #include #include @@ -90,6 +96,76 @@ static int is_bad_interface_name(char *i) { return 0; } +/* none of these errors are expected, so I think it is OK to print them */ +static char *get_interface_for_default_route(int ipv6) { +#ifdef __linux__ + pid_t pid; + int fds[2]; + int r; + char buf[4096]; + char *p, *q; + + r = pipe2(fds, O_CLOEXEC); + if (r < 0) { + (void)fprintf(stderr, "%s: %s() failed: %s, continuing...", __PRETTY_FUNCTION__, "pipe2", strerror(errno)); + return NULL; + } + pid = fork(); + if (pid < 0) { + (void)fprintf(stderr, "%s: %s() failed: %s, continuing...", __PRETTY_FUNCTION__, "fork", strerror(errno)); + return NULL; + } else if (pid == 0) { + /* child */ + r = dup2(fds[1], STDOUT_FILENO); + if (r < 0) { + char buf[1] = {'\n'}; + + /* we have to write something as the other end is expecting something */ + r = write(fds[1], &buf, sizeof(buf)); + _exit(EXIT_FAILURE); + } + + if (ipv6) + execlp("ip", "ip", "-6", "route", NULL); + else + execlp("ip", "ip", "route", NULL); + char buf[1] = {'\n'}; + + /* we have to write something as the other end is expecting something */ + r = write(fds[1], &buf, sizeof(buf)); + _exit(EXIT_FAILURE); + } + /* parent */ + close(fds[1]); + r = read(fds[0], &buf, sizeof(buf)); + if (r < 0) { + (void)fprintf(stderr, "%s: %s() failed: %s, continuing...", __PRETTY_FUNCTION__, "read", strerror(errno)); + return NULL; + } + + p = strstr((char *)&buf, "default via "); + if (!p) + return NULL; + p += strlen("default via "); + q = p; + for (;*p != '\n' && *p; p++) + ; + *p = '\0'; + p = strstr(q, " dev "); + if (!p) + return NULL; + p += strlen(" dev "); + q = p; + for (;*p != ' ' && *p; p++) + ; + *p = '\0'; + return xstrdup(q); +#else + return NULL; +#endif +} + /* This finds the first interface which is up and is not the loopback * interface or one of the interface types listed in bad_interface_names. */ static char *get_first_interface(void) { @@ -123,9 +199,16 @@ static char *get_first_interface(void) { void options_set_defaults() { char *s; + + if (!options.interface) /* IPv4. Must come first because iftop does not work with v4tunnels. + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901283 */ + options.interface = get_interface_for_default_route(0); + if (!options.interface) /* IPv6*/ + options.interface = get_interface_for_default_route(1); /* Should go through the list of interfaces, and find the first one which * is up and is not lo or dummy*. */ - options.interface = get_first_interface(); + if (!options.interface) + options.interface = get_first_interface(); if (!options.interface) options.interface = "eth0"; -- 2.17.1 From team at trubrain.com Mon Jun 11 13:07:05 2018 From: team at trubrain.com (Team at TruBrain) Date: Mon, 11 Jun 2018 12:07:05 +0000 (UTC) Subject: [Iftop-users] Ticket Received - iftop-users Digest, Vol 5, Issue 1 In-Reply-To: References: Message-ID: <5b1e65e9793c0_7a0195b6a831009737.email-sidekiq-6@notification.freshdesk.com> Dear Iftop-users, Thank you for messaging us here at TruBrain! We would like to acknowledge that we have received your request and a ticket has been created. We try to be responsive and will get back to you as soon as we can! Thank you for your patience. Have a great day, TruBrain Support Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From team at trubrain.com Mon Jun 11 13:07:04 2018 From: team at trubrain.com (Team at TruBrain) Date: Mon, 11 Jun 2018 12:07:04 +0000 (UTC) Subject: [Iftop-users] Looking to cancel your subscription? In-Reply-To: References: Message-ID: <5b1e65e82536b_bc5102a5fc3434526.realtime-sidekiq-10@automation.freshdesk.com> Hi?Iftop-users, TruBrain Brainiac Bot at your service! Sounds like you?re looking to cancel your subscription!?You can do that easily by?registering and signing into your account portal. Click ?Cancel? on whichever subscription(s) you?d like to stop. Choose a reason why (and try out our bars or capsules if taste was an issue!) Then return to your account page to see the updated information.? If you?re having issues, you can also fill out our?cancellation form, and we can do it manually for you. If you?re looking for a refund for one of your purchases, please respond to this email with ?Refund Request?, and a representative will get back to you ASAP to help you with your request.? We hate to see you leave! Thank you for trying out TruBrain and being a valuable customer. Cheers, The TruBrain Team (Not what you were asking for?? Just reply ?Not quite!? to this email and we?ll get you taken care of ASAP! I am just a bot after all!) -------------- next part -------------- An HTML attachment was scrubbed... URL: From shawn at git.icu Mon Jun 11 13:11:34 2018 From: shawn at git.icu (Shawn Landden) Date: Mon, 11 Jun 2018 05:11:34 -0700 Subject: [Iftop-users] v4tunnels cannot be listened to Message-ID: such as those made with Hurricane Electric for ipv6 connectivity to reproduce: my /etc/network/interfaces iface he-ipv6 inet6 v4tunnel address 2001:470:c:238::2 netmask 64 #LA 0.5ms endpoint 66.220.18.42 local 198.46.198.198 ttl 255 gateway 2001:470:c:238::1 up ip addr add 2001:470:d:238::1 dev he-ipv6 iftop -i he-ipv6 (nothing shows) reported to debian here https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901283 it works with tcpdump/libpcap -------------- next part -------------- An HTML attachment was scrubbed... URL: From shawn at git.icu Mon Jun 11 13:20:06 2018 From: shawn at git.icu (Shawn Landden) Date: Mon, 11 Jun 2018 05:20:06 -0700 Subject: [Iftop-users] [v3] options: select interface that is default route (Closes: #644998) In-Reply-To: References: Message-ID: <20180611122006.13140-1-shawn@git.icu> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=644998 IPv4 detection first, cause iftop does not work with v4tunnel v3: close both fds after they are used --- options.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/options.c b/options.c index a075357..089d2b2 100644 --- a/options.c +++ b/options.c @@ -6,8 +6,14 @@ #include "config.h" +#ifdef __linux__ +#define _GNU_SOURCE +#endif + #include +#include +#include #include #include #include @@ -90,6 +96,76 @@ static int is_bad_interface_name(char *i) { return 0; } +/* none of these errors are expected, so I think it is OK to print them */ +static char *get_interface_for_default_route(int ipv6) { +#ifdef __linux__ + pid_t pid; + int fds[2]; + int r; + char buf[4096]; + char *p, *q; + + r = pipe2(fds, O_CLOEXEC); + if (r < 0) { + (void)fprintf(stderr, "%s: %s() failed: %s, continuing...", __PRETTY_FUNCTION__, "pipe2", strerror(errno)); + return NULL; + } + pid = fork(); + if (pid < 0) { + (void)fprintf(stderr, "%s: %s() failed: %s, continuing...", __PRETTY_FUNCTION__, "fork", strerror(errno)); + return NULL; + } else if (pid == 0) { + /* child */ + r = dup2(fds[1], STDOUT_FILENO); + if (r < 0) { + char buf[1] = {'\n'}; + + /* we have to write something as the other end is expecting something */ + r = write(fds[1], &buf, sizeof(buf)); + _exit(EXIT_FAILURE); + } + + if (ipv6) + execlp("ip", "ip", "-6", "route", NULL); + else + execlp("ip", "ip", "route", NULL); + char buf[1] = {'\n'}; + + /* we have to write something as the other end is expecting something */ + r = write(fds[1], &buf, sizeof(buf)); + _exit(EXIT_FAILURE); + } + /* parent */ + close(fds[1]); + r = read(fds[0], &buf, sizeof(buf)); + close(fds[0]); + if (r < 0) { + (void)fprintf(stderr, "%s: %s() failed: %s, continuing...", __PRETTY_FUNCTION__, "read", strerror(errno)); + return NULL; + } + + p = strstr((char *)&buf, "default via "); + if (!p) + return NULL; + p += strlen("default via "); + q = p; + for (;*p != '\n' && *p; p++) + ; + *p = '\0'; + p = strstr(q, " dev "); + if (!p) + return NULL; + p += strlen(" dev "); + q = p; + for (;*p != ' ' && *p; p++) + ; + *p = '\0'; + return xstrdup(q); +#else + return NULL; +#endif +} + /* This finds the first interface which is up and is not the loopback * interface or one of the interface types listed in bad_interface_names. */ static char *get_first_interface(void) { @@ -123,9 +199,16 @@ static char *get_first_interface(void) { void options_set_defaults() { char *s; + + if (!options.interface) /* IPv4. Must come first because iftop does not work with v4tunnels. + https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901283 */ + options.interface = get_interface_for_default_route(0); + if (!options.interface) /* IPv6*/ + options.interface = get_interface_for_default_route(1); /* Should go through the list of interfaces, and find the first one which * is up and is not lo or dummy*. */ - options.interface = get_first_interface(); + if (!options.interface) + options.interface = get_first_interface(); if (!options.interface) options.interface = "eth0"; -- 2.17.1 From team at trubrain.com Mon Jun 11 13:21:23 2018 From: team at trubrain.com (Team at TruBrain) Date: Mon, 11 Jun 2018 12:21:23 +0000 (UTC) Subject: [Iftop-users] Looking to cancel your subscription? In-Reply-To: References: Message-ID: <5b1e6942a6e25_1c081a024082135d0.realtime-sidekiq-6@automation.freshdesk.com> Hi?Iftop-users, TruBrain Brainiac Bot at your service! Sounds like you?re looking to cancel your subscription!?You can do that easily by?registering and signing into your account portal. Click ?Cancel? on whichever subscription(s) you?d like to stop. Choose a reason why (and try out our bars or capsules if taste was an issue!) Then return to your account page to see the updated information.? If you?re having issues, you can also fill out our?cancellation form, and we can do it manually for you. If you?re looking for a refund for one of your purchases, please respond to this email with ?Refund Request?, and a representative will get back to you ASAP to help you with your request.? We hate to see you leave! Thank you for trying out TruBrain and being a valuable customer. Cheers, The TruBrain Team (Not what you were asking for?? Just reply ?Not quite!? to this email and we?ll get you taken care of ASAP! I am just a bot after all!) -------------- next part -------------- An HTML attachment was scrubbed... URL: From team at trubrain.com Mon Jun 11 13:21:29 2018 From: team at trubrain.com (Team at TruBrain) Date: Mon, 11 Jun 2018 12:21:29 +0000 (UTC) Subject: [Iftop-users] Ticket Received - iftop-users Digest, Vol 5, Issue 2 In-Reply-To: References: Message-ID: <5b1e69493bbf2_1d9121ac1405387a5.email-sidekiq-4@notification.freshdesk.com> Dear Iftop-users, Thank you for messaging us here at TruBrain! We would like to acknowledge that we have received your request and a ticket has been created. We try to be responsive and will get back to you as soon as we can! Thank you for your patience. Have a great day, TruBrain Support Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From johannes.kingma at gmail.com Tue Jun 12 22:45:18 2018 From: johannes.kingma at gmail.com (Johannes Kingma) Date: Tue, 12 Jun 2018 23:45:18 +0200 Subject: [Iftop-users] Looking to cancel your subscription? In-Reply-To: <5b1e6942a6e25_1c081a024082135d0.realtime-sidekiq-6@automation.freshdesk.com> References: <5b1e6942a6e25_1c081a024082135d0.realtime-sidekiq-6@automation.freshdesk.com> Message-ID: < ol style font-family? i'm no longer your family On Mon, 11 Jun 2018 at 14:21 Team at TruBrain wrote: > Hi Iftop-users, > > > TruBrain Brainiac Bot at your service! > > Sounds like you?re looking to cancel your subscription! You can do that > easily by registering and signing into your account portal > . > > < ol style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif, > "Helvetica Neue", Helvetica, Arial, sans-serif, "Helvetica Neue", > Helvetica, Arial, sans-serif, "Helvetica Neue", Helvetica, Arial, > sans-serif;"> > > - Click ?Cancel? on whichever subscription(s) you?d like to stop. > - Choose a reason why (and try out our bars or capsules if taste was > an issue!) > - Then return to your account page to see the updated information. > > > If you?re having issues, you can also fill out our cancellation form > , and we can do it manually for > you. If you?re looking for a refund for one of your purchases, please > respond to this email with ?Refund Request?, and a representative will get > back to you ASAP to help you with your request. > > > We hate to see you leave! Thank you for trying out TruBrain and being a > valua ble customer. > > > Cheers, > > The TruBrain Team > > > (Not what you were asking for?? Just reply ?Not quite!? to this email and > we?ll get you taken care of ASAP! I am just a bot after all!) > > 99042:553856 > _______________________________________________ > iftop-users mailing list > iftop-users at lists.beasts.org > http://lists.beasts.org/mailman/listinfo/iftop-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From shawn at git.icu Thu Jun 14 17:30:03 2018 From: shawn at git.icu (Shawn Landden) Date: Thu, 14 Jun 2018 09:30:03 -0700 Subject: [Iftop-users] v4tunnels cannot be listened to In-Reply-To: References: Message-ID: On Mon, Jun 11, 2018 at 5:11 AM Shawn Landden wrote: > such as those made with Hurricane Electric for ipv6 connectivity > This is because there is no MAC address. They can be made to work if the -G option is used, and set correctly like iftop -G 2001:470:d:238::/64 -i he-ipv6 > to reproduce: > > my /etc/network/interfaces > iface he-ipv6 inet6 v4tunnel > address 2001:470:c:238::2 > netmask 64 > #LA 0.5ms > endpoint 66.220.18.42 > local 198.46.198.198 > ttl 255 > gateway 2001:470:c:238::1 > up ip addr add 2001:470:d:238::1 dev he-ipv6 > > iftop -i he-ipv6 > (nothing shows) > > reported to debian here > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901283 > it works with tcpdump/libpcap > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From team at trubrain.com Thu Jun 14 17:34:01 2018 From: team at trubrain.com (Team at TruBrain) Date: Thu, 14 Jun 2018 16:34:01 +0000 (UTC) Subject: [Iftop-users] Ticket Received - iftop-users Digest, Vol 5, Issue 3 In-Reply-To: References: Message-ID: <5b2298f95c33a_1e731e8080428454986.email-sidekiq-5@notification.freshdesk.com> Dear Iftop-users, Thank you for messaging us here at TruBrain! We would like to acknowledge that we have received your request and a ticket has been created. We try to be responsive and will get back to you as soon as we can! Thank you for your patience. Have a great day, TruBrain Support Team -------------- next part -------------- An HTML attachment was scrubbed... URL: From team at trubrain.com Thu Jun 14 17:34:00 2018 From: team at trubrain.com (Team at TruBrain) Date: Thu, 14 Jun 2018 16:34:00 +0000 (UTC) Subject: [Iftop-users] Looking to cancel your subscription? In-Reply-To: References: Message-ID: <5b2298f82a269_1c4c1e6601c3645638.realtime-sidekiq-6@automation.freshdesk.com> Hi?Iftop-users, TruBrain Brainiac Bot at your service! Sounds like you?re looking to cancel your subscription!?You can do that easily by?registering and signing into your account portal. Click ?Cancel? on whichever subscription(s) you?d like to stop. Choose a reason why (and try out our bars or capsules if taste was an issue!) Then return to your account page to see the updated information.? If you?re having issues, you can also fill out our?cancellation form, and we can do it manually for you. If you?re looking for a refund for one of your purchases, please respond to this email with ?Refund Request?, and a representative will get back to you ASAP to help you with your request.? We hate to see you leave! Thank you for trying out TruBrain and being a valuable customer. Cheers, The TruBrain Team (Not what you were asking for?? Just reply ?Not quite!? to this email and we?ll get you taken care of ASAP! I am just a bot after all!) -------------- next part -------------- An HTML attachment was scrubbed... URL: From pdw at ex-parrot.com Fri Jun 15 10:31:24 2018 From: pdw at ex-parrot.com (Paul Warren) Date: Fri, 15 Jun 2018 10:31:24 +0100 Subject: [Iftop-users] Looking to cancel your subscription? In-Reply-To: <5b2298f82a269_1c4c1e6601c3645638.realtime-sidekiq-6@automation.freshdesk.com> References: <5b2298f82a269_1c4c1e6601c3645638.realtime-sidekiq-6@automation.freshdesk.com> Message-ID: <34545515-acdc-8c31-2191-ab0df4154a6d@ex-parrot.com> This user is now blocked from posting. Paul On 14/06/18 17:34, Team at TruBrain wrote: > > Hi?Iftop-users, > > > TruBrain Brainiac Bot at your service! > > Sounds like you?re looking to cancel your subscription!?You can do > that easily by registering and signing into your account portal > . > > < ol style="font-family: "Helvetica Neue", Helvetica, Arial, > sans-serif, "Helvetica Neue", Helvetica, Arial, sans-serif, "Helvetica > Neue", Helvetica, Arial, sans-serif, "Helvetica Neue", Helvetica, > # Arial, sans-serif;"> Click ?Cancel? on whichever subscription(s) you?d > like to stop. > # Choose a reason why (and try out our bars or capsules if taste was an > issue!) > # Then return to your account page to see the updated information. > > > If you?re having issues, you can also fill out our cancellation form > , and we can do it manually > for you. If you?re looking for a refund for one of your purchases, > please respond to this email with ?Refund Request?, and a > representative will get back to you ASAP to help you with your request. > > > We hate to see you leave! Thank you for trying out TruBrain and being > a valua ble customer. > > > Cheers, > > The TruBrain Team > > > (Not what you were asking for?? Just reply ?Not quite!? to this email > and we?ll get you taken care of ASAP! I am just a bot after all!) > > > 99452:553856 > > > _______________________________________________ > iftop-users mailing list > iftop-users at lists.beasts.org > http://lists.beasts.org/mailman/listinfo/iftop-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From shawn at git.icu Fri Jun 15 13:49:53 2018 From: shawn at git.icu (Shawn Landden) Date: Fri, 15 Jun 2018 05:49:53 -0700 Subject: [Iftop-users] Looking to cancel your subscription? In-Reply-To: <34545515-acdc-8c31-2191-ab0df4154a6d@ex-parrot.com> References: <5b2298f82a269_1c4c1e6601c3645638.realtime-sidekiq-6@automation.freshdesk.com> <34545515-acdc-8c31-2191-ab0df4154a6d@ex-parrot.com> Message-ID: Did you look at my most recent patch? On Fri, Jun 15, 2018 at 2:32 AM Paul Warren wrote: > This user is now blocked from posting. > > Paul > > On 14/06/18 17:34, Team at TruBrain wrote: > > Hi Iftop-users, > > > TruBrain Brainiac Bot at your service! > > Sounds like you?re looking to cancel your subscription! You can do that > easily by registering and signing into your account portal > . > > < ol style="font-family: "Helvetica Neue", Helvetica, Arial, sans-serif, > "Helvetica Neue", Helvetica, Arial, sans-serif, "Helvetica Neue", > Helvetica, Arial, sans-serif, "Helvetica Neue", Helvetica, Arial, > sans-serif;"> > > - Click ?Cancel? on whichever subscription(s) you?d like to stop. > - Choose a reason why (and try out our bars or capsules if taste was > an issue!) > - Then return to your account page to see the updated information. > > > If you?re having issues, you can also fill out our cancellation form > , and we can do it manually for > you. If you?re looking for a refund for one of your purchases, please > respond to this email with ?Refund Request?, and a representative will get > back to you ASAP to help you with your request. > > > We hate to see you leave! Thank you for trying out TruBrain and being a > valua ble customer. > > > Cheers, > > The TruBrain Team > > > (Not what you were asking for?? Just reply ?Not quite!? to this email and > we?ll get you taken care of ASAP! I am just a bot after all!) > > 99452:553856 > > > _______________________________________________ > iftop-users mailing listiftop-users at lists.beasts.orghttp://lists.beasts.org/mailman/listinfo/iftop-users > > > _______________________________________________ > iftop-users mailing list > iftop-users at lists.beasts.org > http://lists.beasts.org/mailman/listinfo/iftop-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: