How much of this is OSX specific since it's a node.js app? Other than the launchctl and plist stuff could this be ported to linux?
The majority of the OS X -specific aspects have to do with how it launches (launchd .plist files) and how it automagically resolves .dev domains (using /etc/resolver - see: http://developer.apple.com/library/mac/#documentation/Darwin... ) Substituting launchd is easily done with any process launcher of your choice. As for the .dev TLD trick - that's a little harder, as OS X 10.6 has support for flat files inside /etc…
Introducing Pow, a zero-configuration Rack server for Mac OS X
141–146 of 146 posts
Re: Introducing Pow, a zero-configuration Rack server for Mac OS X
#142Pow uses an interesting trick to get the *.dev urls resolving to localhost: it adds /etc/resolver/dev which acts as a resolv.conf for the .dev domain, and points to the nameserver at 127.0.0.1 port 20560. The Pow server binds to that port and acts like a nameserver for .dev domains.
Re: Introducing Pow, a zero-configuration Rack server for Mac OS X
#143Earlier quoted context omitted.
Seriously, dude, nobody is out to get you. I'm glad you made Pow. Pow looks awesome. I don't control what gets voted to the top of the page, and I'm probably no happier than you are about the sprawling nerdwar that resulted.
Seriously, dude, nobody is out to get you. I'm glad you made Pow. Pow looks awesome. I don't control what gets voted to the top of the page, and I'm probably no happier than you are about the sprawling nerdwar that resulted. Seriously, dude, get over yourself. It's pretty ridiculous how much FUD this project announcement received in here, versus positive focus. There are multiple other long FUD threads that missed th…
Re: Introducing Pow, a zero-configuration Rack server for Mac OS X
#144Earlier quoted context omitted.
How so? I've been using Passenger on my dev machine for over a year now. The original reason I installed Passenger on my dev machine was exactly because of how easy it was to get SSL and subdomains working; the app I was working on at the time had 100% SSL user logins, each routed to their own subdomains.
You're using it with Apache or Nginx though, right? Or were you able to get them working with Passenger Standalone?
Re: Introducing Pow, a zero-configuration Rack server for Mac OS X
#145This is a great web page, but I think it's borderline irresponsible to keep using this gimmick: curl get.pow.cx | sh for installation. Yes, it's easy and slick. Yes, you'd have to read the code itself to make sure Pow didn't own your machine up after a secure install. Yes, you can just read the shell script. But 0.0001% of people playing with Pow will do that. Why make things easier for attackers at all? This is an i…
* No transport security. As many people mention, at least adding HTTPS would help with this. However, most non-browser SSL clients (wget, curl) don't include any root certs by default so even switching to SSL would not help this method. Firesheep, sslstrip, etc. automatically generate a self-signed cert which would look no different to wget than a real cert.
* No persistence. If you download any installer package once and then reuse it on multiple machines, you get the benefit of knowing that the same code was installed on each machine (good or bad). With this method, users may catch the site in the middle of an update and get multiple versions of the package.
* No authentication. Even with SSL, you only get strong transport security. You would know strongly that ".pow.cx" sent you some code, but not how that code got put on the server. With package-signing, typically done on the developer's end system, you know that it was protected even before it was uploaded to some site.
* Easier to trojan than binaries. Inserting a few extra shell commands in a single HTTP(S) session (say, targeting a single client IP) is much easier than building a custom binary package. Consider how hard it is to even compile Firefox with all the dependencies. Now do that work and insert a trojan and upload a separate 10 MB binary that needs to be stored somewhere on the server while waiting for that one client to visit the site. Compare this to keeping a two-line patch to a shell script (easily done in RAM, maybe even by hotpatch).
* Trains users that all the above is ok since the popularity of this "| sh" install method is relatively new. (Yes, I know about shar scripts in the past but those ended by 1996 or so with the advent of real package managers). It is absolutely impossible to retrofit "| sh" to be secure, whereas it is definitely feasible to add package signature verification support to gem or yum or apt or whatever (in fact, all those already support it).
The fact that many installers aren't signed today is not an ok to drive this process back to the 80's. We should be moving toward the future when package signing is a required part of being a software developer. Too hard? Well build tools to make this easier!
Re: Introducing Pow, a zero-configuration Rack server for Mac OS X
#146A gem distribution of this would have been nice... simply so that instead of: $ curl get.pow.cx | sh $ cd ~/.pow $ ln -s /path/to/myapp We could have: $ gem install pow $ pow /path/to/myapp
pow isn't written in ruby, but javascript. So it might be installable from npm soon. If you `git clone git://github.com/37signals/pow.git`, you can install it from source with `npm install -g` (requires npm 1.0)