Hi Peter
Thanks for your valuable reply.Could you elaborate more on serverHost string. I 
found serverHost variable on phoenix.policy file. Currently I am just using a 
simple reggie(Jrmp-reggie) in order to register of my proxy. And, I started it 
inside localnetwork to which I could connect from outside network by using port 
forwarding. However, as I stated in my previous email, once it got the proxy, 
it is assigned by local IP and could not download the remaining codes of the 
services. I would like to set the dns name string instead of InetAddress. Could 
you elaborate more about it so that I can configure more properly. I think I 
may have missed that.
RegardsBishnu


Bishnu Prasad Gautam


> Date: Wed, 6 Jul 2016 21:01:53 +1000
> From: j...@zeus.net.au
> Subject: Re: Lotj - languages other than java
> To: dev@river.apache.org
> 
> Hi Bishnu,
> 
> The serverHost is a dns name string argument that you use in your 
> configuration when choosing & creating an instance of a ServerEndpoint, if 
> this is null, it defaults to the InetAddress.  
> 
> Endpoints support multiple ip addresses, the first successful address is used 
> during dns resolution .
> 
> Regards,
> 
> Peter.
> 
> Sent from my Samsung device.
>  
>   Include original message
> ---- Original message ----
> From: Bishnu Gautam <bishn...@hotmail.com>
> Sent: 06/07/2016 08:11:49 pm
> To: dev@river.apache.org <dev@river.apache.org>
> Subject: RE: Lotj - languages other than java
> 
> Thanks Peter For the introduction of new implementation. I will go through 
> it.Between, here is the scenario that I often faced and I am pretty sure that 
> most of the users have faced is this: 
> 1. It is possible to invoke lookup service from the internet and even getting 
> the registrar is possible. In fact I was able to find the lookup server 
> behind the NAT and firewall.2. Once I get the registrar the service 
> registered in this registrar seems to have local IP3. Therefore the client 
> from the internet is not able to set up the connection by using the proxy as 
> it gave you local IP. 
> This problem occurred because the lookup service was running in private IP 
> and not assigned by global IP directly into its interface. If the 
> lookupserver is directly assigned by global IP, there would be no problem to 
> publicize the current lookup server. However, in our case and most of the 
> servers inside the networks are not directly assigned global IP but are 
> assigned in a gateway machine having NAT facility due to security reasons. 
> The static NAT  and some other techniques are applied in order to access the 
> services through outside network and it is quite possible because they are 
> port forwarded and synchronize the filtering rules properly. However port 
> forwarding technique alone is not helpful in the case of river. Because 
> registrar (kept inside firewall and NAT) seems to have the proxy service 
> which has local IP whenever it is downloaded to the client machine. In the 
> first connection, it is possible to locate the lookuplocater by using port 
> forwarding technique however once it is located it returns the proxy services 
> having local IP. This scenario is becoming a possible design flaw  in River 
> and limiting the users of this technology.I would like to suggest you to 
> assign domain name in any case rather than assigning IP in its proxy. Because 
> if you assign domain name rather than IP, the lookup can be made without 
> considering whether a call from local network or global network. Because when 
> lookup is done from within a network, dns will return local IP and it will 
> return global IP whenever it is done from outside network. In this case, 
> there will be no problem once it is accessed by port forwarding technique 
> too. So, we should rely upon DNS. So, it is quite possible that the codebase 
> is assigning the local IP to its proxy service. So, need to tweak this 
> scenario too. This seems lookup overhead but it seems to be the only solution 
> to overcome NAT and Firewall locking to the River solution I think that this 
> issue can be solved by you guys with minimal effort. Let me know if you could 
> tweak the code of registrar as explained above. This will certainly enable a 
> huge potential to this technology. Please correct me if something is missing 
> here. 
> RegardsBishnu 
> 
> 
> Bishnu Prasad Gautam
> 
> 
> > Date: Wed, 6 Jul 2016 16:25:12 +1000 
> > From: j...@zeus.net.au 
> > To: dev@river.apache.org 
> > Subject: Re: Lotj - languages other than java 
> >  
> > Thanks Bishnu, 
> >  
> > I plan to set up a public lookup service later this year, or early next  
> > over IPv6 (dependant on me completing the work on github), there's a  
> > beta release of the code available you can experiment with. 
> >  
> > It will be possible to discover this lookup service dynamically using  
> > the global IPv6 multicast address FF0X::155 for Jini-announcement. 
> >  
> > For DOS reasons, Jini-request will only be available for local network use. 
> >  
> > http://www.iana.org/assignments/ipv6-multicast-addresses/ipv6-multicast-addresses.xhtml
> >  
> >  
> > Before I could make a lookup service publicly available, I've had to do  
> > a lot of work on addressing security issues: 
> >  
> >    1. Serialization atomic input validation. 
> >    2. Two new default methods in ServiceRegistrar so that clients can 
> >       authenticate services, prior to deserializing their proxy's, 
> >       Entry's and downloading or provisioning codebases. 
> >    3. New discovery providers with updated cryptographic hash functions 
> >       for secure discovery and added input validation for 
> >       deserialization of registrar proxy. 
> >    4. Dynamic granting of DownloadPermission and 
> >       DeserializationPermission (similar to deserialization 
> >       whitelisting) to authenticated services (to allow their proxy to 
> >       be deserialized / downloaded). 
> >    5. Allow listing of Permissions within jar files, for smart proxy's 
> >       and have these granted dynamically if service authentication 
> > succeeds. 
> >    6. Update encryption cyphers and invocation constraints. 
> >  
> > Existing River / Jini deployments will not be able to contact this  
> > lookup service, in the event they could, they cannot satisfy the  
> > ConfidentialityStrength invocation constraints either unfortunately.  On  
> > local networks security could be relaxed sufficiently to allow  
> > compatibility with an existing River deployment, but public lookup  
> > services should not make that compromise. 
> >  
> > The Serial form of objects are compatible with River. 
> >  
> > This is all beta, new API may change if adopted by River. 
> >  
> > Regards, 
> >  
> > Peter. 
> >  
> > On 6/07/2016 3:36 PM, Bishnu Gautam wrote: 
> > > Thanks Peter for your detail explanation regarding River on Internet.I 
> > > will go through it. By the way do you have any publicly available Lookup 
> > > service to which I can register my proxy service and this proxy service 
> > > will refer my web server by which I could download my rest of the actual 
> > > service codes (fully implemented) from the publicly available web 
> > > server(in which my service codes are located). In fact I am trying to 
> > > avail Lookup Server publicly so that the user could register their proxy 
> > > services in my lookup server.Let me know if anybody already made it 
> > > available for public use. Once we are able to do it we do not need to 
> > > rely upon REST too and also do not need to tackle with NATing and packet 
> > > filtering issues. I am looking whether there are any workable publicly 
> > > available lookup services to which I can register my proxy. 
> > > RegardsBishnu 
> > > 
> > > 
> > > Bishnu Prasad Gautam 
> > > 
> > > 
> > >> Date: Tue, 5 Jul 2016 17:46:14 +1000 
> > >> From: j...@zeus.net.au 
> > >> To: dev@river.apache.org 
> > >> Subject: Re: Lotj - languages other than java 
> > >> 
> > >> Thanks Bishnu, 
> > >> 
> > >> Mark Brouwer originally pointed out many years ago, that while jini had 
> > >> https jeri endpoints, there was no support to perform unicast discover 
> > >> over https in LookupLocator discovery. 
> > >> 
> > >> I have implemented that. 
> > >> 
> > >> Now, you can have any number of publicly available lookup services, and 
> > >> contact them using https unicast with LookupLocator, 
> > >> ConstrainableLookupLocator and LookupLocatorDiscovery.  DNS-SD is an 
> > >> obvious substitute for multicast discovery for clients behind firewalls, 
> > >> but it hasn't been implemented yet. 
> > >> 
> > >> With public lookup services, even when not discoverable with multicast 
> > >> discovery (because your clients are behind firewalls), can register with 
> > >> each other, using multicast discovery, allowing clients behind firewalls 
> > >> to find others, so they only need to know a few permanent registrars to 
> > >> find others, when they don't have access to multicast discovery. 
> > >> 
> > >> Non public service clients (behind firewalls or NAT) can locate public 
> > >> services.  Non public clients can listen behind NAT and firewalls, when 
> > >> they register a listener with a lookup service, they will be notified of 
> > >> new service registrations, because https jeri endpoints will keep the 
> > >> connection (ports) open between a lookup service and clients behind 
> > >> firewalls. 
> > >> 
> > >> So lets say for example, you have an embedded client behind a firewall, 
> > >> which is also a master for an IoT wireless local network and there are 
> > >> several devices that will send a video stream or other data, then for 
> > >> instance a public consumer service, could register with a lookup service 
> > >> where the embedded client was listening, then be contacted and 
> > >> authenticated by the embedded client and access a service directly from 
> > >> the client to receive live data streams from that wireless network, this 
> > >> may then republish the data accumulated from multiple such embedded 
> > >> clients via a web site.  Clients behind NAT must initiate contact, only 
> > >> then can they be contacted. 
> > >> 
> > >> JERI multiplexes, so you can have 127 active service connections over 
> > >> one connection between two nodes. 
> > >> 
> > >> LetsEncrypt.org is a free certificate authority than can be utilised for 
> > >> https jeri endpoints.  LetsEncrypt.org doesn't provide code 
> > >> certificates, so they can't be used for signing jar files. 
> > >> 
> > >> To avoid the expense of CA signed codebase certificates, https discovery 
> > >> automatically grants DownloadPermission and DeserializationPermission 
> > >> (which is required to allow proxy deserialization over a https jeri 
> > >> endpoint with an InputValidation constraint), to an anoymous code signer 
> > >> certificate and uri exchanged during the discovery process, but only if 
> > >> authentication is successful.  The codebase jar file can also contain 
> > >> the permissions it requires, so that these can be granted dynamically by 
> > >> the client during proxy preparation. 
> > >> 
> > >> In addition https jeri endpoint encryption cyphers have all been updated 
> > >> to modern secure cyphers and support for insecure cyphers has been 
> > >> removed. 
> > >> 
> > >> Default methods have been added to ServiceRegistrar, to allow the client 
> > >> to authenticate services prior to retrieving proxy's and Entry's. 
> > >> ProxyTrust verfiiers are no longer necessary as the proxy is obtained 
> > >> directly from the service after authentication, rather than via a third 
> > >> party.  The proxy is already trusted. 
> > >> 
> > >> https://pfirmstone.github.io/river-internet/ 
> > >> 
> > >> I hope to get this accepted by River at some point, I figure that 
> > >> creating a demonstration will assist the understanding process for other 
> > >> developers, as I wasn't able to communicate effectively enough to avoid 
> > >> strong resistance and criticism when I originally proposed it. 
> > >> 
> > >> Regards, 
> > >> 
> > >> Peter. 
> > >> 
> > >> 
> > >> On 5/07/2016 1:33 PM, Bishnu Gautam wrote: 
> > >>> Hi Peter 
> > >>> It is great that you pointed out lookup locator issue in firewall and 
> > >>> its potential solution. It would be great to see the developments in 
> > >>> River in which they really focus to have lookup discovery beyond the 
> > >>> firewall without requiring port forward and other demanding packet 
> > >>> filtering techniques. Once this obstacle in River is crossed, I am 
> > >>> pretty sure that there will be new paradigm shift in IoT or ICT 
> > >>> technology. This technology has a tremendous potential. However, I 
> > >>> never understand why River community never try to bring this issue on 
> > >>> the first place. River in Internet would be the most wonderful 
> > >>> solutions for millions of users around the world. Please think, discuss 
> > >>> and try to work on it. It would be a great news for us. 
> > >>> RegardsBishnu 
> > >>> 
> > >>> 
> > >>> Bishnu Prasad Gautam 
> > >>> 
> > >>> 
> > >>>> Date: Mon, 4 Jul 2016 18:37:25 +1000 
> > >>>> From: j...@zeus.net.au 
> > >>>> Subject: Re: Lotj - languages other than java 
> > >>>> To: dev@river.apache.org 
> > >>>> CC: si...@qcg.nl 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> Sim, 
> > >>>> 
> > >>>> I'd like to see the project return to the days where we had a number 
> > >>>> of active committers working together on the same goals. 
> > >>>> 
> > >>>> I've got a project on github, where I've continued work that was 
> > >>>> controversial, I'd like to bring this work back to the project if 
> > >>>> possible.  It has some minor breaking changes, but if backward 
> > >>>> compatibility was essential, it could be accommodated. 
> > >>>> 
> > >>>> Changes: 
> > >>>> * New secure discovery providers, including https among others, 
> > >>>> including added https protocol support for LookupLocator.  However 
> > >>>> since firewalls may not allow ipv6 multicast packets through, DNS-SD 
> > >>>> would be useful. 
> > >>>> * IPv6 Discovery, global and local groups. 
> > >>>> * Discovery V2 support added to LookupLocator's getRegistrar method. 
> > >>>> * Updated encryption ciphers, removal of insecure ones. 
> > >>>> * Deprecation of ProxyTrust et al. 
> > >>>> * New default methods added to ServiceRegistrar to allow establising 
> > >>>> trust with a service, prior to obtaining a service proxy, or Entry's 
> > >>>> (works with both maven codebase provisioning and traditional codebase 
> > >>>> downloads). 
> > >>>> * Input validation for untrusted serial data. 
> > >>>> * META-INF/permissions.perm files list permissions required by 
> > >>>> codebase, accessible from ClassLoader using mixin interface. 
> > >>>> 
> > >>>> I recall you had a need for a SocketFactory in LookupLocator, at that 
> > >>>> time LookupLocator only used discovery v1, which was deprecated, I'd 
> > >>>> like to include a way to enable SocketFactory support in discovery V2. 
> > >>>>  Note that LookupLocator isn't serialized during discovery. 
> > >>>> 
> > >>>> While the River codebase was a little difficult to understand at 
> > >>>> first, I find it's quite easy to work with now. 
> > >>>> 
> > >>>> While I'm a critic of Rivers flaws, addressing th em is straight 
> > >>>> forward, the greatest challenge is convincing everyone that flaws 
> > >>>> exist, or that they need addressing, there's still plenty of good 
> > >>>> stuff left worth saving 
> > >>>> 
> > >>>> Regards, 
> > >>>> 
> > >>>> Peter. 
> > >>>> 
> > >>>> 
> > >>>> Sent from my Samsung device. 
> > >>>> 
> > >>>>     Include original message 
> > >>>> ---- Original message ---- 
> > >>>> From: Peter<j...@zeus.net.au> 
> > >>>> Sent: 01/07/2016 04:35:16 pm 
> > >>>> To: dev@river.apache.org<d...@riverapache.org> 
> > >>>> Subject: Re: Lotj - languages other than java 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> Thanks Sim, 
> > >>>> 
> > >>>> These are all good questions we need to consider. 
> > >>>> 
> > >>>> I like the model of micro services where each service is responsible 
> > >>>> for implementing its own back end persistence and state.  Do you 
> > >>>> consider a microservice to be web based? 
> > >>>> 
> > >>>> I have an implementation of discovery using multicast ipv6.  However 
> > >>>> for firewalls with limited open ports such as https over ipv6, we have 
> > >>>> JERI https endpoints, but no discovery, DNS-SD is a good discovery 
> > >>>> alternative waiting to be implemented. 
> > >>>> 
> > >>>> For my own environment I will be adopting ipv6 , the global address 
> > >>>> space and autoconfiguration solve many problems that users experience 
> > >>>> with ipv4 today. 
> > >>>> 
> > >>>> I admit the locked down api caused me frustration, but I think it's 
> > >>>> clear now that we need a process for managing api evolution. 
> > >>>> 
> > >>>> Complexity - The proxy preparation api tries to determine trust after 
> > >>>> downloading untrusted code and deserialization of unverified data.  As 
> > >>>> gadget attacks demonstrate, too little too late at great complexity.  
> > >>>> This was an attempt to bolt security onto the existing lookup service. 
> > >>>> 
> > >>>> JERI is good, method constraints are good, proxy trust is obsolete.  
> > >>>> River's current ssl and https JERI endpoints need to be brought up to 
> > >>>> date as they're no longer secure.  I've already done this work 
> > >>>> externally, it can be donated when appropriate for the project. 
> > >>>> 
> > >>>> If we address security issues, we can provide a secure alternative to 
> > >>>> RMI  Oracle has chosen 'whack a mole' security for Serialization, 
> > >>>> rather than address some fundamental design flaws with 
> > >>>> ObjectInputStream, for this reason, authentication of the source must 
> > >>>> occur prior to accepting serial data.  Despite common belief, white 
> > >>>> listing isn't a completely secure solution and adds conplexity as it's 
> > >>>> too fine grained. 
> > >>>> 
> > >>>> For multi language support, this would limit the type system, but 
> > >>>> then, there's a lot that can be done with strings, primitive types and 
> > >>>> byte arrays.  This doesn't have to limit java service types, I think 
> > >>>> language support should be something determined during lookup, so we 
> > >>>> don't limit the type systems of more powerful languages to primitives. 
> > >>>> 
> > >>>> Looking at most Entry's used for lookup, most fields are strings and 
> > >>>> integers.  If you look at the way lookup searches are implemented, an 
> > >>>> entry is represented by a string name and each field is a tuple name 
> > >>>> value pair. 
> > >>>> 
> > >>>> I think a ground up redesign of the lookup service, would address 
> > >>>> language compatibility as well as complexity and security. 
> > >>>> 
> > >>>> In other words, recognise the need for a lookup&   registration 
> > >>>> protocol, as well as discovery, after that, the service&   client 
> > >>>> should be able to negotiate  whatever rpc protocol they have in common 
> > >>>> and to do that, we'll also need a connection negotiation protocol.  We 
> > >>>> could write specifications for these protocols.  This way we could 
> > >>>> allow any language/ platform to register and provide services.  The 
> > >>>> code for lookup would not be downloaded as Reggie is now, it would be 
> > >>>> protocol, rather than proxy based.  This would also fit well with IoT. 
> > >>>> 
> > >>>> Meanwhile we can still support existing java based services. 
> > >>>> 
> > >>>> Thoughts? 
> > >>>> 
> > >>>> Peter. 
> > >>>> 
> > >>>> Sent from my Samsung device. 
> > >>>> 
> > >>>>     Include original message 
> > >>>> ---- Original message ---- 
> > >>>> From: Simon IJskes - QCG<si...@qcg.nl> 
> > >>>> Sent: 30/06/2016 06:22:30 pm 
> > >>>> To: dev@river.apache.org 
> > >>>> Subject: Re: Lotj - languages other than java 
> > >>>> 
> > >>>> If you solve the 'barrier' of the service discovery, do you also want 
> > >>>> to 
> > >>>> provide universal access to the java services in the form of 
> > >>>> microservices? 
> > >>>> 
> > >>>> It is doable to take any 'more used' service discovery solution and 
> > >>>> use 
> > >>>> this as the river discovery. To introduce a level of abstraction with 
> > >>>> the same primitives as the current river discovery mechanism offers. 
> > >>>> 
> > >>>> River would then have adapted a more common discovery mechanism. 
> > >>>> 
> > >>>> Next thing that we should decide, is how far do we go into 
> > >>>> universality. 
> > >>>> I see univeral type systems, different serialisation plugins on the 
> > >>>> horizon. 
> > >>>> 
> > >>>> The biggest showstopper for me was the API compatibility. In order to 
> > >>>> make any progress we need a more agile process for modifing the API 
> > >>>> 
> > >>>> If we leave compatibility behind us, we could ask our selfs, what 
> > >>>> benefit are we providing for the users? What can we introduce that 
> > >>>> does 
> > >>>> not duplicate what is already in the market For a java developer, i 
> > >>>> think there is no need to convince, they can see benefits in just 
> > >>>> having 
> > >>>> a java API to program against. We need to think about the environment 
> > >>>> where java receives a lot of 'non-love', how we can create a 'whow, 
> > >>>> java 
> > >>>> isn't all that bad, look at that easy solution' experience. 
> > >>>> 
> > >>>> I think that river lost the spot it could have, as a java only 
> > >>>> solution 
> > >>>> to JSON, XMLRPC, SOAP, etc libraries for java From a helicopter view, 
> > >>>> what does it do? Whe provide secure RPC, with discovery and scaling. 
> > >>>> And 
> > >>>> we make it hard to use. 
> > >>>> 
> > >>>> G. Simon 
> > >>>> 
> > >>>> 
> > >>>> On 30-06-16 05:37, Peter wrote: 
> > >>>>> Currently with River, you need java to participate.  Other languages 
> > >>>>> can provide services, but you need a jvm to participate. 
> > >>>>> 
> > >>>>> Most of discovery is language agnostic, so any language can 
> > >>>>> participate in discovery. 
> > >>>>> 
> > >>>>> The major limitation for other languages is the lookup service.  
> > >>>>> Security issues and complexity also relate to the lookup service. 
> > >>>>> 
> > >>>>> My thoughts are that a lookup service that performs search and 
> > >>>>> registration, but provides a language independent  and secure means 
> > >>>>> of contacting service providers would be beneficial. 
> > >>>>> 
> > >>>>> Anyone interested in discussing further? 
> > >>>>> 
> > >>>>> Regards, 
> > >>>>> 
> > >>>>> Peter. 
> > >>>>> 
> > >>>>> 
> > >>>>> Sent from my Samsung device. 
> > >>>>> 
> > >>>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>> 
> > >>>                             
> > >                            
> >  
>                            
                                          

Reply via email to