prove.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614
  1. // Generated by IcedCoffeeScript 1.7.1-c
  2. (function() {
  3. var ArgumentParser, Command, E, PackageJson, ProofBase, S, User, add_option_dict, assert, dict_union, fs, iced, log, make_esc, prompt_remote_name, prompt_yn, proofs, req, session, util, __iced_k, __iced_k_noop, _ref,
  4. __hasProp = {}.hasOwnProperty,
  5. __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
  6. __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
  7. iced = require('iced-runtime').iced;
  8. __iced_k = __iced_k_noop = function() {};
  9. ProofBase = require('./proof_base').ProofBase;
  10. log = require('../log');
  11. ArgumentParser = require('argparse').ArgumentParser;
  12. add_option_dict = require('./argparse').add_option_dict;
  13. PackageJson = require('../package').PackageJson;
  14. E = require('../err').E;
  15. make_esc = require('iced-error').make_esc;
  16. _ref = require('../prompter'), prompt_yn = _ref.prompt_yn, prompt_remote_name = _ref.prompt_remote_name;
  17. User = require('../user').User;
  18. req = require('../req').req;
  19. assert = require('assert');
  20. session = require('../session');
  21. S = require('../services');
  22. dict_union = require('../util').dict_union;
  23. util = require('util');
  24. fs = require('fs');
  25. proofs = require('keybase-proofs');
  26. exports.Command = Command = (function(_super) {
  27. __extends(Command, _super);
  28. function Command() {
  29. return Command.__super__.constructor.apply(this, arguments);
  30. }
  31. Command.prototype.OPTS = dict_union(ProofBase.OPTS, {
  32. o: {
  33. alias: "output",
  34. help: "output proof text to file (rather than standard out)"
  35. }
  36. });
  37. Command.prototype.use_session = function() {
  38. return true;
  39. };
  40. Command.prototype.needs_configuration = function() {
  41. return true;
  42. };
  43. Command.prototype.command_name_and_opts = function() {
  44. var config, name;
  45. config = {
  46. aliases: ["proof"],
  47. help: "add a proof of identity"
  48. };
  49. name = "prove";
  50. return {
  51. name: name,
  52. config: config,
  53. OPTS: this.OPTS
  54. };
  55. };
  56. Command.prototype.check_exists_common = function(prompt, cb) {
  57. var err, ok, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  58. __iced_k = __iced_k_noop;
  59. ___iced_passed_deferral = iced.findDeferral(arguments);
  60. err = null;
  61. (function(_this) {
  62. return (function(__iced_k) {
  63. __iced_deferrals = new iced.Deferrals(__iced_k, {
  64. parent: ___iced_passed_deferral,
  65. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  66. funcname: "Command.check_exists_common"
  67. });
  68. prompt_yn({
  69. prompt: prompt,
  70. defval: false
  71. }, __iced_deferrals.defer({
  72. assign_fn: (function() {
  73. return function() {
  74. err = arguments[0];
  75. return ok = arguments[1];
  76. };
  77. })(),
  78. lineno: 48
  79. }));
  80. __iced_deferrals._fulfill();
  81. });
  82. })(this)((function(_this) {
  83. return function() {
  84. if ((err == null) && !ok) {
  85. err = new E.ProofExistsError("Proof already exists");
  86. }
  87. return cb(err);
  88. };
  89. })(this));
  90. };
  91. Command.prototype.check_exists_1 = function(cb) {
  92. var err, prompt, v, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  93. __iced_k = __iced_k_noop;
  94. ___iced_passed_deferral = iced.findDeferral(arguments);
  95. this.rp = this.me.list_remote_proofs();
  96. err = null;
  97. (function(_this) {
  98. return (function(__iced_k) {
  99. if ((_this.rp != null) && ((v = _this.rp[_this.service_name]) != null) && _this.stub.single_occupancy()) {
  100. prompt = "You already have proven you are " + v + " at " + _this.service_name + "; overwrite? ";
  101. (function(__iced_k) {
  102. __iced_deferrals = new iced.Deferrals(__iced_k, {
  103. parent: ___iced_passed_deferral,
  104. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  105. funcname: "Command.check_exists_1"
  106. });
  107. _this.check_exists_common(prompt, __iced_deferrals.defer({
  108. assign_fn: (function() {
  109. return function() {
  110. return err = arguments[0];
  111. };
  112. })(),
  113. lineno: 60
  114. }));
  115. __iced_deferrals._fulfill();
  116. })(function() {
  117. return __iced_k(_this.supersede = true);
  118. });
  119. } else {
  120. return __iced_k();
  121. }
  122. });
  123. })(this)((function(_this) {
  124. return function() {
  125. return cb(err);
  126. };
  127. })(this));
  128. };
  129. Command.prototype.check_exists_2 = function(cb) {
  130. var err, prompt, v, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  131. __iced_k = __iced_k_noop;
  132. ___iced_passed_deferral = iced.findDeferral(arguments);
  133. err = null;
  134. log.debug("+ check_exists_2");
  135. log.debug("| Remote proofs: " + (JSON.stringify(this.rp)));
  136. log.debug("| Service name: " + this.service_name);
  137. log.debug("| Remote_name_normalized: " + this.remote_name_normalized);
  138. (function(_this) {
  139. return (function(__iced_k) {
  140. var _ref1, _ref2;
  141. if (!(_this.stub.single_occupancy()) && ((v = (_ref1 = _this.rp) != null ? _ref1[_this.service_name] : void 0) != null) && (_ref2 = _this.remote_name_normalized, __indexOf.call(v, _ref2) >= 0)) {
  142. prompt = "You already have claimed ownership of " + _this.remote_name + "; overwrite? ";
  143. (function(__iced_k) {
  144. __iced_deferrals = new iced.Deferrals(__iced_k, {
  145. parent: ___iced_passed_deferral,
  146. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  147. funcname: "Command.check_exists_2"
  148. });
  149. _this.check_exists_common(prompt, __iced_deferrals.defer({
  150. assign_fn: (function() {
  151. return function() {
  152. return err = arguments[0];
  153. };
  154. })(),
  155. lineno: 75
  156. }));
  157. __iced_deferrals._fulfill();
  158. })(function() {
  159. _this.supersede = true;
  160. return __iced_k(log.debug('| supersede=true'));
  161. });
  162. } else {
  163. return __iced_k();
  164. }
  165. });
  166. })(this)((function(_this) {
  167. return function() {
  168. log.debug("- check_exists_2");
  169. return cb(err);
  170. };
  171. })(this));
  172. };
  173. Command.prototype.poll_server = function(cb) {
  174. var arg, body, err, res, status, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  175. __iced_k = __iced_k_noop;
  176. ___iced_passed_deferral = iced.findDeferral(arguments);
  177. arg = {
  178. endpoint: "sig/posted",
  179. args: {
  180. proof_id: this.gen.proof_id
  181. }
  182. };
  183. (function(_this) {
  184. return (function(__iced_k) {
  185. __iced_deferrals = new iced.Deferrals(__iced_k, {
  186. parent: ___iced_passed_deferral,
  187. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  188. funcname: "Command.poll_server"
  189. });
  190. req(arg, __iced_deferrals.defer({
  191. assign_fn: (function() {
  192. return function() {
  193. err = arguments[0];
  194. return body = arguments[1];
  195. };
  196. })(),
  197. lineno: 88
  198. }));
  199. __iced_deferrals._fulfill();
  200. });
  201. })(this)((function(_this) {
  202. return function() {
  203. var _ref1;
  204. res = typeof err !== "undefined" && err !== null ? false : body.proof_ok;
  205. status = typeof err !== "undefined" && err !== null ? null : (_ref1 = body.proof_res) != null ? _ref1.status : void 0;
  206. return cb(err, res, status);
  207. };
  208. })(this));
  209. };
  210. Command.prototype.do_prechecks = function(cb) {
  211. var err, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  212. __iced_k = __iced_k_noop;
  213. ___iced_passed_deferral = iced.findDeferral(arguments);
  214. err = null;
  215. (function(_this) {
  216. return (function(__iced_k) {
  217. if (_this.argv.force) {
  218. return __iced_k();
  219. } else {
  220. (function(__iced_k) {
  221. __iced_deferrals = new iced.Deferrals(__iced_k, {
  222. parent: ___iced_passed_deferral,
  223. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  224. funcname: "Command.do_prechecks"
  225. });
  226. _this.stub.do_precheck({
  227. remote_name_normalized: _this.remote_name_normalized
  228. }, __iced_deferrals.defer({
  229. assign_fn: (function() {
  230. return function() {
  231. return err = arguments[0];
  232. };
  233. })(),
  234. lineno: 99
  235. }));
  236. __iced_deferrals._fulfill();
  237. })(__iced_k);
  238. }
  239. });
  240. })(this)((function(_this) {
  241. return function() {
  242. return cb(err);
  243. };
  244. })(this));
  245. };
  246. Command.prototype.do_warnings = function(cb) {
  247. var err, ok, prompt, w, warns, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  248. __iced_k = __iced_k_noop;
  249. ___iced_passed_deferral = iced.findDeferral(arguments);
  250. err = null;
  251. (function(_this) {
  252. return (function(__iced_k) {
  253. var _i, _len;
  254. if (!_this.argv.force && ((warns = _this.stub.get_warnings({
  255. remote_name_normalized: _this.remote_name_normalized
  256. })) != null) && warns.length) {
  257. for (_i = 0, _len = warns.length; _i < _len; _i++) {
  258. w = warns[_i];
  259. log.warn(w);
  260. }
  261. prompt = "Proceed?";
  262. (function(__iced_k) {
  263. __iced_deferrals = new iced.Deferrals(__iced_k, {
  264. parent: ___iced_passed_deferral,
  265. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  266. funcname: "Command.do_warnings"
  267. });
  268. prompt_yn({
  269. prompt: prompt,
  270. defval: false
  271. }, __iced_deferrals.defer({
  272. assign_fn: (function() {
  273. return function() {
  274. err = arguments[0];
  275. return ok = arguments[1];
  276. };
  277. })(),
  278. lineno: 110
  279. }));
  280. __iced_deferrals._fulfill();
  281. })(function() {
  282. return __iced_k(!ok ? err = new E.CancelError("canceled") : void 0);
  283. });
  284. } else {
  285. return __iced_k();
  286. }
  287. });
  288. })(this)((function(_this) {
  289. return function() {
  290. return cb(err);
  291. };
  292. })(this));
  293. };
  294. Command.prototype.handle_post = function(cb) {
  295. var err, esc, f, fail, first, found, i, prompt, retry, status, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  296. __iced_k = __iced_k_noop;
  297. ___iced_passed_deferral = iced.findDeferral(arguments);
  298. esc = make_esc(cb, "handle_post");
  299. log.console.log(this.gen.instructions());
  300. log.console.log("");
  301. (function(_this) {
  302. return (function(__iced_k) {
  303. if ((f = _this.argv.output) != null) {
  304. log.info("Writing proof to file '" + f + "'...");
  305. (function(__iced_k) {
  306. __iced_deferrals = new iced.Deferrals(__iced_k, {
  307. parent: ___iced_passed_deferral,
  308. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  309. funcname: "Command.handle_post"
  310. });
  311. fs.writeFile(f, _this.gen.show_proof_text(), esc(__iced_deferrals.defer({
  312. lineno: 123
  313. })));
  314. __iced_deferrals._fulfill();
  315. })(function() {
  316. return __iced_k(log.info("Wrote proof to '" + f + "'"));
  317. });
  318. } else {
  319. return __iced_k(log.console.log(_this.gen.show_proof_text()));
  320. }
  321. });
  322. })(this)((function(_this) {
  323. return function() {
  324. log.console.log("");
  325. prompt = true;
  326. esc = make_esc(cb, "Command::prompt");
  327. found = false;
  328. first = true;
  329. fail = true;
  330. err = null;
  331. i = 0;
  332. (function(__iced_k) {
  333. var _results, _while;
  334. _results = [];
  335. _while = function(__iced_k) {
  336. var _break, _continue, _next;
  337. _break = function() {
  338. return __iced_k(_results);
  339. };
  340. _continue = function() {
  341. return iced.trampoline(function() {
  342. return _while(__iced_k);
  343. });
  344. };
  345. _next = function(__iced_next_arg) {
  346. _results.push(__iced_next_arg);
  347. return _continue();
  348. };
  349. if (!prompt) {
  350. return _break();
  351. } else {
  352. (function(__iced_k) {
  353. __iced_deferrals = new iced.Deferrals(__iced_k, {
  354. parent: ___iced_passed_deferral,
  355. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  356. funcname: "Command.handle_post"
  357. });
  358. prompt_yn({
  359. prompt: "Check " + (_this.gen.display_name()) + " " + (first ? '' : 'again ') + "now?",
  360. defval: true
  361. }, esc(__iced_deferrals.defer({
  362. assign_fn: (function() {
  363. return function() {
  364. return prompt = arguments[0];
  365. };
  366. })(),
  367. lineno: 137
  368. })));
  369. __iced_deferrals._fulfill();
  370. })(function() {
  371. first = false;
  372. (function(__iced_k) {
  373. if (prompt) {
  374. (function(__iced_k) {
  375. __iced_deferrals = new iced.Deferrals(__iced_k, {
  376. parent: ___iced_passed_deferral,
  377. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  378. funcname: "Command.handle_post"
  379. });
  380. _this.poll_server(esc(__iced_deferrals.defer({
  381. assign_fn: (function() {
  382. return function() {
  383. found = arguments[0];
  384. return status = arguments[1];
  385. };
  386. })(),
  387. lineno: 140
  388. })));
  389. __iced_deferrals._fulfill();
  390. })(function() {
  391. i++;
  392. prompt = !found;
  393. return __iced_k(found ? (fail = false, log.info("Success!")) : (retry = _this.gen.do_recheck(i), !retry ? (prompt = false, fail = false) : log.warn(_this.gen.make_retry_msg(status))));
  394. });
  395. } else {
  396. return __iced_k();
  397. }
  398. })(_next);
  399. });
  400. }
  401. };
  402. _while(__iced_k);
  403. })(function() {
  404. if (!found && fail) {
  405. err = new E.ProofNotAvailableError("Proof wasn't available; we'll keep trying");
  406. }
  407. return cb(err);
  408. });
  409. };
  410. })(this));
  411. };
  412. Command.prototype.run = function(cb) {
  413. var esc, ___iced_passed_deferral, __iced_deferrals, __iced_k;
  414. __iced_k = __iced_k_noop;
  415. ___iced_passed_deferral = iced.findDeferral(arguments);
  416. esc = make_esc(cb, "Command::run");
  417. (function(_this) {
  418. return (function(__iced_k) {
  419. __iced_deferrals = new iced.Deferrals(__iced_k, {
  420. parent: ___iced_passed_deferral,
  421. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  422. funcname: "Command.run"
  423. });
  424. _this.parse_args(esc(__iced_deferrals.defer({
  425. lineno: 163
  426. })));
  427. __iced_deferrals._fulfill();
  428. });
  429. })(this)((function(_this) {
  430. return function() {
  431. (function(__iced_k) {
  432. __iced_deferrals = new iced.Deferrals(__iced_k, {
  433. parent: ___iced_passed_deferral,
  434. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  435. funcname: "Command.run"
  436. });
  437. session.login(esc(__iced_deferrals.defer({
  438. lineno: 164
  439. })));
  440. __iced_deferrals._fulfill();
  441. })(function() {
  442. (function(__iced_k) {
  443. __iced_deferrals = new iced.Deferrals(__iced_k, {
  444. parent: ___iced_passed_deferral,
  445. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  446. funcname: "Command.run"
  447. });
  448. User.load_me({
  449. secret: true,
  450. verify_opts: {
  451. show_perm_failures: true
  452. }
  453. }, esc(__iced_deferrals.defer({
  454. assign_fn: (function(__slot_1) {
  455. return function() {
  456. return __slot_1.me = arguments[0];
  457. };
  458. })(_this),
  459. lineno: 165
  460. })));
  461. __iced_deferrals._fulfill();
  462. })(function() {
  463. (function(__iced_k) {
  464. __iced_deferrals = new iced.Deferrals(__iced_k, {
  465. parent: ___iced_passed_deferral,
  466. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  467. funcname: "Command.run"
  468. });
  469. _this.check_exists_1(esc(__iced_deferrals.defer({
  470. lineno: 166
  471. })));
  472. __iced_deferrals._fulfill();
  473. })(function() {
  474. (function(__iced_k) {
  475. __iced_deferrals = new iced.Deferrals(__iced_k, {
  476. parent: ___iced_passed_deferral,
  477. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  478. funcname: "Command.run"
  479. });
  480. _this.prompt_remote_name(esc(__iced_deferrals.defer({
  481. lineno: 167
  482. })));
  483. __iced_deferrals._fulfill();
  484. })(function() {
  485. (function(__iced_k) {
  486. __iced_deferrals = new iced.Deferrals(__iced_k, {
  487. parent: ___iced_passed_deferral,
  488. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  489. funcname: "Command.run"
  490. });
  491. _this.normalize_remote_name(esc(__iced_deferrals.defer({
  492. lineno: 168
  493. })));
  494. __iced_deferrals._fulfill();
  495. })(function() {
  496. (function(__iced_k) {
  497. __iced_deferrals = new iced.Deferrals(__iced_k, {
  498. parent: ___iced_passed_deferral,
  499. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  500. funcname: "Command.run"
  501. });
  502. _this.check_exists_2(esc(__iced_deferrals.defer({
  503. lineno: 169
  504. })));
  505. __iced_deferrals._fulfill();
  506. })(function() {
  507. (function(__iced_k) {
  508. __iced_deferrals = new iced.Deferrals(__iced_k, {
  509. parent: ___iced_passed_deferral,
  510. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  511. funcname: "Command.run"
  512. });
  513. _this.do_prechecks(esc(__iced_deferrals.defer({
  514. lineno: 170
  515. })));
  516. __iced_deferrals._fulfill();
  517. })(function() {
  518. (function(__iced_k) {
  519. __iced_deferrals = new iced.Deferrals(__iced_k, {
  520. parent: ___iced_passed_deferral,
  521. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  522. funcname: "Command.run"
  523. });
  524. _this.do_warnings(esc(__iced_deferrals.defer({
  525. lineno: 171
  526. })));
  527. __iced_deferrals._fulfill();
  528. })(function() {
  529. (function(__iced_k) {
  530. __iced_deferrals = new iced.Deferrals(__iced_k, {
  531. parent: ___iced_passed_deferral,
  532. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  533. funcname: "Command.run"
  534. });
  535. _this.allocate_proof_gen(esc(__iced_deferrals.defer({
  536. lineno: 172
  537. })));
  538. __iced_deferrals._fulfill();
  539. })(function() {
  540. (function(__iced_k) {
  541. __iced_deferrals = new iced.Deferrals(__iced_k, {
  542. parent: ___iced_passed_deferral,
  543. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  544. funcname: "Command.run"
  545. });
  546. _this.gen.run(esc(__iced_deferrals.defer({
  547. lineno: 173
  548. })));
  549. __iced_deferrals._fulfill();
  550. })(function() {
  551. (function(__iced_k) {
  552. __iced_deferrals = new iced.Deferrals(__iced_k, {
  553. parent: ___iced_passed_deferral,
  554. filename: "/home/max/src/keybase/node-client/src/command/prove.iced",
  555. funcname: "Command.run"
  556. });
  557. _this.handle_post(esc(__iced_deferrals.defer({
  558. lineno: 174
  559. })));
  560. __iced_deferrals._fulfill();
  561. })(function() {
  562. return cb(null);
  563. });
  564. });
  565. });
  566. });
  567. });
  568. });
  569. });
  570. });
  571. });
  572. });
  573. });
  574. };
  575. })(this));
  576. };
  577. return Command;
  578. })(ProofBase);
  579. }).call(this);