Giter Club home page Giter Club logo

booklet's Introduction

booklet

pip install mkdocs
mkdocs serve

Or to use a specific address/port...

mkdocs serve --dev-addr=localhost:8888

Build Status

booklet's People

Contributors

0xcaff avatar alwaysin avatar amotl avatar andrewferrier avatar approximate avatar atjn avatar avanc avatar balloob avatar bencevans avatar chennin avatar chrisns avatar ckrey avatar cwempe avatar deisi avatar dependabot[bot] avatar dietrichmax avatar dopeyr avatar evgeni avatar freyfogle avatar gdt avatar growse avatar ixisandyr avatar jonasmh avatar jpmens avatar linkiwi avatar linusg avatar markfull avatar mstormi avatar sebw avatar sumnerboy12 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

booklet's Issues

Pages that need a rewrite

TLS Client Certificate Documentation

As per owntracks/ios#379, I'm having trouble using a TLS client certificate with Owntracks for iOS 9.1.6. My setup used to work, but something changed in the last few months.

Following the documentation recommended setup, I continuously get an error with Mosquitto 1.4.9 and OwnTracks, though I'm still able to connect properly with mosquitto_pub (as long as I specify the proper client certs / files).

When using the Mosquitto broker support for TLS certificates can be enabled as follows:

require_certificate true
use_identity_as_username true

...

We recommend you proceed as follows:

  1. Install the TLS CA certificate in your system keystore by sending it (e.g. via e-mail) to your device and installing it in the system profile. (Click on the certificate and follow iOS' instructions.)
  2. Send the prepared PKCS#12 file (with an .otrp extension) to your device, and open it. It will be imported into OwnTracks
  3. Launch OwnTracks, select Settings and TLS. Select the otrp file you just imported as Client Certificate Filename, and below that, enter its passphrase.
  4. Leave Use Custom Security Policy disabled.
  5. Verify the connection to your broker.

img_2064 1


OwnTracks shows:

error The operation couldn't be completed.
(OSStatus error -9829.) {
}

Mosquitto shows:

1466436433: New connection from XX.XXX.XXX.XX on port 8883.
1466436430: OpenSSL Error: error:140890C7:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:peer did not return a certificate
1466436430: Socket error on client <unknown>, disconnecting.

The reason I'm raising an issue here is that I can see in the screenshots in the issue referenced above that others do have Use Custom Security Policy enabled, and I find that enabling it makes everything work as expected, even with security measures enabled like Validate Certificate Chain and Validate Domain Name.

img_2065 1

I'm confused -- should I have Use Custom Security Policy disabled (as per the docs), or should I leave it enabled (as per other users, and what seems to be working)? If the latter, should the docs be updated to reflect this?

What exactly does this switch change? I've tried reviewing the source code, but I'm afraid it's a bit over my head.

Thanks for any help you can provide.

Publish waypoints to devices

I'm not sure if this is a possibility or not. I fully understand how to create and use a waypoint / region / geofence from a device and how enter/leave notices are published from that device and subscribed to from other devices.

Question... can the waypoint / region / geofence from one device or from the server side be published out to user devices so everyone has the same geofence?

My assumption would be the {"_type":"cmd", "action":"setWaypoints", "waypoints":{"_type":"waypoints","waypoints":[...]} and publish that json message to each device individually? If so, can you provide an example of that json filled out?

Update pkcs12 steps for newer openssl binary

Hello! Reporting an issue with: https://owntracks.org/booklet/features/tlscert/#pkcs12

Please add -legacy to this command. I kept having iOS .otrp "incorrect file or passphrase" errors getting a client certificate working and it's because the openssl v3 binary I was using generates them differently. Once I added -legacy, it solved the error :)

openssl pkcs12 -legacy \
  -export \
  -in jjolie.crt \
  -inkey jjolie.key \
  -name "Jane's certificate/key" \
  -out jjolie.p12

IOS app with TLS

Hi,
I'm trying to get the owntracks ios app working with TLS, using letsencrypt certificates on my own domain. I have successfully got the android app working with TLS using the generated .p12 key file, connecting to my private mosquitto mqtt server.

Steps:

  1. openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -name "mymosquittocert" -out mymosquittocert.p12
  2. renamed .p12 to . otrp
  3. Uploaded DST Root CA X3 cert to ipad (Verified check)
  4. Uploaded ISRG Root X1 cert to ipad (Verified check)
  5. Uploaded Lets Encrypt Authority X3 cert to ipad (Verified check)
  6. Uploaded mymqttdomain.duckdns.org cert to ipad (Verified check)
  7. Uploaded mymosquittocert.otrp cert to ipad and opened with owntracks.
  8. setup private mode, with host as mymqttdomain.duckdns.org, no websockets, TLS, And selected client cert as mymosquittocert.otrp with my passphrase.
  9. IPAD General->about->certificate trust settings-> Enabled Full trust for ISRG Root X1 and DST Root CA X3. (don't see any others to enable full trust)
  10. NO Custom Security Policy selected. (doesn't make any difference when I select one and select allow untrusted certificates, same error)
  11. owntracks is trying to connect to: mqtts://mymqttdomain.duckdns.org:8443 c0 k69 userCJ
    Gets error: OSStatus error -9831.

Looking up with error is means: errSSLPeerUnknownCA - An unknown certificate authority was encountered.
I'm now sure what is unknown about the CA as I've uploaded verified root certs from letsencrypt. What am I missing?

The error on mosquitto mqtt is:
1503144469: OpenSSL Error: error:140890B2:SSL routines:SSL3_GET_CLIENT_CERTIFICATE:no certificate returned
1503144469: Socket error on client , disconnecting.

Security section does not address reverse geocoding

Reading the booklet, it seems there is use of reverse geocoding at times. It's not clear if this is disabled by default, and the security implications of sending coordinates to reverse geocoding providers are not addressed.

Please clarify documentation on HTTP vs MQTT

Over at https://owntracks.org/booklet/features/android/, it is stated that "it is highly recommended to use HTTP mode on Android 6 and higher". However, it's not stated why, or if that recommendation is still current.

Also, "When using MQTT, the broker connection is not maintained permanently." It's not clear what the consequences of this are. There is a reference to the keepalive interval not changing that behavior. https://owntracks.org/booklet/tech/mqtt/#mqtt says that "MQTT was designed with mobile clients in mind so it doesn't require a persistent TCP connection."

Over at https://owntracks.org/booklet/features/friends/, the discussion is solely about MQTT mode, implying that friends support is impossible with HTTP mode. Yet https://github.com/owntracks/recorder#friends-in-http-mode covers friends in HTTP mode.

I'd like to see:

  • Clarification on tradeoffs of MQTT vs HTTP and why MQTT is not recommended
  • Clarification of what the broker connection not being maintained means
  • Clarification of tradeoffs of MQTT vs HTTP regarding friends
  • Documentation of the recommendation to avoid websockets

Some prior discussion on this:

owntracks/android#774 (Dec 2019) implies that MQTT was killing batteries. There was a recommendation in there, not stated in the docs, to avoid websockets. The HTTP recommendation is restated.

owntracks/android#745 (Oct 2019) again restates the aversion to websockets

Security section does not address if there are any defaults for publishing

https://owntracks.org/booklet/features/security/

I have the impression that at least one other location reporter might have a default configuration to use a demo server. It seems clear to me, but not clearly obvious to everyone, that a location reporting program's default configuration must be to NOT report location at all until one has affirmatively configured/enabled a destination.

The README.md for the android app points to the booklet, and while the security section says a lot of useful things, it doesn't address this default configuration issue. (The ios README.md ought to point to the booklet too.)

Overall, having actual documentation for apps is really nice to see, and I appreciate it being there.

GDPR and google fonts

The readthedocs theme we use includes loading fonts externally from googleapis

mkdocs/mkdocs#1138 (comment)

When we change to mkdocs 1.2.3 (the current release), we will get another external reference for highlight.js loaded from cloudflare. By deactivating hightlightjs in mkdocs.yml we can avoid the problem for now.

Since mkdocs 1.2.3 a new version of readthedocs was integrated using local fonts, but this version is not available yet

Link to openHAB integration outdated

Dear JP and Christoph,

while exploring the documentation a bit more, I discovered that the section about the openHAB integration 1 points to a repository which has been archived. It still talks about the »Mqttitude Binding« 2, which I think is a thing of the past. Do you know of any updated resources on this matter, where the link could be adjusted to?

With kind regards,
Andreas.

Footnotes

  1. https://owntracks.org/booklet/guide/clients/#openhab

  2. https://github.com/openhab/openhab1-addons/wiki/Mqttitude-Binding

locatorDisplace default value - code 500m vs documentation 0m

  • App build number: 2.1.3 (23102)
  • Android version: 9
  • Device: Xiaomi Mi A1

Hi,

This is a question about the locatorDisplacement value. In the docs, it says:

locatorDisplacement: The smallest displacement in meters the user must move between location updates. Defaults to 0 and is an and relationship with interval. Can be used to only receive updates when the device has moved.

(bold is mine)

However, in the preferences the default value is 500

I think the documentation is confused with the default in the android LocationRequest docs, where 0 is the default, if you don't set it.

In my (limited) experience so far, 500m is the distance that you need to move to trigger an update.

So my question is: which is right? Should the default in the preferences be 0, or should the documents specify 500 as the default?

I'm not a Java dev, so I'm trying to piece things together "from the outside" - please let me know if I'm way off track :)

Thanks,
Andy.

Hey I made a thing...

The story

Once upon a time I used to use Google Latitude to share real time location with friends. Then Google killed it and years later introduced alternative in Google Maps. Then a bit while later I started looking into a zero touch, (near) real time location sharing of my location with my partner where I would own the data and I could also control their publication. All that for security purposes. After vetting out a lot of shady apps on the Play Stores I concluded that there is no solution I would be happy using.

So what do you do when you can build an app? Yup, you build an app and regret it later. The app is storage agnostic and for simplicity the first provider is built on firebase and the client for collecting and publishing data was built as Automate script. All was well and nice, except the Automate script was clunky, not easily configurable and buggy in edge cases.

Then someone on Fediverse pointed me to Owntracks and I thought: "heh, maybe that would solve my problems". I looked into the Quicksetup and frankly got scared of the complexity of the "quick" way of setting this up. So I ran an experiment to see what will happen if I point OwnTracks Android client against my firebase provider. And it worked! So I moved the Device part of my app to use OwnTracks and called it a day. Obviously trying to give enough exclamation marks around "this is not something that should be considered secure, unhackable or private". And by no means it has fraction of the functionality of OwnTracks.

But(!) it does have significantly shorter quickstart. And that's what I'm using now. And since you called out for letting you know, I'm letting you know.

tl;dr

I made an app called The Mountains Are Calling for quick & easy & reliable location sharing for security purposes. Turns out OwnTracks Android/iOS client is a perfect part of that puzzle to gather the location data and store it in my quick-setup provider.

traccar documentation wrong

https://owntracks.org/booklet/features/traccar/
Is not understandable or wrong.

I just stetted up traccar on android and observed the following:

  • Identifier in traccar is not made up like the mqtt topic, instead it is only the tracker id. So in my case
    it was just md. Device ID is completely ignored.
    Just to be clear, the doc suggested the identifier would be: owntracks/username/device-id. Instead it was tracker-id, so literally the only thing the documentation said not to be in the identifier.
  • You have to add the device to traccar before connecting owntrack client. Otherwise you will get a http 400 error.

Also I don't understand why there is so much text on the http payload and stuff. People will look for information how to set up a connection between traccar server and owntracks. Development related stuff should be in another section, or at least subsection.

I would volunteer to improve the documentation, but I also wonder if the thing with the identifier is not a bug in android. Having only two letter identifiers limits you and might even be a security issue, because the identifiers are also some kind of secret.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.