services work

This commit is contained in:
*****DEAD ACCOUNT 2020-11-05 10:06:09 +00:00
parent 35d0d6a201
commit f9cdf77d5c
No known key found for this signature in database
GPG Key ID: 6682B58F2E96EA33
22 changed files with 446 additions and 63 deletions

View File

View File

View File

@ -38,4 +38,11 @@ class "hub_server" {
connectfreq = 2 seconds;
max_number = 64;
sendq = 16 megabytes;
};
};
class "services" {
ping_time = 128 seconds;
connectfreq = 2 seconds;
max_number = 64;
sendq = 16 megabytes;
};

View File

@ -1,22 +1,25 @@
FROM debian:latest
ENV DEBIAN_FRONTEND noninteractive
ENV NICK_LEN 16
ENV TOPIC_LEN 256
ENV TOPIC_LEN 128
ENV REGISTERED_USERNAME_LEN 17
RUN apt-get update && apt-get -y install git subversion libssl-dev build-essential autoconf automake1.11 clang zlib1g-dev libsqlite3-dev bison flex
RUN apt-get update && apt-get -y install git subversion libssl-dev build-essential autoconf automake1.11 clang zlib1g-dev libsqlite3-dev bison flex sendmail default-libmysqlclient-dev/stable
RUN mkdir -p /tmp/ratbox-services
WORKDIR /tmp/ratbox-services
RUN svn co http://svn.ratbox.org/svnroot/rserv/branches/1_2 ratbox-services
WORKDIR /tmp/ratbox-services/ratbox-services
ADD tools.patch /tmp/ratbox-services/ratbox-services/tools.patch
RUN patch -p0 -i tools.patch -s
RUN ./configure --enable-services --with-nicklen=${NICK_LEN} --with-topiclen=${TOPIC_LEN} --with-userreglen=${REGISTERED_USERNAME_LEN}
RUN ./configure --enable-services --with-nicklen=${NICK_LEN} --with-topiclen=${TOPIC_LEN} --with-userreglen=${REGISTERED_USERNAME_LEN} --enable-mysql=yes
RUN make
RUN make install
RUN rm -rf /tmp/ratbox
RUN apt -y remove git subversion libssl-dev build-essential autoconf automake1.11 clang zlib1g-dev libsqlite3-dev bison flex
RUN groupadd -g 2004 ratbox-services
RUN useradd -m -u 2005 -g ratbox-services ratbox-services
RUN mkdir -p /usr/local/ircd/logs
RUN chown -R 2004:2005 /usr/local/ratbox-services
RUN mkdir -p /usr/local/ratbox-services/logs
RUN chmod +x /usr/local/ratbox-services/sbin/ratbox-services
RUN chown -R 2005:2004 /usr/local/ratbox-services
RUN chmod -R 777 /usr/local/ratbox-services
RUN apt -y install strace
USER ratbox-services

1
rb_bounce/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
znc.conf

View File

@ -5,7 +5,13 @@ networks:
ipam:
driver: default
config:
- subnet: 198.18.18.0/30
- subnet: 198.18.55.16/30
hub:
external:
name: rb_hub_bounce
services:
external:
name: rb_services_bounce
services:
bounce:
@ -17,11 +23,10 @@ services:
context: ../znc
dockerfile: Dockerfile
image: znc:latest
command: "/usr/local/ircd/bin/ircd -foreground -pidfile /run/hub.pid || /usr/local/ircd/bin/ircd -conftest"
command: "znc -f"
environment:
LANG: en_US.utf8
TZ: UTC
NICK_LEN: 16
ulimits:
nproc: 65535
nofile:
@ -29,6 +34,9 @@ services:
hard: 1024000
networks:
default:
ipv4_address: 198.18.18.2
ipv4_address: 198.18.55.18
hub:
ipv4_address: 198.18.70.75
services:
volumes:
- ./znc.conf:/home/znc/.znc/configs/znc.conf:ro
- ./znc.conf:/home/znc/.znc/configs/znc.conf:rw

31
rb_bounce/znc.conf.example Executable file
View File

@ -0,0 +1,31 @@
<Listener l>
Port = 6667
IPv4 = true
IPv6 = true
SSL = false
</Listener>
<Listener ltls>
Port = 6697
IPv4 = true
IPv6 = true
SSL = true
</Listener>
LoadModule = partyline
LoadModule = ident
<User g0d>
Admin = true
Nick = g0d
AltNick = g0d_
Ident = g0d
LoadModule = chansaver
LoadModule = controlpanel
<Network n3tw3rk>
LoadModule = simple_away
Server = 198.18.70.254 +6697
<Chan #oper>
</Chan>
</Network>
</User>

View File

@ -7,7 +7,7 @@
serverinfo {
name = "edge.netwerk.insecurity.corp";
sid = "14X";
sid = "15X";
description = "Site border hub for up-link";
network_name = "𝓷3𝓽𝔀3𝓻𝓴";
network_desc = "General-purpose internet relay chat network";
@ -61,6 +61,10 @@ connect "hub.netwerk.insecurity.corp" {
flags = autoconn, topicburst;
};
service {
name = "ratbox.services";
};
listen {
host = "198.18.55.10";
port = 6667;

View File

@ -66,6 +66,10 @@ blacklist {
reject_reason = "Your IP is listed in DroneBL. To connect from this address, connect to this work on port 6668 or TLS 6698";
};
service {
name = "ratbox.services";
};
listen {
host = "198.18.55.2";
port = 6667;

1
rb_hub/.#hub.conf Symbolic link
View File

@ -0,0 +1 @@
toor@linux-zoxo.10609:1604411385

View File

@ -5,31 +5,42 @@ networks:
ipam:
driver: default
config:
- subnet: 198.18.3.0/30 # 198.18.0.0/20
- subnet: 198.18.3.0/30
general_leaf:
ipam:
driver: default
config:
- subnet: 198.18.70.0/29 # 198.18.64.0/20
- subnet: 198.18.70.0/29
internal: true
tor_leaf:
ipam:
driver: default
config:
- subnet: 198.18.70.8/29 # 198.18.64.0/20
- subnet: 198.18.70.8/29
internal: true
proxy_leaf:
ipam:
driver: default
config:
- subnet: 198.18.70.16/29 # 198.18.64.0/20
- subnet: 198.18.70.16/29
internal: true
edge_leaf:
ipam:
driver: default
config:
- subnet: 198.18.70.24/29 # 198.18.64.0/20
- subnet: 198.18.70.24/29
internal: true
bounce:
ipam:
driver: default
config:
- subnet: 198.18.70.72/29
internal: true
services:
ipam:
driver: default
config:
- subnet: 198.18.70.96/29
console:
external:
name: rb_console_hub
@ -67,6 +78,10 @@ services:
ipv4_address: 198.18.70.26
console:
ipv4_address: 198.18.70.35
bounce:
ipv4_address: 198.18.70.74
services:
ipv4_address: 198.18.70.98
volumes:
- ../etc/:/usr/local/ircd/etc:rw
- ./hub.conf:/usr/local/ircd/etc/ircd.conf:ro

View File

@ -31,6 +31,14 @@ cluster {
flags = locops;
};
auth {
spoof = "bounce.netwerk.insecurity.corp";
user = "*@198.18.70.";
class = "opers";
flags = need_ident, resv_exempt, spambot_exempt, dnsbl_exempt, ~spoof_notice,
kline_exempt, gline_exempt;
};
auth {
spoof = "console.netwerk.insecurity.corp";
user = "*@198.18.70.34";
@ -90,6 +98,24 @@ connect "edge.netwerk.insecurity.corp" {
flags = topicburst;
};
connect "n3tw3rk.services" {
host = "198.18.70.99";
send_password = "password";
accept_password = "password";
port = 5555;
aftype = ipv4;
class = "services";
flags = topicburst;
};
service {
name = "nickserv.c0rp";
name = "operserv.c0rp";
name = "operbot.c0rp";
};
listen {
host = "198.18.70.35";
port = 6667; # Console ports
@ -124,9 +150,12 @@ listen {
# # this purpose.
port = 7003;
sslport = 7103;
host = "198.18.70.98";
#
port = 5555; # Services
};
exempt {
ip = "198.18.70.0/25";
ip = "198.18.70.0/24";
ip = "127.0.0.0/8";
};

29
rb_mysql/INSTALL.mysql Normal file
View File

@ -0,0 +1,29 @@
mysql database backend
----------------------
**************************************************************
* EVEN THOUGH YOU ARE USING MYSQL, DO NOT ALTER ANY DATABASE *
* TABLES WITHOUT FIRST READING doc/database_mod.txt *
**************************************************************
You must first, as a user with the appropriate access, create the database
ratbox-services will use, and the user it will connect as.
Create the database via:
CREATE DATABASE ratbox_services;
Add the user via:
GRANT ALL PRIVILEGES ON ratbox_services.* TO 'rserv' IDENTIFIED BY
'password';
The password here should just be random.
The schema must then be generated as it depends on length values set at
compile time:
cd /path/to/source/tools/
./generate-schema.pl
Then initialise the database:
mysql -u rserv -p ratbox_services < /path/to/source/tools/schema-mysql.txt
The username (default: rserv), database name (default: ratbox_services) and
password must be set in the config for ratbox-services to work.

View File

@ -0,0 +1,39 @@
version: "2.4"
networks:
default:
ipam:
driver: default
config:
- subnet: 198.18.3.28/30
services:
ipam:
driver: default
config:
- subnet: 198.18.71.0/29
services:
mysql:
restart: unless-stopped
hostname: mysql
domainname: tor-hidden-services.local
image: mariadb:latest
userns_mode: "host"
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
networks:
default:
ipv4_address: 198.18.3.30
services:
ipv4_address: 198.18.71.2
volumes:
- rb_services:/var/lib/mysql:rw
- ./services_schema.sql:/export/services_schema.sql:ro
ulimits:
nproc: 65535
nofile:
soft: 1024000
hard: 1024000
volumes:
rb_services:

View File

@ -0,0 +1,179 @@
-- $Id: schema-mysql.txt 23894 2007-05-01 17:24:07Z leeh $
CREATE TABLE users (
id INTEGER AUTO_INCREMENT,
username VARCHAR(10) NOT NULL,
password VARCHAR(35) NOT NULL,
email VARCHAR(100),
suspender VARCHAR(30),
suspend_reason VARCHAR(200),
suspend_time INT UNSIGNED DEFAULT '0',
reg_time INT UNSIGNED,
last_time INT UNSIGNED,
flags INT UNSIGNED,
verify_token VARCHAR(8),
language VARCHAR(255) DEFAULT '',
PRIMARY KEY(id)
);
ALTER TABLE users ADD UNIQUE(username);
CREATE TABLE users_resetpass (
username VARCHAR(10) NOT NULL,
token VARCHAR(10),
time INTEGER,
PRIMARY KEY(username)
);
ALTER TABLE users_resetpass ADD INDEX (time);
CREATE TABLE users_resetemail (
username VARCHAR(10) NOT NULL,
token VARCHAR(10),
email VARCHAR(100) DEFAULT NULL,
time INTEGER,
PRIMARY KEY(username)
);
ALTER TABLE users_resetemail ADD INDEX (time);
CREATE TABLE users_sync (
id INTEGER AUTO_INCREMENT,
hook VARCHAR(50) NOT NULL,
data TEXT,
PRIMARY KEY(id)
);
CREATE TABLE nicks (
nickname VARCHAR(9) NOT NULL,
username VARCHAR(10) NOT NULL,
reg_time INT UNSIGNED,
last_time INT UNSIGNED,
flags INT UNSIGNED,
PRIMARY KEY(nickname)
);
CREATE TABLE channels (
chname VARCHAR(200) NOT NULL,
topic VARCHAR(160),
url VARCHAR(100),
createmodes VARCHAR(50),
enforcemodes VARCHAR(50),
tsinfo INT UNSIGNED,
reg_time INT UNSIGNED,
last_time INT UNSIGNED,
flags INT UNSIGNED,
suspender VARCHAR(30),
suspend_reason VARCHAR(200),
suspend_time INT UNSIGNED DEFAULT '0',
PRIMARY KEY(chname)
);
CREATE TABLE channels_dropowner (
chname VARCHAR(200) NOT NULL,
token VARCHAR(10),
time INTEGER,
PRIMARY KEY(chname)
);
ALTER TABLE channels_dropowner ADD INDEX (time);
CREATE TABLE members (
chname VARCHAR(200) NOT NULL,
username VARCHAR(10) NOT NULL,
lastmod VARCHAR(10) NOT NULL,
level INT,
flags INT UNSIGNED,
suspend INT,
PRIMARY KEY(chname, username)
);
ALTER TABLE members ADD INDEX (chname);
ALTER TABLE members ADD INDEX (username);
CREATE TABLE bans (
chname VARCHAR(200) NOT NULL,
mask VARCHAR(84) NOT NULL,
reason VARCHAR(50) NOT NULL,
username VARCHAR(10) NOT NULL,
level INT,
hold INT,
PRIMARY KEY(chname, mask)
);
ALTER TABLE bans ADD INDEX (chname);
CREATE TABLE operbot (
chname VARCHAR(200) NOT NULL,
tsinfo INT UNSIGNED,
oper VARCHAR(30),
PRIMARY KEY(chname)
);
CREATE TABLE operserv (
chname VARCHAR(200) NOT NULL,
tsinfo INT UNSIGNED,
oper VARCHAR(30),
PRIMARY KEY(chname)
);
CREATE TABLE jupes (
servername VARCHAR(63) NOT NULL,
reason VARCHAR(50) NOT NULL,
PRIMARY KEY(servername)
);
CREATE TABLE operbans (
type CHAR(1) NOT NULL,
mask VARCHAR(200) NOT NULL,
reason VARCHAR(50) NOT NULL,
operreason VARCHAR(50),
hold INT UNSIGNED,
create_time INT UNSIGNED,
oper VARCHAR(30),
remove BOOL,
flags INT UNSIGNED,
PRIMARY KEY(type, mask)
);
CREATE TABLE operbans_regexp (
id INTEGER AUTO_INCREMENT,
regex VARCHAR(255) NOT NULL,
reason VARCHAR(50) NOT NULL,
hold INTEGER,
create_time INTEGER,
oper VARCHAR(30),
PRIMARY KEY(id)
);
CREATE TABLE operbans_regexp_neg (
id INTEGER AUTO_INCREMENT,
parent_id INTEGER NOT NULL,
regex VARCHAR(255) NOT NULL,
oper VARCHAR(30) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE global_welcome (
id INTEGER,
text TEXT,
PRIMARY KEY(id)
);
CREATE TABLE email_banned_domain (
domain VARCHAR(255) NOT NULL,
PRIMARY KEY(domain)
);
CREATE TABLE ignore_hosts (
hostname VARCHAR(255) NOT NULL,
oper VARCHAR(30) NOT NULL,
reason VARCHAR(255) NOT NULL,
PRIMARY KEY(hostname)
);
CREATE TABLE memos(
id INTEGER AUTO_INCREMENT,
user_id INTEGER NOT NULL,
source_id INTEGER NOT NULL,
source VARCHAR(10) NOT NULL,
timestamp INTEGER UNSIGNED DEFAULT '0',
flags INTEGER UNSIGNED DEFAULT '0',
text TEXT,
PRIMARY KEY(id)
);

View File

@ -5,7 +5,18 @@ networks:
ipam:
driver: default
config:
- subnet: 198.18.3.0/30
- subnet: 198.18.3.12/30
bounce:
ipam:
driver: default
config:
- subnet: 198.18.70.88/29
hub:
external:
name: rb_hub_services
mysql:
external:
name: rb_mysql_services
services:
services:
@ -17,7 +28,7 @@ services:
context: ../ratbox-services
dockerfile: Dockerfile
image: ratbox-services:latest
command: "/usr/local/ircd/bin/ircd -foreground -pidfile /run/hub.pid || /usr/local/ircd/bin/ircd -conftest"
command: "strace /usr/local/ratbox-services/sbin/ratbox-services -f"
environment:
LANG: en_US.utf8
TZ: UTC
@ -31,6 +42,13 @@ services:
hard: 1024000
networks:
default:
ipv4_address: 198.18.3.2
ipv4_address: 198.18.3.14
bounce:
ipv4_address: 198.18.70.90
hub:
ipv4_address: 198.18.70.99
mysql:
ipv4_address: 198.18.71.3
volumes:
- ./services.conf.conf:/usr/local/ratbox-services/etc/services.conf:ro
- ./services.conf:/usr/local/ratbox-services/etc/ratbox-services.conf:rw
- ../ephemeral/services:/usr/local/ratbox-services/etc/:rw

64
rb_services/services.conf Normal file → Executable file
View File

@ -1,8 +1,8 @@
serverinfo {
name = "ratbox.services";
sid = "36D";
description = "ratbox services";
dcc_vhost = "192.168.4.2";
name = "n3tw3rk.services";
sid = "14X";
description = "n3tw3rk services";
dcc_vhost = "192.168.70.90";
dcc_low_port = 3000;
dcc_high_port = 5000;
reconnect_time = 5 minutes;
@ -17,10 +17,10 @@ serverinfo {
};
database {
host = "127.0.0.1";
host = "198.18.71.2";
name = "ratbox_services";
username = "rserv";
password = "something";
password = "password";
};
email {
@ -28,27 +28,27 @@ email {
disable_email = yes;
email_program = "/usr/sbin/sendmail", "-t";
email_name = "services";
email_address = "services@example.com";
email_address = "commodus@sdf.org";
email_number = 15;
email_duration = 1 minute;
};
admin {
name = "admin";
description = "ratbox services";
email = "<admin@services>";
name = "commodus";
description = "n3tw3rk services";
email = "<commodus@sdf.org>";
};
connect "irc.uplink.com" {
host = "10.0.0.1";
password = "fooble";
connect "hub.netwerk.insecurity.corp" {
host = "198.18.70.98";
password = "password";
port = 5555;
};
operator "leeh" {
user = "flame@127.0.0.1";
password = "meep";
operator "g0d" {
user = "g0d@oper.bounce.netwerk.insecurity.corp";
password = "password";
flags = admin, dcc, route;
userserv = admin;
chanserv = admin;
@ -63,7 +63,7 @@ operator "leeh" {
service "userserv" {
nick = "USERSERV";
username = "user";
host = "services.int";
host = "userserv.c0rp";
realname = "user registration service";
flags = opered, msg_self;
loglevel = 5;
@ -73,11 +73,11 @@ service "userserv" {
host_register_amount = 2;
register_email = no;
register_verify = no;
expire_time = 4 weeks;
expire_suspended_time = 4 weeks;
expire_unverified_time = 1 day;
expire_time = 4 years;
expire_suspended_time = 8 years;
expire_unverified_time = 2 days;
expire_bonus_regtime = 2 months;
expire_bonus = 1 day;
expire_bonus = 2 days;
expire_bonus_per_time = 2 weeks;
expire_bonus_max = 4 weeks;
allow_set_password = yes;
@ -94,7 +94,7 @@ service "userserv" {
service "chanserv" {
nick = "CHANSERV";
username = "chan";
host = "services.int";
host = "chanserv.c0rp";
realname = "channel registration service";
flags = opered, login_help;
loglevel = 3;
@ -116,7 +116,7 @@ service "chanserv" {
service "nickserv" {
nick = "NICKSERV";
username = "nick";
host = "services.int";
host = "nickserv.c0rp";
realname = "nickname services";
flags = opered, msg_self, disabled;
loglevel = 3;
@ -128,7 +128,7 @@ service "nickserv" {
service "operserv" {
nick = "OPERSERV";
username = "oper";
host = "services.int";
host = "operserv.c0rp";
realname = "oper services";
flags = opered, msg_self, stealth, wallop_adm;
loglevel = 1;
@ -138,7 +138,7 @@ service "operserv" {
service "jupeserv" {
nick = "JUPESERV";
username = "jupe";
host = "services.int";
host = "jupeserv.c0rp";
realname = "server jupe service";
flags = opered, msg_self, stealth;
loglevel = 2;
@ -152,7 +152,7 @@ service "jupeserv" {
service "operbot" {
nick = "operbot";
username = "operbot";
host = "services.int";
host = "operbot.c0rp";
realname = "oper op/invite services";
flags = opered, msg_self, stealth;
loglevel = 1;
@ -161,7 +161,7 @@ service "operbot" {
service "alis" {
nick = "alis";
username = "alis";
host = "services.int";
host = "alis.c0rp";
realname = "Advanced List Service - /msg alis help";
flags = msg_self;
loglevel = 1;
@ -171,7 +171,7 @@ service "alis" {
service "global" {
nick = "GLOBAL";
username = "global";
host = "services.int";
host = "global.c0rp";
realname = "Network Message Service";
flags = opered, msg_self, stealth;
loglevel = 1;
@ -180,7 +180,7 @@ service "global" {
service "banserv" {
nick = "BANSERV";
username = "banserv";
host = "services.int";
host = "banserv.c0rp";
realname = "Ban Service";
flags = opered, msg_self, stealth;
loglevel = 1;
@ -197,7 +197,7 @@ service "banserv" {
service "watchserv" {
nick = "WATCHSERV";
username = "watchserv";
host = "services.int";
host = "services.c0rp";
realname = "Command Watching Service";
flags = msg_self, stealth;
loglevel = 1;
@ -207,8 +207,8 @@ service "watchserv" {
service "memoserv" {
nick = "MEMOSERV";
username = "memoserv";
host = "services.int";
realname = "Memo Service";
host = "memo.c0rp";
realname = "Did you by any chance get that e-mail I sent you?";
flags = msg_self;
loglevel = 0;
max_memos = 50;

View File

@ -10,7 +10,7 @@ networks:
ipam:
driver: default
config:
- subnet: 198.18.35.0/29
- subnet: 198.18.70.80/29
services:
tor:
@ -30,7 +30,7 @@ services:
default:
ipv4_address: 198.18.55.6
tor_leaf:
ipv4_address: 198.18.35.2
ipv4_address: 198.18.70.82
ulimits:
nproc: 65535
nofile:

View File

@ -8,4 +8,4 @@ TransPort 0
HiddenServiceDir /var/lib/tor/irc_6667/
HiddenServicePort 6667 198.18.35.3:6667
HiddenServicePort 6667 198.18.70.83:6667

View File

@ -44,7 +44,7 @@ services:
console:
ipv4_address: 198.18.70.58
tor:
ipv4_address: 198.18.35.3
ipv4_address: 198.18.70.83
volumes:
- ../etc/:/usr/local/ircd/etc:rw
- ./tor-dmz.conf:/usr/local/ircd/etc/ircd.conf:ro

View File

@ -41,7 +41,7 @@ auth {
auth {
spoof = "tor.netwerk.insecurity.corp";
user = "*@198.18.35.2";
user = "*@198.18.70.82";
class = "tor_users";
flags = spambot_exempt, no_tilde, gline_exempt, kline_exempt;
};
@ -69,8 +69,12 @@ connect "hub.netwerk.insecurity.corp" {
flags = autoconn, topicburst;
};
service {
name = "ratbox.services";
};
listen {
host = "198.18.35.3";
host = "198.18.70.83";
port = 6667;
host = "198.18.70.58";
port = 6667;

View File

@ -1,8 +1,19 @@
FROM debian:latest
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && apt-get -y install znc git znc-buildmod
RUN apt-get update && apt-get -y install znc git znc-dev build-essential
RUN mkdir -p /tmp
RUN WORKDIR /tmp
WORKDIR /tmp
RUN git clone https://github.com/cynix/znc-identd.git
RUN WORKDIR /tmp/znc-identd
WORKDIR /tmp/znc-identd
RUN znc-buildmod identd.cc
RUN groupadd -g 2005 znc
RUN useradd -m -u 2006 -g znc znc -d /home/znc
RUN mkdir -p /home/znc/.znc/modules
RUN cp identd.so /home/znc/.znc/modules
RUN setcap CAP_NET_BIND_SERVICE=+eip $(which znc)
RUN chown -R 2006:2005 /home/znc
RUN apt-get update && apt-get -y remove git znc-dev build-essential
WORKDIR /tmp
RUN rm -rf znc-identd
USER znc
WORKDIR /home/znc