Git Product home page Git Product logo

tethys's People

Contributors

aaronmdjones avatar aji avatar awilfox avatar elizafox avatar heartmender avatar hlandau avatar kaniini avatar sariyamelody avatar shadowninja avatar xe avatar

Stargazers

 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tethys's Issues

Reorganize `sendto' subsystem [migrated from ircd-micro issues]

u_sendto_chan_pfx

Something like this would be nice:

u_sendto_chan_pfx(chan, conn, ST_ALL, CU_PFX_VOICE,
        ":%H PRIVMSG +%C :%s", src, tgt, text);

It would also be useful in this situation:

u_sendto_chan_pfx(c, NULL, ST_USERS, CU_PFX_OP
        ":%H MODE %C %s%s", u, c, m.op.buf, m.op.data);

i.e., issue #4

Control send based on client CAPs present, client CAPs missing

This is essential for proper implementation of away-notify, account-notify, extended-join, etc., i.e. issue #8

Oh my god, the whole event loop is broken (Redo conn.c)

Ever since moving from a custom built event loop built on select(3) to mowgli.eventloop, all subsystems that are part of conn.c (conn, origin, toplev) have been broken in subtle ways.

Because the design of conn.c is very closely linked to the API of the event loop, much of conn.c will have to be redone.

Attempting to set a nonexistent usermode doesn't cause an error

fluttershy ~ > nc 127.0.0.1 6667
> :fluttershy-tethys.yolo-swag.com NOTICE * :*** Looking up your hostname
> :fluttershy-tethys.yolo-swag.com NOTICE * :*** Found your hostname: localhost
< NICK TEST
< USER a a a a
> :fluttershy-tethys.yolo-swag.com 001 TEST :Welcome to the ShadowNET Internet Relay Chat Network TEST
> :fluttershy-tethys.yolo-swag.com 002 TEST :Your host is fluttershy-tethys.yolo-swag.com, running version Tethys-0.1-alpha1
> :fluttershy-tethys.yolo-swag.com 003 TEST :This server was born on Sun Jun 01 at 22:11:46 UTC
> :fluttershy-tethys.yolo-swag.com 005 TEST PREFIX=(ov)@+ CHANTYPES=#& CHANMODES=beIq,k,fl,cgimnpstz MODES=4 MAXLIST=50 CASEMAPPING=rfc1459 NICKLEN=20 TOPICLEN=250 CHANNELLEN=50 AWAYLEN=256 MAXTARGETS=1 EXCEPTS INVEX FNC WHOX :are supported by this server
> :fluttershy-tethys.yolo-swag.com 422 TEST :MOTD missing
< MODE TEST +R
< MODE TEST -i
< MODE TEST +i
> :TEST MODE TEST +i
< QUIT
> :TEST!a@localhost QUIT :Client Quit

MONITOR support.

IMO there's no real point to add WATCH too. Should just focus on MONITOR.

IP address cloaking

As in the umode +x/h cloaking that charybdis has. The existing module could be ported over if the correct hooks are added, but would a rewrite from scratch be preferable?

Server closing connection during burst causes lockup with a log line repeated

-vvv:

[2014/01/15 19:25:36] Tethys-0.1-alpha1 starting...
[2014/01/15 19:25:36]   Seeding random number generator...
[2014/01/15 19:25:36]   HOOK: 0x00011648(0x00000000) to module:unload
[2014/01/15 19:25:36]   HOOK: 0x000128c4(0x00000000) to conf:end
[2014/01/15 19:25:36]   HOOK: 0x000145f8(0x00000000) to module:unload
[2014/01/15 19:25:36]   HOOK:CALL: conf:start
[2014/01/15 19:25:36]     conf: module=core/c_42
[2014/01/15 19:25:36] Loading module core/c_42
[2014/01/15 19:25:36]   HOOK:CALL: module:load
[2014/01/15 19:25:36]     conf: me.name=pinkie.yolo-swag.com
[2014/01/15 19:25:36]   server_conf: me.name=pinkie.yolo-swag.com
[2014/01/15 19:25:36]     conf: me.sid=0HI
[2014/01/15 19:25:36]   server_conf: me.sid=0HI
[2014/01/15 19:25:36]     conf: me.desc=More SUGAR!
[2014/01/15 19:25:36]   server_conf: me.desc=More SUGAR!
[2014/01/15 19:25:36]     conf: me.net=ShadowNET
[2014/01/15 19:25:36]   server_conf: me.net=ShadowNET
[2014/01/15 19:25:36]     conf: me.motd=etc/tethys.motd
[2014/01/15 19:25:36] Loading MOTD from etc/tethys.motd
[2014/01/15 19:25:36] !!! ERROR: Could not open MOTD file etc/tethys.motd
[2014/01/15 19:25:36]     conf: admin.loc1=Alex Iadicicco
[2014/01/15 19:25:36]     conf: admin.loc2=http://github.com/aji
[2014/01/15 19:25:36]     conf: admin.email=yes@hello
[2014/01/15 19:25:36]     conf: listen=6665-6669
[2014/01/15 19:25:36]   Listening on 6665
[2014/01/15 19:25:36]   Listening on 6666
[2014/01/15 19:25:36]   Listening on 6667
[2014/01/15 19:25:36]   Listening on 6668
[2014/01/15 19:25:36]   Listening on 6669
[2014/01/15 19:25:36]     conf: class=users
[2014/01/15 19:25:36]     conf: class.timeout=300
[2014/01/15 19:25:36]     conf: class=server
[2014/01/15 19:25:36]     conf: class.timeout=900
[2014/01/15 19:25:36]     conf: auth=local
[2014/01/15 19:25:36]     conf: auth.class=users
[2014/01/15 19:25:36]     conf: auth.cidr=127.0.0.1/32
[2014/01/15 19:25:36]     conf: auth=lan
[2014/01/15 19:25:36]     conf: auth.class=users
[2014/01/15 19:25:36]     conf: auth.cidr=192.168.0.0/16
[2014/01/15 19:25:36]     conf: auth=world
[2014/01/15 19:25:36]     conf: auth.class=users
[2014/01/15 19:25:36]     conf: auth.cidr=0.0.0.0/0
[2014/01/15 19:25:36]     conf: oper=jilles
[2014/01/15 19:25:36]     conf: oper.password=machinegod
[2014/01/15 19:25:36]     conf: oper.auth=local
[2014/01/15 19:25:36]     conf: link=cod.yolo-swag.com
[2014/01/15 19:25:36]     conf: link.host=127.0.0.1
[2014/01/15 19:25:36]     conf: link.sendpass=soup
[2014/01/15 19:25:36]     conf: link.recvpass=soup
[2014/01/15 19:25:36]     conf: link.class=server
[2014/01/15 19:25:36]   HOOK:CALL: conf:end
[2014/01/15 19:25:36]              0x000128c4(0x00000000, 0x002ae030)
[2014/01/15 19:25:36] Entering IO loop
[2014/01/15 19:25:40]   [*] <- :pinkie.yolo-swag.com NOTICE * :*** Looking up your hostname
[2014/01/15 19:25:40]     [*] need_recv=true need_send=true
[2014/01/15 19:25:40]   [*] <- :pinkie.yolo-swag.com NOTICE * :*** Couldn't find your hostname: No such domain. Using your ip 127.0.0.1
[2014/01/15 19:25:40]     [*] need_recv=true need_send=true
[2014/01/15 19:25:40]     [*] need_recv=true need_send=true
[2014/01/15 19:25:40] Connection from 127.0.0.1
[2014/01/15 19:25:40]     [*] need_recv=true need_send=false
[2014/01/15 19:25:40]   [*] -> PASS soup TS 6 :420
[2014/01/15 19:25:40]     (none) INVOKE PASS [0x0000d808]
[2014/01/15 19:25:40] New local server sid=420
[2014/01/15 19:25:40]     [] need_recv=true need_send=false
[2014/01/15 19:25:40]   [] -> CAPAB :QS EX IE KLN UNKLN ENCAP SERVICES EUID EOPMOD
[2014/01/15 19:25:40]      INVOKE CAPAB [0x0000d244]
[2014/01/15 19:25:40]     [] need_recv=true need_send=false
[2014/01/15 19:25:40]   [] -> SERVER cod.yolo-swag.com 1 :Today's future tomorrow
[2014/01/15 19:25:40]      INVOKE SERVER [0x0000d15c]
[2014/01/15 19:25:40]   roster[\31]: :%S SID %s %d %s :%s
[2014/01/15 19:25:40]   [cod.yolo-swag.com] <- PASS soup TS 6 :0HI
[2014/01/15 19:25:40]     [cod.yolo-swag.com] need_recv=true need_send=true
[2014/01/15 19:25:40]   [cod.yolo-swag.com] <- CAPAB :QS EX CHW IE EOB KLN UNKLN KNOCK TB ENCAP SERVICES SAVE EUID
[2014/01/15 19:25:40]     [cod.yolo-swag.com] need_recv=true need_send=true
[2014/01/15 19:25:40]   [cod.yolo-swag.com] <- SERVER pinkie.yolo-swag.com 1 :More SUGAR!
[2014/01/15 19:25:40]     [cod.yolo-swag.com] need_recv=true need_send=true
[2014/01/15 19:25:40]   [cod.yolo-swag.com] <- SVINFO 6 6 0 :1389839140
[2014/01/15 19:25:40]     [cod.yolo-swag.com] need_recv=true need_send=true
[2014/01/15 19:25:40]   [cod.yolo-swag.com] <- :0HI PING pinkie.yolo-swag.com cod.yolo-swag.com
[2014/01/15 19:25:40]     [cod.yolo-swag.com] need_recv=true need_send=true
[2014/01/15 19:25:40]   Adding cod.yolo-swag.com to servers_by_name
[2014/01/15 19:25:40]     [cod.yolo-swag.com] need_recv=true need_send=true
[2014/01/15 19:25:40]     [cod.yolo-swag.com] need_recv=true need_send=false
[2014/01/15 19:25:40]   [cod.yolo-swag.com] -> :420 EUID Ash 1 1389839140 +o user host 0 420100000 * * :Real name
[2014/01/15 19:25:40]     cod.yolo-swag.com INVOKE EUID [0x0000de88]
[2014/01/15 19:25:40] New remote user uid=420100000
[2014/01/15 19:25:40]   roster[\31]: :%E KILL %U%s
[2014/01/15 19:25:40]   roster[\31]: %s
[2014/01/15 19:25:40]     [cod.yolo-swag.com] need_recv=true need_send=false
[2014/01/15 19:25:40] !!! ERROR: toplev_recv: recv: Connection reset by peer
[2014/01/15 19:25:40]     CONN:ERR: [0x002af150] ERR="Read error"
[2014/01/15 19:25:40]   [cod.yolo-swag.com] <- ERROR :Read error
[2014/01/15 19:25:40] Unlinking server sid=420 (cod.yolo-swag.com)
[2014/01/15 19:25:40]   Removing cod.yolo-swag.com from all rosters
[2014/01/15 19:25:40] Unlinking user uid=420100000 (Ash)
[2014/01/15 19:25:40]     [*] need_recv=false need_send=true
[2014/01/15 19:25:40] !!! ERROR: toplev_send: send: Broken pipe
[2014/01/15 19:25:40] !!! ERROR: toplev_send: send: Broken pipe
[2014/01/15 19:25:40] !!! ERROR: toplev_send: send: Broken pipe
[2014/01/15 19:25:40] !!! ERROR: toplev_send: send: Broken pipe
[2014/01/15 19:25:40] !!! ERROR: toplev_send: send: Broken pipe
[2014/01/15 19:25:40] !!! ERROR: toplev_send: send: Broken pipe

It will repeat that line until killed.

My test TS6 connection code is here. To run it check out the tethys-test branch and run $(env python2) test.py in the src folder.

Get (R)DNS working again

When this was moved from the internal implementation to the libmowgli-2 implementation, RDNS requests stopped working. This could possibly be a bug in libmowgli-2, but as the async_resolver example in libmowgli-2 works fine, it is probably more likely that something is wrong with Tethys' usage of it.

Ban with reasons

A good feature to add: reasons in the ban lists

Cannot join to #test: Banned: Ban evasion

Usermode to hide channel line in /whois

This could either:

  • Hide the whole line (Like +I does on InspIRCd)
  • Hide only channels the user doesn't share with the person whoising them (Like +p on UnrealIRCd)

Marriage of services and ircd

Closer integration of Atheme to Tethys

  • Entity id in user struct
  • groups in groupserv for list-like modes

Discuss more options

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.