app_profanity.html 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  5. <head>
  6. <!-- 2017-05-16 Tue 21:02 -->
  7. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  8. <meta name="viewport" content="width=device-width, initial-scale=1" />
  9. <title></title>
  10. <meta name="generator" content="Org mode" />
  11. <meta name="author" content="Bob Mottram" />
  12. <meta name="description" content="How to use the Profanity XMPP client"
  13. />
  14. <meta name="keywords" content="freedombone, profanity" />
  15. <style type="text/css">
  16. <!--/*--><![CDATA[/*><!--*/
  17. .title { text-align: center;
  18. margin-bottom: .2em; }
  19. .subtitle { text-align: center;
  20. font-size: medium;
  21. font-weight: bold;
  22. margin-top:0; }
  23. .todo { font-family: monospace; color: red; }
  24. .done { font-family: monospace; color: green; }
  25. .priority { font-family: monospace; color: orange; }
  26. .tag { background-color: #eee; font-family: monospace;
  27. padding: 2px; font-size: 80%; font-weight: normal; }
  28. .timestamp { color: #bebebe; }
  29. .timestamp-kwd { color: #5f9ea0; }
  30. .org-right { margin-left: auto; margin-right: 0px; text-align: right; }
  31. .org-left { margin-left: 0px; margin-right: auto; text-align: left; }
  32. .org-center { margin-left: auto; margin-right: auto; text-align: center; }
  33. .underline { text-decoration: underline; }
  34. #postamble p, #preamble p { font-size: 90%; margin: .2em; }
  35. p.verse { margin-left: 3%; }
  36. pre {
  37. border: 1px solid #ccc;
  38. box-shadow: 3px 3px 3px #eee;
  39. padding: 8pt;
  40. font-family: monospace;
  41. overflow: auto;
  42. margin: 1.2em;
  43. }
  44. pre.src {
  45. position: relative;
  46. overflow: visible;
  47. padding-top: 1.2em;
  48. }
  49. pre.src:before {
  50. display: none;
  51. position: absolute;
  52. background-color: white;
  53. top: -10px;
  54. right: 10px;
  55. padding: 3px;
  56. border: 1px solid black;
  57. }
  58. pre.src:hover:before { display: inline;}
  59. /* Languages per Org manual */
  60. pre.src-asymptote:before { content: 'Asymptote'; }
  61. pre.src-awk:before { content: 'Awk'; }
  62. pre.src-C:before { content: 'C'; }
  63. /* pre.src-C++ doesn't work in CSS */
  64. pre.src-clojure:before { content: 'Clojure'; }
  65. pre.src-css:before { content: 'CSS'; }
  66. pre.src-D:before { content: 'D'; }
  67. pre.src-ditaa:before { content: 'ditaa'; }
  68. pre.src-dot:before { content: 'Graphviz'; }
  69. pre.src-calc:before { content: 'Emacs Calc'; }
  70. pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
  71. pre.src-fortran:before { content: 'Fortran'; }
  72. pre.src-gnuplot:before { content: 'gnuplot'; }
  73. pre.src-haskell:before { content: 'Haskell'; }
  74. pre.src-hledger:before { content: 'hledger'; }
  75. pre.src-java:before { content: 'Java'; }
  76. pre.src-js:before { content: 'Javascript'; }
  77. pre.src-latex:before { content: 'LaTeX'; }
  78. pre.src-ledger:before { content: 'Ledger'; }
  79. pre.src-lisp:before { content: 'Lisp'; }
  80. pre.src-lilypond:before { content: 'Lilypond'; }
  81. pre.src-lua:before { content: 'Lua'; }
  82. pre.src-matlab:before { content: 'MATLAB'; }
  83. pre.src-mscgen:before { content: 'Mscgen'; }
  84. pre.src-ocaml:before { content: 'Objective Caml'; }
  85. pre.src-octave:before { content: 'Octave'; }
  86. pre.src-org:before { content: 'Org mode'; }
  87. pre.src-oz:before { content: 'OZ'; }
  88. pre.src-plantuml:before { content: 'Plantuml'; }
  89. pre.src-processing:before { content: 'Processing.js'; }
  90. pre.src-python:before { content: 'Python'; }
  91. pre.src-R:before { content: 'R'; }
  92. pre.src-ruby:before { content: 'Ruby'; }
  93. pre.src-sass:before { content: 'Sass'; }
  94. pre.src-scheme:before { content: 'Scheme'; }
  95. pre.src-screen:before { content: 'Gnu Screen'; }
  96. pre.src-sed:before { content: 'Sed'; }
  97. pre.src-sh:before { content: 'shell'; }
  98. pre.src-sql:before { content: 'SQL'; }
  99. pre.src-sqlite:before { content: 'SQLite'; }
  100. /* additional languages in org.el's org-babel-load-languages alist */
  101. pre.src-forth:before { content: 'Forth'; }
  102. pre.src-io:before { content: 'IO'; }
  103. pre.src-J:before { content: 'J'; }
  104. pre.src-makefile:before { content: 'Makefile'; }
  105. pre.src-maxima:before { content: 'Maxima'; }
  106. pre.src-perl:before { content: 'Perl'; }
  107. pre.src-picolisp:before { content: 'Pico Lisp'; }
  108. pre.src-scala:before { content: 'Scala'; }
  109. pre.src-shell:before { content: 'Shell Script'; }
  110. pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
  111. /* additional language identifiers per "defun org-babel-execute"
  112. in ob-*.el */
  113. pre.src-cpp:before { content: 'C++'; }
  114. pre.src-abc:before { content: 'ABC'; }
  115. pre.src-coq:before { content: 'Coq'; }
  116. pre.src-groovy:before { content: 'Groovy'; }
  117. /* additional language identifiers from org-babel-shell-names in
  118. ob-shell.el: ob-shell is the only babel language using a lambda to put
  119. the execution function name together. */
  120. pre.src-bash:before { content: 'bash'; }
  121. pre.src-csh:before { content: 'csh'; }
  122. pre.src-ash:before { content: 'ash'; }
  123. pre.src-dash:before { content: 'dash'; }
  124. pre.src-ksh:before { content: 'ksh'; }
  125. pre.src-mksh:before { content: 'mksh'; }
  126. pre.src-posh:before { content: 'posh'; }
  127. /* Additional Emacs modes also supported by the LaTeX listings package */
  128. pre.src-ada:before { content: 'Ada'; }
  129. pre.src-asm:before { content: 'Assembler'; }
  130. pre.src-caml:before { content: 'Caml'; }
  131. pre.src-delphi:before { content: 'Delphi'; }
  132. pre.src-html:before { content: 'HTML'; }
  133. pre.src-idl:before { content: 'IDL'; }
  134. pre.src-mercury:before { content: 'Mercury'; }
  135. pre.src-metapost:before { content: 'MetaPost'; }
  136. pre.src-modula-2:before { content: 'Modula-2'; }
  137. pre.src-pascal:before { content: 'Pascal'; }
  138. pre.src-ps:before { content: 'PostScript'; }
  139. pre.src-prolog:before { content: 'Prolog'; }
  140. pre.src-simula:before { content: 'Simula'; }
  141. pre.src-tcl:before { content: 'tcl'; }
  142. pre.src-tex:before { content: 'TeX'; }
  143. pre.src-plain-tex:before { content: 'Plain TeX'; }
  144. pre.src-verilog:before { content: 'Verilog'; }
  145. pre.src-vhdl:before { content: 'VHDL'; }
  146. pre.src-xml:before { content: 'XML'; }
  147. pre.src-nxml:before { content: 'XML'; }
  148. /* add a generic configuration mode; LaTeX export needs an additional
  149. (add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
  150. pre.src-conf:before { content: 'Configuration File'; }
  151. table { border-collapse:collapse; }
  152. caption.t-above { caption-side: top; }
  153. caption.t-bottom { caption-side: bottom; }
  154. td, th { vertical-align:top; }
  155. th.org-right { text-align: center; }
  156. th.org-left { text-align: center; }
  157. th.org-center { text-align: center; }
  158. td.org-right { text-align: right; }
  159. td.org-left { text-align: left; }
  160. td.org-center { text-align: center; }
  161. dt { font-weight: bold; }
  162. .footpara { display: inline; }
  163. .footdef { margin-bottom: 1em; }
  164. .figure { padding: 1em; }
  165. .figure p { text-align: center; }
  166. .inlinetask {
  167. padding: 10px;
  168. border: 2px solid gray;
  169. margin: 10px;
  170. background: #ffffcc;
  171. }
  172. #org-div-home-and-up
  173. { text-align: right; font-size: 70%; white-space: nowrap; }
  174. textarea { overflow-x: auto; }
  175. .linenr { font-size: smaller }
  176. .code-highlighted { background-color: #ffff00; }
  177. .org-info-js_info-navigation { border-style: none; }
  178. #org-info-js_console-label
  179. { font-size: 10px; font-weight: bold; white-space: nowrap; }
  180. .org-info-js_search-highlight
  181. { background-color: #ffff00; color: #000000; font-weight: bold; }
  182. .org-svg { width: 90%; }
  183. /*]]>*/-->
  184. </style>
  185. <link rel="stylesheet" type="text/css" href="freedombone.css" />
  186. <script type="text/javascript">
  187. /*
  188. @licstart The following is the entire license notice for the
  189. JavaScript code in this tag.
  190. Copyright (C) 2012-2017 Free Software Foundation, Inc.
  191. The JavaScript code in this tag is free software: you can
  192. redistribute it and/or modify it under the terms of the GNU
  193. General Public License (GNU GPL) as published by the Free Software
  194. Foundation, either version 3 of the License, or (at your option)
  195. any later version. The code is distributed WITHOUT ANY WARRANTY;
  196. without even the implied warranty of MERCHANTABILITY or FITNESS
  197. FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
  198. As additional permission under GNU GPL version 3 section 7, you
  199. may distribute non-source (e.g., minimized or compacted) forms of
  200. that code without the copy of the GNU GPL normally required by
  201. section 4, provided you include this license notice and a URL
  202. through which recipients can access the Corresponding Source.
  203. @licend The above is the entire license notice
  204. for the JavaScript code in this tag.
  205. */
  206. <!--/*--><![CDATA[/*><!--*/
  207. function CodeHighlightOn(elem, id)
  208. {
  209. var target = document.getElementById(id);
  210. if(null != target) {
  211. elem.cacheClassElem = elem.className;
  212. elem.cacheClassTarget = target.className;
  213. target.className = "code-highlighted";
  214. elem.className = "code-highlighted";
  215. }
  216. }
  217. function CodeHighlightOff(elem, id)
  218. {
  219. var target = document.getElementById(id);
  220. if(elem.cacheClassElem)
  221. elem.className = elem.cacheClassElem;
  222. if(elem.cacheClassTarget)
  223. target.className = elem.cacheClassTarget;
  224. }
  225. /*]]>*///-->
  226. </script>
  227. </head>
  228. <body>
  229. <div id="preamble" class="status">
  230. <a name="top" id="top"></a>
  231. </div>
  232. <div id="content">
  233. <div class="org-center">
  234. <div class="figure">
  235. <p><img src="images/logo.png" alt="logo.png" />
  236. </p>
  237. </div>
  238. </div>
  239. <center>
  240. <h1>Profanity</h1>
  241. </center>
  242. <p>
  243. To install this app you will first need to install the <a href="./app_xmpp.html">XMPP server</a>.
  244. </p>
  245. <p>
  246. The <a href="https://profanity.im">Profanity</a> shell based user interface and is perhaps the simplest way to use XMPP from a laptop. It's also a good way to ensure that your OTR keys are the same even when logging in from different laptops or devices, and it also means that if those devices later become compomised then there are no locally stored OTR keys to be found.
  247. </p>
  248. <div class="org-src-container">
  249. <pre><code class="src src-bash">ssh username@domain -p 2222
  250. </code></pre>
  251. </div>
  252. <p>
  253. Then select <b>Run App</b> and then <b>profanity</b>.
  254. </p>
  255. <p>
  256. Generate an <a href="https://en.wikipedia.org/wiki/Off-the-Record_Messaging">OTR</a> key with:
  257. </p>
  258. <div class="org-src-container">
  259. <pre><code class="src src-bash">/otr gen
  260. </code></pre>
  261. </div>
  262. <p>
  263. Then to start a conversation using OTR:
  264. </p>
  265. <div class="org-src-container">
  266. <pre><code class="src src-bash">/otr start otherusername@otheruserdomain
  267. </code></pre>
  268. </div>
  269. <p>
  270. or if you're already in an insecure chat with someone just use:
  271. </p>
  272. <div class="org-src-container">
  273. <pre><code class="src src-bash">/otr start
  274. </code></pre>
  275. </div>
  276. <p>
  277. Set a security question and answer:
  278. </p>
  279. <div class="org-src-container">
  280. <pre><code class="src src-bash">/otr question <span class="org-string">"What is the name of your best friends rabbit?"</span> fiffi
  281. </code></pre>
  282. </div>
  283. <p>
  284. On the other side the user can enter:
  285. </p>
  286. <div class="org-src-container">
  287. <pre><code class="src src-bash">/otr answer fiffi
  288. </code></pre>
  289. </div>
  290. <p>
  291. For the most paranoid you can also obtain your fingerprint:
  292. </p>
  293. <div class="org-src-container">
  294. <pre><code class="src src-bash">/otr myfp
  295. </code></pre>
  296. </div>
  297. <p>
  298. and quote that. If they quote theirs back you can check it with:
  299. </p>
  300. <div class="org-src-container">
  301. <pre><code class="src src-bash">/otr theirfp
  302. </code></pre>
  303. </div>
  304. <p>
  305. If the fingerprints match then you can be pretty confident that unless you have been socially engineered via the question and answer you probably are talking to who you think you are, and that it will be difficult for mass surveillance systems to know the content of the conversation. For more details see <a href="https://www.profanity.im/otr.html">this guide</a>
  306. </p>
  307. <p>
  308. When accessed via the user control panel the client is automatically routed through Tor and so if you are also using OTR then this provides protection for both message content and metadata.
  309. </p>
  310. </div>
  311. <div id="postamble" class="status">
  312. <style type="text/css">
  313. .back-to-top {
  314. position: fixed;
  315. bottom: 2em;
  316. right: 0px;
  317. text-decoration: none;
  318. color: #000000;
  319. background-color: rgba(235, 235, 235, 0.80);
  320. font-size: 12px;
  321. padding: 1em;
  322. display: none;
  323. }
  324. .back-to-top:hover {
  325. background-color: rgba(135, 135, 135, 0.50);
  326. }
  327. </style>
  328. <div class="back-to-top">
  329. <a href="#top">Back to top</a> | <a href="mailto:bob@freedombone.net">E-mail me</a>
  330. </div>
  331. </div>
  332. </body>
  333. </html>