123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  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. <title></title>
  7. <!-- 2018-04-12 Thu 12:19 -->
  8. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  9. <meta name="generator" content="Org-mode" />
  10. <meta name="author" content="Bob Mottram" />
  11. <meta name="description" content="How to use IRC"
  12. />
  13. <meta name="keywords" content="freedombome, irc" />
  14. <style type="text/css">
  15. <!--/*--><![CDATA[/*><!--*/
  16. .title { text-align: center; }
  17. .todo { font-family: monospace; color: red; }
  18. .done { color: green; }
  19. .tag { background-color: #eee; font-family: monospace;
  20. padding: 2px; font-size: 80%; font-weight: normal; }
  21. .timestamp { color: #bebebe; }
  22. .timestamp-kwd { color: #5f9ea0; }
  23. .right { margin-left: auto; margin-right: 0px; text-align: right; }
  24. .left { margin-left: 0px; margin-right: auto; text-align: left; }
  25. .center { margin-left: auto; margin-right: auto; text-align: center; }
  26. .underline { text-decoration: underline; }
  27. #postamble p, #preamble p { font-size: 90%; margin: .2em; }
  28. p.verse { margin-left: 3%; }
  29. pre {
  30. border: 1px solid #ccc;
  31. box-shadow: 3px 3px 3px #eee;
  32. padding: 8pt;
  33. font-family: monospace;
  34. overflow: auto;
  35. margin: 1.2em;
  36. }
  37. pre.src {
  38. position: relative;
  39. overflow: visible;
  40. padding-top: 1.2em;
  41. }
  42. pre.src:before {
  43. display: none;
  44. position: absolute;
  45. background-color: white;
  46. top: -10px;
  47. right: 10px;
  48. padding: 3px;
  49. border: 1px solid black;
  50. }
  51. pre.src:hover:before { display: inline;}
  52. pre.src-sh:before { content: 'sh'; }
  53. pre.src-bash:before { content: 'sh'; }
  54. pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
  55. pre.src-R:before { content: 'R'; }
  56. pre.src-perl:before { content: 'Perl'; }
  57. pre.src-java:before { content: 'Java'; }
  58. pre.src-sql:before { content: 'SQL'; }
  59. table { border-collapse:collapse; }
  60. caption.t-above { caption-side: top; }
  61. caption.t-bottom { caption-side: bottom; }
  62. td, th { vertical-align:top; }
  63. th.right { text-align: center; }
  64. th.left { text-align: center; }
  65. th.center { text-align: center; }
  66. td.right { text-align: right; }
  67. td.left { text-align: left; }
  68. td.center { text-align: center; }
  69. dt { font-weight: bold; }
  70. .footpara:nth-child(2) { display: inline; }
  71. .footpara { display: block; }
  72. .footdef { margin-bottom: 1em; }
  73. .figure { padding: 1em; }
  74. .figure p { text-align: center; }
  75. .inlinetask {
  76. padding: 10px;
  77. border: 2px solid gray;
  78. margin: 10px;
  79. background: #ffffcc;
  80. }
  81. #org-div-home-and-up
  82. { text-align: right; font-size: 70%; white-space: nowrap; }
  83. textarea { overflow-x: auto; }
  84. .linenr { font-size: smaller }
  85. .code-highlighted { background-color: #ffff00; }
  86. .org-info-js_info-navigation { border-style: none; }
  87. #org-info-js_console-label
  88. { font-size: 10px; font-weight: bold; white-space: nowrap; }
  89. .org-info-js_search-highlight
  90. { background-color: #ffff00; color: #000000; font-weight: bold; }
  91. /*]]>*/-->
  92. </style>
  93. <link rel="stylesheet" type="text/css" href="freedombone.css" />
  94. <script type="text/javascript">
  95. /*
  96. @licstart The following is the entire license notice for the
  97. JavaScript code in this tag.
  98. Copyright (C) 2012-2013 Free Software Foundation, Inc.
  99. The JavaScript code in this tag is free software: you can
  100. redistribute it and/or modify it under the terms of the GNU
  101. General Public License (GNU GPL) as published by the Free Software
  102. Foundation, either version 3 of the License, or (at your option)
  103. any later version. The code is distributed WITHOUT ANY WARRANTY;
  104. without even the implied warranty of MERCHANTABILITY or FITNESS
  105. FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
  106. As additional permission under GNU GPL version 3 section 7, you
  107. may distribute non-source (e.g., minimized or compacted) forms of
  108. that code without the copy of the GNU GPL normally required by
  109. section 4, provided you include this license notice and a URL
  110. through which recipients can access the Corresponding Source.
  111. @licend The above is the entire license notice
  112. for the JavaScript code in this tag.
  113. */
  114. <!--/*--><![CDATA[/*><!--*/
  115. function CodeHighlightOn(elem, id)
  116. {
  117. var target = document.getElementById(id);
  118. if(null != target) {
  119. elem.cacheClassElem = elem.className;
  120. elem.cacheClassTarget = target.className;
  121. target.className = "code-highlighted";
  122. elem.className = "code-highlighted";
  123. }
  124. }
  125. function CodeHighlightOff(elem, id)
  126. {
  127. var target = document.getElementById(id);
  128. if(elem.cacheClassElem)
  129. elem.className = elem.cacheClassElem;
  130. if(elem.cacheClassTarget)
  131. target.className = elem.cacheClassTarget;
  132. }
  133. /*]]>*///-->
  134. </script>
  135. </head>
  136. <body>
  137. <div id="preamble" class="status">
  138. <a name="top" id="top"></a>
  139. </div>
  140. <div id="content">
  141. <h1 class="title"></h1>
  142. <div class="figure">
  143. <p><img src="images/logo.png" alt="logo.png" width="80%" height="10%" align="center" />
  144. </p>
  145. </div>
  146. <div id="outline-container-sec-1" class="outline-2">
  147. <h2 id="sec-1">IRC</h2>
  148. <div class="outline-text-2" id="text-1">
  149. <p>
  150. IRC is useful for multi-user chat. The classic use case is for software development where many engineers might need to coordinate their activities, but it's also useful for meetings, parties and general socialising.
  151. </p>
  152. </div>
  153. </div>
  154. <div id="outline-container-sec-2" class="outline-2">
  155. <h2 id="sec-2">Irssi</h2>
  156. <div class="outline-text-2" id="text-2">
  157. <p>
  158. The easiest way to use irssi is to connect to your system, like this:
  159. </p>
  160. <div class="org-src-container">
  161. <pre class="src src-bash">ssh myusername@mydomain -p 2222
  162. </pre>
  163. </div>
  164. <p>
  165. Then select <b>IRC</b> from the menu. However, other than via this method using ssh, irssi isn't a very good IRC client because it doesn't have the capability to onion route messages, and therefore leaks metadata. For the best security when using your IRC server, use HexChat, Emacs ERC or another client which supports socks5 proxying.
  166. </p>
  167. </div>
  168. </div>
  169. <div id="outline-container-sec-3" class="outline-2">
  170. <h2 id="sec-3">HexChat</h2>
  171. <div class="outline-text-2" id="text-3">
  172. <p>
  173. HexChat (formerly XChat) is compatible with proxying via Tor and so provides the best security when connecting to your IRC server. It will allow you to connect to your IRC server's onion address.
  174. </p>
  175. <p>
  176. First install HexChat and set up its configuration file. This can be done on your local machine with:
  177. </p>
  178. <div class="org-src-container">
  179. <pre class="src src-bash">freedombone-client --setup hexchat
  180. </pre>
  181. </div>
  182. <p>
  183. Now look up the onion address for your IRC server
  184. </p>
  185. <div class="org-src-container">
  186. <pre class="src src-bash">ssh username@mydomainname -p 2222
  187. </pre>
  188. </div>
  189. <p>
  190. Select Administrator options, then <b>About this system</b> and make a note of the onion address for IRC. Also select the <b>IRC Menu</b> and take a note of the login password.
  191. </p>
  192. <p>
  193. Run HexChat.
  194. </p>
  195. <p>
  196. Within the network list click, <b>Add</b> and enter your domain name then click <b>Edit</b>.
  197. </p>
  198. <p>
  199. Select the entry within the servers box, then enter <b>ircaddress.onion/6697</b> or <b>mydomainname/6697</b> and press <b>Enter</b>.
  200. </p>
  201. <p>
  202. Uncheck <b>use global user information</b>.
  203. </p>
  204. <p>
  205. Enter first and second nicknames and check <b>connect to this network on startup</b>.
  206. </p>
  207. <p>
  208. If you are using the ordinary domain name (clearnet/ICANN) then make sure that <b>Use SSL</b> is checked.
  209. </p>
  210. <div class="figure">
  211. <p><img src="images/hexchat_setup_clearnet.jpg" alt="hexchat_setup_clearnet.jpg" width="80%" align="center" />
  212. </p>
  213. </div>
  214. <p>
  215. If you are using the onion address then <b>use SSL</b> should be unchecked and the transport encryption will be handled via the onion address itself.
  216. </p>
  217. <div class="figure">
  218. <p><img src="images/hexchat_setup.jpg" alt="hexchat_setup.jpg" width="80%" align="center" />
  219. </p>
  220. </div>
  221. <p>
  222. Within the <b>Password</b> field enter the password which can be found from the IRC menu of the <b>control panel</b>.
  223. </p>
  224. <p>
  225. Select the <b>Autojoin channels</b> tab, click <b>Add</b> and enter <b>#freedombone</b> as the channel name.
  226. </p>
  227. <p>
  228. Click <b>close</b> and then <b>connect</b>.
  229. </p>
  230. </div>
  231. </div>
  232. <div id="outline-container-sec-4" class="outline-2">
  233. <h2 id="sec-4">Emacs</h2>
  234. <div class="outline-text-2" id="text-4">
  235. <p>
  236. If you are an Emacs user then you can also connect to your IRC server via Emacs.
  237. </p>
  238. <p>
  239. Ensure that tor is installed onto your local system:
  240. </p>
  241. <div class="org-src-container">
  242. <pre class="src src-bash">sudo apt-get install tor
  243. </pre>
  244. </div>
  245. <p>
  246. Add the following to your Emacs configuration file:
  247. </p>
  248. <div class="org-src-container">
  249. <pre class="src src-elisp">(<span class="org-keyword">setq</span> socks-noproxy '(<span class="org-string">"localhost"</span>))
  250. (<span class="org-keyword">require</span> '<span class="org-constant">socks</span>)
  251. (<span class="org-keyword">require</span> '<span class="org-constant">tls</span>)
  252. (<span class="org-keyword">setq</span> socks-server (list <span class="org-string">"Tor socks"</span> <span class="org-string">"localhost"</span> 9050 5))
  253. (<span class="org-keyword">setq</span> erc-server-connect-function 'socks-open-network-stream)
  254. (<span class="org-keyword">setq</span> erc-autojoin-channels-alist
  255. '((<span class="org-string">"myircaddress.onion"</span> <span class="org-string">"#freedombone"</span>)))
  256. (erc <span class="org-builtin">:server</span> <span class="org-string">"myircaddress.onion"</span> <span class="org-builtin">:port</span> 6697 <span class="org-builtin">:nick</span> <span class="org-string">"yourusername"</span> <span class="org-builtin">:password</span> <span class="org-string">"your IRC password"</span>)
  257. </pre>
  258. </div>
  259. </div>
  260. </div>
  261. <div id="outline-container-sec-5" class="outline-2">
  262. <h2 id="sec-5">Changing or removing the IRC password</h2>
  263. <div class="outline-text-2" id="text-5">
  264. <p>
  265. By default the IRC server is set up to require a password for users to log in. The password is the same for all users. If you want to change or remove the password:
  266. </p>
  267. <div class="org-src-container">
  268. <pre class="src src-bash">ssh myusername@mydomain -p 2222
  269. </pre>
  270. </div>
  271. <p>
  272. Select <i>Administrator controls</i> then <b>IRC Menu</b> and then change the password. An empty password will allow anyone to log in, so you can have a globally accessible IRC system if you wish, although you might want to carefully consider whether that's wise.
  273. </p>
  274. </div>
  275. </div>
  276. </div>
  277. <div id="postamble" class="status">
  278. <style type="text/css">
  279. .back-to-top {
  280. position: fixed;
  281. bottom: 2em;
  282. right: 0px;
  283. text-decoration: none;
  284. color: #000000;
  285. background-color: rgba(235, 235, 235, 0.80);
  286. font-size: 12px;
  287. padding: 1em;
  288. display: none;
  289. }
  290. .back-to-top:hover {
  291. background-color: rgba(135, 135, 135, 0.50);
  292. }
  293. </style>
  294. <div class="back-to-top">
  295. <a href="#top">Back to top</a> | <a href="mailto:bob@freedombone.net">E-mail me</a>
  296. </div>
  297. </div>
  298. </body>
  299. </html>