<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jul 25, 2014 at 3:06 PM, Karel Piwko <span dir="ltr">&lt;<a href="mailto:kpiwko@redhat.com" target="_blank">kpiwko@redhat.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="">On Fri, Jul 25, 2014 at 2:56 PM, Matthias Wessendorf<br>
&lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; UPS can translate {deviceToken} to EndpointURL. We just need a way<br>
&gt;&gt; how<br>
&gt;&gt; to generate unique {deviceToken} on client.<br>
&gt;<br>
&gt; that would be our own layer on-top, which is a no-go<br>
<br>
</div>why? it would be there anyway. Imagine that your UPS is running on<br>
exposed URL which is a gateway to your internal network. SP URL is<br>
valid only in that internal network, not visible from outside world at<br>
all.<br>
<br>
So, using UPS is the only way to send the message to that URL.<br></blockquote><div><br></div><div>Hrm... let&#39;s see if I am following you. Let&#39;s try:</div><div><br></div><div>If the UPS has a mapping between &quot;magic_UUID&quot; and endpointURL, that means the client layer (e.g. UPS.js) has to store this UUID somewhere, for unregistration.<br>
</div><div><br></div><div>Instead of having the UPS generating the UUID, it could be generated by the UPS.js, and its JS callback would/could return it (so that the JS app has it handy for later unregister).</div><div><br>
</div><div>That would mean the JS client would sending down the same JSON as before, right ?</div><div><br></div><div>deviceToken: client_side_generated_UUID,</div><div>pushEndpoint: someURL</div><div><br></div><div><br></div>
<div>Did I get it ? </div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class=""><br>
&gt;<br>
&gt;<br>
&gt;&gt; Would UUID work?<br>
&gt;&gt; EndpointURL can become part of JSON [1].<br>
&gt;<br>
&gt; it was there as &quot;simplePushEndpoint&quot;, but for stated reasons it&#39;s now<br>
&gt; the deviceToken that has the URL value<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; Such change would mean that clients can&#39;t use SP server directly but<br>
&gt;&gt; have to go through UPS. This makes more sense then current setup to<br>
&gt;&gt; me.<br>
&gt;<br>
&gt; not really<br>
<br>
</div>See reason stated above.<br>
<div class="HOEnZb"><div class="h5">&gt;<br>
&gt;&gt;<br>
&gt;&gt; Karel<br>
&gt;&gt;<br>
&gt;&gt; [1]<br>
&gt;&gt; <a href="https://github.com/aerogear/aerogear-unifiedpush-server/blob/master/jaxrs/src/main/java/org/jboss/aerogear/unifiedpush/rest/registry/installations/InstallationRegistrationEndpoint.java#L74" target="_blank">https://github.com/aerogear/aerogear-unifiedpush-server/blob/master/jaxrs/src/main/java/org/jboss/aerogear/unifiedpush/rest/registry/installations/InstallationRegistrationEndpoint.java#L74</a><br>

&gt;&gt;<br>
&gt;&gt; On Fri, Jul 25, 2014 at 1:04 PM, Matthias Wessendorf<br>
&gt;&gt; &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt; wrote:<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On Fri, Jul 25, 2014 at 12:25 PM, Tadeas Kriz &lt;<a href="mailto:tkriz@redhat.com">tkriz@redhat.com</a>&gt;<br>
&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; —<br>
&gt;&gt; &gt;&gt; Tadeas Kriz<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; On 25 Jul 2014, at 11:04 am, Daniel Bevenius<br>
&gt;&gt; &gt;&gt; &lt;<a href="mailto:daniel.bevenius@gmail.com">daniel.bevenius@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;5. don’t use the url as a deviceToken (might not comply with<br>
&gt;&gt; &gt;&gt;&gt; Mozzila’s SimplePush specs)<br>
&gt;&gt; &gt;&gt;&gt; The deviceToken is an UPS concept and there is nothing in the<br>
&gt;&gt; &gt;&gt;&gt; SimplePush spec which is violated in this case.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt; I thought that deviceTokens were changed from a generated value to<br>
&gt;&gt; &gt;&gt; the URL just to comply with Mozzila’s SimplePush specs.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Nope<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt; Matzew, why was the generated token removed then?<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; It was the channelID before - but that should not be exposed.<br>
&gt;&gt; &gt; In GCM devices are identified via registrationID<br>
&gt;&gt; &gt; In APNs devices are identified va deviceToken<br>
&gt;&gt; &gt; (both are somewhat the same - but different names)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; In SimplePush devices are identifeid v/ the URL of the pushEndpoint<br>
&gt;&gt; &gt; (a backend uses that endpoint to notify _THAT_ client, regardless<br>
&gt;&gt; of<br>
&gt;&gt; &gt; how many channels it has subscribed)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; So, that lead us to make the change (see history of this threa)<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; -M<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; I&#39;m not sure about what the best option is for UPS thought.<br>
&gt;&gt; Would a<br>
&gt;&gt; &gt;&gt;&gt; regex in for the @Path annotation work perhaps, something like:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; @DELETE<br>
&gt;&gt; &gt;&gt;&gt; @Path(&quot;{token, .+}&quot;)<br>
&gt;&gt; &gt;&gt;&gt; public Response unregisterInstallations(<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; What do you mean by that regex? The problem is simply the<br>
&gt;&gt; “%2F”<br>
&gt;&gt; &gt;&gt; in the token (which is an URLencoded simplepush url) and it’s<br>
&gt;&gt; &gt;&gt; being revoked long before it hits the RestEasy (which does the<br>
&gt;&gt; &gt;&gt; routing according to what’s in the @Path).<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; On 25 July 2014 10:32, Tadeas Kriz &lt;<a href="mailto:tkriz@redhat.com">tkriz@redhat.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; —<br>
&gt;&gt; &gt;&gt;&gt;&gt; Tadeas Kriz<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; On 24 Jul 2014, at 05:44 pm, Karel Piwko &lt;<a href="mailto:kpiwko@redhat.com">kpiwko@redhat.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt; On Thu, Jul 24, 2014 at 3:28 PM, Tadeas Kriz<br>
&gt;&gt; &lt;<a href="mailto:tkriz@redhat.com">tkriz@redhat.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; It should not. For hibernate, it’s just a string like any<br>
&gt;&gt; &gt;&gt;&gt;&gt; other.<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; The problem might be in the configuration of<br>
&gt;&gt; <a href="http://JAX.RS/RestEasy" target="_blank">JAX.RS/RestEasy</a>. If<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; I’ll have some time today evening, I’ll try to fix it, it<br>
&gt;&gt; &gt;&gt;&gt;&gt; should<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt; be an easy fix.<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt; Last famous words? ;-)<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; I shall never say “an easy fix” again.<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt; But I agree. Everything is string and URL encode should<br>
&gt;&gt; happen on<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt; client while server should automatically decode and work<br>
&gt;&gt; always<br>
&gt;&gt; &gt;&gt;&gt;&gt; with<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt; just decoded string. If we need to encode twice, something is<br>
&gt;&gt; &gt;&gt;&gt;&gt; wrong.<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; Anyway, the 400 Bad request response is made by the tomcat<br>
&gt;&gt; itself,<br>
&gt;&gt; &gt;&gt;&gt;&gt; disallowing the use of %2F as a path parameter. This will<br>
&gt;&gt; probably<br>
&gt;&gt; &gt;&gt;&gt;&gt; apply on other web containers.<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; Possible solutions with their disadvantages:<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; 1. well-documented double-encoding of the URL (might be<br>
&gt;&gt; confusing)<br>
&gt;&gt; &gt;&gt;&gt;&gt; 2. use @QueryParam instead of @PathParam (breaks the api<br>
&gt;&gt; &gt;&gt;&gt;&gt; consistence, as every other call would still use @PathParam)<br>
&gt;&gt; &gt;&gt;&gt;&gt; 3. allow @QueryParam (again, breaks the api consistence, but<br>
&gt;&gt; only<br>
&gt;&gt; &gt;&gt;&gt;&gt; for the SimplePush)<br>
&gt;&gt; &gt;&gt;&gt;&gt; 4. find another encoding (Base64 for URL = URLEncode then Base64<br>
&gt;&gt; &gt;&gt;&gt;&gt; encode)<br>
&gt;&gt; &gt;&gt;&gt;&gt; 5. don’t use the url as a deviceToken (might not comply with<br>
&gt;&gt; &gt;&gt;&gt;&gt; Mozzila’s SimplePush specs)<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; What do you think guys?<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt; aerogear-dev mailing list<br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt;&gt;&gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt;&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt; &gt;&gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; _______________________________________________<br>
&gt;&gt; &gt;&gt; aerogear-dev mailing list<br>
&gt;&gt; &gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; --<br>
&gt;&gt; &gt; Matthias Wessendorf<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt;&gt; &gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt;&gt; &gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Matthias Wessendorf<br>
&gt;<br>
&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
<br>
<br>
_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br>
<br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div>