GithubHelp home page GithubHelp logo

khlieng / dispatch Goto Github PK

View Code? Open in Web Editor NEW
640.0 10.0 30.0 48.56 MB

Web-based IRC client in Go.

Home Page: https://dispatch.khlieng.com

License: MIT License

CSS 4.31% JavaScript 45.54% Go 49.97% Shell 0.06% Dockerfile 0.11%
dispatch irc irc-client chat go golang javascript react redux

dispatch's Introduction

dispatch Build Status

Dispatch

Features

  • Searchable history
  • Persistent connections
  • Multiple servers and users
  • Automatic HTTPS through Let's Encrypt
  • Single binary with no dependencies
  • DCC downloads
  • SASL
  • Client certificates

Usage

There is a few different ways of getting it:

1. Binary

2. Go

This requires a Go environment, version 1.11 or greater.

Fetch, compile and run dispatch:

go get github.com/khlieng/dispatch
dispatch

To get some help run:

dispatch help

3. Docker

docker run \
  -p <http port>:80 \
  -p <https port>:443 \
  -v <path>:/data \
  --restart unless-stopped \
  -d khlieng/dispatch

Build

Server

go install

Client

This requires Node.js and yarn.

Fetch the dependencies:

GO111MODULE=off go get github.com/jteeuwen/go-bindata/...
yarn global add gulp-cli
cd client
yarn

Run the build:

gulp build

The server needs to be rebuilt to embed new client builds.

For development with hot reloading start the frontend:

gulp

And then the backend in a separate terminal:

dispatch --dev

IRC Channel

#dispatch @ irc.libera.chat

Libraries

The libraries this project is built with.

Server

Client

Big Thanks

Cross-browser Testing Platform and Open Source <3 Provided by Sauce Labs

dispatch's People

Contributors

daftaupe avatar danieloaks avatar dependabot[bot] avatar diadara avatar edwardbetts avatar eyedeekay avatar gridhead avatar khlieng avatar nhandler avatar pidario avatar prologic avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dispatch's Issues

SIGSEGV ...

Not sure what this stack trace is (yet):

prologic@Jamess-MacBook
Thu May 17 17:35:34
~/go/src/github.com/khlieng/dispatch
 (master) 0
$ ./dispatch

    ____   _                     _         _
   |  _ \ (_) ___  _ __    __ _ | |_  ___ | |__
   | | | || |/ __|| '_ \  / _  || __|/ __|| '_ \
   | |_| || |\__ \| |_) || (_| || |_| (__ | | | |
   |____/ |_||___/| .__/  \__,_| \__|\___||_| |_|
                  |_|
                       v0.4

2018/05/17 17:35:39 Storing data at /Users/prologic/.dispatch
2018/05/17 17:35:39 [HTTP] Listening on port 8000
2018/05/17 17:35:42 [::1]:53076 [Auth] Create session | User ID: 2
2018/05/17 17:35:46 [::1]:53082 [Auth] GET /ws/connect | Valid token | User ID: 2
2018/05/17 17:35:46 [::1]:53082 [Session] User ID: 2 | 0 IRC connections | 1 WebSocket connections
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x14bf41e]

goroutine 25 [running]:
github.com/khlieng/dispatch/vendor/github.com/blevesearch/bleve.(*indexImpl).Close(0x0, 0x0, 0x0)
	/Users/prologic/go/src/github.com/khlieng/dispatch/vendor/github.com/blevesearch/bleve/index_impl.go:743 +0x2e
github.com/khlieng/dispatch/storage.(*User).closeMessageLog(0xc4200b68a0)
	/Users/prologic/go/src/github.com/khlieng/dispatch/storage/user_messages.go:190 +0x46
github.com/khlieng/dispatch/storage.(*User).Remove(0xc4200b68a0)
	/Users/prologic/go/src/github.com/khlieng/dispatch/storage/user.go:230 +0x7e
github.com/khlieng/dispatch/server.(*Session).run(0xc4200b6a20)
	/Users/prologic/go/src/github.com/khlieng/dispatch/server/session.go:212 +0x1fb
created by github.com/khlieng/dispatch/server.reconnectIRC
	/Users/prologic/go/src/github.com/khlieng/dispatch/server/irc.go:37 +0x135

Connecting to freenode

Reaching out to let you know https://dispatch.khlieng.com is banned from freenode because it triggered anti-spam measures due to a unusually large amount of connections at one time, probably someone with a script. This wasn't something we wanted to do, but it's basically a (really nice looking!) open proxy, since anyone can anonymously open a connection without revealing their real IP address, and we can't have that abuse vector on freenode.

Generally the way to pass the source IP from a web-based client is to hex-encode the source IP and use that as the ident. If that's something you're willing to do, or if you have any questions, get in touch with me, emerson on freenode or email me at [email protected] and we can figure it out.

Can't start the app

I am trying to start dispatch. After many attemps, It still stuck.

I've disabled verify_certificates = false and disabled the https. But still get Connection reset.

# IP address to listen on, leave empty to listen on anything
address = ""
#port = 80
port = 8084
# Run ident daemon on port 113
identd = true
# Hex encode the users IP and use it as the ident
hexIP = false
# Automatically reply to common CTCP messages
auto_ctcp = true
# Verify the certificate chain presented by the IRC server, if this check fails
# the user will be able to choose to still connect
#verify_certificates = true
verify_certificates = false

# Defaults for the client connect form
[defaults]
name = "freenode"
host = "chat.freenode.net"
port = 6697
channels = [
  "#dispatch"
]
server_password = ""
ssl = true
# Only allow a nick to be filled in
readonly = false
# Show server and channel info when readonly is enabled
show_details = false

[https]
#enabled = true
enabled = false
port = 443
# Path to your cert and private key if you are not using
# the Let's Encrypt integration
cert = ""
key = ""

[letsencrypt]
# Your domain or subdomain, if not set a certificate will be
# fetched for whatever domain dispatch gets accessed through
domain = ""
# An email address lets you recover your accounts private key
email = ""

# Not implemented
[auth]
# Allow usage without being logged in, all channels and settings get
# transferred when logging in or registering
anonymous = true
# Enable username/password login
login = true
# Enable username/password registration
registration = true

[auth.providers.github]
key = ""
secret = ""

[auth.providers.facebook]
key = ""
secret = ""

[auth.providers.google]
key = ""
secret = ""

[auth.providers.twitter]
key = ""
secret = ""

[dcc]
# Receive files through DCC, the user gets to choose if they want to accept the file,
# the file download then gets proxied to the user
enabled = true

[dcc.autoget]
# Instead of proxying the file download directly to the user, dispatch automatically downloads
# DCC files and sends a download link to the user once its done
enabled = false
# Delete the file after the user has downloaded it once
delete = true
# Delete the file after a certain time period of inactivity, not implemented yet
delete_after = "30m"

[proxy]
# Dispatch will make all outgoing connections through the specified proxy when enabled
enabled = false
protocol = "socks5"
host = "127.0.0.1"
port = 1080
username = ""
password = ""

# HTTP Strict-Transport-Security
[https.hsts]
enabled = false
max_age = 31536000
include_subdomains = false
preload = false

# Add your own HTTP headers to the index page
[headers]
# X-Example = "Rainbows"

Accessing MYIP:8084 gives me:

image

root@foo:~/godispatch/data# docker run -p 8084:443 -v /root/godispatch/data:/data khlieng/dispatch

    ____   _                     _         _
   |  _ \ (_) ___  _ __    __ _ | |_  ___ | |__
   | | | || |/ __|| '_ \  / _  || __|/ __|| '_ \
   | |_| || |\__ \| |_) || (_| || |_| (__ | | | |
   |____/ |_||___/| .__/  \__,_| \__|\___||_| |_|
                  |_|

   v0.7 + 95 commits
   Commit: 721492ca
   Build Date: 10 Dec 2020, 08:09:07
   Runtime: go1.15.6

2021/01/23 03:10:12 Storing data at /data
2021/01/23 03:10:12 [Init] 0 sessions
2021/01/23 03:10:12 [Init] 0 users
2021/01/23 03:10:12 [HTTP] Listening on port 8084

Disable server/port/ssl fields

Can we have a piece of config say readonly = true that disables connecting to any other server besides the default one configured? Only allowing Nick: to be filled in.

first run fails

First run fails because ~/.dispatch/ does not exist. I guess it should create it automtically but it doesn't.
runing dispatch 0.4 let me know if you need any further info.

Browsers without bigint support in JS: No identifiers allowed directly after numeric literal

I wanted to give the dispatch demo at https://dispatch.khlieng.com/ a try.
After the login page I consistently only see a blank screen in Safari on both macOS 10.15 (Safari version Version 13.1.2) and iOS 13.
Some similar issue has been mentioned in issue #8.
The console showed the error message No identifiers allowed directly after numeric literal from some minified JS file.
I was able to track this down to the use of bigints in github.com/sindresorhus/fnv1a v2.0.0+ which don't seem to be supported in Safari 13, yet (see issue #10 at fnv1a for more details).
client/js/utils/color.js:L19 seems to be the only place where the fnv1a hash function is used to implement the colored nicknames feature.
Would it be an option to downgrade fnv1a to 1.2.0 or replace it with another hash function to improve browser compatibility?

postgres store

would be nice to have postgres backend for easier searching when having 24/7 connection to freenode.

Can't run development client because of browser strict mime type checking

I followed the instructions in the readme to run the client, and I get this when trying to connect:

Refused to apply style from 'http://localhost:1337/bundle.css' because its MIME type ('text/plain') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

Go version: 1.11

"Connect" button (top-left): Let's fix it.

We should consider doing something better with the top-left "Connect" button.

Currently when you are connected, the button's label remains "Connect".

Further; clicking on it is a bit unintuitive as it actually disconnect your current session (I think).

Add option to hide join/part messages

It would be nice to have an option either in the web UI for per-server connections or in the config for a global option to hide the join/part messages

Fail more obviously on connection issues?

First I thought Dispatch is great (edit: still think it's great ;) ) and has much less connection issues then Kiwi IRC or The Lounge here on this really bad internet connection...

But then I noticed it just fails less obviously (and probably also a bit less often :) ). Tell tales signs are usually duplicated messages, strangely distorted fonts and bleeding through of messages into other channels.

Not sure what can be done about it, but maybe some overlay with "connection issues" would be a start?

Reconnecting too fast / TLS issues

I think this is somewhat related to #13

Not sure what's changed; and this is really hard to debug.

See attached screenshot.

And except of logs:

[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:27 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected
[email protected]    | 2018/05/18 01:12:28 [IRC] 29 irc.mills.io Connected

screen shot 2018-05-17 at 6 15 08 pm

This is reproducible with your demo instance too.

From what I can find; the ssl config is not being respected somehow.

Does dispatch persist message history to disk?

If it does, this should be mentioned in the README as well as shown as a docker volume. If not, it should. I see dispatch.db and users/ and config.toml in /data, however dispatch doesn't persist message history for channels.

Consider Allowing Options Through URL Parameters

Have you considered adding support for setting config options through url parameters? Something like this is what I'm imaging:
http://example.tld/connect?host=irc.example.tld?channel=testing?nick=tester
Which would override the defaults set by the config. The use case I'm imagining for this is running the client binary once on the server, and then embedding it inside multiple other webpages throughout the site where the defaults need to be different on every page.

If Dispatch supported this it would be trivially easy with iframes.

Latest version on Docker Hub panics on startup

[email protected]    |
[email protected]    |     ____   _                     _         _
[email protected]    |    |  _ \ (_) ___  _ __    __ _ | |_  ___ | |__
[email protected]    |    | | | || |/ __|| '_ \  / _  || __|/ __|| '_ \
[email protected]    |    | |_| || |\__ \| |_) || (_| || |_| (__ | | | |
[email protected]    |    |____/ |_||___/| .__/  \__,_| \__|\___||_| |_|
[email protected]    |                   |_|
[email protected]    |
[email protected]    |
[email protected]    |    Commit: 7ad7627
[email protected]    |    Build Date: 08 Feb 2019, 08:31:34
[email protected]    |    Runtime: go1.11.5
[email protected]    |
[email protected]    | 2019/03/28 09:56:10 Storing data at /data
[email protected]    | 2019/03/28 09:56:10 [Init] 0 sessions
[email protected]    | 2019/03/28 09:56:10 [Init] 1 users
[email protected]    | panic: runtime error: invalid memory address or nil pointer dereference
[email protected]    | [signal SIGSEGV: segmentation violation code=0x1 addr=0x38 pc=0x975778]
[email protected]    |
[email protected]    | goroutine 1 [running]:
[email protected]    | github.com/khlieng/dispatch/server.(*Dispatch).initFileServer(0xc0001c6140)
[email protected]    | 	/go/src/github.com/khlieng/dispatch/server/serve_files.go:165 +0xe08
[email protected]    | github.com/khlieng/dispatch/server.(*Dispatch).Run(0xc0001c6140)
[email protected]    | 	/go/src/github.com/khlieng/dispatch/server/server.go:70 +0x125
[email protected]    | github.com/khlieng/dispatch/commands.glob..func4(0x13fbf20, 0xc000078960, 0x0, 0x6)
[email protected]    | 	/go/src/github.com/khlieng/dispatch/commands/dispatch.go:87 +0x260
[email protected]    | github.com/khlieng/dispatch/vendor/github.com/spf13/cobra.(*Command).execute(0x13fbf20, 0xc000030080, 0x6, 0x6, 0x13fbf20, 0xc000030080)
[email protected]    | 	/go/src/github.com/khlieng/dispatch/vendor/github.com/spf13/cobra/command.go:766 +0x2cc
[email protected]    | github.com/khlieng/dispatch/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x13fbf20, 0xc00012ff88, 0x4073f0, 0xc000090058)
[email protected]    | 	/go/src/github.com/khlieng/dispatch/vendor/github.com/spf13/cobra/command.go:852 +0x2fd
[email protected]    | github.com/khlieng/dispatch/vendor/github.com/spf13/cobra.(*Command).Execute(0x13fbf20, 0x0, 0x0)
[email protected]    | 	/go/src/github.com/khlieng/dispatch/vendor/github.com/spf13/cobra/command.go:800 +0x2b
[email protected]    | github.com/khlieng/dispatch/commands.Execute()
[email protected]    | 	/go/src/github.com/khlieng/dispatch/commands/dispatch.go:92 +0x2d
[email protected]    | main.main()
[email protected]    | 	/go/src/github.com/khlieng/dispatch/main.go:8 +0x20

Mobile: Blank UI

When accessing a dispatch instance via Mobile Safari (iOS) you just get a blank page.

server password incorrect

Hi. I'm getting the following error when setting a global password on the IRC server and setting that same password in the config.toml file. I've played with this quite a bit and am either missing some simple or there is a bug. It seems when the password var is set in the config, it auto-populates the password field in the form. But it never works. If I manual type the same password in the field, it does then let me in.

Jan 10 07:37:33 devchat ngircd[14959]: Client "stnkhenry" unregistered (connection 9): Bad server password.

# ./dispatch -v
v0.7
Commit: 08ffc79
Build Date: 08 May 2020, 01:01:00
Runtime: go1.14.2

I'll try to build this myself instead of using the what was linked in the README.md.

IRC color text support?

Seems like colored nick are supported, but not colored text.

Quite useful when bridging channels to better identify different users posting through the same bridge bot.

Leadking sessions?

I noticed this in the logs (repeatedly):

[email protected]    | 2018/05/18 04:07:23 [IRC] 1 irc.mills.io Connected
[email protected]    | 2018/05/18 04:07:31 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:07:31 10.0.2.31:51028 [Auth] Create session | User ID: 89
[email protected]    | 2018/05/18 04:07:45 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:07:46 10.0.2.31:51028 [Auth] Create session | User ID: 90
[email protected]    | 2018/05/18 04:08:00 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:08:00 10.0.2.31:51028 [Auth] Create session | User ID: 91
[email protected]    | 2018/05/18 04:08:15 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:08:16 10.0.2.31:51028 [Auth] Create session | User ID: 92
[email protected]    | 2018/05/18 04:08:23 [IRC] 1 irc.mills.io Connected
[email protected]    | 2018/05/18 04:08:30 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:08:31 10.0.2.31:51028 [Auth] Create session | User ID: 93
[email protected]    | 2018/05/18 04:08:45 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:08:46 10.0.2.31:51028 [Auth] Create session | User ID: 94
[email protected]    | 2018/05/18 04:09:00 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:09:00 10.0.2.31:51028 [Auth] Create session | User ID: 95
[email protected]    | 2018/05/18 04:09:15 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:09:15 10.0.2.31:51028 [Auth] Create session | User ID: 96
[email protected]    | 2018/05/18 04:09:23 [IRC] 1 irc.mills.io Connected
[email protected]    | 2018/05/18 04:09:30 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:09:31 10.0.2.31:51028 [Auth] Create session | User ID: 97
[email protected]    | 2018/05/18 04:09:45 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:09:46 10.0.2.31:51028 [Auth] Create session | User ID: 98
[email protected]    | 2018/05/18 04:10:01 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:10:01 10.0.2.31:51028 [Auth] Create session | User ID: 99
[email protected]    | 2018/05/18 04:10:15 10.0.2.31:51028 [Auth] GET / | No cookie set
[email protected]    | 2018/05/18 04:10:16 10.0.2.31:51028 [Auth] Create session | User ID: 100
[email protected]    | 2018/05/18 04:10:23 [IRC] 1 irc.mills.io Connected

It doesn't look like anything interesting is happenning on disk:

$ dki -t -v chat:/data alpine /bin/sh -c 'ls -1 /data/users/'
1
104
105
106
107
11

But I worry this is leaking internal data structures in memory?

updater?

would it be possible to have 'dispatch update' command, which would do:

  • download latest released version from github
  • unpack the file and replace current binary
  • restart dispatch if it is running as a service

Add Support for SSL/TLS Client Certificates

Great job you're doing with dispatch. Wondering if you could add support for client certificates? I'm currently running a server that requires such support and I'd like to use a web client to connect to it. Would be great to see such support as no other web clients currently support this feature.

Oauth2 social auth

Gitea uses the following library to manage their social auth and it is working very nicely:
https://github.com/markbates/goth

But you are probably aware of it already.

However it would be great if an option to add a custom Oauth2 for self-hosted services could be included. For example Nextcloud or Gitea can also function as an auth provider.

Thanks!

Proxy Support: Support X-Forwarded-For

The websocket handler relies on the Websocket connection remote address.
This can be come broken if using behind a proxy or reverse proxy.

Can we add support for the X-Forwarded-For header?

I added something simple to the websocket_handler.go to make it work in my own environment.

20 var address string
21
22 if r.Header.Get("X-Forwarded-For") != "" {
23 address = r.Header.Get("X-Forwarded-For")
24 }else{
25 address = conn.RemoteAddr().String()
26 }
27
28 h := &wsHandler{
29 ws: newWSConn(conn),
30 state: state,
31 addr: address,
32 }

Misleading port display in dev mode

Hello,

When running dispatch in dev mode there are 2 misleading indications appearing :

Like in the example following.

2018/07/24 21:19:55 Running in development mode, access client at http://localhost:3000
2018/07/24 21:19:55 Storing data at /home/dev/.dispatch
2018/07/24 21:19:56 [Init] 0 sessions
2018/07/24 21:19:56 [Init] 0 users
2018/07/24 21:19:56 [HTTP] Listening on port 1337`

I think we can remove the line from commands/dispatch.go and change a little bit the way it's handled in server/server.go to use the port in the config file.

Default port in UI is wrong for TLS / non-TLS

See attached and below config:

$ cat ~/.dispatch/config.toml
port = 8000
verify_client_certificates = false

[defaults]
name = "Mills"
host = "127.0.0.1"
port = 6667
ssl = false
password = ""
readonly = false
show_details = true
channels = [
  "#lobby"
]

screen shot 2018-05-17 at 6 55 04 pm

The UI should be showing 6667. Clicking the "SSL" checkbox and unchecking again is a "work-around".

c.write and c.writef vs. c.out <- ...

You seem to have changed your mind at some point.

We have some instances of c.write(....) and c.writef(...) lying around that probably should use c.out <- ...:

$ grin -d vendor 'c\.(write|writef)\('
./irc/client.go:
   94 : 			c.write("QUIT")
  141 : 	c.write("PASS " + password)
  145 : 	c.write("NICK " + nick)
  149 : 	c.writef("USER %s 0 * :%s", username, realname)
./irc/conn.go:
  208 : 			go c.write("PONG :" + msg.LastParam())
./irc/conn_test.go:
  113 : 	c.write("test")
  117 : 	c.writef("test %d", 2)

Usability Issues

Spun up the latest version of dispatch over here at https://chat.mills.io/

Notice one important useability issue:

If you enter an invalid nickname; e.g: "Foo Bar" -- something with a space; things just don't work very well at all!

Simple dark theme option?

Any chance for a simple user setting to turn the background dark?

Much nicer on the eyes and better for OLED screens too.

Feature suggestions: "remember me" cookie?

Since accounts and social auth is not yet implemented (looking forward to it though... the config settings are intriguing), it would be never the less nice if a simple browser cookie could be used to remember the last used nick and real name if the user wishes to do so.

Connection lost, attempting to reconnect...

i get this error even though the user and the server have internet access, there's a docker container running on a custom port then i reverse proxy it with nginx and add ssl with cerbot

dispatch

Fonts don't download properly in dev mode

Hi! While trying to run this software in dev mode (running gulp at the same time as required in the readme), the fonts don't seem to download or display properly. This results in things like the icons in the lower-left and top-right not displaying correctly.

I've got a screenshot of this on Chrome, along with the errors in the console pointing towards the issue:
screen shot 2016-12-12 at 2 30 49 pm

I'll take a look at this myself, though I'm not too familiar with gulp and all.

Thanks a bunch for releasing this by the way, excited to have a great-looking Go IRC web client :)


edit: As a note, running the gulp build and running Dispatch in regular, non-dev mode shows the fonts without an issue.

Add option to choose the interface to bind on

Hello,

it would be nice to have an option like the one to choose the port, but to choose the ip/hostname/interface to bind on.
That makes sense when using dispatch behind a reverse-proxy for example, as in this case we don't want it to listen globally, but rather on 127.0.0.1 for example.

Official IRC channel

Hi,

I remember there was a channel on Freenode, but due to what happened on this network, I took the opportunity to reserve the #dispatch on https://libera.chat/, I can give it back / add people as admin.

I guess it would be cool to have a presence somewhere there for an irc client :)

If that's ok, maybe we could add this info somewhere on the REAMDE or something ?

ssl error

Error: tls: first record does not look like a TLS handshake

Error: x509: certificate has expired or is not yet valid: current time 2020-10-23T05:23:08-04:00 is after 2020-08-12T22:12:57Z

try to connect with the

Server: irc.420-hightimes.org
Channel: #mpxcetra

dcc , xdcc support ?

hello trying to get some anime, but having trouble figuring the correct syntax

/set get nick [Harunatsu] Boruto - Naruto the Movie - v2 [BD 720p-AAC][01688050].mkv

You have a DCC pending, Set your client to receive the transfer. Type "/MSG Saika XDCC CANCEL" to abort the transfer. (150 seconds remaining until timeout)

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.