Compare commits
No commits in common. "e344e7351ce54462f686461524a4a8eae7d6dd37" and "f5123f26957ef72a08e2e699c63dece366b804ee" have entirely different histories.
e344e7351c
...
f5123f2695
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1 @@
|
||||
include.conf
|
||||
config.env
|
||||
|
51
Dockerfile
51
Dockerfile
@ -6,59 +6,48 @@ ARG BUILD_SERVER_NAME="services.lame-network.local"
|
||||
|
||||
RUN apt -y update
|
||||
|
||||
RUN apt -y install coreutils cmake perl git automake autoconf build-essential libpcre2-dev rapidjson-dev libcurl4-gnutls-dev libargon2-dev libmaxminddb-dev libldap2-dev rapidjson-dev libmysqlclient-dev libmysqlclient-dev default-libmysqlclient-dev libpq-dev libre2-dev gnutls-dev libsqlite3-dev libmbedtls-dev libqrencode-dev libpcre3-dev libtre-dev pkg-config libwww-perl libidn-dev libpasswdqc-dev libcrack2-dev libperl-dev libsodium-dev cracklib-runtime libcrypt-cracklib-perl sendmail
|
||||
RUN apt -y install coreutils perl git automake autoconf build-essential libpcre2-dev rapidjson-dev libcurl4-gnutls-dev libargon2-dev libmaxminddb-dev libldap2-dev rapidjson-dev libmysqlclient-dev libmysqlclient-dev default-libmysqlclient-dev libpq-dev libre2-dev gnutls-dev libsqlite3-dev libmbedtls-dev libqrencode-dev libpcre3-dev libtre-dev pkg-config libwww-perl libidn-dev libpasswdqc-dev libcrack2-dev libperl-dev libsodium-dev cracklib-runtime libcrypt-cracklib-perl sendmail gettext
|
||||
|
||||
RUN groupadd anope
|
||||
RUN groupadd atheme
|
||||
|
||||
RUN useradd --system --shell /bin/bash anope -g anope
|
||||
RUN useradd --system --shell /bin/bash atheme -g atheme
|
||||
|
||||
WORKDIR /tmp
|
||||
|
||||
RUN git clone https://github.com/anope/anope.git
|
||||
RUN git clone https://github.com/atheme/atheme.git -b master
|
||||
|
||||
WORKDIR /tmp/anope
|
||||
WORKDIR /tmp/atheme
|
||||
|
||||
#RUN git checkout 2.1
|
||||
RUN git submodule update --init --recursive
|
||||
|
||||
#RUN git reset --hard 240f8b9e505af4888039769f5ce5a2388bdf228e
|
||||
|
||||
WORKDIR /tmp/anope/modules
|
||||
|
||||
RUN ls -1 extra/*.cpp | xargs -i ln -s {}
|
||||
|
||||
WORKDIR /tmp/anope
|
||||
|
||||
RUN cmake -DINSTDIR:STRING=/usr/local -DRUNGROUP:STRING=anope -DDEFUMASK:STRING=007 -DCMAKE_BUILD_TYPE:STRING=RELEASE -B /tmp/anope/build /tmp/anope
|
||||
|
||||
WORKDIR /tmp/anope/build
|
||||
RUN ./configure --prefix=/usr/local --enable-large-net --enable-contrib --enable-legacy-pwcrypto --with-idn
|
||||
|
||||
RUN make -j$(nproc)
|
||||
|
||||
RUN make install
|
||||
|
||||
RUN mkdir -p /etc/anope -p /etc/ssl/anope -p /var/log/anope -p /var/lib/anope
|
||||
RUN mkdir -p /etc/atheme -p /etc/ssl/atheme -p /var/log/atheme
|
||||
|
||||
ADD anope.conf /etc/anope
|
||||
RUN mv /usr/local/etc /usr/local/etc_old
|
||||
|
||||
ADD include.default.conf /etc/anope/include.conf
|
||||
RUN ln -sf /etc/atheme /usr/local/etc
|
||||
|
||||
RUN openssl genrsa -out /etc/ssl/anope/server.key
|
||||
ADD data/atheme.conf /etc/atheme
|
||||
|
||||
RUN openssl req -new -key /etc/ssl/anope/server.key -out /etc/ssl/anope/server.csr \
|
||||
-subj "/C=US/ST=Washington/L=Seattle/O=LameNetwork/OU=IT Department/CN=$BUILD_SERVER_NAME"
|
||||
ADD data/include.default.conf /etc/atheme/include.conf
|
||||
|
||||
RUN openssl x509 -req -days 365 -in /etc/ssl/anope/server.csr -signkey /etc/ssl/anope/server.key -out /etc/ssl/anope/server.crt
|
||||
|
||||
RUN chown -R anope:anope /etc/anope /etc/ssl/anope /var/log/anope /var/lib/anope
|
||||
RUN chown -R atheme:atheme /etc/atheme /etc/ssl/atheme /var/log/atheme
|
||||
|
||||
WORKDIR /
|
||||
|
||||
VOLUME /var/lib/anope
|
||||
RUN rm -rf /tmp/atheme
|
||||
|
||||
VOLUME /etc/ssl/anope
|
||||
USER atheme
|
||||
|
||||
VOLUME /var/log/anope
|
||||
RUN /usr/local/bin/atheme-services -b ; true
|
||||
|
||||
USER anope
|
||||
VOLUME /etc/atheme
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/anope", "--nofork", "--confdir=/etc/anope/", "--dbdir=/etc/anope/custom/", "--logdir=/var/log/anope/", "--moduledir=/usr/local/modules/"]
|
||||
VOLUME /var/log/atheme
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/atheme-services", "-p", "/tmp/atheme.pid", "-n"]
|
||||
|
29
README.md
29
README.md
@ -1,2 +1,27 @@
|
||||
- Copy `config.env.example` to `config.env` and `include.default.conf` to `include.conf` and edit both
|
||||
- `chown -R 999 custom` and `docker-compose up -d`
|
||||
# Instructions
|
||||
|
||||
## Remote with TLS
|
||||
since atheme doesn't support TLS uplinks, (https://github.com/atheme/atheme/issues/265) stunnel has to be used for remote TLS
|
||||
encryption (this assumes stunnel is running on the hub already):
|
||||
- `cd stunnel/`
|
||||
- Copy `stunnel.conf.example` to `stunnel.conf` then edit
|
||||
- retrieve certificates from CA `see inspircd hub CA setup with easyrsa3`, place `ca.crt` in `ssl/`
|
||||
- `docker-compose up -d`
|
||||
|
||||
## docker-compose
|
||||
- Copy `config.env.example` to `config.env` and edit
|
||||
- Copy `data/include.default.conf` to `data/include.conf` and edit
|
||||
- `docker-compose build`
|
||||
- `docker-compose up -d`
|
||||
|
||||
## Administration
|
||||
- To enable debugging add `-d` to `DAEMON_FLAGS` in `config.env`
|
||||
- `docker-compose up -d`
|
||||
- `docker logs -f atheme-atheme-1`
|
||||
### Anope migration
|
||||
See `tools/` for `anope2atheme.php`. YMMV
|
||||
|
||||
### Resetting passwords
|
||||
- `/oper`
|
||||
- `/msg nickserv resetpass <nick>` this gives a temporary password for the user
|
||||
- as the user: `/msg nickserv identify <temporary password` then `/msg nickserv set password <new password>`
|
||||
|
1572
anope.conf
1572
anope.conf
File diff suppressed because it is too large
Load Diff
@ -1 +1,2 @@
|
||||
SERVER_NAME="services.lame-network.local"
|
||||
DAEMON_FLAGS=""
|
||||
SERVER_NAME="services.supernets.org"
|
||||
|
1
custom/.gitignore
vendored
1
custom/.gitignore
vendored
@ -1 +0,0 @@
|
||||
*
|
2
data/.gitignore
vendored
Executable file
2
data/.gitignore
vendored
Executable file
@ -0,0 +1,2 @@
|
||||
services.*
|
||||
include.conf
|
598
data/atheme.conf
Executable file
598
data/atheme.conf
Executable file
@ -0,0 +1,598 @@
|
||||
# loadmodule "/usr/local/modules/security/cmdperm"; https://github.com/atheme/atheme/issues/937
|
||||
loadmodule "/usr/local/modules/protocol/inspircd";
|
||||
# loadmodule "/usr/local/modules/protocol/mixin_nohalfops";
|
||||
# loadmodule "/usr/local/modules/protocol/mixin_noholdnick";
|
||||
# loadmodule "/usr/local/modules/protocol/mixin_noprotect";
|
||||
# loadmodule "/usr/local/modules/protocol/mixin_noowner";
|
||||
loadmodule "/usr/local/modules/backend/opensex";
|
||||
loadmodule "/usr/local/modules/crypto/argon2";
|
||||
loadmodule "/usr/local/modules/crypto/scrypt";
|
||||
# loadmodule "/usr/local/modules/crypto/pbkdf2v2";
|
||||
loadmodule "/usr/local/modules/crypto/bcrypt";
|
||||
# loadmodule "/usr/local/modules/crypto/pbkdf2";
|
||||
# loadmodule "/usr/local/modules/crypto/crypt3-sha2-512";
|
||||
# loadmodule "/usr/local/modules/crypto/crypt3-sha2-256";
|
||||
# loadmodule "/usr/local/modules/crypto/crypt3-md5";
|
||||
loadmodule "/usr/local/modules/crypto/rawsha2-512";
|
||||
loadmodule "/usr/local/modules/crypto/rawsha2-256";
|
||||
loadmodule "/usr/local/modules/crypto/anope-enc-sha256";
|
||||
loadmodule "/usr/local/modules/crypto/rawsha1";
|
||||
loadmodule "/usr/local/modules/crypto/rawmd5";
|
||||
loadmodule "/usr/local/modules/crypto/ircservices";
|
||||
# loadmodule "/usr/local/modules/crypto/crypt3-des";
|
||||
loadmodule "/usr/local/modules/crypto/base64";
|
||||
# loadmodule "/usr/local/modules/auth/ldap";
|
||||
loadmodule "/usr/local/modules/nickserv/main";
|
||||
loadmodule "/usr/local/modules/nickserv/access";
|
||||
loadmodule "/usr/local/modules/nickserv/badmail";
|
||||
loadmodule "/usr/local/modules/nickserv/cert";
|
||||
loadmodule "/usr/local/modules/nickserv/drop";
|
||||
loadmodule "/usr/local/modules/nickserv/enforce";
|
||||
loadmodule "/usr/local/modules/nickserv/ghost";
|
||||
loadmodule "/usr/local/modules/nickserv/group";
|
||||
loadmodule "/usr/local/modules/nickserv/help";
|
||||
loadmodule "/usr/local/modules/nickserv/hold";
|
||||
loadmodule "/usr/local/modules/nickserv/identify";
|
||||
loadmodule "/usr/local/modules/nickserv/info";
|
||||
loadmodule "/usr/local/modules/nickserv/info_lastquit";
|
||||
loadmodule "/usr/local/modules/nickserv/list";
|
||||
loadmodule "/usr/local/modules/nickserv/listlogins";
|
||||
loadmodule "/usr/local/modules/nickserv/listmail";
|
||||
loadmodule "/usr/local/modules/nickserv/listownmail";
|
||||
loadmodule "/usr/local/modules/nickserv/login";
|
||||
loadmodule "/usr/local/modules/nickserv/loginnolimit";
|
||||
loadmodule "/usr/local/modules/nickserv/logout";
|
||||
loadmodule "/usr/local/modules/nickserv/mark";
|
||||
loadmodule "/usr/local/modules/nickserv/pwquality";
|
||||
loadmodule "/usr/local/modules/nickserv/freeze";
|
||||
loadmodule "/usr/local/modules/nickserv/listchans";
|
||||
loadmodule "/usr/local/modules/nickserv/listgroups";
|
||||
loadmodule "/usr/local/modules/nickserv/register";
|
||||
loadmodule "/usr/local/modules/nickserv/regnolimit";
|
||||
loadmodule "/usr/local/modules/nickserv/resetpass";
|
||||
loadmodule "/usr/local/modules/nickserv/restrict";
|
||||
loadmodule "/usr/local/modules/nickserv/return";
|
||||
loadmodule "/usr/local/modules/nickserv/setpass";
|
||||
loadmodule "/usr/local/modules/nickserv/sendpass";
|
||||
# loadmodule "/usr/local/modules/nickserv/sendpass_user";
|
||||
loadmodule "/usr/local/modules/nickserv/set_accountname";
|
||||
loadmodule "/usr/local/modules/nickserv/set_badpasswdmsg";
|
||||
loadmodule "/usr/local/modules/nickserv/set_email";
|
||||
loadmodule "/usr/local/modules/nickserv/set_emailmemos";
|
||||
loadmodule "/usr/local/modules/nickserv/set_enforcetime";
|
||||
loadmodule "/usr/local/modules/nickserv/set_hidemail";
|
||||
# loadmodule "/usr/local/modules/nickserv/set_language";
|
||||
loadmodule "/usr/local/modules/nickserv/set_nevergroup";
|
||||
loadmodule "/usr/local/modules/nickserv/set_neverop";
|
||||
loadmodule "/usr/local/modules/nickserv/set_nogreet";
|
||||
loadmodule "/usr/local/modules/nickserv/set_nomemo";
|
||||
loadmodule "/usr/local/modules/nickserv/set_noop";
|
||||
loadmodule "/usr/local/modules/nickserv/set_nopassword";
|
||||
loadmodule "/usr/local/modules/nickserv/set_password";
|
||||
loadmodule "/usr/local/modules/nickserv/set_privmsg";
|
||||
loadmodule "/usr/local/modules/nickserv/set_private";
|
||||
loadmodule "/usr/local/modules/nickserv/set_property";
|
||||
loadmodule "/usr/local/modules/nickserv/set_pubkey";
|
||||
loadmodule "/usr/local/modules/nickserv/set_quietchg";
|
||||
loadmodule "/usr/local/modules/nickserv/status";
|
||||
loadmodule "/usr/local/modules/nickserv/taxonomy";
|
||||
loadmodule "/usr/local/modules/nickserv/vacation";
|
||||
loadmodule "/usr/local/modules/nickserv/verify";
|
||||
loadmodule "/usr/local/modules/nickserv/vhost";
|
||||
loadmodule "/usr/local/modules/nickserv/waitreg";
|
||||
loadmodule "/usr/local/modules/chanserv/main";
|
||||
loadmodule "/usr/local/modules/chanserv/access";
|
||||
loadmodule "/usr/local/modules/chanserv/akick";
|
||||
loadmodule "/usr/local/modules/chanserv/ban";
|
||||
# loadmodule "/usr/local/modules/chanserv/unban_self";
|
||||
loadmodule "/usr/local/modules/chanserv/bansearch";
|
||||
loadmodule "/usr/local/modules/chanserv/clone";
|
||||
loadmodule "/usr/local/modules/chanserv/close";
|
||||
loadmodule "/usr/local/modules/chanserv/clear";
|
||||
loadmodule "/usr/local/modules/chanserv/clear_akicks";
|
||||
loadmodule "/usr/local/modules/chanserv/clear_bans";
|
||||
loadmodule "/usr/local/modules/chanserv/clear_flags";
|
||||
loadmodule "/usr/local/modules/chanserv/clear_users";
|
||||
loadmodule "/usr/local/modules/chanserv/count";
|
||||
loadmodule "/usr/local/modules/chanserv/drop";
|
||||
loadmodule "/usr/local/modules/chanserv/fflags";
|
||||
loadmodule "/usr/local/modules/chanserv/flags";
|
||||
loadmodule "/usr/local/modules/chanserv/ftransfer";
|
||||
loadmodule "/usr/local/modules/chanserv/getkey";
|
||||
loadmodule "/usr/local/modules/chanserv/halfop";
|
||||
loadmodule "/usr/local/modules/chanserv/help";
|
||||
loadmodule "/usr/local/modules/chanserv/hold";
|
||||
loadmodule "/usr/local/modules/chanserv/info";
|
||||
loadmodule "/usr/local/modules/chanserv/invite";
|
||||
loadmodule "/usr/local/modules/chanserv/kick";
|
||||
loadmodule "/usr/local/modules/chanserv/list";
|
||||
loadmodule "/usr/local/modules/chanserv/mark";
|
||||
loadmodule "/usr/local/modules/chanserv/moderate";
|
||||
loadmodule "/usr/local/modules/chanserv/op";
|
||||
loadmodule "/usr/local/modules/chanserv/owner";
|
||||
loadmodule "/usr/local/modules/chanserv/protect";
|
||||
loadmodule "/usr/local/modules/chanserv/quiet";
|
||||
loadmodule "/usr/local/modules/chanserv/recover";
|
||||
loadmodule "/usr/local/modules/chanserv/register";
|
||||
loadmodule "/usr/local/modules/chanserv/set_email";
|
||||
loadmodule "/usr/local/modules/chanserv/set_entrymsg";
|
||||
loadmodule "/usr/local/modules/chanserv/set_fantasy";
|
||||
loadmodule "/usr/local/modules/chanserv/set_gameserv";
|
||||
loadmodule "/usr/local/modules/chanserv/set_guard";
|
||||
loadmodule "/usr/local/modules/chanserv/set_keeptopic";
|
||||
loadmodule "/usr/local/modules/chanserv/set_limitflags";
|
||||
loadmodule "/usr/local/modules/chanserv/set_mlock";
|
||||
loadmodule "/usr/local/modules/chanserv/set_prefix";
|
||||
loadmodule "/usr/local/modules/chanserv/set_private";
|
||||
loadmodule "/usr/local/modules/chanserv/set_property";
|
||||
loadmodule "/usr/local/modules/chanserv/set_pubacl";
|
||||
loadmodule "/usr/local/modules/chanserv/set_restricted";
|
||||
loadmodule "/usr/local/modules/chanserv/set_secure";
|
||||
loadmodule "/usr/local/modules/chanserv/set_topiclock";
|
||||
loadmodule "/usr/local/modules/chanserv/set_url";
|
||||
loadmodule "/usr/local/modules/chanserv/set_verbose";
|
||||
loadmodule "/usr/local/modules/chanserv/status";
|
||||
loadmodule "/usr/local/modules/chanserv/sync";
|
||||
loadmodule "/usr/local/modules/chanserv/successor_acl";
|
||||
loadmodule "/usr/local/modules/chanserv/taxonomy";
|
||||
loadmodule "/usr/local/modules/chanserv/template";
|
||||
loadmodule "/usr/local/modules/chanserv/topic";
|
||||
loadmodule "/usr/local/modules/chanserv/voice";
|
||||
loadmodule "/usr/local/modules/chanserv/why";
|
||||
loadmodule "/usr/local/modules/chanserv/xop";
|
||||
loadmodule "/usr/local/modules/chanserv/antiflood";
|
||||
loadmodule "/usr/local/modules/chanfix/main";
|
||||
loadmodule "/usr/local/modules/operserv/akill";
|
||||
loadmodule "/usr/local/modules/operserv/clearchan";
|
||||
loadmodule "/usr/local/modules/operserv/clones";
|
||||
loadmodule "/usr/local/modules/operserv/compare";
|
||||
loadmodule "/usr/local/modules/operserv/genhash";
|
||||
loadmodule "/usr/local/modules/operserv/greplog";
|
||||
loadmodule "/usr/local/modules/operserv/help";
|
||||
loadmodule "/usr/local/modules/operserv/identify";
|
||||
loadmodule "/usr/local/modules/operserv/ignore";
|
||||
loadmodule "/usr/local/modules/operserv/info";
|
||||
loadmodule "/usr/local/modules/operserv/joinrate";
|
||||
loadmodule "/usr/local/modules/operserv/jupe";
|
||||
loadmodule "/usr/local/modules/operserv/mode";
|
||||
loadmodule "/usr/local/modules/operserv/modlist";
|
||||
loadmodule "/usr/local/modules/operserv/modmanager";
|
||||
loadmodule "/usr/local/modules/operserv/noop";
|
||||
loadmodule "/usr/local/modules/operserv/rakill";
|
||||
loadmodule "/usr/local/modules/operserv/readonly";
|
||||
loadmodule "/usr/local/modules/operserv/rehash";
|
||||
loadmodule "/usr/local/modules/operserv/restart";
|
||||
loadmodule "/usr/local/modules/operserv/rmatch";
|
||||
loadmodule "/usr/local/modules/operserv/rnc";
|
||||
loadmodule "/usr/local/modules/operserv/rwatch";
|
||||
# loadmodule "/usr/local/modules/operserv/set";
|
||||
# loadmodule "/usr/local/modules/operserv/sgline";
|
||||
loadmodule "/usr/local/modules/operserv/shutdown";
|
||||
loadmodule "/usr/local/modules/operserv/soper";
|
||||
loadmodule "/usr/local/modules/operserv/specs";
|
||||
loadmodule "/usr/local/modules/operserv/sqline";
|
||||
loadmodule "/usr/local/modules/operserv/update";
|
||||
loadmodule "/usr/local/modules/operserv/uptime";
|
||||
loadmodule "/usr/local/modules/memoserv/help";
|
||||
loadmodule "/usr/local/modules/memoserv/send";
|
||||
loadmodule "/usr/local/modules/memoserv/sendops";
|
||||
loadmodule "/usr/local/modules/memoserv/sendgroup";
|
||||
loadmodule "/usr/local/modules/memoserv/list";
|
||||
loadmodule "/usr/local/modules/memoserv/read";
|
||||
loadmodule "/usr/local/modules/memoserv/forward";
|
||||
loadmodule "/usr/local/modules/memoserv/delete";
|
||||
loadmodule "/usr/local/modules/memoserv/ignore";
|
||||
loadmodule "/usr/local/modules/global/main";
|
||||
loadmodule "/usr/local/modules/infoserv/main";
|
||||
loadmodule "/usr/local/modules/saslserv/authcookie";
|
||||
loadmodule "/usr/local/modules/saslserv/ecdh-x25519-challenge";
|
||||
loadmodule "/usr/local/modules/saslserv/ecdsa-nist256p-challenge";
|
||||
loadmodule "/usr/local/modules/saslserv/external";
|
||||
loadmodule "/usr/local/modules/saslserv/plain";
|
||||
# loadmodule "/usr/local/modules/saslserv/scram";
|
||||
loadmodule "/usr/local/modules/gameserv/dice";
|
||||
loadmodule "/usr/local/modules/gameserv/eightball";
|
||||
loadmodule "/usr/local/modules/gameserv/gamecalc";
|
||||
loadmodule "/usr/local/modules/gameserv/help";
|
||||
loadmodule "/usr/local/modules/gameserv/lottery";
|
||||
loadmodule "/usr/local/modules/gameserv/namegen";
|
||||
loadmodule "/usr/local/modules/gameserv/rps";
|
||||
loadmodule "/usr/local/modules/rpgserv/enable";
|
||||
loadmodule "/usr/local/modules/rpgserv/help";
|
||||
loadmodule "/usr/local/modules/rpgserv/info";
|
||||
loadmodule "/usr/local/modules/rpgserv/list";
|
||||
loadmodule "/usr/local/modules/rpgserv/search";
|
||||
loadmodule "/usr/local/modules/rpgserv/set";
|
||||
loadmodule "/usr/local/modules/botserv/main";
|
||||
loadmodule "/usr/local/modules/botserv/help";
|
||||
loadmodule "/usr/local/modules/botserv/info";
|
||||
loadmodule "/usr/local/modules/botserv/bottalk";
|
||||
loadmodule "/usr/local/modules/botserv/set_fantasy";
|
||||
loadmodule "/usr/local/modules/botserv/set_nobot";
|
||||
loadmodule "/usr/local/modules/botserv/set_private";
|
||||
loadmodule "/usr/local/modules/botserv/set_saycaller";
|
||||
loadmodule "/usr/local/modules/hostserv/help";
|
||||
loadmodule "/usr/local/modules/hostserv/onoff";
|
||||
loadmodule "/usr/local/modules/hostserv/offer";
|
||||
loadmodule "/usr/local/modules/hostserv/request";
|
||||
loadmodule "/usr/local/modules/hostserv/vhost";
|
||||
loadmodule "/usr/local/modules/hostserv/vhostnick";
|
||||
loadmodule "/usr/local/modules/hostserv/group";
|
||||
loadmodule "/usr/local/modules/hostserv/drop";
|
||||
loadmodule "/usr/local/modules/helpserv/helpme";
|
||||
loadmodule "/usr/local/modules/helpserv/ticket";
|
||||
loadmodule "/usr/local/modules/helpserv/services";
|
||||
loadmodule "/usr/local/modules/alis/main";
|
||||
loadmodule "/usr/local/modules/statserv/channel";
|
||||
loadmodule "/usr/local/modules/statserv/netsplit";
|
||||
loadmodule "/usr/local/modules/statserv/server";
|
||||
loadmodule "/usr/local/modules/groupserv/main";
|
||||
loadmodule "/usr/local/modules/groupserv/acsnolimit";
|
||||
loadmodule "/usr/local/modules/groupserv/drop";
|
||||
loadmodule "/usr/local/modules/groupserv/fflags";
|
||||
loadmodule "/usr/local/modules/groupserv/flags";
|
||||
loadmodule "/usr/local/modules/groupserv/help";
|
||||
loadmodule "/usr/local/modules/groupserv/info";
|
||||
loadmodule "/usr/local/modules/groupserv/join";
|
||||
loadmodule "/usr/local/modules/groupserv/list";
|
||||
loadmodule "/usr/local/modules/groupserv/listchans";
|
||||
loadmodule "/usr/local/modules/groupserv/register";
|
||||
loadmodule "/usr/local/modules/groupserv/regnolimit";
|
||||
loadmodule "/usr/local/modules/groupserv/invite";
|
||||
loadmodule "/usr/local/modules/groupserv/set";
|
||||
loadmodule "/usr/local/modules/groupserv/set_channel";
|
||||
loadmodule "/usr/local/modules/groupserv/set_description";
|
||||
loadmodule "/usr/local/modules/groupserv/set_email";
|
||||
loadmodule "/usr/local/modules/groupserv/set_groupname";
|
||||
loadmodule "/usr/local/modules/groupserv/set_joinflags";
|
||||
loadmodule "/usr/local/modules/groupserv/set_open";
|
||||
loadmodule "/usr/local/modules/groupserv/set_public";
|
||||
loadmodule "/usr/local/modules/groupserv/set_url";
|
||||
loadmodule "/usr/local/modules/misc/httpd";
|
||||
loadmodule "/usr/local/modules/misc/login_throttling";
|
||||
loadmodule "/usr/local/modules/transport/xmlrpc";
|
||||
loadmodule "/usr/local/modules/exttarget/oper";
|
||||
loadmodule "/usr/local/modules/exttarget/registered";
|
||||
loadmodule "/usr/local/modules/exttarget/channel";
|
||||
loadmodule "/usr/local/modules/exttarget/chanacs";
|
||||
loadmodule "/usr/local/modules/exttarget/server";
|
||||
loadmodule "/usr/local/modules/proxyscan/dnsbl";
|
||||
include "/usr/local/etc/include.conf";
|
||||
|
||||
crypto {
|
||||
argon2_type = "argon2id";
|
||||
argon2_memcost = 16;
|
||||
argon2_timecost = 3;
|
||||
argon2_threads = 1;
|
||||
argon2_saltlen = 16;
|
||||
argon2_hashlen = 64;
|
||||
scrypt_memlimit = 14;
|
||||
scrypt_opslimit = 524288;
|
||||
# pbkdf2v2_digest = "SHA256";
|
||||
# pbkdf2v2_rounds = 64000;
|
||||
# pbkdf2v2_saltlen = 32;
|
||||
# scram_mechanisms = "SCRAM-SHA-1,SCRAM-SHA-256";
|
||||
bcrypt_cost = 7;
|
||||
# crypt3_sha2_256_rounds = 5000;
|
||||
# crypt3_sha2_512_rounds = 5000;
|
||||
};
|
||||
|
||||
nickserv {
|
||||
nick = "NICKSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Nickname Services";
|
||||
# spam;
|
||||
# no_nick_ownership;
|
||||
maxnicks = 8;
|
||||
expire = 0;
|
||||
# enforce_expire = 14;
|
||||
enforce_delay = 32;
|
||||
enforce_prefix = "`";
|
||||
waitreg_time = 4;
|
||||
pwquality_warn_only;
|
||||
show_custom_metadata;
|
||||
shorthelp = "";
|
||||
listownmail_canon;
|
||||
bad_password_message;
|
||||
};
|
||||
|
||||
chanserv {
|
||||
nick = "CHANSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Channel Services";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
reggroup = "!Services-Team";
|
||||
maxchans = 5;
|
||||
fantasy;
|
||||
hide_xop;
|
||||
hide_flags_akicks;
|
||||
hide_pubacl_akicks;
|
||||
templates {
|
||||
vop = "+AV";
|
||||
hop = "+AHehitrv";
|
||||
aop = "+AOehiortv";
|
||||
sop = "+AOaefhiorstv";
|
||||
founder = "+AFORaefhioqrstv";
|
||||
member = "+Ai";
|
||||
op = "+AOiortv";
|
||||
};
|
||||
deftemplates = "MEMBER=+Ai OP=+AOeiortv";
|
||||
changets;
|
||||
trigger = "!";
|
||||
expire = 30;
|
||||
maxchanacs = 0;
|
||||
maxfounders = 4;
|
||||
founder_flags = "AFORefiorstv";
|
||||
default_mlock = "+nt";
|
||||
akick_time = 10;
|
||||
antiflood_enforce_method = quiet;
|
||||
show_custom_metadata;
|
||||
shorthelp = "";
|
||||
};
|
||||
|
||||
chanfix {
|
||||
nick = "CHANFIX";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Channel Fixing Service";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
autofix;
|
||||
};
|
||||
|
||||
global {
|
||||
nick = "GLOBAL";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Network Announcements";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
};
|
||||
|
||||
infoserv {
|
||||
nick = "INFOSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Information Service";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
logoninfo_count = 4;
|
||||
logoninfo_reverse;
|
||||
logoninfo_show_metadata;
|
||||
};
|
||||
|
||||
operserv {
|
||||
nick = "OPERSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Operator Services";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
modinspect_use_colors;
|
||||
};
|
||||
|
||||
saslserv {
|
||||
nick = "SASLSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "SASL Authentication Agent";
|
||||
hide_server_names;
|
||||
};
|
||||
|
||||
memoserv {
|
||||
nick = "MEMOSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Memo Services";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
maxmemos = 64;
|
||||
};
|
||||
|
||||
gameserv {
|
||||
nick = "GAMESERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Game Services";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
};
|
||||
|
||||
rpgserv {
|
||||
nick = "RPGSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "RPG Finding Services";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
};
|
||||
|
||||
botserv {
|
||||
nick = "BOTSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Bot Services";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
min_users = 0;
|
||||
};
|
||||
|
||||
groupserv {
|
||||
nick = "GROUPSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Group Management Services";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
maxgroups = 16;
|
||||
maxgroupacs = 256;
|
||||
enable_open_groups;
|
||||
join_flags = "+";
|
||||
};
|
||||
|
||||
hostserv {
|
||||
nick = "HOSTSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Host Management Services";
|
||||
aliases {
|
||||
"APPROVE" = "ACTIVATE";
|
||||
"DENY" = "REJECT";
|
||||
};
|
||||
access {
|
||||
};
|
||||
reggroup = "!Services-Team";
|
||||
no_subsequent_requests;
|
||||
request_per_nick;
|
||||
};
|
||||
|
||||
helpserv {
|
||||
nick = "HELPSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Help Services";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
};
|
||||
|
||||
statserv {
|
||||
nick = "STATSERV";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Statistics Services";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
};
|
||||
|
||||
alis {
|
||||
nick = "ALIS";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Channel Directory";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
maxmatches = 128;
|
||||
};
|
||||
|
||||
proxyscan {
|
||||
nick = "PROXYSCAN";
|
||||
user = "_";
|
||||
host = "services/SuperNETs";
|
||||
real = "Proxyscan Service";
|
||||
aliases {
|
||||
};
|
||||
access {
|
||||
};
|
||||
blacklists {
|
||||
"dnsbl.dronebl.org";
|
||||
"rbl.efnetrbl.org";
|
||||
"tor.efnet.org";
|
||||
};
|
||||
dnsbl_action = snoop;
|
||||
};
|
||||
|
||||
httpd {
|
||||
host = "127.0.0.1";
|
||||
# host = "::";
|
||||
www_root = "/var/www";
|
||||
port = 8080;
|
||||
};
|
||||
|
||||
throttle {
|
||||
address_burst = 5;
|
||||
address_replenish = 1;
|
||||
address_account_burst = 2;
|
||||
address_account_replenish = 2;
|
||||
};
|
||||
|
||||
logfile "/var/log/atheme/account.log" { register; set; };
|
||||
logfile "/var/log/atheme/commands.log" { commands; };
|
||||
logfile "/var/log/atheme/audit.log" { denycmd; };
|
||||
logfile "#services" { admin; denycmd; error; info; register; request; };
|
||||
logfile "!snotices" { denycmd; error; info; request; };
|
||||
|
||||
operclass "user" { };
|
||||
|
||||
operclass "ircop" {
|
||||
privs {
|
||||
special:ircop;
|
||||
};
|
||||
privs {
|
||||
user:auspex;
|
||||
user:admin;
|
||||
user:sendpass;
|
||||
user:vhost;
|
||||
user:mark;
|
||||
};
|
||||
privs {
|
||||
chan:auspex;
|
||||
chan:admin;
|
||||
chan:cmodes;
|
||||
chan:joinstaffonly;
|
||||
};
|
||||
privs {
|
||||
general:auspex;
|
||||
general:helper;
|
||||
general:viewprivs;
|
||||
general:flood;
|
||||
};
|
||||
privs {
|
||||
operserv:omode;
|
||||
operserv:akill;
|
||||
operserv:jupe;
|
||||
operserv:global;
|
||||
};
|
||||
privs {
|
||||
group:auspex;
|
||||
group:admin;
|
||||
};
|
||||
};
|
||||
|
||||
operclass "sra" {
|
||||
extends "ircop";
|
||||
privs {
|
||||
user:exceedlimits;
|
||||
user:hold;
|
||||
user:regnolimit;
|
||||
};
|
||||
privs {
|
||||
general:metadata;
|
||||
general:admin;
|
||||
};
|
||||
privs {
|
||||
operserv:massakill;
|
||||
operserv:akill-anymask;
|
||||
operserv:noop;
|
||||
operserv:grant;
|
||||
};
|
||||
# needoper;
|
||||
};
|
72
data/include.default.conf
Executable file
72
data/include.default.conf
Executable file
@ -0,0 +1,72 @@
|
||||
serverinfo {
|
||||
name = "services.supernets.org";
|
||||
desc = "IRC Services";
|
||||
numeric = "10X";
|
||||
recontime = 4;
|
||||
netname = "SuperNETs";
|
||||
hidehostsuffix = "hidden";
|
||||
adminname = "admin";
|
||||
adminemail = "no-reply@supernets.org";
|
||||
registeremail = "no-reply@supernets.org";
|
||||
# hidden;
|
||||
# mta = "/usr/sbin/sendmail";
|
||||
loglevel = { admin; error; info; network; wallops; };
|
||||
maxcertfp = 8;
|
||||
maxlogins = 8;
|
||||
maxusers = 8;
|
||||
mdlimit = 64;
|
||||
emaillimit = 8;
|
||||
emailtime = 256;
|
||||
auth = none;
|
||||
casemapping = rfc1459;
|
||||
};
|
||||
|
||||
uplink "hub.supernets.org" {
|
||||
host = "127.0.0.1";
|
||||
port = 6000;
|
||||
send_password = "changeme";
|
||||
receive_password = "changeme";
|
||||
};
|
||||
|
||||
operator "admin" {
|
||||
operclass = "sra";
|
||||
password = "changeme";
|
||||
};
|
||||
|
||||
general {
|
||||
# permissive_mode; # https://github.com/atheme/atheme/issues/937
|
||||
helpchan = "#help";
|
||||
helpurl = "https://www.supernets.org";
|
||||
verbose_wallops;
|
||||
join_chans;
|
||||
leave_chans;
|
||||
uflags = { hidemail; };
|
||||
cflags = { verbose; verbose_ops; keeptopic; guard; };
|
||||
flood_msgs = 0;
|
||||
flood_time = 10;
|
||||
# ratelimit_uses = 5;
|
||||
# ratelimit_period = 60;
|
||||
# vhost_change = 30;
|
||||
kline_time = 1;
|
||||
# kline_with_ident;
|
||||
kline_verified_ident;
|
||||
clone_time = 0;
|
||||
commit_interval = 16;
|
||||
db_save_blocking;
|
||||
operstring = "is an IRC Operator";
|
||||
servicestring = "is a Network Service";
|
||||
default_clone_allowed = 8;
|
||||
default_clone_warn = 4;
|
||||
clone_identified_increase_limit;
|
||||
# uplink_sendq_limit = 1048576;
|
||||
language = "en";
|
||||
exempts {
|
||||
};
|
||||
# allow_taint;
|
||||
immune_level = ircop;
|
||||
show_entity_id;
|
||||
# load_database_mdeps;
|
||||
hide_opers;
|
||||
match_masks_through_vhost;
|
||||
default_password_length = 16;
|
||||
};
|
@ -1,25 +1,16 @@
|
||||
services:
|
||||
anope:
|
||||
ulimits:
|
||||
nofile:
|
||||
soft: "102400"
|
||||
hard: "102400"
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "64k"
|
||||
restart: always
|
||||
atheme:
|
||||
build:
|
||||
context: .
|
||||
args:
|
||||
BUILD_SERVER_NAME: ${SERVER_NAME}
|
||||
image: anope
|
||||
image: atheme
|
||||
command: ${DAEMON_FLAGS}
|
||||
network_mode: "host"
|
||||
env_file: "config.env"
|
||||
volumes:
|
||||
- ./custom:/etc/anope/custom:rw
|
||||
- ./include.conf:/etc/anope/include.conf:ro
|
||||
- log:/var/log/anope
|
||||
- ./data:/etc/atheme
|
||||
- log:/var/log/atheme
|
||||
volumes:
|
||||
log:
|
||||
name: anope_log
|
||||
name: atheme_log
|
||||
|
@ -1,97 +0,0 @@
|
||||
uplink
|
||||
{
|
||||
host = 127.0.0.1
|
||||
protocol = "ipv4"
|
||||
ssl = yes
|
||||
port = "7000"
|
||||
password = changeme
|
||||
}
|
||||
|
||||
serverinfo
|
||||
{
|
||||
name = services.lame-network.local
|
||||
description = "IRC Services"
|
||||
localhost = 127.0.0.1
|
||||
id = 10X
|
||||
pid = "/tmp/anope.pid"
|
||||
motd = "/etc/anope/motd.txt"
|
||||
}
|
||||
|
||||
networkinfo
|
||||
{
|
||||
networkname = "NetcraveIRC"
|
||||
nicklen = 31
|
||||
userlen = 10
|
||||
hostlen = 64
|
||||
chanlen = 32
|
||||
modelistsize = 256
|
||||
nick_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
|
||||
vhost_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-"
|
||||
allow_undotted_vhosts = true
|
||||
disallow_start_or_end = ".-"
|
||||
}
|
||||
|
||||
mail
|
||||
{
|
||||
usemail = no
|
||||
sendmailpath = "/usr/sbin/sendmail -it"
|
||||
sendfrom = "no-reply@lame-network.local"
|
||||
delay = 5m
|
||||
dontquoteaddresses = no
|
||||
content_type = "text/plain; charset=UTF-8"
|
||||
registration_subject = "Nickname registration for %n"
|
||||
registration_message = "Hi,
|
||||
|
||||
You have requested to register the nickname %n on %N.
|
||||
Please type \" /msg NickServ CONFIRM %c \" to complete registration.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%N administrators."
|
||||
|
||||
reset_subject = "Reset password request for %n"
|
||||
reset_message = "Hi,
|
||||
|
||||
You have requested to have the password for %n reset.
|
||||
To reset your password, type \" /msg NickServ CONFIRM %n %c \"
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%N administrators."
|
||||
|
||||
emailchange_subject = "Email confirmation"
|
||||
emailchange_message = "Hi,
|
||||
|
||||
You have requested to change your email address from %e to %E.
|
||||
Please type \" /msg NickServ CONFIRM %c \" to confirm this change.
|
||||
|
||||
If you don't know why this mail was sent to you, please ignore it silently.
|
||||
|
||||
%N administrators."
|
||||
|
||||
memo_subject = "New memo"
|
||||
memo_message = "Hi %n,
|
||||
|
||||
You've just received a new memo from %s. This is memo number %d.
|
||||
|
||||
Memo text:
|
||||
|
||||
%t"
|
||||
}
|
||||
|
||||
oper
|
||||
{
|
||||
name = "admin"
|
||||
type = "Services Root"
|
||||
require_oper = yes
|
||||
}
|
||||
|
||||
module
|
||||
{
|
||||
name = "db_flatfile"
|
||||
database = "/var/lib/anope/anope.db"
|
||||
fork = no
|
||||
nobackupokay = yes
|
||||
keepbackups = 3
|
||||
}
|
||||
|
3
ssl/.gitignore
vendored
Normal file
3
ssl/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
*
|
||||
!.gitignore
|
||||
!ca.crt
|
40
ssl/ca.crt
Normal file
40
ssl/ca.crt
Normal file
@ -0,0 +1,40 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIG+TCCBOGgAwIBAgIUTnY+1MZsN286sT+G2i8UWe3VjZwwDQYJKoZIhvcNAQEL
|
||||
BQAwgaIxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
|
||||
DA1TYW4gRnJhbmNpc2NvMRIwEAYDVQQKDAlTdXBlck5FVHMxDDAKBgNVBAsMA0lS
|
||||
QzEdMBsGA1UEAwwUY2EudGFpbDkxMjJjOC50cy5uZXQxJTAjBgkqhkiG9w0BCQEW
|
||||
Fm5vLXJlcGx5QHN1cGVybmV0cy5vcmcwHhcNMjQxMTA2MTkzMDM3WhcNMzQxMTA0
|
||||
MTkzMDM3WjCBojELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAU
|
||||
BgNVBAcMDVNhbiBGcmFuY2lzY28xEjAQBgNVBAoMCVN1cGVyTkVUczEMMAoGA1UE
|
||||
CwwDSVJDMR0wGwYDVQQDDBRjYS50YWlsOTEyMmM4LnRzLm5ldDElMCMGCSqGSIb3
|
||||
DQEJARYWbm8tcmVwbHlAc3VwZXJuZXRzLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQAD
|
||||
ggIPADCCAgoCggIBAKSUdSIh1QLRB+rP0CrLd9T3zMSnA6o0ToIiSwJFjDqZ6F3v
|
||||
ZtYnZMD0OiNCJe89KNngaLbTY9CY5Yds2b9g3PemdAM1Kle9hMom+W6Q17T4oA2q
|
||||
0hrJkvf4sFQo1P0P6KEQSWRPqSwQ7h10DQYNEvZ7Q9LCAsgHoCmVXZIdAm6fRZmM
|
||||
ihTkXm0K24aTS8k/Tjgq+NsMulw0Z5SA19INvq+jk4AnYcqwuFPbPHdcKdfXryLh
|
||||
M8dXbUQbv0z8tLGptLqr56ESnf3QuP9ad86hx22WxesJxnR7JwHBjWdlwO1hAdOa
|
||||
QZjlcJxejIyYwHAU1FSpYdbH++HuQ6kd+DvREEF6FOVMlIyYqwHzo4fm9mzrne7s
|
||||
NLTQWp2wnzv3RB2/Q2sMwd3ccG7SWfo7iCOXIYaEwGbjduk2/4y388uBAfbofT+T
|
||||
8hAWgPVVEJiCpQ2cMzscQxA1mAk3WDB1fz9lHwMrlgBRa/Tftj3jVogdVPl5fDsD
|
||||
/2sCQgVQ68ABT6hlzMp56iayhZu1jjnBc/fTKK40NHCh7WNvZgJ9pR4Lpqzmt6JA
|
||||
Z4iY5WtHehg+xwhFoAfjjZdCiWvLNmfzet+PmW+D9c8V17faMMNfLsHTxHjzABoc
|
||||
2jFSdGNOyoI1DPKDEw6f/ZlNY67YOesiozbvH+XBurFhzh04hkyPkKWSZnqhAgMB
|
||||
AAGjggEjMIIBHzAMBgNVHRMEBTADAQH/MB0GA1UdDgQWBBRI9BMsv2VBGfUEfJjN
|
||||
s1Fb2B68zDCB4gYDVR0jBIHaMIHXgBRI9BMsv2VBGfUEfJjNs1Fb2B68zKGBqKSB
|
||||
pTCBojELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkNhbGlmb3JuaWExFjAUBgNVBAcM
|
||||
DVNhbiBGcmFuY2lzY28xEjAQBgNVBAoMCVN1cGVyTkVUczEMMAoGA1UECwwDSVJD
|
||||
MR0wGwYDVQQDDBRjYS50YWlsOTEyMmM4LnRzLm5ldDElMCMGCSqGSIb3DQEJARYW
|
||||
bm8tcmVwbHlAc3VwZXJuZXRzLm9yZ4IUTnY+1MZsN286sT+G2i8UWe3VjZwwCwYD
|
||||
VR0PBAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQAUfhnquPlKvCB/l47JZaC0V+wR
|
||||
aAJlbCjqwCsfOJqE381i1yKBc7Dbk0rYmS68fjDDyeGs6Av/9wj6RZ4+WoY47WYL
|
||||
fYCGF/HAFqyKllAfzKF+nvvBP8mKVOZX/QTlZKBD7biTjHTJSUou6y9LkRAwm7yw
|
||||
cRHkJkPwPCHihLcn0MLdlf8vRrTCZqZ1wEiRd0jIPkrBdpYoc3ENg+3zQGkPnCsD
|
||||
L1LwbiL7d1WASZ5cAxKKMl7rqA8oHCH8Ffou4DyK+igeEhcOxTu1A2jSpIAHjLZv
|
||||
aoWy/aEl4QO1QmY4CTftb2qgX5rr7EDLRK4paqFMsPfv8nCK3w8KmwZ/s1rlYt10
|
||||
oVoO3SJF+PRl78bMiuv55k+4UHh1S17fHuYKz31eGVkj9AfIec4FPewq4hHnLYO6
|
||||
F5tX96OlTubweeNioZauKv4pynwleIhjnzW0af50beaGulJmY83gCenyQcxxdTxu
|
||||
B7bmdj11/knCdFy0CKjZmvFNc99ujkH8Bac/qViHwjctWJ87mNLxHvlHQSMe9e7f
|
||||
Z2FmtlL0tlFl4KSX3RLXBt5MzRq2zbGY6eAjm2Ld3F+/bPYoyi4t1dUZh9BglTUb
|
||||
fW0A6bn325JCOPAMvyyBs4M4yeaUm5wep+KB1VyLhbm39OFotNz5oXZ/2WhQQK1E
|
||||
WOpWX6M4m8GQTXG1IA==
|
||||
-----END CERTIFICATE-----
|
1
stunnel/.gitignore
vendored
Normal file
1
stunnel/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
stunnel.conf
|
11
stunnel/Dockerfile
Normal file
11
stunnel/Dockerfile
Normal file
@ -0,0 +1,11 @@
|
||||
ARG UBUNTU_VERSION="noble"
|
||||
|
||||
FROM ubuntu:${UBUNTU_VERSION}
|
||||
|
||||
RUN apt -y update
|
||||
|
||||
RUN apt -y install stunnel
|
||||
|
||||
ADD stunnel.conf /etc/stunnel/stunnel.conf
|
||||
|
||||
CMD stunnel
|
20
stunnel/docker-compose.yml
Normal file
20
stunnel/docker-compose.yml
Normal file
@ -0,0 +1,20 @@
|
||||
services:
|
||||
stunnel:
|
||||
restart: on-failure:3
|
||||
build:
|
||||
context: .
|
||||
image: stunnel
|
||||
network_mode: "host"
|
||||
volumes:
|
||||
- ../ssl/ca.crt:/ca.crt:ro
|
||||
- ../ssl/server.crt:/server.crt:ro
|
||||
- ../ssl/server.key:/server.key:ro
|
||||
- ./stunnel.conf:/etc/stunnel/stunnel.conf:ro
|
||||
ulimits:
|
||||
nofile:
|
||||
soft: "102400"
|
||||
hard: "102400"
|
||||
logging:
|
||||
driver: "json-file"
|
||||
options:
|
||||
max-size: "64k"
|
9
stunnel/stunnel.conf.example
Normal file
9
stunnel/stunnel.conf.example
Normal file
@ -0,0 +1,9 @@
|
||||
foreground = yes
|
||||
|
||||
[PKI client]
|
||||
client = yes
|
||||
accept = 127.0.0.1:6000
|
||||
connect = 100.79.209.72:7777
|
||||
CAfile = /ca.crt
|
||||
verifyChain = yes
|
||||
checkHost = super-temple.lame-server.local
|
1
tools/.gitignore
vendored
Normal file
1
tools/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
anope.db
|
410
tools/anope2atheme.php
Normal file
410
tools/anope2atheme.php
Normal file
@ -0,0 +1,410 @@
|
||||
<?php
|
||||
/**
|
||||
* Created by Klaas Tammling. (https://gist.github.com/KlaasT/449b28c63db129a7714d41b8e2074d90)
|
||||
* Project: anope2atheme
|
||||
* User: ktammling
|
||||
* Date: 10.10.2016
|
||||
* Time: 15:55
|
||||
*/
|
||||
|
||||
$mu_hold = 0x00000001;
|
||||
$mu_neverop = 0x00000002;
|
||||
$mu_noop = 0x00000004;
|
||||
$mu_waitauth = 0x00000008;
|
||||
$mu_hidemail = 0x00000010;
|
||||
$mu_oldalias = 0x00000020;
|
||||
$mu_nomemo = 0x00000040;
|
||||
$mu_emailmemos = 0x00000080;
|
||||
$mu_cryptpass = 0x00000100;
|
||||
$mu_old_sasl = 0x00000200;
|
||||
$mu_noburstlogin = 0x00000400;
|
||||
$mu_enforce = 0x00000800;
|
||||
$mu_usepriv = 0x00001000;
|
||||
$mu_private = 0x00002000;
|
||||
$mu_quietchg = 0x00004000;
|
||||
|
||||
$levels['VOP'] = "+AV";
|
||||
$levels['HOP'] = "+AHehirtv";
|
||||
$levels['AOP'] = "+AOehiortv";
|
||||
$levels['SOP'] = "+AOaefhiorstv";
|
||||
$levels['QOP'] = "+AFORaefhioqrstv";
|
||||
|
||||
$access[1] = "+A";
|
||||
$access[3] = "+VA";
|
||||
$access[4] = "+vHiA";
|
||||
$access[5] = "+vhoOirtA";
|
||||
$access[10] = "+vhoOairRftA";
|
||||
$access[15] = "+vhoOairRftA";
|
||||
$access[20] = "+vhoOairRftA";
|
||||
$access[999] = "+vhoOairRftA";
|
||||
$access[9000] = "+vhoOaqsirRftA";
|
||||
$access[9999] = "+vhoOaqsirRftA";
|
||||
$access[10000] = "+vhoOaqsirRftA";
|
||||
|
||||
$tdata = file_get_contents("anope.db");
|
||||
|
||||
$data = explode("\n", $tdata);
|
||||
unset($tdata);
|
||||
|
||||
$userset = array();
|
||||
#$aliasset = array();
|
||||
$channelset = array();
|
||||
|
||||
$is_mu = false;
|
||||
$is_na = false;
|
||||
$is_cu = false;
|
||||
$is_ca = false;
|
||||
$mu_account = "";
|
||||
$mu_pass = "";
|
||||
$mu_lang = "";
|
||||
$mu_email = "";
|
||||
$mu_register = "";
|
||||
$mu_flags = 0;
|
||||
$channel_flags = "+";
|
||||
$mu_vhost_ident = "";
|
||||
$mu_vhost_host = "";
|
||||
$mu_vhost_creator = "";
|
||||
$mu_vhost_time = "";
|
||||
for($i = 0; $i < count($data); $i++) {
|
||||
|
||||
$line = $data[$i];
|
||||
$data2 = explode(" ", $line);
|
||||
|
||||
if($is_mu or ($data2[0] == 'OBJECT' && $data2[1] == "NickCore")) {
|
||||
$is_md = false;
|
||||
$is_mu = true;
|
||||
$is_cu = false;
|
||||
$is_na = false;
|
||||
|
||||
if (isset($data2[1])) {
|
||||
if ($data2[1] == "pass") {
|
||||
$passvars = explode(":", $data2[2]);
|
||||
$pass = $passvars[1];
|
||||
$mu_pass = '$rawmd5$'.$pass;
|
||||
}
|
||||
|
||||
if ($data2[1] == "display") {
|
||||
$mu_account = $data2[2];
|
||||
}
|
||||
|
||||
if ($data2[1] == "language") {
|
||||
$mu_lang = (isset($data2[2])) ? $data2[2] : "default";
|
||||
}
|
||||
|
||||
if ($data2[1] == "email") {
|
||||
$mu_email = (isset($data2[2])) ? $data2[2] : "admin@st-city.net";
|
||||
}
|
||||
|
||||
if ($data2[1] == "time_registered" && isset($data2[2])) {
|
||||
$mu_register = $data2[2];
|
||||
}
|
||||
|
||||
if($data2[1] == "HIDE_EMAIL")
|
||||
$mu_flags |= $mu_hidemail;
|
||||
|
||||
if($data2[1] == "NS_PRIVATE")
|
||||
$mu_flags |= $mu_private;
|
||||
|
||||
if($data2[1] == "NS_SECURE")
|
||||
$mu_flags |= $mu_enforce;
|
||||
|
||||
$mu_flags = 272;
|
||||
}
|
||||
|
||||
if (!empty($mu_account)) {
|
||||
$userset[$mu_account] = array(
|
||||
"mu_pass" => $mu_pass,
|
||||
"mu_account" => $mu_account,
|
||||
"mu_lang" => $mu_lang,
|
||||
"mu_email" => $mu_email,
|
||||
"mu_register" => $mu_register,
|
||||
"mu_flags" => $mu_flags,
|
||||
);
|
||||
}
|
||||
|
||||
if ($data2[0] == "END") {
|
||||
$mu_account = "";
|
||||
$mu_pass = "";
|
||||
$mu_lang = "";
|
||||
$mu_email = "";
|
||||
$mu_register = "";
|
||||
$is_mu = false;
|
||||
}
|
||||
}
|
||||
|
||||
if($is_na or ($data2[0] == 'OBJECT' && $data2[1] == "NickAlias")) {
|
||||
$is_md = false;
|
||||
$is_mu = false;
|
||||
$is_cu = false;
|
||||
$is_na = true;
|
||||
|
||||
if (isset($data2[1]) && $data2[1]=="nick") {
|
||||
$tmplined = 'MN ' . $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "time_registered") {
|
||||
$mu_register = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1]=="nc") {
|
||||
$mu_account = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "vhost_ident") {
|
||||
$mu_vhost_ident = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "vhost_host") {
|
||||
$mu_vhost_host = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "vhost_creator") {
|
||||
$mu_vhost_creator = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "vhost_time") {
|
||||
$mu_vhost_time = $data2[2];
|
||||
}
|
||||
|
||||
if ($data2[0] == "END") {
|
||||
|
||||
$tmplined .= " ".$mu_account." ".$mu_register." ".time();
|
||||
$lastnick = $mu_account;
|
||||
$lastid = 'NA';
|
||||
|
||||
$dataNA = explode(" ", $tmplined);
|
||||
if (!empty($userset[$dataNA[1]])) {
|
||||
$userset[$dataNA[2]]['mu_register'] = $mu_register;
|
||||
}
|
||||
else {
|
||||
$userset[$dataNA[2]]['aliases'][$dataNA[1]] = array(
|
||||
"mu_register" => $mu_register,
|
||||
"last_seen" => time(),
|
||||
);
|
||||
|
||||
$userset[$dataNA[2]]['mu_register'] = $mu_register;
|
||||
}
|
||||
|
||||
if (!empty($mu_vhost_host)) {
|
||||
|
||||
$userset[$mu_account]['vhost_ident'] = $mu_vhost_ident;
|
||||
$userset[$mu_account]['vhost_host'] = $mu_vhost_host;
|
||||
$userset[$mu_account]['vhost_creator'] = $mu_vhost_creator;
|
||||
$userset[$mu_account]['vhost_time'] = $mu_vhost_time;
|
||||
}
|
||||
|
||||
$mu_vhost_ident = "";
|
||||
$mu_vhost_host = "";
|
||||
$mu_vhost_creator = "";
|
||||
$mu_vhost_time = "";
|
||||
|
||||
$mu_account = "";
|
||||
$mu_pass = "";
|
||||
$mu_lang = "";
|
||||
$mu_email = "";
|
||||
$mu_register = "";
|
||||
$is_na = false;
|
||||
$tmplined = "";
|
||||
}
|
||||
}
|
||||
|
||||
if($is_cu or ($data2[0] == 'OBJECT' && $data2[1] == "ChannelInfo")) {
|
||||
|
||||
$is_md = false;
|
||||
$is_mu = false;
|
||||
$is_cu = true;
|
||||
$is_na = false;
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'name') {
|
||||
$cu_name = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'time_registered') {
|
||||
$cu_register = $data2[2];
|
||||
}
|
||||
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'last_used') {
|
||||
$cu_last_used = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'founder') {
|
||||
$cu_founder = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'last_topic') {
|
||||
$cu_last_topic = "";
|
||||
for($i2 = 2; $i2 < count($data2); $i2++) {
|
||||
if (!empty($cu_last_topic)) {
|
||||
$cu_last_topic .= " ".$data2[$i2];
|
||||
}
|
||||
else {
|
||||
$cu_last_topic .= $data2[$i2];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'last_topic_setter') {
|
||||
$cu_last_topic_setter = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'last_topic_time') {
|
||||
$cu_last_topic_time = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'KEEPTOPIC') {
|
||||
if ($data2[2] == "1") {
|
||||
$channel_flags .= "k";
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'CS_SECURE') {
|
||||
if ($data2[2] == "1") {
|
||||
$channel_flags .= "z";
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'CS_PRIVATE') {
|
||||
if ($data2[2] == "1") {
|
||||
$channel_flags .= "p";
|
||||
}
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == 'CS_RESTRICT') {
|
||||
if ($data2[2] == "1") {
|
||||
$channel_flags .= "r";
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($cu_name)) {
|
||||
$channelset[$cu_name] = array(
|
||||
"cu_name" => $cu_name,
|
||||
"cu_register" => $cu_register,
|
||||
"cu_last_used" => $cu_last_used,
|
||||
"cu_founder" => $cu_founder,
|
||||
"cu_last_topic" => $cu_last_topic,
|
||||
"cu_last_topic_setter" => $cu_last_topic_setter,
|
||||
"cu_last_topic_time" => $cu_last_topic_time,
|
||||
##"channel_flags" => $channel_flags,
|
||||
"channel_flags" => 600,
|
||||
);
|
||||
}
|
||||
|
||||
if ($data2[0] == "END") {
|
||||
$is_cu = false;
|
||||
$cu_name = "";
|
||||
$cu_register = 0;
|
||||
$cu_last_used = 0;
|
||||
$cu_founder = "";
|
||||
$cu_last_topic = "";
|
||||
$cu_last_topic_setter = "";
|
||||
$cu_last_topic_time = 0;
|
||||
$channel_flags = "+";
|
||||
}
|
||||
}
|
||||
|
||||
if($is_ca or ($data2[0] == 'OBJECT' && $data2[1] == "ChanAccess")) {
|
||||
$is_md = false;
|
||||
$is_mu = false;
|
||||
$is_cu = false;
|
||||
$is_na = false;
|
||||
$is_ca = true;
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "provider") {
|
||||
$ca_provider = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "ci") {
|
||||
$ca_channel = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "mask") {
|
||||
$ca_mask = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "creator") {
|
||||
$ca_creator = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "created") {
|
||||
$ca_created = $data2[2];
|
||||
}
|
||||
|
||||
if (isset($data2[1]) && $data2[1] == "data") {
|
||||
if ($ca_provider == "access/xop") {
|
||||
$ca_level = $levels[$data2[2]];
|
||||
}
|
||||
else if ($ca_provider == "access/access") {
|
||||
$ca_level = $access[$data2[2]];
|
||||
}
|
||||
}
|
||||
|
||||
if ($data2[0] == "END") {
|
||||
$channel_access = array(
|
||||
"ca_channel" => $ca_channel,
|
||||
"ca_mask" => $ca_mask,
|
||||
"ca_creator" => $ca_creator,
|
||||
"ca_created" => $ca_created,
|
||||
"ca_level" => $ca_level,
|
||||
);
|
||||
|
||||
if (!empty($userset[$ca_mask])) {
|
||||
$channelset[$ca_channel]['channel_access'][] = $channel_access;
|
||||
}
|
||||
$is_ca = false;
|
||||
$channel_access = array();
|
||||
$ca_channel = "";
|
||||
$ca_mask = "";
|
||||
$ca_creator = "";
|
||||
$ca_created = "";
|
||||
$ca_level = "";
|
||||
$ca_provider = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$atheme = fopen("atheme.db", 'w');
|
||||
fwrite($atheme, "DBV 7\n");
|
||||
fwrite($atheme, "CF +vVoOtsriRfhHAb\n");
|
||||
|
||||
/* MDU Obi_Wan private:usercloak city-1464.galaxy-media.highway.hyperspace
|
||||
MDU Obi_Wan private:usercloak-assigner Obi_Wan
|
||||
MDU Obi_Wan private:usercloak-timestamp 1476550194
|
||||
*/
|
||||
foreach ($userset as $key => $value) {
|
||||
fwrite($atheme, "MU ".$value['mu_account']." ".$value['mu_pass']. " ".$value['mu_email']." ".$value['mu_register']." ".time()." ".$mu_flags." ".$mu_lang."\n");
|
||||
|
||||
if (!empty($value['vhost_host'])) {
|
||||
fwrite($atheme, "MDU ".$value['mu_account']." private:usercloak ".$value['vhost_host']."\n");
|
||||
}
|
||||
|
||||
if (!empty($value['vhost_creator'])) {
|
||||
fwrite($atheme, "MDU ".$value['mu_account']." private:usercloak-assigner ".$value['vhost_creator']."\n");
|
||||
}
|
||||
|
||||
if (!empty($value['vhost_time'])) {
|
||||
fwrite($atheme, "MDU ".$value['mu_account']." private:usercloak-timestamp ".$value['vhost_time']."\n");
|
||||
}
|
||||
|
||||
if (isset($value['aliases'])) {
|
||||
foreach ($value['aliases'] as $key2 => $value2) {
|
||||
fwrite($atheme, "MN ". $value['mu_account'] ." ".$key2." ".$value2['mu_register']." ".$value2['last_seen']."\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($channelset as $key => $value) {
|
||||
fwrite($atheme, "MC ".$key." ".$value['cu_register']." ".$value['cu_last_used']." ".$value['channel_flags']." 272 6 0\n");
|
||||
fwrite($atheme, "CA ".$key." ".$value['cu_founder']." +AFORafhioqrstv ".$value['cu_register']." ".$value['cu_founder']."\n");
|
||||
if (isset($value['channel_access'])) {
|
||||
foreach ($value['channel_access'] as $key2 => $value2) {
|
||||
fwrite($atheme, "CA ". $value2['ca_channel']." ".$value2['ca_mask']." ".$value2['ca_level']." ".$value2['ca_created']." ".$value2['ca_creator']."\n");
|
||||
# die($key2);
|
||||
}
|
||||
}
|
||||
fwrite($atheme, "MDC ".$key." private:topic:setter ".$value['cu_last_topic_setter']."\n");
|
||||
fwrite($atheme, "MDC ".$key." private:topic:text ".$value['cu_last_topic']."\n");
|
||||
fwrite($atheme, "MDC ".$key." private:topic:ts ".$value['cu_last_topic_time']."\n");
|
||||
}
|
||||
|
||||
fclose($atheme);
|
Loading…
Reference in New Issue
Block a user