Re: [Development] Requesting New Repository - QtZeroConf

2015-11-16 Thread drwho
> Hi,
>
> Given that mdns uses an unprivileged port, it seems like to me it should
> be possible
> for just about any process to send and receive mdns queries. Which means
> that any
> app could participate in the mdns groups by itself if it wanted. The
> primary advantage
> that I can see with re-using a running daemon is that the daemon can
> detect if your
> process crashes and clear out the distributed DNS records. If the app
> takes care of
> that by itself, then it would have to deliberately use short TTLs I think.
>
> Interestingly enough, the protocol doesn't seem to be that complicated. A
> cross-platform
> implementation written in Go is under 1000 LOC (server and client, count
> includes comments):
>
> https://github.com/hashicorp/mdns
>
>
> So an alternate approach would be to try to implement the protocol by
> itself.
>
>
> Another option that I think would be viable is to go up in the level of
> abstraction
> and try to come up with an API that allows discovery and publishing of
> network
> services on mdns as well as UPNP at the same time. Then the windows
> version could
> just re-use UPNP APIs in Windows and on the other OSes we use zeroconf.

ssdp discovers devices, zeroconf discovers services (on devices).  ssdp
has different classes of devices (eg. rootdevice).  zeroconf has optional
txt records.  I don't see a way to combine these into a higher level of
abstraction.

-- ssdp --
registerResourceSimple(const char *target, const char *usn, const char
*location)
registerResourceSimple("upnp:rootdevice",
"uuid:1234abcd-12ab-12ab-12ab-1234567abc12::upnp:rootdevice",
"http://192.168.1.100/;);

-- ZeroConf --
registerService(const char *name, const char *type, const char *domain,
quint16 port);
registerService("Vaction-Tracker-server", "_vactracker._tcp", "local",
12345);

I have completed testing of my zeroconf project on Linux, Android, Windows
and Mac.  I would like to contribute the code to the playground area with
the project name zeroconf with the hope of it someday becoming a sub
module.

Jon

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-16 Thread Tobias Hunger
Hi Thiago,

On Thu, Sep 10, 2015 at 5:47 PM, Thiago Macieira
 wrote:
> I don't know any project implementing LLMNR outside of Windows. It's clearly
> dead in terms of further adoption and mDNS has won. So I don't think we need
> to provide it for cross-platform interoperability. I'd say we provide mDNS for
> that. In addition, we may provide some other IoT protocols currently in
> development.

Systemd supports LLMNR and uses it to address containers it starts.

References:
http://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html
https://lwn.net/Articles/647634/

Best Regards,
Tobias
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Knoll Lars
On 10/09/15 06:14, "Thiago Macieira"  wrote:

>On Wednesday 09 September 2015 22:59:11 Jonathan Bagg wrote:
>> http://lists.apple.com/archives/rendezvous-dev/2004/Apr/msg00031.html
>> Windows LLMNR doesn't appear to be compatible with mDNS / zeroconf. Are
>> you suggesting on Windows there would be an option to use LLMNR or mDNS?
>
>I know it isn't compatible, but it is doing the same function. I'm not
>asking 
>to replace mDNS support on Windows (interoperability), but I am asking if
>it 
>makes sense to also add support for LLMNR as it's available anyway.

I think that could make sense. But ideally, we would then support it cross
platform.

I’d be happy about a Qt add-on for zeroconf. Discovering services on the
local network is something I think is missing in Qt at this point in time.

Cheers,
Lars


>
>For that matter, all of the IoT protocols support discovery in some
>level. For 
>us in OIC, it's done by a multicast CoAP packet (which is really easy to
>do 
>with QUdpSocket). Do you think there's room for this kind of extended
>discovery?


___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Oswald Buddenhagen
On Wed, Sep 09, 2015 at 05:56:21PM -0400, Jonathan Bagg wrote:
> Project name: QtZeroConf
> 
> Project description:
> QtZeroConf is a wrapper class for various mDNS discovery libraries across
> multiple platforms:
> 
> Linux -> Avahi-client
> Android -> Avahi-core or Android Network Discovery Service
> Embedded -> Avahi-core
> MAC -> Apple's Bonjour
> iOS -> Apple's Bonjour
> Window -> Apple's Bonjour
> 
> Responsible persons: Jonathan Bagg
> 
> (playgound unless suggested otherwise)
> Desired repository name: playground/qtzeroconf
> 
what is the longer-term perspective of this class? a separate module
sounds unreasonable. and if it's to become part of qtnetwork, then
maybe you should just start by posting a change for qtbase/dev and have
it "ripen" in the review?
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Knoll Lars
On 10/09/15 11:49, "Oswald Buddenhagen"
 wrote:

>On Wed, Sep 09, 2015 at 05:56:21PM -0400, Jonathan Bagg wrote:
>> Project name: QtZeroConf
>> 
>> Project description:
>> QtZeroConf is a wrapper class for various mDNS discovery libraries
>>across
>> multiple platforms:
>> 
>> Linux -> Avahi-client
>> Android -> Avahi-core or Android Network Discovery Service
>> Embedded -> Avahi-core
>> MAC -> Apple's Bonjour
>> iOS -> Apple's Bonjour
>> Window -> Apple's Bonjour
>> 
>> Responsible persons: Jonathan Bagg
>> 
>> (playgound unless suggested otherwise)
>> Desired repository name: playground/qtzeroconf
>> 
>what is the longer-term perspective of this class? a separate module
>sounds unreasonable. and if it's to become part of qtnetwork, then
>maybe you should just start by posting a change for qtbase/dev and have
>it "ripen" in the review?

I am hesitating to throw this into QtNetwork. It would add another
dependency to qtnetwork and add quite a bit of code that’s not being used
by everybody. Keeping it in a separate repository is more modular, and
should be more maintainable for everybody.

The only reason to throw it into qtbase would be if we required this for
some of our platform plugins, but I can’t see that need.

Cheers,
Lars

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Knoll Lars
On 10/09/15 09:56, "Ola Røer Thorsen"  wrote:

>
>2015-09-09 23:56 GMT+02:00 Jonathan Bagg
>:
>
>Window -> Apple's Bonjour
>
>
>Would this mean Bonjour would be bundled with Qt for the Windows version,
>or will it have to be installed separately?

That’s then basically a packaging question, so we can decide that once we
have it all working. The Bonjour license (Apache 2.0) would at least not
forbid us to ship it.

Cheers,
Lars

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Ola Røer Thorsen
2015-09-09 23:56 GMT+02:00 Jonathan Bagg :

> Window -> Apple's Bonjour
>
>
Would this mean Bonjour would be bundled with Qt for the Windows version,
or will it have to be installed separately?

Cheers,
Ola
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Konstantin Tokarev


10.09.2015, 00:56, "Jonathan Bagg" :
> Project name: QtZeroConf
>
> Project description:
> QtZeroConf is a wrapper class for various mDNS discovery libraries across
> multiple platforms:
>
> Linux -> Avahi-client
> Android -> Avahi-core or Android Network Discovery Service
> Embedded -> Avahi-core
> MAC -> Apple's Bonjour
> iOS -> Apple's Bonjour
> Window -> Apple's Bonjour
>
> Responsible persons: Jonathan Bagg
>
> (playgound unless suggested otherwise)
> Desired repository name: playground/qtzeroconf


Does SSDP (UPnP) discovery fit into this project?


-- 
Regards,
Konstantin
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread drwho
> On 10/09/15 09:56, "Ola Røer Thorsen"  wrote:
>
>>
>>2015-09-09 23:56 GMT+02:00 Jonathan Bagg
>>:
>>
>>Window -> Apple's Bonjour
>>
>>
>>Would this mean Bonjour would be bundled with Qt for the Windows
>> version,
>>or will it have to be installed separately?
>
> That’s then basically a packaging question, so we can decide that once
> we
> have it all working. The Bonjour license (Apache 2.0) would at least not
> forbid us to ship it.

Window is tricky.  Right now I'm using Apple's binary library (dnssd.lib)
which excludes the use of mingw.  I think the source code for dnssd.lib
is...

http://www.opensource.apple.com/source/mDNSResponder/mDNSResponder-561.1.1/mDNSShared/

so ideally mDNSShared source could be distributed and not the binary.  2nd
problem is that either source or binary still requires Apple's print
services (or itunes) be installed.

One thought I've had is that avahi-core be ported to Windows.  The issue
with this is that two separate Qt programs could each be running there own
mDNS stack which you are not supposed to do.  The best solution for
windows is probably mDNSShared source.

Jon

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Rutledge Shawn

On Sep 10, 2015, at 12:05, Konstantin Tokarev  wrote:

> 
> 
> 10.09.2015, 00:56, "Jonathan Bagg" :
>> Project name: QtZeroConf
>> 
>> Project description:
>> QtZeroConf is a wrapper class for various mDNS discovery libraries across
>> multiple platforms:
>> 
>> Linux -> Avahi-client
>> Android -> Avahi-core or Android Network Discovery Service
>> Embedded -> Avahi-core
>> MAC -> Apple's Bonjour
>> iOS -> Apple's Bonjour
>> Window -> Apple's Bonjour
>> 
>> Responsible persons: Jonathan Bagg
>> 
>> (playgound unless suggested otherwise)
>> Desired repository name: playground/qtzeroconf
> 
> 
> Does SSDP (UPnP) discovery fit into this project?

Maybe we should call the module something more generic like QtServiceDiscovery. 
 Zeroconf can be used to discover both devices and services, but a service on a 
device is the more specific thing of interest, right?

Zeroconf also covers self-assigning a network address if there is no DHCP 
server, but that’s irrelevant to this module, I suppose.  (e.g. dhcpcd does 
that if it times out while trying to find a DHCP server)

There are many attempts to come up with a less centralized alternative to DNS.  
(namecoin, ipfs, various other projects using the DHT concept, even the magnet 
links used for bittorrent, etc)  So, maybe one of those would be in scope some 
day too.  Again the goal would be to map a well-known name to some sort of URI 
which identifies a service, or a specific file.  

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Thiago Macieira
On Thursday 10 September 2015 07:07:49 Knoll Lars wrote:
> >I know it isn't compatible, but it is doing the same function. I'm not
> >asking 
> >to replace mDNS support on Windows (interoperability), but I am asking if
> >it 
> >makes sense to also add support for LLMNR as it's available anyway.
> 
> 
> I think that could make sense. But ideally, we would then support it cross
> platform.
> 
> I’d be happy about a Qt add-on for zeroconf. Discovering services on the
> local network is something I think is missing in Qt at this point in time.

I don't know any project implementing LLMNR outside of Windows. It's clearly 
dead in terms of further adoption and mDNS has won. So I don't think we need 
to provide it for cross-platform interoperability. I'd say we provide mDNS for 
that. In addition, we may provide some other IoT protocols currently in 
development.

In any case, the gist of this discussion is that neither the module nor the 
library should be called "zeroconf", if they provide more functionality.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Thiago Macieira
On Thursday 10 September 2015 09:47:57 dr...@infidigm.net wrote:
> One thought I've had is that avahi-core be ported to Windows.  The issue
> with this is that two separate Qt programs could each be running there own
> mDNS stack which you are not supposed to do.  The best solution for
> windows is probably mDNSShared source.

Doesn't Avahi have an in-process mode? Or does it always require an out-of-
process service?

D-Bus on Windows, for example, looks for dbus-launch.exe on PATH and starts 
it. If it's missing, QtDBus still compiles and you can ship your application, 
but refuses to connect anywhere. We could go for a similar approach, but I 
don't like it.
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Konstantin Tokarev


10.09.2015, 18:51, "dr...@infidigm.net" :
>>  On Sep 10, 2015, at 12:05, Konstantin Tokarev  wrote:
>>
>>>  10.09.2015, 00:56, "Jonathan Bagg" :
  Project name: QtZeroConf

  Project description:
  QtZeroConf is a wrapper class for various mDNS discovery libraries
  across
  multiple platforms:

  Linux -> Avahi-client
  Android -> Avahi-core or Android Network Discovery Service
  Embedded -> Avahi-core
  MAC -> Apple's Bonjour
  iOS -> Apple's Bonjour
  Window -> Apple's Bonjour

  Responsible persons: Jonathan Bagg

  (playgound unless suggested otherwise)
  Desired repository name: playground/qtzeroconf
>>>
>>>  Does SSDP (UPnP) discovery fit into this project?
>>
>>  Maybe we should call the module something more generic like
>>  QtServiceDiscovery. Zeroconf can be used to discover both devices and
>>  services, but a service on a device is the more specific thing of
>>  interest, right?
>
> I would say "discover devices that advertise a specific service"
>
>>  Zeroconf also covers self-assigning a network address if there is no DHCP
>>  server, but that’s irrelevant to this module, I suppose. (e.g. dhcpcd
>>  does that if it times out while trying to find a DHCP server)
>>
>>  There are many attempts to come up with a less centralized alternative to
>>  DNS. (namecoin, ipfs, various other projects using the DHT concept, even
>>  the magnet links used for bittorrent, etc) So, maybe one of those would
>>  be in scope some day too. Again the goal would be to map a well-known
>>  name to some sort of URI which identifies a service, or a specific file.
>
> I'm ok with this project being called QtServiceDiscovery,
> QtNetworkServiceDiscovery or similar if someone wants to work on the other
> protocols. I can only commit to the zeroconf wrappers.
>
> With multiple protocol support, I guess a parameter to the constructor to
> specify the protocol? I've tried to keep things simple. Service
> advertisement example:
>
> QZeroConf zeroConf;
> zeroConf.registerService("Vaction-Tracker-server", "_vactracker._tcp",
> "local", "", SRV_PORT);
>
> (discovery is just a little more complicated with a signal emitted for
> each resolved service/device)
>
> zeroconf / bonjour has a feature called text records that let apps put
> arbitrary text fields in their service advertisement. I don't think SSDP,
> SLP, or LLMNR support this, so I'm not sure how this zeroconf feature
> would be handled in the abstract case.


SSDP messages are based on HTTP, so one may try to add custom headers to
requests and/or responses. I've never seen them being used in practice
though.


-- 
Regards,
Konstantin
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Thiago Macieira
On Thursday 10 September 2015 08:26:25 Knoll Lars wrote:
> That’s then basically a packaging question, so we can decide that once we
> have it all working. The Bonjour license (Apache 2.0) would at least not
> forbid us to ship it.

It would require the code in question to be LGPLv3, not an earlier licence.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread drwho
>
> On Sep 10, 2015, at 12:05, Konstantin Tokarev  wrote:
>
>>
>>
>> 10.09.2015, 00:56, "Jonathan Bagg" :
>>> Project name: QtZeroConf
>>>
>>> Project description:
>>> QtZeroConf is a wrapper class for various mDNS discovery libraries
>>> across
>>> multiple platforms:
>>>
>>> Linux -> Avahi-client
>>> Android -> Avahi-core or Android Network Discovery Service
>>> Embedded -> Avahi-core
>>> MAC -> Apple's Bonjour
>>> iOS -> Apple's Bonjour
>>> Window -> Apple's Bonjour
>>>
>>> Responsible persons: Jonathan Bagg
>>>
>>> (playgound unless suggested otherwise)
>>> Desired repository name: playground/qtzeroconf
>>
>>
>> Does SSDP (UPnP) discovery fit into this project?
>
> Maybe we should call the module something more generic like
> QtServiceDiscovery.  Zeroconf can be used to discover both devices and
> services, but a service on a device is the more specific thing of
> interest, right?

I would say "discover devices that advertise a specific service"

> Zeroconf also covers self-assigning a network address if there is no DHCP
> server, but that’s irrelevant to this module, I suppose.  (e.g. dhcpcd
> does that if it times out while trying to find a DHCP server)
>
> There are many attempts to come up with a less centralized alternative to
> DNS.  (namecoin, ipfs, various other projects using the DHT concept, even
> the magnet links used for bittorrent, etc)  So, maybe one of those would
> be in scope some day too.  Again the goal would be to map a well-known
> name to some sort of URI which identifies a service, or a specific file.


I'm ok with this project being called QtServiceDiscovery,
QtNetworkServiceDiscovery or similar if someone wants to work on the other
protocols.  I can only commit to the zeroconf wrappers.

With multiple protocol support, I guess a parameter to the constructor to
specify the protocol?  I've tried to keep things simple.  Service
advertisement example:

QZeroConf zeroConf;
zeroConf.registerService("Vaction-Tracker-server", "_vactracker._tcp",
"local", "", SRV_PORT);

(discovery is just a little more complicated with a signal emitted for
each resolved service/device)

zeroconf / bonjour has a feature called text records that let apps put
arbitrary text fields in their service advertisement.  I don't think SSDP,
SLP, or LLMNR support this, so I'm not sure how this zeroconf feature
would be handled in the abstract case.

Jon

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Thiago Macieira
On Thursday 10 September 2015 11:26:45 Rutledge Shawn wrote:
> Zeroconf also covers self-assigning a network address if there is no DHCP
> server, but that’s irrelevant to this module, I suppose.  (e.g. dhcpcd does
> that if it times out while trying to find a DHCP server)

And that's totally irrelevant in an IPv6 world as the kernel does that. You're 
right, assigning of IP addresses is completely outside our perspective.

We're only talking about the service discovery (DNS-SD) part, in the local 
network (mDNS).

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread drwho
> On Thursday 10 September 2015 09:47:57 dr...@infidigm.net wrote:
>> One thought I've had is that avahi-core be ported to Windows.  The issue
>> with this is that two separate Qt programs could each be running there
>> own
>> mDNS stack which you are not supposed to do.  The best solution for
>> windows is probably mDNSShared source.
>
> Doesn't Avahi have an in-process mode? Or does it always require an
> out-of-
> process service?

Both.
avahi-client is a convenience api that talks to the avahi-daemon over
dbus...most linux systems
avahi-core is for embedded environments and runs it's own mDNS stack...for
when there is no avahi-daemon

> D-Bus on Windows, for example, looks for dbus-launch.exe on PATH and
> starts
> it. If it's missing, QtDBus still compiles and you can ship your
> application,
> but refuses to connect anywhere. We could go for a similar approach, but I
> don't like it.

Apple's bonjour lib is like avahi-client in that it connects to
mDNSResponder.  mDNSResponder, or something like it is built into OSx and
iOS, but on windows comes in Apple's print services.

The wrappers that use avahi-client and Apple's bonjour lib would be the
same as QtDBus as in it would still compile and ship, but is really only
an issue for windows.

Jon

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Thiago Macieira
On Thursday 10 September 2015 12:28:13 dr...@infidigm.net wrote:
> avahi-core is for embedded environments and runs it's own mDNS stack...for
> when there is no avahi-daemon
> 
> > D-Bus on Windows, for example, looks for dbus-launch.exe on PATH and
> > starts
> > it. If it's missing, QtDBus still compiles and you can ship your
> > application,
> > but refuses to connect anywhere. We could go for a similar approach, but I
> > don't like it.
> 
> Apple's bonjour lib is like avahi-client in that it connects to
> mDNSResponder.  mDNSResponder, or something like it is built into OSx and
> iOS, but on windows comes in Apple's print services.
> 
> The wrappers that use avahi-client and Apple's bonjour lib would be the
> same as QtDBus as in it would still compile and ship, but is really only
> an issue for windows.

Do you know if avahi-core could be made to run on Windows?
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread drwho

>> Apple's bonjour lib is like avahi-client in that it connects to
>> mDNSResponder.  mDNSResponder, or something like it is built into OSx
>> and
>> iOS, but on windows comes in Apple's print services.
>>
>> The wrappers that use avahi-client and Apple's bonjour lib would be the
>> same as QtDBus as in it would still compile and ship, but is really only
>> an issue for windows.
>
> Do you know if avahi-core could be made to run on Windows?

When I briefly tried it (2 months ago) I think it was an issue with the
unix style sockets.  Googling didn't show much.  If it did work, I suspect
it would be buggy as avahi really complains when it detects multiple mDNS
stacks running.

Jon

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Knoll Lars
On 10/09/15 19:58, 
"development-bounces+lars.knoll=theqtcompany@qt-project.org on behalf of 
dr...@infidigm.net" 
 wrote:



>
>>> Apple's bonjour lib is like avahi-client in that it connects to
>>> mDNSResponder.  mDNSResponder, or something like it is built into OSx
>>> and
>>> iOS, but on windows comes in Apple's print services.

I remember that we tried using the bonjour libs for a project inside the Qt 
company, and I don't remember that we needed any print services from Apple. But 
I could very well be wrong.
>>>
>>> The wrappers that use avahi-client and Apple's bonjour lib would be the
>>> same as QtDBus as in it would still compile and ship, but is really only
>>> an issue for windows.
>>
>> Do you know if avahi-core could be made to run on Windows?
>
>When I briefly tried it (2 months ago) I think it was an issue with the
>unix style sockets.  Googling didn't show much.  If it did work, I suspect
>it would be buggy as avahi really complains when it detects multiple mDNS
>stacks running.

So the problem would be to detect if a mDNS stack is already running, and if 
not start the service somehow? 

Or is there a way to make it possible to run multiple stacks on one host (ie. 
Is having only one stack a limitation in the protocol or the implementation)? 
It would be great if we could simply do this in process.

Cheers,
Lars

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread Hausmann Simon
Hi,

Given that mdns uses an unprivileged port, it seems like to me it should be 
possible
for just about any process to send and receive mdns queries. Which means that 
any
app could participate in the mdns groups by itself if it wanted. The primary 
advantage
that I can see with re-using a running daemon is that the daemon can detect if 
your
process crashes and clear out the distributed DNS records. If the app takes 
care of
that by itself, then it would have to deliberately use short TTLs I think.

Interestingly enough, the protocol doesn't seem to be that complicated. A 
cross-platform
implementation written in Go is under 1000 LOC (server and client, count 
includes comments):

https://github.com/hashicorp/mdns


So an alternate approach would be to try to implement the protocol by itself.


Another option that I think would be viable is to go up in the level of 
abstraction
and try to come up with an API that allows discovery and publishing of network
services on mdns as well as UPNP at the same time. Then the windows version 
could
just re-use UPNP APIs in Windows and on the other OSes we use zeroconf.

That way there's no deployment issue at all, no windows administrator rights 
are needed
to install and run a service (apple mdns), etc.


Simon

From: development-bounces+simon.hausmann=theqtcompany@qt-project.org 
<development-bounces+simon.hausmann=theqtcompany@qt-project.org> on behalf 
of dr...@infidigm.net <dr...@infidigm.net>
Sent: Thursday, September 10, 2015 22:29
To: Knoll Lars
Cc: Thiago Macieira; development@qt-project.org
Subject: Re: [Development] Requesting New Repository - QtZeroConf

>>>> Apple's bonjour lib is like avahi-client in that it connects to
>>>> mDNSResponder.  mDNSResponder, or something like it is built into OSx
>>>> and
>>>> iOS, but on windows comes in Apple's print services.
>
> I remember that we tried using the bonjour libs for a project inside the
> Qt company, and I don't remember that we needed any print services from
> Apple. But I could very well be wrong.

I think it used to be called mDNSResponder.

>>When I briefly tried it (2 months ago) I think it was an issue with the
>>unix style sockets.  Googling didn't show much.  If it did work, I
>> suspect
>>it would be buggy as avahi really complains when it detects multiple
>> mDNS
>>stacks running.
>
> So the problem would be to detect if a mDNS stack is already running, and
> if not start the service somehow?

Hmmm, maybe mDNSResponder (or whatever it is called now) could be built
along with QtZeroConf for windows?  Seems ugly.

> Or is there a way to make it possible to run multiple stacks on one host
> (ie. Is having only one stack a limitation in the protocol or the
> implementation)? It would be great if we could simply do this in process.

Both Apple (on windows) and avahi have a daemon for the mDNS stack.  I'm
not an mDNS expert, but I really think if it could be done in multiple
processes they would have made a way for it.  This is the warning avahi
spits out when it detects another stack

*** WARNING: Detected another IPv4 mDNS stack running on this host. This
makes mDNS unreliable and is thus not recommended. ***
*** WARNING: Detected another IPv6 mDNS stack running on this host. This
makes mDNS unreliable and is thus not recommended. ***

Jon

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-10 Thread drwho
 Apple's bonjour lib is like avahi-client in that it connects to
 mDNSResponder.  mDNSResponder, or something like it is built into OSx
 and
 iOS, but on windows comes in Apple's print services.
>
> I remember that we tried using the bonjour libs for a project inside the
> Qt company, and I don't remember that we needed any print services from
> Apple. But I could very well be wrong.

I think it used to be called mDNSResponder.

>>When I briefly tried it (2 months ago) I think it was an issue with the
>>unix style sockets.  Googling didn't show much.  If it did work, I
>> suspect
>>it would be buggy as avahi really complains when it detects multiple
>> mDNS
>>stacks running.
>
> So the problem would be to detect if a mDNS stack is already running, and
> if not start the service somehow?

Hmmm, maybe mDNSResponder (or whatever it is called now) could be built
along with QtZeroConf for windows?  Seems ugly.

> Or is there a way to make it possible to run multiple stacks on one host
> (ie. Is having only one stack a limitation in the protocol or the
> implementation)? It would be great if we could simply do this in process.

Both Apple (on windows) and avahi have a daemon for the mDNS stack.  I'm
not an mDNS expert, but I really think if it could be done in multiple
processes they would have made a way for it.  This is the warning avahi
spits out when it detects another stack

*** WARNING: Detected another IPv4 mDNS stack running on this host. This
makes mDNS unreliable and is thus not recommended. ***
*** WARNING: Detected another IPv6 mDNS stack running on this host. This
makes mDNS unreliable and is thus not recommended. ***

Jon

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


[Development] Requesting New Repository - QtZeroConf

2015-09-09 Thread Jonathan Bagg
Project name: QtZeroConf

Project description:
QtZeroConf is a wrapper class for various mDNS discovery libraries across
multiple platforms:

Linux -> Avahi-client
Android -> Avahi-core or Android Network Discovery Service
Embedded -> Avahi-core
MAC -> Apple's Bonjour
iOS -> Apple's Bonjour
Window -> Apple's Bonjour

Responsible persons: Jonathan Bagg

(playgound unless suggested otherwise)
Desired repository name: playground/qtzeroconf



___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-09 Thread Thiago Macieira
On Wednesday 09 September 2015 17:56:21 Jonathan Bagg wrote:
> Project name: QtZeroConf
> 
> Project description:
> QtZeroConf is a wrapper class for various mDNS discovery libraries across
> multiple platforms:
> 
> Linux -> Avahi-client
> Android -> Avahi-core or Android Network Discovery Service
> Embedded -> Avahi-core
> MAC -> Apple's Bonjour
> iOS -> Apple's Bonjour
> Window -> Apple's Bonjour
> 
> Responsible persons: Jonathan Bagg
> 
> (playgound unless suggested otherwise)
> Desired repository name: playground/qtzeroconf

Sounds good.

Do you have any code to be imported or is this a brand new development?

Do you think it would make sense to provide a layer above of abstraction and 
support Windows LLMNR service?
-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-09 Thread Thiago Macieira
On Wednesday 09 September 2015 22:59:11 Jonathan Bagg wrote:
> http://lists.apple.com/archives/rendezvous-dev/2004/Apr/msg00031.html
> Windows LLMNR doesn't appear to be compatible with mDNS / zeroconf. Are 
> you suggesting on Windows there would be an option to use LLMNR or mDNS?

I know it isn't compatible, but it is doing the same function. I'm not asking 
to replace mDNS support on Windows (interoperability), but I am asking if it 
makes sense to also add support for LLMNR as it's available anyway.

For that matter, all of the IoT protocols support discovery in some level. For 
us in OIC, it's done by a multicast CoAP packet (which is really easy to do 
with QUdpSocket). Do you think there's room for this kind of extended 
discovery?

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development


Re: [Development] Requesting New Repository - QtZeroConf

2015-09-09 Thread Jonathan Bagg


On 15-09-09 09:34 PM, Thiago Macieira wrote:
> On Wednesday 09 September 2015 17:56:21 Jonathan Bagg wrote:
>> Project name: QtZeroConf
>>
>> Project description:
>> QtZeroConf is a wrapper class for various mDNS discovery libraries across
>> multiple platforms:
>>
>> Linux -> Avahi-client
>> Android -> Avahi-core or Android Network Discovery Service
>> Embedded -> Avahi-core
>> MAC -> Apple's Bonjour
>> iOS -> Apple's Bonjour
>> Window -> Apple's Bonjour
>>
>> Responsible persons: Jonathan Bagg
>>
>> (playgound unless suggested otherwise)
>> Desired repository name: playground/qtzeroconf
> Sounds good.
>
> Do you have any code to be imported or is this a brand new development?
>
> Do you think it would make sense to provide a layer above of abstraction and
> support Windows LLMNR service?
I have some code (wrapper for avahi-client and bonjour with basic 
service advertisement and browsing+resolving).  avahi-core and text 
record support still to be added.

http://lists.apple.com/archives/rendezvous-dev/2004/Apr/msg00031.html
Windows LLMNR doesn't appear to be compatible with mDNS / zeroconf. Are 
you suggesting on Windows there would be an option to use LLMNR or mDNS?

Jon
___
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development