| 020.txt - gopherhole - My gopherhole source code. | |
| git clone git://jay.scot/gopherhole | |
| Log | |
| Files | |
| Refs | |
| --- | |
| 020.txt (4320B) | |
| --- | |
| 1 [jay.scot] | |
| 2 [020] | |
| 3 | |
| 4 | |
| 5 --[ Getting to grips with slrn | |
| 6 | |
| 7 | |
| 8 Until a few weeks ago, I occasionally visited Usenet using the Lynx | |
| 9 browser's built-in NNTP handler. It's a basic tool that served its | |
| 10 purpose for browsing a few groups. However, Lynx couldn't handle | |
| 11 killfiles, and the abundance of spam on Usenet nowadays made it very | |
| 12 discouraging, looking at you google groups!. Recently, my other computer | |
| 13 stopped working, which gave me a clean slate, so I decided to invest | |
| 14 more time into finding a better solution. I remember using Pan back in | |
| 15 the day, towards the end of Usenets hayday, but I wanted something CLI | |
| 16 based so that's why I ended up going with slrn. | |
| 17 | |
| 18 | |
| 19 When I used Lynx, I had an old Usenet block account that I purchased | |
| 20 about three years ago from usenet.farm, honestly it wasn't for | |
| 21 backfilling binaries! It worked fine for reading, and I rarely posted so | |
| 22 wasn't and issue on that front. This time, though, I went to | |
| 23 eternal-september.org and created a new account there. | |
| 24 | |
| 25 | |
| 26 At first, I set up slrn in NNTP mode, which means it interacts with the | |
| 27 news server remotely. However, this quickly became inconvenient for | |
| 28 several reasons. Loading groups by connecting directly to the server | |
| 29 every time I started up slrn felt sluggish. Moreover, I couldn't find | |
| 30 a good way to separate my authentication credentials and store the slrn | |
| 31 configuration in Git. In the slrn config file, I had to define the | |
| 32 credentials explicitly, without the ability to call an external password | |
| 33 manager or encrypted file, like so: | |
| 34 | |
| 35 | |
| 36 nnrpaccess "snews://news.eternal-september.org:563" "my-user" "m… | |
| 37 set force_authentication 1 | |
| 38 | |
| 39 | |
| 40 After some research over on the slrn homepage, I discovered that slrn | |
| 41 comes with another tool called slrnpull. As the name suggests, it pulls | |
| 42 all news articles to a local spool, which can then be viewed in slrn. | |
| 43 Setting this up was a breeze, and with this method, I was able to | |
| 44 separate my authentication credentials into a single file called | |
| 45 "authinfo," which I could easily add to my Gitignore. I am now setup and | |
| 46 good to go, looking forward to being more involved with Usenet! | |
| 47 | |
| 48 | |
| 49 Below, I've included my configuration, which should serve as a good | |
| 50 starting point for anyone wanting to use slrn. All files are relative to | |
| 51 ~/.config/slrn | |
| 52 | |
| 53 | |
| 54 slrnpull -d ~/.config/slrn/ # pull posts | |
| 55 slrn -i ~/.config/slrn/config # read posts | |
| 56 | |
| 57 | |
| 58 --[ config | |
| 59 | |
| 60 | |
| 61 % user | |
| 62 set username "jay.scot" | |
| 63 set hostname "me@invalid" | |
| 64 set generate_message_id 0 | |
| 65 | |
| 66 % apps | |
| 67 set editor_command "vim '+set tw=72' +%d '%s'" | |
| 68 set Xbrowser "firefox '%s' &" | |
| 69 | |
| 70 % attrib | |
| 71 set followup_string "On %D, %r <%f> wrote:" | |
| 72 set reply_string "In %n, you wrote:" | |
| 73 | |
| 74 % paths | |
| 75 set spool_inn_root "~/.config/slrn/" | |
| 76 set spool_root "~/.config/slrn/news" | |
| 77 set spool_nov_root "~/.config/slrn/news" | |
| 78 set read_active 1 | |
| 79 set use_slrnpull 1 | |
| 80 set server_object "spool" | |
| 81 | |
| 82 set scorefile ".config/slrn/score" | |
| 83 | |
| 84 % mime | |
| 85 charset display utf8 | |
| 86 charset outgoing utf8 | |
| 87 | |
| 88 % display | |
| 89 set confirm_actions 0 | |
| 90 set sorting_method 9 | |
| 91 set uncollapse_threads 1 | |
| 92 set top_status_line " %n" | |
| 93 set group_status_line "%D %-20g -- %L (%P)" | |
| 94 set header_status_line "%p [%r/%t] %-20g -- %L (%P)" | |
| 95 set art_status_line "%p %s %-20g -- %L (%P)" | |
| 96 set overview_date_format "%d %b %Y %H:%M" | |
| 97 | |
| 98 visible_headers "Date:,From:,Newsgroups:,Subject:" | |
| 99 header_display_format 0 "%F%B %21r %T%s %-26g %D %-5c" | |
| 100 | |
| 101 % keybinds | |
| 102 setkey group "set_prefix_argument(4); () = select_group();" " | |
| 103 setkey article create_score "K" | |
| 104 | |
| 105 | |
| 106 --[ slrnpull.conf | |
| 107 | |
| 108 | |
| 109 # NAME | MAX_ARTICLES | DAYS_BEFORE_EXPIRE | FETCH_HEADERS_ONLY | |
| 110 default 0 0 0 | |
| 111 | |
| 112 eternal-september.info | |
| 113 eternal-september.newusers | |
| 114 eternal-september.talk | |
| 115 alt.gopher | |
| 116 uk.radio.amateur | |
| 117 | |
| 118 | |
| 119 --[ score | |
| 120 | |
| 121 | |
| 122 % : Logical AND ie all tests must be passed (Conjunction) | |
| 123 % :: Logical OR ie any of the tests are passed (Disjunction) | |
| 124 % ~ Logical NOT ie an exception from the score rule (Negation) | |
| 125 % = Stop score processing and award the score if the test is passed | |
| 126 % * Wild card character | |
| 127 | |
| 128 [*] | |
| 129 Score:: -9999 | |
| 130 | |
| 131 % Kill all articles which are uppercase and contain $ sign | |
| 132 Subject: \$ | |
| 133 ~Subject: \c[a-z] | |
| 134 | |
| 135 % Google groups are a source of, basically, all spam | |
| 136 Message-ID: googlegroups | |
| 137 | |
| 138 % Known spam remailer | |
| 139 From: nobody@dizum\.com | |
| 140 | |
| 141 % Prolific spammer | |
| 142 From: doctor@doctor\.nl2k\.ab\.ca | |
| 143 | |
| 144 [eternal-september.*] | |
| 145 Score:: -9999 | |
| 146 From: Tigerbrother | |
| 147 From: Dragonbrother | |
| 148 | |
| 149 | |
| 150 | |
| 151 --[ authinfo | |
| 152 | |
| 153 | |
| 154 username | |
| 155 password | |
| 156 | |
| 157 | |
| 158 .EOF |