Call GnuPG from Firefox add-on - javascript

I'm writing an add-on for Firefox. I want to know what is the best way to use GnuPG from the add-on.
I have tried several Node.js modules and does not work either within the add-on because it can not find its dependencies

I solved the issue developing a webextension.
Webstaensions can access to the Window object, i was talkig with a developer of the Mailvelope add-on and he suggest the switch to a webextension, they are planning that switch for they add-on

Related

What is the easiest way to develop Firefox extension?

I'm planning to develop a simple Firefox extension that will shorten URL of a currently active tab, display a popup with the shortened URL, and place it into the clipboard.
In Google Chrome, this would be pretty easy (according to http://developer.chrome.com/extensions/getstarted.html) -- pure JavaScript plus a few calls to JavaScript API-s of interacting with the browser's UI.
However, after searching around for a good Firefox extensions tutorial, the most officially-looking links I found are:
https://developer.mozilla.org/en-US/docs/Extensions
https://developer.mozilla.org/en-US/docs/Building_an_Extension
How do I write a Firefox Addon?
According to them, it looks like I will have to learn the XUL language for even the simplest interactions with the browser's UI. On top of that, I will have to set up custom Firefox profile so as not to hose my default profile during development, create complicated directory structure, write manifest in obscure XML, figure out how to package and test whatever I implement, etc.
It's 2013, isn't there an easier way of building Firefox extensions?
It's 2013, isn't there an easier way of building Firefox extensions?
Yes there is!
The links you provided in the question are unbelievably outdated. There is a new, much better way of developing Firefox extensions -- Firefox Add-on SDK.
However it's pretty hard to stumble upon it by just googling along the lines of 'firefox addon tutorial'. I'm amazed Mozilla doesn't advertise it more aggressively, or at least mention it on those pages you found.
Steps to get started (Mac/Linux, but should be pretty similar for PC):
Download the SDK from https://addons.mozilla.org/en-US/developers/builder, unpack it.
Quickly glance over the README file (always useful).
Execute source bin/activate from the SDK dir (the same dir the README file is in).
Execute cfx docs -- this bootstraps local copy of SDK docs and opens it in your browser.
Leave the SDK dir, create an empty dir for your extension.
Execute cfx init inside the extensions dir -- this generates all the necessary files/directories.
Follow the rest of getting-started-with-cfx page:
Update lib/main.js with just a few lines of JS to place a custom widget onto add-on bar.
Execute cfx run -- this opens fresh Firefox instance with your new shiny extension in it.
All in all, it took me just a few hours to read the documentation, get familiar with the SDK API-s, find SDK module to place a widget onto a navigation bar instead of add-on bar, and develop fully-functional extension in just about 50 lines of JavaScript.
HTH!
Update
There is a new standard, called WebExtensions
From MDN
There are currently several toolsets for developing Firefox add-ons, but WebExtensions will become the standard by the end of 2017.
If you are writing a new add-on, we recommend that you write a WebExtension.
As of https://blog.mozilla.org/addons/2016/11/23/add-ons-in-2017/, the only way going forward will be to use WebExtensions. The last SDK extensions will be accepted for Firefox 52, while Firefox 57 will end all other extension support, supporting only WebExtensions.
Firefox copied Google Chrome's extension API. So you could just use your Chrome extension and see if all the APIs are already supported in Firefox (they should be as of now).
Programmers such as NoScript's Giorgio Maone actively support the change to WebExtensions.
To develop a WebExtension, you need
either the web-ext-tool that can be installed via
npm install --global web-ext
or simply use Firefox's about:debugging or Chromium's chrome:extensions to temporarily load the webextension.
Either way, you need a manifest.json file in a directory created by you, which glues all functionality together. See https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Your_first_WebExtension for a first example. Or the Google docs at https://developer.chrome.com/getstarted.
Yes there are three different techniques you can use to build extensions:
Add-on SDK-based extensions
manually bootstrapped restartless extensions
overlay extensions
You can read comparison between here
If you can, it's advisable to use the Add-on SDK, which uses the
restartless extension mechanism but simplifies certain tasks and
cleans up after itself. If the Add-on SDK isn't sufficient for your
needs, implement a manual restartless extension instead.
Steps to get started with Add-on SDK-based extensions
Installation
Installation on OS X, FreeBSD, Linux
Installation on OS X using Homebrew
Installation on Windows
Create user interfaces
Interact with the browser
There are two official ways for developing add-ons, each of them has pros and cons:
1- WebExtensions (newer method):
WebExtensions are the future of Firefox add-ons. If you can use the WebExtensions API, it's the best choice. You can develop and publish WebExtensions right now, but they're still in an early state.
2- Add-on SDK (older method):
The Add-on SDK provides APIs for developing Firefox add-ons, and a tool for developing, testing, and packaging them.
I made a tutorial on developing extensions using the Firefox addon SDK:
How to develop a Firefox extension with the addon SDK

firefox add-on develop | rewrite browser.xul

I want to develop a Firefox add-on that change the whole UI,
something like write new chrome://browser/content/browser.xul file.
I'm js developer, have no experience with add-ons development
I didn't find something like that at add-on sdk documentaion
AFAIK, such functionality is available through XUL overlays in plain old non-bootstrapped Firefox add-ons (those, that need restart of web browsers to install). If it is OK for you, you may just create such add-on. It is as easy as writing ordinary HTML (XML in fact). Look for Chrome Registration and for XUL Overlays on MDN for details.
If you are required to create bootstrapped (restartless) Firefox extension or you must use Addon SDK, then your only option will be to watch newly created browser windows and modify them manually. In that case you are not able to modify the source of chrome://browser/content/browser.xul file.

Calling a .dll function from a html page that runs on chrome and firefox

I have a dll written in c++. now i need to call the functions in the dll from a html page.
I have done this by calling the dll in vbscript (Activex) so that i can run the only in IE.
Now i need to run this on Chrome as well as Firefox.
What i have to do, whether i have to write in javascript simply or need to develop any extensions for that ?
can anyone give a solution with a simple demo for this?
Thanks in advance.
You have no chance until you create non-portable extension for all browsers.
Firefox allows you to create XPI extension aka "addon"
Chrome has extensions
There is no cross platform solution for DLL files, however, you can try to create flash or java applet, which will interact with your DLL, it can be "portable" enough for you.
You can write an NPAPI plugin for both Mozilla and Chrome.
Or you can use Firebreath plugin, but there may arise some dependency issue.
Thanks for answers friends.
I got another solution. I wrote signed applets to call dll that runs from a html or any web application. It almost run on all browsers.

start firefox extension without restart

i've created a firefox addon and working well. Now the question is how can i start
this addon without restart. i don't want restart disable/enable or install/uninstall process.
can any one help me in this? Thanks!
http://adblockplus.org/blog/how-many-hacks-does-it-take-to-make-your-extension-install-without-a-restart
https://developer.mozilla.org/en/Extensions/Bootstrapped_extensions
Yes, but you either have to make it a JetPack rather than an Add-On or you can read this guy's article:
http://downloadsquad.switched.com/2010/09/15/adblock-dev-no-restart-firefox-extensions-possible/
If you use this https://wiki.mozilla.org/Labs/Jetpack you don't must to restart
You can't, alas. I guess this is an ancient Mozilla design issue. Google Chrome can install extensions without restart.
Edit: As of 2012, Firefox can install some (but not all) extensions without restart. These extensions are badged 'no restart' in Mozilla's add-on store. Adblock Plus is one such extension https://addons.mozilla.org/en-US/firefox/addon/adblock-plus/. I don't know the developers made that possible.
From https://addons.mozilla.org/en-US/faq
How do I install add-ons without restarting Firefox?
In Firefox, add-ons marked with "No restart required" can be installed without
restarting. These add-ons have been created using the Add-on SDK or bootstrapping. Other
add-ons will still require a restart before you can use them.

Obtain cache files chrome extension

Is there a way to obtain/read cache files using a chrome extension without NPAPI but javascript?
I have tried searching with NPAPI but I am unable to find a good tutorial on it or how can it be done using NPAPI.
Javascript is restricted from accessing the filesystem in all cases that I am aware of, though I admit that I don't know much about Chrome extensions.
The only way I know of to access arbitrary files would be with an NPAPI plugin as part of the extension. If you decide to go this route, I suggest you look at FireBreath, which is an abstraction that simplifies and solves most of the issues people run into with NPAPI plugins.

Categories

Resources