Hi Chad, that would be very similar to SMTP and possibly other protocols, but I agree that the first step would be to formalize the pattern before instantiating it for certain (common?) cases.
Regards, Roland > 13 jul 2015 kl. 17:13 skrev Chad Retz <[email protected]>: > > I am afraid it is dependent on the STARTTLS message in IMAP and there is not > much reuse one can get out of it. But I will say that it may be a > documentable pattern for fork/join in a flow. Every so often I see questions > here about live-updating a flow...a broadcast/merge approach that does a > fork/join is one solution. > > On Monday, July 13, 2015 at 3:04:13 AM UTC-5, rkuhn wrote: > Thanks for pushing this! I have not yet reviewed your code, but once it works > and is clean enough it would be great to consider a PR to add this > functionality to Akka Streams. > > Regards, > > Roland > >> 13 jul 2015 kl. 08:33 skrev Chad Retz <[email protected] <javascript:>>: >> >> I just got back to this project and after some finagling, I was able to >> support TLS negotiation mid-stream[0]. Basically what I did was have a >> stateful stage on inbound and outbound[1] that I then mapped to something >> based on whether it needed to be secure or not. Then I used a >> broadcast/merge approach to send it to the TLS side and non-TLS side and >> just had each one ignore the message based on whether encryption was needed >> or not[0]. I am now able to perform encrypted IMAP in my rudimentary, >> unfinished (and still uglily-coded) library[2]. Progress! >> >> I still think that making the "tracing" option visible in SslTlsCipherActor >> would be helpful to others (I put in a breakpoint and changed the value at >> runtime). Between that and "-Djavax.net.debug=ssl,handshake" I was able to >> get what I needed. >> >> 0 - >> https://github.com/cretz/scimap/blob/808034c066e3a09a5fec49937a9bd65411976648/src/main/scala/scimap/handler/FlowBuilder.scala#L93 >> >> <https://github.com/cretz/scimap/blob/808034c066e3a09a5fec49937a9bd65411976648/src/main/scala/scimap/handler/FlowBuilder.scala#L93> >> 1 - >> https://github.com/cretz/scimap/blob/808034c066e3a09a5fec49937a9bd65411976648/src/main/scala/scimap/handler/TlsStatefulWrapperStage.scala >> >> <https://github.com/cretz/scimap/blob/808034c066e3a09a5fec49937a9bd65411976648/src/main/scala/scimap/handler/TlsStatefulWrapperStage.scala> >> 2 - >> https://github.com/cretz/scimap/blob/808034c066e3a09a5fec49937a9bd65411976648/src/it/scala/scimap/JavaMailSpec.scala#L76 >> >> <https://github.com/cretz/scimap/blob/808034c066e3a09a5fec49937a9bd65411976648/src/it/scala/scimap/JavaMailSpec.scala#L76> >> >> On Thursday, June 18, 2015 at 11:34:56 AM UTC-5, Chad Retz wrote: >> Yeah, I was thinking about using a FlexiMerge/FlexiRoute approach on top of >> the bidi flow to switch from placebo to normal flow. I will update if/when I >> have a working result. >> >> On Monday, June 15, 2015 at 3:46:03 PM UTC-5, rkuhn wrote: >> Given how hard it was to get TLS implemented in the first place I’m slightly >> terrified by the idea of switching out such a complex stream piece while >> things are running—that would require quite some external coordination to >> ensure that no bytes are lost or take the wrong route. >> >> If you want to work on this then you’ll need to create a 2-in 2-out stream >> Actor that forwards elements and demand across its four ports to a >> replaceable center piece and also accepts a fifth input channel for being >> told when to do so (replaceShape does not feature in this story). In >> particular it will be interesting to properly onComplete and drain the >> placebo before replacing it. >> >> Regards, >> >> Roland >> >>> 8 jun 2015 kl. 21:46 skrev Chad Retz <[email protected] <>>: >>> >>> I am doing something very similar to >>> https://groups.google.com/forum/#!searchin/akka-user/starttls/akka-user/2385IqTOIXM/udvxMhnjs8cJ >>> >>> <https://groups.google.com/forum/#!searchin/akka-user/starttls/akka-user/2385IqTOIXM/udvxMhnjs8cJ> >>> where I need to initiate negotiation when the client requests it (I am >>> doing it for IMAP). Some questions about the TLS in Akka streams currently: >>> >>> * I see the replaceShape of the TlsModule bidi flow is considered >>> "internal". Any suggestions about how to switch from plaintext to TLS after >>> the connection has been established? I essentially want to go from >>> SslTlsPlacebo to SslTls. I figure this is basically asking how to switch >>> out a flow mid-process, but in this case I can't use a stateful stage if I >>> hope to use the high-level TLS API unless I'm missing something. >>> * Any chance of opening up the "tracing" in SslTlsCipherActor? I am >>> stepping through things for now as I try to understand the system...just >>> thought it'd be worth mentioning that a trace config might be helpful. >>> * Beyond the TlsSpec and the HTTPS impl, does anyone else have examples of >>> using the Tls libraries? >>> >>> Thanks. >>> >>> -- >>> >>>>>>>>>> Read the docs: http://akka.io/docs/ <http://akka.io/docs/> >>> >>>>>>>>>> Check the FAQ: >>> >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>> >>>>>>>>>> <http://doc.akka.io/docs/akka/current/additional/faq.html> >>> >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user >>> >>>>>>>>>> <https://groups.google.com/group/akka-user> >>> --- >>> You received this message because you are subscribed to the Google Groups >>> "Akka User List" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to [email protected] <>. >>> To post to this group, send email to [email protected] <>. >>> Visit this group at http://groups.google.com/group/akka-user >>> <http://groups.google.com/group/akka-user>. >>> For more options, visit https://groups.google.com/d/optout >>> <https://groups.google.com/d/optout>. >> >> >> >> Dr. Roland Kuhn >> Akka Tech Lead >> Typesafe <http://typesafe.com/> – Reactive apps on the JVM. >> twitter: @rolandkuhn >> <http://twitter.com/#!/rolandkuhn> >> >> >> -- >> >>>>>>>>>> Read the docs: http://akka.io/docs/ <http://akka.io/docs/> >> >>>>>>>>>> Check the FAQ: >> >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >> >>>>>>>>>> <http://doc.akka.io/docs/akka/current/additional/faq.html> >> >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user >> >>>>>>>>>> <https://groups.google.com/group/akka-user> >> --- >> You received this message because you are subscribed to the Google Groups >> "Akka User List" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] <javascript:>. >> Visit this group at http://groups.google.com/group/akka-user >> <http://groups.google.com/group/akka-user>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. > > > > Dr. Roland Kuhn > Akka Tech Lead > Typesafe <http://typesafe.com/> – Reactive apps on the JVM. > twitter: @rolandkuhn > <http://twitter.com/#!/rolandkuhn> > > > -- > >>>>>>>>>> Read the docs: http://akka.io/docs/ <http://akka.io/docs/> > >>>>>>>>>> Check the FAQ: > >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html > >>>>>>>>>> <http://doc.akka.io/docs/akka/current/additional/faq.html> > >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user > >>>>>>>>>> <https://groups.google.com/group/akka-user> > --- > You received this message because you are subscribed to the Google Groups > "Akka User List" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > Visit this group at http://groups.google.com/group/akka-user > <http://groups.google.com/group/akka-user>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. Dr. Roland Kuhn Akka Tech Lead Typesafe <http://typesafe.com/> – Reactive apps on the JVM. twitter: @rolandkuhn <http://twitter.com/#!/rolandkuhn> -- >>>>>>>>>> Read the docs: http://akka.io/docs/ >>>>>>>>>> Check the FAQ: >>>>>>>>>> http://doc.akka.io/docs/akka/current/additional/faq.html >>>>>>>>>> Search the archives: https://groups.google.com/group/akka-user --- You received this message because you are subscribed to the Google Groups "Akka User List" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/akka-user. For more options, visit https://groups.google.com/d/optout.
