Correct use of PhoneGap SSL Certificate Checker plugin - ssl-certificate

Hopefully, as I understood correctly to safely transmit (post) data from a phonegap / cordova hybrid app to a server, I need a procedure to check the SSL certificate of my server. Am I right?
The tool PhoneGap SSL Certificate Checker plugin developed by eddyverbruggen (to be found here https://www.npmjs.com/package/cordova-plugin-sslcertificatechecker) seems the most user friendly tool available.
However, from the guide, I cannot deduce how to properly use the tool.
Is it sufficient to call the function window.plugins.sslCertificateChecker.check when the app is launched or;
Do I need to call the function everytime the user wants to post (and retrieve) data to (from) the server; calling the post function (an ajax function) in the successCallback?
Thank you
PS. I also encountered the Cordova Advanced HTTP plugin (https://www.npmjs.com/package/cordova-plugin-advanced-http) that seems less user friendly to me. I think it is a separate question, but if someone could give a hint about the differences between the two plugins, that would be appreciated too.

Related

Tendermint web application - customize

I am new to blockchain development and to tendermint as well.
I already have a blockchain running locally.
Using this command starport scaffold vue I could mount a local web application. Inspecting a bit I could replicate some network requests (localhost) and I can get the ballance of current wallet (hard-coded on the request), get the current wallet from the localstorage. I'm struggling on authentication (mnemonic, wallet name and password).
However I also would like to costumize it according to my needs and I thought I could start a web application from scratch. I can see that the generated web project is importing this project https://github.com/tendermint/vue which is making a lot of "magic behind the scenes" and importing UI elements as well and I would like to have my own elements.
I don't want to re-invent the wheel and I can make some imports to help me on connection to wallet, validate authentication (mnemonic, wallet name and password), create wallet and so on.
I am trying to build a web application to connect to wallet, make transations.... but I would like to control the styles and the connections (and if possible using reactjs instead of vuejs, otherwise I dont mind learn vuejs as well).
Is this possible or reasonable? Where I can find good documentation or tutorial to guide me on customize a web application using tendermint. Honestly I searched but I am kind of lost.
Thanks
UPDATE: I found good examples and here and here. It helped me to validate mnemonics and make transactions, with my stack tech.
Because Starport generates both plain Javascript and VUE controllers, you have few options:
Create your own site re-using VUE components
Take plain JS part and build a website using whatever technology you like
Use a plain JS client for standard cosmos modules you can find on GitHub
Use Protobuf generator to generate light client code yourself
If you only need wallet functionality, #2 and #3 may work best for you because the bank module is stable and hasn't changed much in a long time.
You can find plain JS file for bank in your project:
vue/src/store/generated/cosmos/cosmos-sdk/cosmos.bank.v1beta1/module/index.ts
There is a link to starport discord channel related to frontend: https://discord.gg/CvbdYh9AWQ

Authentication with Vue/Electron Application

I'm building an application with Vue and Electron, and I'm wondering what the best approach is for authenticating users.
I'm using JSStore as a wrapper for IndexedDB as my database. I'm familiar with using bcryptjs as a means for authenticating users when I create Node backend and have traditional /login or /signup routes.
But this is where I'm starting to get confused. Do I need to set up a Node server to start up when my application starts up? Because given that I'm using IndexedDB, I don't know that it makes sense to have a process of Sign Up --> Request to Node Server --> Send data back to browser
Would I be better served using a different type of database? Could I do something such as adding bcryptjs to the Vue prototype, so that's it's accessible where I need it to work with JS Store? Are there security concerns that I should be aware of with an approach like that?
At this point I'm stuck, and have more questions than answers. I've done some looking around for articles, and I find a lot of content about setting up authentication with Vue, but not within the context of an Electron application. I'm not sure how that variable changes things.
Any advice or direction would be greatly appreciated.
JsStore is client side technology, which means if you are setting up authentication in client side, it will be available only to that device.
Let's understand it more by use case -
Say your application named My Awesome app has authenticaion implemented. User register it and then they are able to use it after registration. They are logging out and signing in again with registration data and everything is working normal.
Here is what wrong with this approach -
User buys another pc and installed application My Awesome app, he tries to login but unable to login because registration data does not exist on their new PC.
Due to some issue, user hard disk crashed & he installed new hard disk. Same thing as above he is not able to log in.
So it is recommended to implement the signin on some server & keep data there.

How can I possibly implement a VueJS app to Odoo?

I have to integrate a VueJS app in Odoo. I don't exactly know how I can achieve that?
I found this https://www.odooinvue.org/ (not my app, but an example app) . Still no idea on how can I implement odoo in Vue. Login gives me a Failed to Login error message in this example app.
Any idea how to implement odoo in vue??
Actually, odooinvue works fine. Read carefully the instructions, in development it shows how to start a traefik docker container in order to serve both odoo and Vue.js.
Note: If I am not wrong, the purpose is to use odooinvue as a pure frontend, so it's not really an integration, basically you build vuejs (quasar, specifically) apps with odoo used as a pure backend.
See also this answer, by odooinvue's author
I am the author of that project. Its really impossible to answer you without knowing what steps you have taken to setup the project, but for that error, make sure of the following:
The Odoo server is up and running in the backend and you can login.
When you login with the front-end Vue app, you are using credentials that you know are working.
If that fails, open the dev console of your browser and check the network log. Make sure that the authentication request is returning status code 200.
I know others that are using the project just fine without any issue, so I am going to assume that you need some technical help. Perhaps hire a software developer to assist you.

Am i using ATS with React Native Firebase?

i am using React Native with Firebase and i am trying to upload app to testflight to Itunes Connect. The encryption question popped up and i have no idea what to select. I did some research on ATS and encryption. I am assuming that firebase is using HTTPS calls ? If that is so, then i need to probably select that i am using encryption.
In which case i am asked, if i qualify for exempt or not.
I have truly no idea what these options mean and if any of that applies to me. It seems rather over complicated, which would be ok, but i have hard time understanding what applies to me.
I mean this sentence seems about right:
"Limited to authentication, digital signature, or the decryption of
data or files"
But maybe i am missing something ?
or this:
"Limited to “fixed” data compression or coding techniques"
Limited to coding techniques ? No idea.
So if i have basic app using Firebase for storing data about user/authentication etc am i using HTTPS ? Also am i then exempt or am i supposed to send them year-end file which i have no idea what means ?
On top of it React Native official documentation mentions that you are supposed to allow ATS, meaning you would definitely have to say you are using encryption, but then does not mention anything about encryption.
Here under Enable App Transport Security Link
I will welcome any explanation whatsoever as i feel kinda lost here.
Thanks
So your question is a bit off. ATS is an enforcement technique Apple uses to try to ensure any network connections your app make are protected using HTTPS (and other more rigorous requirements, like TLS version, forward secrecy, etc.). So ATS will try to force you to use HTTPS. Whether your React Native app actually uses HTTPS is up to you to know.
Basically, you can have ATS enabled, but add an exception to the one domain your app comminucates to allow the app to make those calls using HTTP. In that case, your app does not use encryption, so you can answer no to that question.
However, if you access any network resource with using the https protocol, you have encryption, but it qualifies as an exempt form of encryption.
You can simply add the following to your Info.plist:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
Unfortunately, that is not all. However, the good news is that if you are just using https, you will have a simpler process than if you are doing your own encryption / decryption.
As you can see in this page, you only need to submit a self classification report. It's relatively easy and you don't need to provide any additional documentation to Apple.
Your app uses ATS or makes a call to HTTPS:
No documentation required in App Store Connect. Submit a Self
Classification Report to the U.S. Bureau of Industry and Security
(BIS) directly.
Also, you can find more information about submitting that BIS form here: https://stackoverflow.com/a/45888609/3708242

Stripe and titanium mobile

How can I intergrate the stripe api for payment processing to allow people to pay for services through my titanium mobile app. Stripe.com
I am using this code to start:
https://github.com/abh/node-stripe/blob/master/lib/main.js
How can I make sure the information is encrypted.
First you need to make sure what you are selling is physically tenable, assuming it is (and your not selling any form of digital content, or functionality within the app) then the easiest way to use stripe from within Titanium would be to just wrap it in a web view (you could implement it in native code but this could get tiresome).
Assuming you have this example in a file called index.html in your resources directory.
var webView = Ti.UI.createWebView({
url : 'index.html
});
win.add(webView);
Note that you will need to let your server support https requests for actual encryption to happen, you shouldn't be encrypting yourself (in code).
Once this is done, all the work now happens on your server to process payments using Stripes libraries like in this example in the documentation.
Really this is a server job, all your doing is sending the server the information to process, not a lot going on with Titanium here except as a gateway.