Git Product home page Git Product logo

ircfs's Introduction

Ircfs

Ircfs is a file service used to connect to an IRC network

Go Go Report Card License

go install github.com/altid/ircfs/cmd/ircfs@latest

Usage

ircfs [-s <servicename>] [-d] [-a <address to bind to>] [-m]

  • -m broadcasts an mDNS record for the service
  • -d enables debug output
  • if no service name is given, irc is used
  • Address is the address that the host binds to, not the address of your IRC network!

Wiki!

Configuration

# altid/config - place this in your operating systems' default config directory

service=irc address=libera.chat port=6697 auth=pass=hunter2 ssl=none
	nick=guest user=guest name=guest
	channels=#altid
	log=/home/guest/logs/irc/
	filter=all

service=irc2 address=supersecure.ircserver.net port=28888 auth=factotum
	ssl=cert cert=/path/to/some/cert.pem key=/path/to/some/key.pem
	nick=fsociety user=elliot
	log=none
	filter=smart
  • service matches the given servicename (default "irc")
  • address is the address for the remote IRC server
  • port is the port on the remote IRC server
  • auth is the authentication method
    • pass will send the string following pass= as your user password to the remote IRC server
    • factotum uses a local factotum (Plan9, plan9port) to find your password
    • none bypasses password authentication at connection time (default)
  • ssl
    • none will use a plain TCP connection with the remote IRC server
    • simple will use a simple, generally insecure connection to the remote IRC server. This is for testing purposes only and should generally not be usd
    • cert uses the values provided for cert= and key= to use certificate based authenticationover a TLS connection to the remote server
  • nick, user, and name are your respective nickname, username that you registered to the IRC server, and your real name (optional)
  • log is the directory that stores channel logs. A special value of none can be used to bypass logging
  • filter
    • all filters all JOIN/PART/QUIT messages
    • smart filters JOIN/PART/QUIT messages for people who haven't written to the channel recently
    • none does not filter any messages

ircfs's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

frankfanslc

ircfs's Issues

Use libs/config

Switch over to using libs/config for our configuration handling. We won't avoid much boilerplate, but we will have canonical methodology

Enable auth=none

Currently, this uses a library function for Password that doesn't return correctly from auth=none; it should return an empty string.

Convert to using a homogenized, cached backend

@alyptik lemme know what you think of this.
So, essentially the idea is to allow something like the following

# Join a channel
touch "$XDG_RUNTIME_DIR/web/irc/irc.freenode.net/#ubqt"

# Join a server
mkdir "$XDG_RUNTIME_DIR/web/irc/irc.freenode.net"

Right now, it uses a config file to join channels and such; we could switch to just an rc (shell script) for setup.
This does introduce the need for an intermediate server that handles clients connecting in, negotiating what feed status title and others will contain for that client; but in my opinion it's better to have it separated out from the back-ends. Means we won't have to write that logic over and over again and again, just switching buffers to that web/irc/irc.freenode.net/#ubqt would handle everything, and there's then nothing stopping someone from changing buffers to web/https/www.google.com/ and browse the web, then tab back all within the same client session.

Full testing

We want to be sure to create tests for all features so when things break, we catch it.

Directories not created correctly in some cases

When we write to a channel from another connected client
such as is possible over ZNC, channels aren't created properly
We'll have to validate channels are created for any log requests.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.