mirror of
https://github.com/pissnet/pissircd.git
synced 2025-05-13 08:55:05 +01:00
Merge branch 'piss52' into piss60 - First attempt, didn't even try it
This commit is contained in:
commit
58c549ee8f
36 changed files with 1041 additions and 10818 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -25,6 +25,7 @@ tags
|
|||
# Ignore editor files
|
||||
*\#*
|
||||
*~
|
||||
.dir-locals.el
|
||||
|
||||
# Ignore SSL Stuff
|
||||
server.cert.pem
|
||||
|
|
1
Config
1
Config
|
@ -113,6 +113,7 @@ if [ "x$MAKE" = "x" ]; then
|
|||
fi
|
||||
|
||||
echo $CONF
|
||||
./autogen.sh
|
||||
$CONF || exit 1
|
||||
cd "$UNREALCWD"
|
||||
|
||||
|
|
26
README.md
26
README.md
|
@ -1,12 +1,14 @@
|
|||
[](https://twitter.com/Unreal_IRCd)
|
||||
<a class="twitter-follow-button"
|
||||
href="https://twitter.com/pissnetstaff">
|
||||
Follow @pissnetstaff on Twitter</a>
|
||||
|
||||
## About UnrealIRCd
|
||||
UnrealIRCd is an Open Source IRC Server, serving thousands of networks since 1999.
|
||||
It runs on Linux, OS X and Windows and is currently the most widely deployed IRCd
|
||||
with a market share of 42%. UnrealIRCd is a highly advanced IRCd with a strong
|
||||
focus on modularity, an advanced and highly configurable configuration file.
|
||||
Key features include SSL/TLS, cloaking, its advanced anti-flood and anti-spam systems,
|
||||
swear filtering and module support. We are also particularly proud on our extensive
|
||||
## About PissIRCd
|
||||
PissIRCd (a fork of UnrealIRCd) is an Open Source IRC Server, serving thousands of piss since 2021.
|
||||
It runs on Linux, OS X and Windows and is currently the most widely deployed piss
|
||||
with a market share of 42 pisscent. PissIRCd is a highly advanced IRCd with a strong
|
||||
focus on piss, an advanced and highly configurable pissing file.
|
||||
Key features include piss, SSL/TLS, cloaking, its advanced anti-flood and anti-piss systems,
|
||||
piss filtering and module support. We are also particularly proud on our piss
|
||||
online documentation.
|
||||
|
||||
## How to get started
|
||||
|
@ -46,13 +48,11 @@ Run `./unrealircd start` in the directory where you installed UnrealIRCd.
|
|||
#### Windows
|
||||
Start -> All Programs -> UnrealIRCd -> UnrealIRCd
|
||||
|
||||
## Documentation & FAQ
|
||||
## Documentation & FAQ for UnrealIRCd
|
||||
You can find the **documentation** online at: https://www.unrealircd.org/docs/
|
||||
|
||||
We also have a good **FAQ**: https://www.unrealircd.org/docs/FAQ
|
||||
|
||||
## Website, support, and other links ##
|
||||
* https://www.unrealircd.org - Our main website
|
||||
* https://forums.unrealircd.org - Support
|
||||
* https://bugs.unrealircd.org - Bug tracker
|
||||
* ircs://irc.unrealircd.org:6697/unreal-support - IRC support
|
||||
* https://letspiss.net/ - Our main IRC website that inspired PissIRCd
|
||||
* https://wiki.letspiss.net/ - Wiki
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
echo "Regenerating 'configure' and headers..."
|
||||
echo "NOTE: Normally only UnrealIRCd developers run this command!!"
|
||||
echo "NOTE: If you are not an UnrealIRCd developers you might want to run ./Config"
|
||||
|
||||
cd "$(dirname "${0}")"
|
||||
|
||||
|
|
13
configure.ac
13
configure.ac
|
@ -7,7 +7,7 @@ dnl src/windows/unrealinst.iss
|
|||
dnl doc/Config.header
|
||||
dnl src/version.c.SH
|
||||
|
||||
AC_INIT([unrealircd], [6.0.0-git], [https://bugs.unrealircd.org/], [], [https://unrealircd.org/])
|
||||
AC_INIT([unrealircd], [6.0.0], [https://bugs.unrealircd.org/], [], [https://unrealircd.org/])
|
||||
AC_CONFIG_SRCDIR([src/ircd.c])
|
||||
AC_CONFIG_HEADER([include/setup.h])
|
||||
AC_CONFIG_AUX_DIR([autoconf])
|
||||
|
@ -40,7 +40,7 @@ AC_DEFINE_UNQUOTED([UNREAL_VERSION_MINOR], [$UNREAL_VERSION_MINOR], [Minor versi
|
|||
# The version suffix such as a beta marker or release candidate
|
||||
# marker. (e.g.: -rcX for unrealircd-3.2.9-rcX). This macro is a
|
||||
# string instead of an integer because it contains arbitrary data.
|
||||
UNREAL_VERSION_SUFFIX=["-git"]
|
||||
UNREAL_VERSION_SUFFIX=[""]
|
||||
AC_DEFINE_UNQUOTED([UNREAL_VERSION_SUFFIX], ["$UNREAL_VERSION_SUFFIX"], [Version suffix such as a beta marker or release candidate marker. (e.g.: -rcX for unrealircd-3.2.9-rcX)])
|
||||
|
||||
AC_PATH_PROG(RM,rm)
|
||||
|
@ -469,7 +469,7 @@ AC_ARG_WITH(tmpdir, [AS_HELP_STRING([--with-tmpdir=path],[Specify the directory
|
|||
AC_ARG_WITH(datadir, [AS_HELP_STRING([--with-datadir=path],[Specify the directory where permanent data is stored])],
|
||||
[AC_DEFINE_UNQUOTED([PERMDATADIR], ["$withval"], [Define the location of permanent data files])
|
||||
PERMDATADIR="$withval"],
|
||||
[AC_DEFINE_UNQUOTED([DATADIR], ["$HOME/unrealircd/data"], [Define the location of permanent data files])
|
||||
[AC_DEFINE_UNQUOTED([PERMDATADIR], ["$HOME/unrealircd/data"], [Define the location of permanent data files])
|
||||
PERMDATADIR="$HOME/unrealircd/data"])
|
||||
|
||||
AC_ARG_WITH(docdir, [AS_HELP_STRING([--with-docdir=path],[Specify the directory where documentation is stored])],
|
||||
|
@ -623,8 +623,9 @@ cd $cur_dir
|
|||
dnl Use system argon2 when available, unless --without-system-argon2
|
||||
has_system_argon2="no"
|
||||
AS_IF([test "x$with_system_argon2" = "xyes"],[
|
||||
PKG_CHECK_MODULES([ARGON2], [libargon2 >= 0~20161029],[has_system_argon2=yes
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libargon2*])],[has_system_argon2=no])])
|
||||
PKG_CHECK_MODULES([ARGON2], [libargon2 >= 0~20161029],[has_system_argon2=yes],[
|
||||
PKG_CHECK_MODULES([ARGON2], [libargon2 = ZERO],[has_system_argon2=yes],[
|
||||
AS_IF([test "x$PRIVATELIBDIR" != "x"], [rm -f "$PRIVATELIBDIR/"libargon2*])])])])
|
||||
|
||||
AS_IF([test "$has_system_argon2" = "no"],[
|
||||
dnl REMEMBER TO CHANGE WITH A NEW ARGON2 RELEASE!
|
||||
|
@ -722,7 +723,7 @@ AS_IF([test "$has_system_cares" = "no"], [
|
|||
dnl REMEMBER TO CHANGE WITH A NEW C-ARES RELEASE!
|
||||
dnl NOTE: when changing this here, ALSO change it in extras/curlinstall
|
||||
dnl and in the comment in this file around line 400!
|
||||
cares_version="1.17.1"
|
||||
cares_version="1.17.2"
|
||||
AC_MSG_RESULT(extracting c-ares resolver library)
|
||||
cur_dir=`pwd`
|
||||
cd extras
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
\___/|_| |_|_| \___|\__,_|_|\___/\_| \_| \____/\__,_|
|
||||
|
||||
Configuration Program
|
||||
for UnrealIRCd 6.0.0-git
|
||||
for UnrealIRCd 6.0.0
|
||||
|
||||
This program will help you to compile your IRC server, and ask you
|
||||
questions regarding the compile-time settings of it during the process.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
UnrealIRCd 6
|
||||
UnrealIRCd 6 with piss
|
||||
=============
|
||||
This is UnrealIRCd 6's latest git, bleeding edge. Do not use on production servers!
|
||||
|
||||
|
|
|
@ -102,13 +102,19 @@ class opers
|
|||
sendq 1M;
|
||||
recvq 8000;
|
||||
}
|
||||
class hubs {
|
||||
pingfreq 60;
|
||||
connfreq 60;
|
||||
maxclients 1;
|
||||
sendq 20M;
|
||||
}
|
||||
|
||||
/* Server class with good defaults */
|
||||
class servers
|
||||
{
|
||||
pingfreq 60;
|
||||
connfreq 15; /* try to connect every 15 seconds */
|
||||
maxclients 10; /* max servers */
|
||||
maxclients 1; /* max servers */
|
||||
sendq 20M;
|
||||
}
|
||||
|
||||
|
@ -126,17 +132,6 @@ allow {
|
|||
maxperip 3;
|
||||
}
|
||||
|
||||
/* Example of a special allow block on a specific IP:
|
||||
* Requires users on that IP to connect with a password. If the password
|
||||
* is correct then it permits 20 connections on that IP.
|
||||
*/
|
||||
allow {
|
||||
mask 192.0.2.1;
|
||||
class clients;
|
||||
password "somesecretpasswd";
|
||||
maxperip 20;
|
||||
}
|
||||
|
||||
/* Oper blocks define your IRC Operators.
|
||||
* IRC Operators are people who have "extra rights" compared to others,
|
||||
* for example they may /KILL other people, initiate server linking,
|
||||
|
@ -234,29 +229,6 @@ link hub.example.org
|
|||
class servers;
|
||||
}
|
||||
|
||||
/* The link block for services is usually much simpler.
|
||||
* For more information about what Services are,
|
||||
* see https://www.unrealircd.org/docs/Services
|
||||
*/
|
||||
link services.example.org
|
||||
{
|
||||
incoming {
|
||||
mask 127.0.0.1;
|
||||
}
|
||||
|
||||
password "changemeplease";
|
||||
|
||||
class servers;
|
||||
}
|
||||
|
||||
/* U-lines give other servers (even) more power/commands.
|
||||
* If you use services you must add them here.
|
||||
* NEVER put the name of an UnrealIRCd server here!!!
|
||||
*/
|
||||
ulines {
|
||||
services.example.org;
|
||||
}
|
||||
|
||||
/* Here you can add a password for the IRCOp-only /DIE and /RESTART commands.
|
||||
* This is mainly meant to provide a little protection against accidental
|
||||
* restarts and server kills.
|
||||
|
@ -433,11 +405,11 @@ blacklist efnetrbl {
|
|||
|
||||
/* Network configuration */
|
||||
set {
|
||||
network-name "ExampleNET";
|
||||
default-server "irc.example.org";
|
||||
network-name "pissnet";
|
||||
default-server "irc.pissnet.cc";
|
||||
services-server "services.example.org";
|
||||
stats-server "stats.example.org";
|
||||
help-channel "#Help";
|
||||
help-channel "#pissnet";
|
||||
cloak-prefix "Clk";
|
||||
prefix-quit "Quit";
|
||||
|
||||
|
@ -449,16 +421,16 @@ set {
|
|||
* UnrealIRCd generate 3 random strings for you.
|
||||
*/
|
||||
cloak-keys {
|
||||
"Oozahho1raezoh0iMee4ohvegaifahv5xaepeitaich9tahdiquaid0geecipahdauVaij3zieph4ahi";
|
||||
"and another one";
|
||||
"and another one";
|
||||
"d86PVocPMhCm8YcLs46Yb8FiCF1wC50x1VvutFBviIAitqb0g034M";
|
||||
"Qh3262E4uJOM2Aj210EC2gawF5llEA65mRK3cSctNOv4p610AJhX067KY5Xg";
|
||||
"240TUBv13ce2ANwm2cki1Rj80p8OAdqR64HWeDh8h38kTQkEWRXJ7";
|
||||
}
|
||||
}
|
||||
|
||||
/* Server specific configuration */
|
||||
|
||||
set {
|
||||
kline-address "set.this.to.email.address"; /* e-mail or URL shown when a user is banned */
|
||||
kline-address "lolnope@letspiss.net"; /* e-mail or URL shown when a user is banned */
|
||||
modes-on-connect "+ixw"; /* when users connect, they will get these user modes */
|
||||
modes-on-oper "+xws"; /* when someone becomes IRCOp they'll get these modes */
|
||||
modes-on-join "+nt"; /* default channel modes when a new channel is created */
|
||||
|
@ -467,8 +439,11 @@ set {
|
|||
hide-ulines; /* hide U-lines in /MAP and /LINKS */
|
||||
show-connect-info; /* show "looking up your hostname" messages on connect */
|
||||
}
|
||||
server-linking {
|
||||
autoconnect-strategy sequential-fallback;
|
||||
}
|
||||
|
||||
maxchannelsperuser 10; /* maximum number of channels a user may /JOIN */
|
||||
maxchannelsperuser 30; /* maximum number of channels a user may /JOIN */
|
||||
|
||||
/* The minimum time a user must be connected before being allowed to
|
||||
* use a QUIT message. This will hopefully help stop spam.
|
||||
|
|
|
@ -189,6 +189,11 @@ loadmodule "usermodes/secureonlymsg"; /* +Z (only TLS users may private message
|
|||
loadmodule "usermodes/privdeaf"; /* +D (don't let other user PM you) */
|
||||
|
||||
|
||||
/*** Server notice masks */
|
||||
*** ??? have this merge leftover
|
||||
/*** loadmodule "snomasks/dccreject"; /* +D (rejected DCC's) */
|
||||
|
||||
|
||||
/*** Extended Bans ***/
|
||||
loadmodule "extbans/join"; /* +b ~j (prevent only joins) */
|
||||
loadmodule "extbans/quiet"; /* +b ~q (prevent only messaging) */
|
||||
|
@ -253,6 +258,11 @@ loadmodule "watch-backend"; /* used by watch and other modules */
|
|||
loadmodule "geoip_base"; /* needed for ALL geoip functions */
|
||||
|
||||
loadmodule "geoip_classic";
|
||||
|
||||
/* Piss modules */
|
||||
loadmodule "third/noglobalmsg";
|
||||
loadmodule "third/pissquit";
|
||||
|
||||
@if module-loaded("geoip_classic")
|
||||
set {
|
||||
geoip-classic {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
##
|
||||
## Bundle of CA Root Certificates
|
||||
##
|
||||
## Certificate data from Mozilla as of: Tue Jan 19 04:12:04 2021 GMT
|
||||
## Certificate data from Mozilla as of: Thu Sep 30 03:12:05 2021 GMT
|
||||
##
|
||||
## This is a bundle of X.509 certificates of public Certificate Authorities
|
||||
## (CA). These were automatically extracted from Mozilla's root certificates
|
||||
|
@ -14,7 +14,7 @@
|
|||
## Just configure this file as the SSLCACertificateFile.
|
||||
##
|
||||
## Conversion done with mk-ca-bundle.pl version 1.28.
|
||||
## SHA256: 3bdc63d1de27058fec943a999a2a8a01fcc6806a611b19221a7727d3d9bbbdfd
|
||||
## SHA256: c8f6733d1ff4e6a4769c182971a1234f95ae079247a9c439a13423fe8ba5c24f
|
||||
##
|
||||
|
||||
|
||||
|
@ -156,38 +156,6 @@ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
|||
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
QuoVadis Root CA
|
||||
================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
||||
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
||||
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
||||
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
||||
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
||||
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
||||
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
||||
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
||||
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
||||
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
||||
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
||||
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
||||
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
||||
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
||||
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
||||
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
||||
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
||||
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
||||
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
||||
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
||||
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
||||
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
||||
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
||||
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
||||
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
||||
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
||||
5nrQNiOKSnQ2+Q==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
QuoVadis Root CA 2
|
||||
==================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
@ -275,26 +243,6 @@ s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
|||
FL39vmwLAw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Sonera Class 2 Root CA
|
||||
======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
||||
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
||||
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
||||
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
||||
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
||||
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
||||
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
||||
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
||||
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
||||
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
||||
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
||||
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
||||
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
||||
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
||||
llpwrN9M
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
XRamp Global CA Root
|
||||
====================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
@ -433,26 +381,6 @@ mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
|||
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
DST Root CA X3
|
||||
==============
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
||||
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
||||
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
||||
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
||||
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
||||
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
||||
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
||||
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
||||
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
||||
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
||||
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
||||
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
||||
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
||||
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
||||
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
SwissSign Gold CA - G2
|
||||
======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
@ -718,51 +646,6 @@ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
|||
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GeoTrust Primary Certification Authority - G2
|
||||
=============================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
|
||||
VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
|
||||
Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
|
||||
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
|
||||
OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
|
||||
MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
|
||||
b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
|
||||
BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
|
||||
KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
|
||||
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
|
||||
EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
|
||||
ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
|
||||
npaqBA+K
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
VeriSign Universal Root Certification Authority
|
||||
===============================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
|
||||
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
||||
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
||||
IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
|
||||
IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
|
||||
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
||||
cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
||||
IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
|
||||
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
|
||||
1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
|
||||
MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
|
||||
9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
|
||||
AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
|
||||
tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
|
||||
CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
|
||||
a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
||||
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
|
||||
Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
|
||||
Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
|
||||
P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
|
||||
wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
|
||||
mJO37M2CYfE45k+XmCpajQ==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
NetLock Arany (Class Gold) Főtanúsítvány
|
||||
========================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
@ -938,82 +821,6 @@ Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
|
|||
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Chambers of Commerce Root - 2008
|
||||
================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
|
||||
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
||||
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
||||
QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
|
||||
Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
|
||||
ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
|
||||
EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
|
||||
cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
||||
AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
|
||||
XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
|
||||
h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
|
||||
ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
|
||||
NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
|
||||
D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
|
||||
lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
|
||||
0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
|
||||
ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
|
||||
EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
|
||||
G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
|
||||
BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
|
||||
bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
|
||||
bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
|
||||
CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
|
||||
AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
|
||||
wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
|
||||
3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
|
||||
RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
|
||||
M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
|
||||
YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
|
||||
9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
|
||||
zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
|
||||
nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
|
||||
OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Global Chambersign Root - 2008
|
||||
==============================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
|
||||
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
||||
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
||||
QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
|
||||
NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
|
||||
Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
|
||||
QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
|
||||
aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
|
||||
VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
|
||||
XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
|
||||
ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
|
||||
/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
|
||||
TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
|
||||
H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
|
||||
Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
|
||||
HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
|
||||
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
|
||||
AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
|
||||
BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
|
||||
BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
|
||||
aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
|
||||
aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
|
||||
1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
|
||||
dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
|
||||
/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
|
||||
ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
|
||||
dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
|
||||
9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
|
||||
foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
|
||||
qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
|
||||
P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
|
||||
c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
|
||||
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Go Daddy Root Certificate Authority - G2
|
||||
========================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
@ -1315,27 +1122,6 @@ OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
|
|||
vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Trustis FPS Root CA
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
|
||||
EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
|
||||
IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
|
||||
BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
|
||||
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
|
||||
RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
|
||||
H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
|
||||
cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
|
||||
o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
|
||||
AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
|
||||
BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
|
||||
GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
|
||||
yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
|
||||
8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
|
||||
l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
|
||||
iB6XzCGcKQENZetX2fNXlrtIzYE=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Buypass Class 2 Root CA
|
||||
=======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
@ -1980,36 +1766,6 @@ uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
|
|||
yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Staat der Nederlanden Root CA - G3
|
||||
==================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Staat der Nederlanden EV Root CA
|
||||
================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
|
@ -3226,3 +2982,173 @@ qqFJu3FS8r/2/yehNq+4tneI3TqkbZs0kNwUXTC/t+sX5Ie3cdCh13cV1ELX8vMxmV2b3RZtP+oG
|
|||
I/hGoiLtk/bdmuYqh7GYVPEi92tF4+KOdh2ajcQGjTa3FPOdVGm3jjzVpG2Tgbet9r1ke8LJaDmg
|
||||
kpzNNIaRkPpkUZ3+/uul9XXeifdy
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
AC RAIZ FNMT-RCM SERVIDORES SEGUROS
|
||||
===================================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICbjCCAfOgAwIBAgIQYvYybOXE42hcG2LdnC6dlTAKBggqhkjOPQQDAzB4MQswCQYDVQQGEwJF
|
||||
UzERMA8GA1UECgwIRk5NVC1SQ00xDjAMBgNVBAsMBUNlcmVzMRgwFgYDVQRhDA9WQVRFUy1RMjgy
|
||||
NjAwNEoxLDAqBgNVBAMMI0FDIFJBSVogRk5NVC1SQ00gU0VSVklET1JFUyBTRUdVUk9TMB4XDTE4
|
||||
MTIyMDA5MzczM1oXDTQzMTIyMDA5MzczM1oweDELMAkGA1UEBhMCRVMxETAPBgNVBAoMCEZOTVQt
|
||||
UkNNMQ4wDAYDVQQLDAVDZXJlczEYMBYGA1UEYQwPVkFURVMtUTI4MjYwMDRKMSwwKgYDVQQDDCNB
|
||||
QyBSQUlaIEZOTVQtUkNNIFNFUlZJRE9SRVMgU0VHVVJPUzB2MBAGByqGSM49AgEGBSuBBAAiA2IA
|
||||
BPa6V1PIyqvfNkpSIeSX0oNnnvBlUdBeh8dHsVnyV0ebAAKTRBdp20LHsbI6GA60XYyzZl2hNPk2
|
||||
LEnb80b8s0RpRBNm/dfF/a82Tc4DTQdxz69qBdKiQ1oKUm8BA06Oi6NCMEAwDwYDVR0TAQH/BAUw
|
||||
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFAG5L++/EYZg8k/QQW6rcx/n0m5JMAoGCCqG
|
||||
SM49BAMDA2kAMGYCMQCuSuMrQMN0EfKVrRYj3k4MGuZdpSRea0R7/DjiT8ucRRcRTBQnJlU5dUoD
|
||||
zBOQn5ICMQD6SmxgiHPz7riYYqnOK8LZiqZwMR2vsJRM60/G49HzYqc8/5MuB1xJAWdpEgJyv+c=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GlobalSign Root R46
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
QEUxeCp6
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GlobalSign Root E46
|
||||
===================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICCzCCAZGgAwIBAgISEdK7ujNu1LzmJGjFDYQdmOhDMAoGCCqGSM49BAMDMEYxCzAJBgNVBAYT
|
||||
AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRwwGgYDVQQDExNHbG9iYWxTaWduIFJvb3Qg
|
||||
RTQ2MB4XDTE5MDMyMDAwMDAwMFoXDTQ2MDMyMDAwMDAwMFowRjELMAkGA1UEBhMCQkUxGTAXBgNV
|
||||
BAoTEEdsb2JhbFNpZ24gbnYtc2ExHDAaBgNVBAMTE0dsb2JhbFNpZ24gUm9vdCBFNDYwdjAQBgcq
|
||||
hkjOPQIBBgUrgQQAIgNiAAScDrHPt+ieUnd1NPqlRqetMhkytAepJ8qUuwzSChDH2omwlwxwEwkB
|
||||
jtjqR+q+soArzfwoDdusvKSGN+1wCAB16pMLey5SnCNoIwZD7JIvU4Tb+0cUB+hflGddyXqBPCCj
|
||||
QjBAMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQxCpCPtsad0kRL
|
||||
gLWi5h+xEk8blTAKBggqhkjOPQQDAwNoADBlAjEA31SQ7Zvvi5QCkxeCmb6zniz2C5GMn0oUsfZk
|
||||
vLtoURMMA/cVi4RguYv/Uo7njLwcAjA8+RHUjE7AwWHCFUyqqx0LMV87HOIAl0Qx5v5zli/altP+
|
||||
CAezNIm8BZ/3Hobui3A=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
GLOBALTRUST 2020
|
||||
================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
ANF Secure Server Root CA
|
||||
=========================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Certum EC-384 CA
|
||||
================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIICZTCCAeugAwIBAgIQeI8nXIESUiClBNAt3bpz9DAKBggqhkjOPQQDAzB0MQswCQYDVQQGEwJQ
|
||||
TDEhMB8GA1UEChMYQXNzZWNvIERhdGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2Vy
|
||||
dGlmaWNhdGlvbiBBdXRob3JpdHkxGTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwHhcNMTgwMzI2
|
||||
MDcyNDU0WhcNNDMwMzI2MDcyNDU0WjB0MQswCQYDVQQGEwJQTDEhMB8GA1UEChMYQXNzZWNvIERh
|
||||
dGEgU3lzdGVtcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkx
|
||||
GTAXBgNVBAMTEENlcnR1bSBFQy0zODQgQ0EwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATEKI6rGFtq
|
||||
vm5kN2PkzeyrOvfMobgOgknXhimfoZTy42B4mIF4Bk3y7JoOV2CDn7TmFy8as10CW4kjPMIRBSqn
|
||||
iBMY81CE1700LCeJVf/OTOffph8oxPBUw7l8t1Ot68KjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD
|
||||
VR0OBBYEFI0GZnQkdjrzife81r1HfS+8EF9LMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNo
|
||||
ADBlAjADVS2m5hjEfO/JUG7BJw+ch69u1RsIGL2SKcHvlJF40jocVYli5RsJHrpka/F2tNQCMQC0
|
||||
QoSZ/6vnnvuRlydd3LBbMHHOXjgaatkl5+r3YZJW+OraNsKHZZYuciUvf9/DE8k=
|
||||
-----END CERTIFICATE-----
|
||||
|
||||
Certum Trusted Root CA
|
||||
======================
|
||||
-----BEGIN CERTIFICATE-----
|
||||
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
|
||||
-----END CERTIFICATE-----
|
||||
|
|
Binary file not shown.
|
@ -4,7 +4,7 @@ OUTF="curl-latest.tar.gz"
|
|||
OUTD="curl-latest"
|
||||
ARESPATH="`pwd`/extras/c-ares"
|
||||
UNREALDIR="`pwd`"
|
||||
CARESVERSION="1.17.1"
|
||||
CARESVERSION="1.17.2"
|
||||
LIBDIR="$1"
|
||||
|
||||
if [ "x$1" = "x" ]; then
|
||||
|
|
|
@ -38,7 +38,7 @@ PROJECT_NAME = "UnrealIRCd"
|
|||
# could be handy for archiving the generated documentation or if some version
|
||||
# control system is used.
|
||||
|
||||
PROJECT_NUMBER = 6.0.0-git
|
||||
PROJECT_NUMBER = 6.0.0
|
||||
|
||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
|
|
179
extras/logotool.js
Normal file
179
extras/logotool.js
Normal file
|
@ -0,0 +1,179 @@
|
|||
// logotool.js
|
||||
// Reconstruct src/version.c.SH with the logo banner of your choice!
|
||||
// Hacked together by owo on pissnet <https://github.com/Prouser123>
|
||||
// To create a logo: 'figlet -f big <message> > new_logo.txt'
|
||||
// 'node extras/logotool.js'
|
||||
|
||||
const fs = require("fs")
|
||||
|
||||
// Load in the source file
|
||||
const scriptFile = fs.readFileSync("src/version.c.SH")
|
||||
|
||||
// Step 0: Figure out where the logo definition is
|
||||
|
||||
const start = scriptFile.indexOf("char unreallogo[]")
|
||||
// -2 to get rid of the two newlines before this match
|
||||
// This means the last char is the closing }; of the logo definition
|
||||
const end = scriptFile.indexOf("char *dalinfotext[] =") - 2
|
||||
|
||||
|
||||
const unrealLogoDefinition = scriptFile.slice(start, end).toString()
|
||||
|
||||
console.log(`Found unreal logo definition at indexes ${start}-${end}`)
|
||||
|
||||
//console.log(`"${unrealLogoDefinition}"`)
|
||||
|
||||
/**
|
||||
*
|
||||
* char unreallogo[] =
|
||||
* {
|
||||
* [11 ascii points (eg. 1,2,3,4,5,6,7,8,9,10,11, )]
|
||||
* };
|
||||
*
|
||||
*/
|
||||
|
||||
// 1. Remove the {} blocks so we are left with just the code points, comma seperated.
|
||||
|
||||
// +3 to start after the { and \n
|
||||
const openingBracket = unrealLogoDefinition.indexOf("{") + 3
|
||||
const closingBracket = unrealLogoDefinition.indexOf("};")
|
||||
|
||||
let addresses = unrealLogoDefinition.slice(openingBracket, closingBracket)
|
||||
|
||||
//console.log("'" + addresses + "'")
|
||||
|
||||
|
||||
// 2. Create an array of ascii code points
|
||||
const codePoints = addresses.split(",")
|
||||
|
||||
|
||||
// 2b. print the current message
|
||||
console.log("Current message:\n------------------------------------------------------------")
|
||||
console.log(String.fromCharCode(...codePoints))
|
||||
|
||||
// 3. Take input for the new message
|
||||
// TODO: Integrate with figlet
|
||||
console.log("------------------------------------------------------------")
|
||||
console.log("To create a logo: 'figlet -f big <message> > new_logo.txt'")
|
||||
console.log(" 'node extras/logotool.js'")
|
||||
console.log("\nClose enough! :tm:")
|
||||
console.log("------------------------------------------------------------")
|
||||
console.log("Loading new logo from new_logo.txt")
|
||||
|
||||
const newLogo = fs.readFileSync("new_logo.txt")
|
||||
|
||||
let keys = []
|
||||
newLogo.forEach(l => keys.push(l))
|
||||
|
||||
console.log("------------------------------------------------------------")
|
||||
//console.log(String.fromCharCode(...keys))
|
||||
//console.log("------------------------------------------------------------")
|
||||
|
||||
// 3.1. Remove trailing lines
|
||||
/*
|
||||
Each trailing line is made of:
|
||||
|
||||
56x 32 (space)
|
||||
1x 10 (\n)
|
||||
|
||||
eg: 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
|
||||
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,10
|
||||
|
||||
(moved across multiple lines for readability)
|
||||
*/
|
||||
|
||||
|
||||
// Regex to remove instances of blank lines (as defined above)
|
||||
|
||||
// bugfix: 56x for the default "UnrealIRCd logo", but custom logos have different widths
|
||||
// using 2+ spaces in a row followed by newline for now.
|
||||
keys2 = keys.toString().replace(/((,32){2,},10){1,}/gm, "").split(",")
|
||||
|
||||
// If last item is a 10 (newline), remove it
|
||||
// bugfix: try commenting this out since ircd places the git string on the same line as the chars
|
||||
// (should be on it's own n)
|
||||
//if (keys2[keys2.length-1] = "10") keys2.pop()
|
||||
|
||||
|
||||
/*
|
||||
UNUSED
|
||||
------
|
||||
if (keys2.length % 2 != 0) {
|
||||
keys2.push("0")
|
||||
// Index is odd! we need to add an extra character for padding
|
||||
|
||||
}*/
|
||||
|
||||
console.log(String.fromCharCode(...keys2))
|
||||
console.log("------------------------------------------------------------")
|
||||
|
||||
// Step $x - add name of product for some reason?
|
||||
// eg. original message has "UnrealIRCd" as last line
|
||||
|
||||
// Step 4 - Re-construct version.c.SH
|
||||
|
||||
// Step 4.1 - Get the file *around* our indexes (aka the whole file except the definition)
|
||||
const fileBeforeDef = scriptFile.slice(0, start)
|
||||
const fileAfterDef = scriptFile.slice(end, scriptFile.length)
|
||||
|
||||
// debug file outputs disabled | fs.writeFileSync("test.txt", `${fileBeforeDef}${fileAfterDef}`)
|
||||
|
||||
// Step 4.1 - Prepare for creation of new logo definition
|
||||
// (See line 20) We ideally want to match tbe format of 11 ascii points per line
|
||||
|
||||
|
||||
// ceil just in case (round up to next whole number)
|
||||
// eg. 28.8 -> 29
|
||||
const rows = Math.ceil(keys2.length / 11)
|
||||
|
||||
console.log(`(debug) We need **${rows}** rows to match the existing 11 points / line format!`)
|
||||
|
||||
const rowsData = []
|
||||
|
||||
for (row = 0; row < rows; row++) {
|
||||
// Iterate this every row
|
||||
|
||||
const rowData = []
|
||||
|
||||
|
||||
// Get the first 11 items from keys2
|
||||
for (i = 0; i < 11; i++) {
|
||||
//console.log("(debug) Getting item " + i)
|
||||
const charcode = keys2.shift()
|
||||
|
||||
// Only push if chars are available (otherwise we get undefined elements in rowData)
|
||||
charcode ? rowData.push(charcode) : "skip; no elements left"
|
||||
|
||||
}
|
||||
|
||||
// Push this row's chars to the global "list of rows"
|
||||
rowsData.push(rowData)
|
||||
}
|
||||
|
||||
//console.log(rowsData)
|
||||
|
||||
// Step 4.2 - Format rowsData into a logo definition
|
||||
const stringRows = []
|
||||
|
||||
for (i = 0; i < rowsData.length; i++) {
|
||||
// Add the contents of each row to a variable, comma seperated
|
||||
let rowContents = rowsData[i].join(",")
|
||||
// Add a comma to the end except on the last line
|
||||
if ((i + 1 != rowsData.length)) rowContents += ","
|
||||
// Now our format for this line should match the requirements (line 21), so we can push it to a output array!
|
||||
stringRows.push(rowContents)
|
||||
}
|
||||
|
||||
// Step 4.3 - Create the *new* logo definition
|
||||
|
||||
const newLogoDef = `char unreallogo[] =
|
||||
{
|
||||
${stringRows.join("\n")}};\n`
|
||||
|
||||
//console.log(newLogoDef)
|
||||
|
||||
// Step 4.4 - Write the new file
|
||||
fs.writeFileSync("src/version.c.SH", `${fileBeforeDef}${newLogoDef}${fileAfterDef}`)
|
||||
|
||||
// debug file outputs disabled | fs.writeFileSync("src/version.c.SH.original", scriptFile)
|
|
@ -63,7 +63,7 @@ typedef int bool;
|
|||
#define DEADBEEF_ADDR 0xDEADBEEF
|
||||
#endif
|
||||
|
||||
#define BASE_VERSION "UnrealIRCd"
|
||||
#define BASE_VERSION "PissIRCd"
|
||||
#ifndef _WIN32
|
||||
#define FDwrite(x,y,z) write(x, y, z)
|
||||
#else
|
||||
|
|
|
@ -19,6 +19,7 @@ struct DNSReq {
|
|||
DNSReq *prev, *next;
|
||||
char *name; /**< Name being resolved (only for DNSREQ_LINKCONF and DNSREQ_CONNECT) */
|
||||
char ipv6; /**< Resolving for ipv6 or ipv4? */
|
||||
char ipv4fallback; /**< Are we falling back to ipv4 after failing to connect over v6? */
|
||||
DNSReqType type; /**< DNS Request type (DNSREQ_*) */
|
||||
Client *client; /**< Client the request is for, NULL if client died OR unavailable */
|
||||
ConfigItem_link *linkblock; /**< Linkblock */
|
||||
|
|
|
@ -1,243 +0,0 @@
|
|||
/* include/setup.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* Define the directory where the unrealircd binary is located */
|
||||
#undef BINDIR
|
||||
|
||||
/* Specify the build directory */
|
||||
#undef BUILDDIR
|
||||
|
||||
/* Define the location of the cached remote include files */
|
||||
#undef CACHEDIR
|
||||
|
||||
/* Define the location of the configuration files */
|
||||
#undef CONFDIR
|
||||
|
||||
/* Define the location of permanent data files */
|
||||
#undef DATADIR
|
||||
|
||||
/* The default permissions for configuration files. Set to 0 to prevent
|
||||
unrealircd from calling chmod() on the files. */
|
||||
#undef DEFAULT_PERMISSIONS
|
||||
|
||||
/* Define the location of the documentation */
|
||||
#undef DOCDIR
|
||||
|
||||
/* Define if you have getrusage */
|
||||
#undef GETRUSAGE_2
|
||||
|
||||
/* Define if you have the <glob.h> header file. */
|
||||
#undef GLOBH
|
||||
|
||||
/* Define if ssl library has ASN1_TIME_diff */
|
||||
#undef HAS_ASN1_TIME_diff
|
||||
|
||||
/* Define if ssl library has SSL_CTX_set1_curves_list */
|
||||
#undef HAS_SSL_CTX_SET1_CURVES_LIST
|
||||
|
||||
/* Define if ssl library has SSL_CTX_set_min_proto_version */
|
||||
#undef HAS_SSL_CTX_SET_MIN_PROTO_VERSION
|
||||
|
||||
/* Define if ssl library has SSL_CTX_set_security_level */
|
||||
#undef HAS_SSL_CTX_SET_SECURITY_LEVEL
|
||||
|
||||
/* Define if ssl library has X509_get0_notAfter */
|
||||
#undef HAS_X509_get0_notAfter
|
||||
|
||||
/* Define if you have crypt */
|
||||
#undef HAVE_CRYPT
|
||||
|
||||
/* Define if you have epoll */
|
||||
#undef HAVE_EPOLL
|
||||
|
||||
/* Define to 1 if you have the `epoll_create' function. */
|
||||
#undef HAVE_EPOLL_CREATE
|
||||
|
||||
/* Define to 1 if you have the `epoll_ctl' function. */
|
||||
#undef HAVE_EPOLL_CTL
|
||||
|
||||
/* Define to 1 if you have the `epoll_wait' function. */
|
||||
#undef HAVE_EPOLL_WAIT
|
||||
|
||||
/* Define to 1 if you have the `explicit_bzero' function. */
|
||||
#undef HAVE_EXPLICIT_BZERO
|
||||
|
||||
/* Define to 1 if you have the `getrusage' function. */
|
||||
#undef HAVE_GETRUSAGE
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the `kevent' function. */
|
||||
#undef HAVE_KEVENT
|
||||
|
||||
/* Define to 1 if you have the `kqueue' function. */
|
||||
#undef HAVE_KQUEUE
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `poll' function. */
|
||||
#undef HAVE_POLL
|
||||
|
||||
/* Define if you have PS_STRINGS */
|
||||
#undef HAVE_PSSTRINGS
|
||||
|
||||
/* Define if you have pstat */
|
||||
#undef HAVE_PSTAT
|
||||
|
||||
/* Define if you have POSIX threads libraries and header files. */
|
||||
#undef HAVE_PTHREAD
|
||||
|
||||
/* Have PTHREAD_PRIO_INHERIT. */
|
||||
#undef HAVE_PTHREAD_PRIO_INHERIT
|
||||
|
||||
/* Define if you have setproctitle */
|
||||
#undef HAVE_SETPROCTITLE
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the `strlcat' function. */
|
||||
#undef HAVE_STRLCAT
|
||||
|
||||
/* Define to 1 if you have the `strlcpy' function. */
|
||||
#undef HAVE_STRLCPY
|
||||
|
||||
/* Define to 1 if you have the `strlncat' function. */
|
||||
#undef HAVE_STRLNCAT
|
||||
|
||||
/* Define to 1 if you have the `strlncpy' function. */
|
||||
#undef HAVE_STRLNCPY
|
||||
|
||||
/* Define to 1 if you have the `syslog' function. */
|
||||
#undef HAVE_SYSLOG
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the `times' function. */
|
||||
#undef HAVE_TIMES
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define the location of the log files */
|
||||
#undef LOGDIR
|
||||
|
||||
/* Set to the maximum number of connections you want */
|
||||
#undef MAXCONNECTIONS_REQUEST
|
||||
|
||||
/* Define the location of the modules */
|
||||
#undef MODULESDIR
|
||||
|
||||
/* machine is bigendian */
|
||||
#undef NATIVE_BIG_ENDIAN
|
||||
|
||||
/* machine is littleendian */
|
||||
#undef NATIVE_LITTLE_ENDIAN
|
||||
|
||||
/* Set to the nickname history length you want */
|
||||
#undef NICKNAMEHISTORYLENGTH
|
||||
|
||||
/* Define if you want OperOverride disabled */
|
||||
#undef NO_OPEROVERRIDE
|
||||
|
||||
/* Define if you want opers to have to use /invite to join +s/+p channels */
|
||||
#undef OPEROVERRIDE_VERIFY
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the home page for this package. */
|
||||
#undef PACKAGE_URL
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define the location of permanent data files */
|
||||
#undef PERMDATADIR
|
||||
|
||||
/* Define the path of the pid file */
|
||||
#undef PIDFILE
|
||||
|
||||
/* Define the location of private libraries */
|
||||
#undef PRIVATELIBDIR
|
||||
|
||||
/* Define to necessary symbol if this constant uses a non-standard name on
|
||||
your system. */
|
||||
#undef PTHREAD_CREATE_JOINABLE
|
||||
|
||||
/* Define if you have the <sys/rusage.h> header file. */
|
||||
#undef RUSAGEH
|
||||
|
||||
/* Define the directory where the unrealircd start stop scripts is located */
|
||||
#undef SCRIPTDIR
|
||||
|
||||
/* Link... statically(?) (defining this macro will probably cause the build
|
||||
tofail) */
|
||||
#undef STATIC_LINKING
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define if you have the <sys/syslog.h> header file. */
|
||||
#undef SYSSYSLOGH
|
||||
|
||||
/* Define if you have times */
|
||||
#undef TIMES_2
|
||||
|
||||
/* Define the location of private temporary files */
|
||||
#undef TMPDIR
|
||||
|
||||
/* Define if your system prepends an underscore to symbols */
|
||||
#undef UNDERSCORE
|
||||
|
||||
/* Generation version number (e.g.: X for X.Y.Z) */
|
||||
#undef UNREAL_VERSION_GENERATION
|
||||
|
||||
/* Major version number (e.g.: Y for X.Y.Z) */
|
||||
#undef UNREAL_VERSION_MAJOR
|
||||
|
||||
/* Minor version number (e.g.: Z for X.Y.Z) */
|
||||
#undef UNREAL_VERSION_MINOR
|
||||
|
||||
/* Version suffix such as a beta marker or release candidate marker. (e.g.:
|
||||
-rcX for unrealircd-3.2.9-rcX) */
|
||||
#undef UNREAL_VERSION_SUFFIX
|
||||
|
||||
/* Define if you have libcurl installed to get remote includes and MOTD
|
||||
support */
|
||||
#undef USE_LIBCURL
|
||||
|
||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
||||
significant byte first (like Motorola and SPARC, unlike Intel). */
|
||||
#if defined AC_APPLE_UNIVERSAL_BUILD
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define WORDS_BIGENDIAN 1
|
||||
# endif
|
||||
#else
|
||||
# ifndef WORDS_BIGENDIAN
|
||||
# undef WORDS_BIGENDIAN
|
||||
# endif
|
||||
#endif
|
|
@ -136,6 +136,8 @@ extern char OSName[256];
|
|||
#define P_EWORKING EINPROGRESS
|
||||
#define P_EINTR EINTR
|
||||
#define P_ETIMEDOUT ETIMEDOUT
|
||||
#define P_ENETUNREACH ENETUNREACH
|
||||
#define P_EHOSTUNREACH EHOSTUNREACH
|
||||
#define P_ENOTSOCK ENOTSOCK
|
||||
#define P_EIO EIO
|
||||
#define P_ECONNABORTED ECONNABORTED
|
||||
|
@ -165,6 +167,8 @@ extern char OSName[256];
|
|||
#define P_EWORKING WSAEWOULDBLOCK
|
||||
#define P_EINTR WSAEINTR
|
||||
#define P_ETIMEDOUT WSAETIMEDOUT
|
||||
#define P_ENETUNREACH WSAENETUNREACH
|
||||
#define P_EHOSTUNREACH WSAEHOSTUNREACH
|
||||
#define P_ENOTSOCK WSAENOTSOCK
|
||||
#define P_EIO EIO
|
||||
#define P_ECONNABORTED WSAECONNABORTED
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
* Can be useful if the above 3 versionids are insufficient for you (eg: you want to support CVS).
|
||||
* This is updated automatically on the CVS server every Monday. so don't touch it.
|
||||
*/
|
||||
#define UNREAL_VERSION_TIME 202125
|
||||
#define UNREAL_VERSION_TIME 202139
|
||||
|
||||
#define UNREAL_VERSION ((UNREAL_VERSION_GENERATION << 24) + (UNREAL_VERSION_MAJOR << 16) + (UNREAL_VERSION_MINOR << 8))
|
||||
#define UnrealProtocol 5002
|
||||
|
|
|
@ -65,6 +65,6 @@
|
|||
|
||||
/* Version suffix such as a beta marker or release candidate marker. (e.g.:
|
||||
-rcX for unrealircd-3.2.9-rcX) */
|
||||
#define UNREAL_VERSION_SUFFIX "-git"
|
||||
#define UNREAL_VERSION_SUFFIX ""
|
||||
|
||||
#endif
|
||||
|
|
|
@ -373,7 +373,13 @@ void unrealdns_cb_nametoip_link(void *arg, int status, int timeouts, struct host
|
|||
return;
|
||||
}
|
||||
|
||||
/* fatal error while resolving */
|
||||
if (r->ipv4fallback) {
|
||||
/* ipv6-only domain but we couldn't connect over ipv6 and fell back to ipv4 */
|
||||
sendto_ops_and_log("Couldn't connect to server %s.", r->linkblock->servername);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* fatal error while resolving */
|
||||
unreal_log(ULOG_ERROR, "link", "LINK_ERROR_RESOLVING", NULL,
|
||||
"Unable to resolve hostname $link_block.hostname, when trying to connect to server $link_block.",
|
||||
log_data_link_block(r->linkblock));
|
||||
|
|
10
src/hash.c
10
src/hash.c
|
@ -292,8 +292,8 @@ void init_hash(void)
|
|||
* The hash table is ready, anyway.
|
||||
*/
|
||||
|
||||
if (strcmp(BASE_VERSION, &unreallogo[337]))
|
||||
loop.tainted = 1;
|
||||
// if (strcmp(BASE_VERSION, &unreallogo[337]))
|
||||
// loop.tainted = 1;
|
||||
}
|
||||
|
||||
uint64_t hash_client_name(const char *name)
|
||||
|
@ -329,9 +329,11 @@ int add_to_client_hash_table(const char *name, Client *client)
|
|||
* sat up late at night so some lamer could steal all our work without even
|
||||
* giving us credit. Remember to follow all regulations in LICENSE.
|
||||
* -Stskeeps
|
||||
* I have read the terms and conditions
|
||||
* - Polsaker
|
||||
*/
|
||||
if (loop.tainted)
|
||||
return 0;
|
||||
// if (loop.tainted)
|
||||
// return 0;
|
||||
hashv = hash_client_name(name);
|
||||
list_add(&client->client_hash, &clientTable[hashv]);
|
||||
return 0;
|
||||
|
|
27
src/misc.c
27
src/misc.c
|
@ -410,28 +410,6 @@ void remove_dcc_references(Client *client)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Recursively send QUITs and SQUITs for cptr and all of it's dependent
|
||||
* clients. A server needs the client QUITs if it does not support NOQUIT.
|
||||
* - kaniini
|
||||
*/
|
||||
static void recurse_send_quits(Client *cptr, Client *client, Client *from, Client *to,
|
||||
MessageTag *mtags, const char *comment, const char *splitstr)
|
||||
{
|
||||
Client *acptr, *next;
|
||||
|
||||
list_for_each_entry_safe(acptr, next, &global_server_list, client_node)
|
||||
{
|
||||
if (acptr->uplink != client)
|
||||
continue;
|
||||
|
||||
recurse_send_quits(cptr, acptr, from, to, mtags, comment, splitstr);
|
||||
}
|
||||
|
||||
if (cptr == client && to != from && !(to->direction && (to->direction == from)))
|
||||
sendto_one(to, mtags, "SQUIT %s :%s", client->name, comment);
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove all clients that depend on source_p; assumes all (S)QUITs have
|
||||
* already been sent. we make sure to exit a server's dependent clients
|
||||
|
@ -470,7 +448,10 @@ static void remove_dependents(Client *client, Client *from, MessageTag *mtags, c
|
|||
Client *acptr;
|
||||
|
||||
list_for_each_entry(acptr, &global_server_list, client_node)
|
||||
recurse_send_quits(client, client, from, acptr, mtags, comment, splitstr);
|
||||
{
|
||||
if (acptr != from && !(acptr->direction && (acptr->direction == from)))
|
||||
sendto_one(acptr, mtags, "SQUIT %s :%s", client->name, comment);
|
||||
}
|
||||
|
||||
recurse_remove_clients(client, mtags, splitstr);
|
||||
}
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
ModuleHeader MOD_HEADER
|
||||
= {
|
||||
"charsys", /* Name of module */
|
||||
"5.0", /* Version */
|
||||
"5.0-emoji-0.2.1", /* Version */
|
||||
"Character System (set::allowed-nickchars)", /* Short description of module */
|
||||
"UnrealIRCd Team",
|
||||
"unrealircd-6",
|
||||
|
@ -50,6 +50,15 @@ struct MBList
|
|||
};
|
||||
MBList *mblist = NULL, *mblist_tail = NULL;
|
||||
|
||||
/** Our unicode structure */
|
||||
typedef struct UList UList;
|
||||
struct UList
|
||||
{
|
||||
UList *next;
|
||||
wchar_t start, end;
|
||||
};
|
||||
UList *ulist = NULL, *ulist_tail = NULL;
|
||||
|
||||
/* Use this to prevent mixing of certain combinations
|
||||
* (such as GBK & high-ascii, etc)
|
||||
*/
|
||||
|
@ -84,6 +93,7 @@ struct LangList
|
|||
|
||||
/* MUST be alphabetized (first column) */
|
||||
static LangList langlist[] = {
|
||||
{ "arabic-utf8", "ara-utf8", LANGAV_ASCII|LANGAV_UTF8|LANGAV_ARABIC_UTF8 },
|
||||
{ "arabic-utf8", "ara-utf8", LANGAV_ASCII|LANGAV_UTF8|LANGAV_ARABIC_UTF8 },
|
||||
{ "belarussian-utf8", "blr-utf8", LANGAV_ASCII|LANGAV_UTF8|LANGAV_CYRILLIC_UTF8 },
|
||||
{ "belarussian-w1251", "blr", LANGAV_ASCII|LANGAV_W1251 },
|
||||
|
@ -100,6 +110,7 @@ static LangList langlist[] = {
|
|||
{ "danish-utf8", "dan-utf8", LANGAV_ASCII|LANGAV_UTF8|LANGAV_LATIN_UTF8 },
|
||||
{ "dutch", "dut", LANGAV_ASCII|LANGAV_LATIN1 },
|
||||
{ "dutch-utf8", "dut-utf8", LANGAV_ASCII|LANGAV_UTF8|LANGAV_LATIN_UTF8 },
|
||||
{ "emoji-utf8", "emo-utf8", LANGAV_UTF8 },
|
||||
{ "estonian-utf8","est-utf8", LANGAV_ASCII|LANGAV_UTF8|LANGAV_LATIN_UTF8 },
|
||||
{ "french", "fre", LANGAV_ASCII|LANGAV_LATIN1 },
|
||||
{ "french-utf8", "fre-utf8", LANGAV_ASCII|LANGAV_UTF8|LANGAV_LATIN_UTF8 },
|
||||
|
@ -226,7 +237,7 @@ int charsys_config_test(ConfigFile *cf, ConfigEntry *ce, int type, int *errs)
|
|||
if (type != CONFIG_SET)
|
||||
return 0;
|
||||
|
||||
/* We are only interrested in set::allowed-nickchars... */
|
||||
/* We are only interested in set::allowed-nickchars... */
|
||||
if (!ce || !ce->name || strcmp(ce->name, "allowed-nickchars"))
|
||||
return 0;
|
||||
|
||||
|
@ -354,6 +365,7 @@ void charsys_reset(void)
|
|||
{
|
||||
int i;
|
||||
MBList *m, *m_next;
|
||||
UList *u, *u_next;
|
||||
|
||||
/* First, reset everything */
|
||||
for (i=0; i < 256; i++)
|
||||
|
@ -364,6 +376,14 @@ void charsys_reset(void)
|
|||
safe_free(m);
|
||||
}
|
||||
mblist=mblist_tail=NULL;
|
||||
|
||||
for (u = ulist; u; u = u_next)
|
||||
{
|
||||
u_next = u->next;
|
||||
safe_free(u);
|
||||
}
|
||||
ulist = ulist_tail = NULL;
|
||||
|
||||
/* Then add the default which will always be allowed */
|
||||
charsys_addallowed("0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyzy{|}");
|
||||
langav = 0;
|
||||
|
@ -458,6 +478,21 @@ MBList *m = safe_alloc(sizeof(MBList));
|
|||
mblist_tail = m;
|
||||
}
|
||||
|
||||
void charsys_addunicoderange(wchar_t start, wchar_t end)
|
||||
{
|
||||
UList *u = safe_alloc(sizeof(UList));
|
||||
|
||||
u->start = start;
|
||||
u->end = end;
|
||||
|
||||
if (ulist_tail)
|
||||
ulist_tail->next = u;
|
||||
else
|
||||
ulist = u;
|
||||
|
||||
ulist_tail = u;
|
||||
}
|
||||
|
||||
/** Adds all characters in the specified string to the allowed list. */
|
||||
void charsys_addallowed(char *s)
|
||||
{
|
||||
|
@ -484,7 +519,7 @@ void charsys_addallowed_range(unsigned char from, unsigned char to)
|
|||
|
||||
int _do_nick_name(char *nick)
|
||||
{
|
||||
if (mblist)
|
||||
if (mblist || ulist)
|
||||
return do_nick_name_multibyte(nick);
|
||||
else
|
||||
return do_nick_name_standard(nick);
|
||||
|
@ -518,6 +553,76 @@ static int isvalidmbyte(unsigned char c1, unsigned char c2)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int isvalidunicodechar(wchar_t uch)
|
||||
{
|
||||
UList *u;
|
||||
|
||||
for (u = ulist; u; u = u->next)
|
||||
{
|
||||
if (uch >= u->start && uch <= u->end)
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int isvalidunicodenick(wchar_t *unick)
|
||||
{
|
||||
wchar_t *uch, *puch = 0;
|
||||
/* Consecutive number of U+1F3F4 (waving black flag) and U+E0030..U+E0039 (tag digit one..nine)
|
||||
* plus U+E0061..U+E007A (tag latin small letter a..z) code points */
|
||||
int black_flag_or_tag_count = 0;
|
||||
|
||||
for (uch = unick; *uch; puch = uch, uch++)
|
||||
{
|
||||
/* Accept only a single ZWJ (U+200D) or a single VS16 (U+FE0F) potentially followed by a ZWJ.
|
||||
*
|
||||
* They always have to follow an emoji (assumed to be a U+2600 or higher code point). */
|
||||
if ( (*uch == 0x200d || *uch == 0xfe0f) && (!puch || *puch < 0x2600 || *puch == *uch) )
|
||||
return 0;
|
||||
|
||||
/* Don't end unicode sequence on a ZWJ. */
|
||||
if (*uch <= 0x2600 && puch && *puch == 0x200d)
|
||||
return 0;
|
||||
|
||||
/* U+1F3F4 (waving black flag) followed by a number of U+E0030..U+E0039 (tag digit zero..nine) and
|
||||
* U+E0061..U+E007A (tag latin small letter a..z) code points are used for regional flags. See [0].
|
||||
*
|
||||
* [0] https://www.unicode.org/reports/tr51/#valid-emoji-tag-sequences
|
||||
*/
|
||||
if (*uch == 0x1f3f4) {
|
||||
/* We're already in the middle of a flag sequence. */
|
||||
if (black_flag_or_tag_count)
|
||||
return 0;
|
||||
black_flag_or_tag_count = 1;
|
||||
}
|
||||
else if ( (*uch >= 0xe0030 && *uch <= 0xe0039) || (*uch >= 0xe0061 && *uch <= 0xe007a) )
|
||||
{
|
||||
/* We only support latin tags after a black flag. */
|
||||
if (black_flag_or_tag_count < 1)
|
||||
return 0;
|
||||
black_flag_or_tag_count++;
|
||||
}
|
||||
else if (*uch == 0xe007f)
|
||||
{
|
||||
/* Cancel tags only come after a black flag and at least one alphanumeric tag. */
|
||||
if (black_flag_or_tag_count <= 2)
|
||||
return 0;
|
||||
black_flag_or_tag_count = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Truncated flag. */
|
||||
if (black_flag_or_tag_count > 1)
|
||||
return 0;
|
||||
|
||||
/* We can't end on a ZWJ */
|
||||
if (puch && *puch == 0x200d)
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* hmmm.. there must be some problems with multibyte &
|
||||
* other high ascii characters I think (such as german etc).
|
||||
* Not sure if this can be solved? I don't think so... -- Syzop.
|
||||
|
@ -526,31 +631,106 @@ static int do_nick_name_multibyte(char *nick)
|
|||
{
|
||||
int len;
|
||||
char *ch;
|
||||
int firstmbchar = 0;
|
||||
wchar_t uch, unick[NICKLEN+1], *uchp;
|
||||
int firstmbchar = 0, utf8seq = 0, utf8width = 0;
|
||||
|
||||
if ((*nick == '-') || isdigit(*nick))
|
||||
return 0;
|
||||
|
||||
uchp = unick;
|
||||
|
||||
for (ch=nick,len=0; *ch && len <= NICKLEN; ch++, len++)
|
||||
{
|
||||
/* Some characters are ALWAYS illegal, so they have to be disallowed here */
|
||||
if ((*ch <= 32) || strchr(illegalnickchars, *ch))
|
||||
return 0;
|
||||
if (firstmbchar)
|
||||
|
||||
if (utf8seq && !firstmbchar)
|
||||
{
|
||||
if (((*ch) & 0xc0) == 0x80)
|
||||
/* Still in a valid UTF-8 sequence */
|
||||
utf8seq++;
|
||||
else
|
||||
/* We were in an UTF-8 sequence but this byte's not valid, bail out */
|
||||
return 0;
|
||||
|
||||
if (utf8seq == utf8width)
|
||||
{
|
||||
/* mbtowc is locale dependent so let's YOLO this ourselves */
|
||||
if (utf8width == 4)
|
||||
uch = (wchar_t)(((ch[-3] & 0x7) << 18) + ((ch[-2] & 0x3f) << 12) + ((ch[-1] & 0x3f) << 6) + (*ch & 0x3f));
|
||||
else if (utf8width == 3)
|
||||
uch = (wchar_t)(((ch[-2] & 0xf) << 12) + ((ch[-1] & 0x3f) << 6) + (*ch & 0x3f));
|
||||
/* Disabled to prevent conflicts with existing multi-byte support. */
|
||||
/*
|
||||
else if (utf8width == 2)
|
||||
uch = (wchar_t)(((ch[-1] & 0x1f) << 6) + (*ch & 0x3f));
|
||||
*/
|
||||
else
|
||||
/* How did we get here? */
|
||||
return 0;
|
||||
|
||||
if (!isvalidunicodechar(uch))
|
||||
return 0;
|
||||
|
||||
utf8seq = utf8width = 0;
|
||||
*uchp++ = uch;
|
||||
}
|
||||
}
|
||||
else if (!firstmbchar && ((*ch) & 0xf8) == 0xf0)
|
||||
{
|
||||
utf8seq = 1;
|
||||
utf8width = 4;
|
||||
}
|
||||
else if (!firstmbchar && ((*ch) & 0xf0) == 0xe0)
|
||||
{
|
||||
utf8seq = 1;
|
||||
utf8width = 3;
|
||||
}
|
||||
/* Disabled to prevent conflicts with existing multi-byte support. */
|
||||
/*
|
||||
else if (!firstmbchar && ((*ch) & 0xe0) == 0xc0)
|
||||
{
|
||||
utf8seq = 1;
|
||||
utf8width = 2;
|
||||
}
|
||||
*/
|
||||
else if (firstmbchar)
|
||||
{
|
||||
if (!isvalidmbyte(ch[-1], *ch))
|
||||
return 0;
|
||||
|
||||
firstmbchar = 0;
|
||||
} else if ((*ch) & 0x80)
|
||||
|
||||
/* Still blisfully ignoring the existing multibyte support on the
|
||||
* emoji unicode side of things. */
|
||||
*uchp++ = ch[-1];
|
||||
*uchp++ = *ch;
|
||||
}
|
||||
else if ((*ch) & 0x80)
|
||||
firstmbchar = 1;
|
||||
else if (!isvalid(*ch))
|
||||
return 0;
|
||||
else
|
||||
*uchp++ = *ch;
|
||||
}
|
||||
|
||||
if (firstmbchar)
|
||||
{
|
||||
ch--;
|
||||
len--;
|
||||
}
|
||||
|
||||
if (utf8seq)
|
||||
{
|
||||
ch -= utf8seq;
|
||||
len -= utf8seq;
|
||||
}
|
||||
|
||||
*uchp++ = '\0';
|
||||
if (!isvalidunicodenick(unick))
|
||||
return 0;
|
||||
|
||||
*ch = '\0';
|
||||
return len;
|
||||
}
|
||||
|
@ -701,7 +881,7 @@ void charsys_add_language(char *name)
|
|||
if (latin1 || !strcmp(name, "german"))
|
||||
{
|
||||
/* a", A", o", O", u", U" and es-zett */
|
||||
charsys_addallowed("äÄöÖüÜß");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "german-utf8"))
|
||||
{
|
||||
|
@ -716,7 +896,7 @@ void charsys_add_language(char *name)
|
|||
if (latin1 || !strcmp(name, "swiss-german"))
|
||||
{
|
||||
/* a", A", o", O", u", U" */
|
||||
charsys_addallowed("äÄöÖüÜ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "swiss-german-utf8"))
|
||||
{
|
||||
|
@ -736,7 +916,7 @@ void charsys_add_language(char *name)
|
|||
* I suggest you to use just latin1 :P.
|
||||
*/
|
||||
/* e', e", o", i", u", e`. */
|
||||
charsys_addallowed("éëöïüè");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "dutch-utf8"))
|
||||
{
|
||||
|
@ -750,7 +930,7 @@ void charsys_add_language(char *name)
|
|||
{
|
||||
/* supplied by klaus:
|
||||
* <ae>, <AE>, ao, Ao, o/, O/ */
|
||||
charsys_addallowed("æÆåÅøØ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "danish-utf8"))
|
||||
{
|
||||
|
@ -766,7 +946,7 @@ void charsys_add_language(char *name)
|
|||
* Hmm.. there might be more, but I'm not sure how common they are
|
||||
* and I don't think they are always displayed correctly (?).
|
||||
*/
|
||||
charsys_addallowed("ÀÂàâÇçÈÉÊËèéêëÎÏîïÔôÙÛÜùûüÿ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "french-utf8"))
|
||||
{
|
||||
|
@ -789,7 +969,7 @@ void charsys_add_language(char *name)
|
|||
if (latin1 || !strcmp(name, "spanish"))
|
||||
{
|
||||
/* a', A', e', E', i', I', o', O', u', U', u", U", n~, N~ */
|
||||
charsys_addallowed("áÁéÉíÍóÓúÚüÜñÑ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "spanish-utf8"))
|
||||
{
|
||||
|
@ -811,7 +991,7 @@ void charsys_add_language(char *name)
|
|||
if (latin1 || !strcmp(name, "italian"))
|
||||
{
|
||||
/* A`, E`, E', I`, I', O`, O', U`, U', a`, e`, e', i`, i', o`, o', u`, u' */
|
||||
charsys_addallowed("ÀÈÉÌÍÒÓÙÚàèéìíòóùú");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "italian-utf8"))
|
||||
{
|
||||
|
@ -830,7 +1010,7 @@ void charsys_add_language(char *name)
|
|||
{
|
||||
/* supplied by Trocotronic */
|
||||
/* a`, A`, e`, weird-c, weird-C, E`, e', E', i', I', o`, O`, o', O', u', U', i", I", u", U", weird-dot */
|
||||
charsys_addallowed("àÀçÇèÈéÉíÍòÒóÓúÚïÏüÜ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "catalan-utf8"))
|
||||
{
|
||||
|
@ -852,7 +1032,7 @@ void charsys_add_language(char *name)
|
|||
{
|
||||
/* supplied by Tank */
|
||||
/* ao, Ao, a", A", o", O" */
|
||||
charsys_addallowed("åÅäÄöÖ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "swedish-utf8"))
|
||||
{
|
||||
|
@ -864,7 +1044,7 @@ void charsys_add_language(char *name)
|
|||
if (latin1 || !strcmp(name, "icelandic"))
|
||||
{
|
||||
/* supplied by Saevar */
|
||||
charsys_addallowed("ÆæÖöÁáÍíÐðÚúÓóÝýÞþ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "icelandic-utf8"))
|
||||
{
|
||||
|
@ -892,7 +1072,7 @@ void charsys_add_language(char *name)
|
|||
{
|
||||
/* supplied by AngryWolf */
|
||||
/* a', e', i', o', o", o~, u', u", u~, A', E', I', O', O", O~, U', U", U~ */
|
||||
charsys_addallowed("áéíóöõúüûÁÉÍÓÖÕÚÜÛ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "hungarian-utf8"))
|
||||
{
|
||||
|
@ -918,7 +1098,7 @@ void charsys_add_language(char *name)
|
|||
{
|
||||
/* With some help from crazytoon */
|
||||
/* 'S,' 's,' 'A^' 'A<' 'I^' 'T,' 'a^' 'a<' 'i^' 't,' */
|
||||
charsys_addallowed("ªºÂÃÎÞâãîþ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "romanian-utf8"))
|
||||
{
|
||||
|
@ -934,7 +1114,7 @@ void charsys_add_language(char *name)
|
|||
if (latin2 || !strcmp(name, "polish"))
|
||||
{
|
||||
/* supplied by k4be */
|
||||
charsys_addallowed("±æê³ñó¶¿¼¡ÆÊ£ÑÓ¦¯¬");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>Ӧ<EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "polish-utf8"))
|
||||
{
|
||||
|
@ -950,12 +1130,12 @@ void charsys_add_language(char *name)
|
|||
if (w1250 || !strcmp(name, "polish-w1250"))
|
||||
{
|
||||
/* supplied by k4be */
|
||||
charsys_addallowed("¹æê³ñ󜿟¥ÆÊ£ÑÓŒ¯<EFBFBD>");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ӌ<EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (w1250 || !strcmp(name, "czech-w1250"))
|
||||
{
|
||||
/* Syzop [probably incomplete] */
|
||||
charsys_addallowed("Š<EFBFBD>Žš<EFBFBD>žÁÈÉÌÍÏÒÓØÙÚÝáèéìíïòóøùúý");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "czech-utf8"))
|
||||
{
|
||||
|
@ -983,7 +1163,7 @@ void charsys_add_language(char *name)
|
|||
if (w1250 || !strcmp(name, "slovak-w1250"))
|
||||
{
|
||||
/* Syzop [probably incomplete] */
|
||||
charsys_addallowed("Š<EFBFBD>Žš<EFBFBD>ž¼¾ÀÁÄÅÈÉÍÏàáäåèéíïòóôúý");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (latin_utf8 || !strcmp(name, "slovak-utf8"))
|
||||
{
|
||||
|
@ -1014,7 +1194,7 @@ void charsys_add_language(char *name)
|
|||
/* supplied by Roman Parkin:
|
||||
* 128-159 and 223-254
|
||||
*/
|
||||
charsys_addallowed("ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ¨¸");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (cyrillic_utf8 || !strcmp(name, "russian-utf8"))
|
||||
{
|
||||
|
@ -1030,7 +1210,7 @@ void charsys_add_language(char *name)
|
|||
* 128-159, 161, 162, 178, 179 and 223-254
|
||||
* Corrected 01.11.2006 to more "correct" behavior by Bock
|
||||
*/
|
||||
charsys_addallowed("ÀÁÂÃÄŨÆÇ²ÉÊËÌÍÎÏÐÑÒÓ¡ÔÕÖרÛÜÝÞßàáâãä叿ç³éêëìíîïðñòó¢ôõö÷øûüýþÿ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ũ<EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (cyrillic_utf8 || !strcmp(name, "belarussian-utf8"))
|
||||
{
|
||||
|
@ -1054,7 +1234,7 @@ void charsys_add_language(char *name)
|
|||
* 128-159, 170, 175, 178, 179, 186, 191 and 223-254
|
||||
* Corrected 01.11.2006 to more "correct" behavior by core
|
||||
*/
|
||||
charsys_addallowed("ÀÁÂÃ¥ÄŪÆÇȲ¯ÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÜÞßàáâã´äåºæç賿éêëìíîïðñòóôõö÷øùüþÿ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD>å<EFBFBD>Ū<EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>賿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (cyrillic_utf8 || !strcmp(name, "ukrainian-utf8"))
|
||||
{
|
||||
|
@ -1076,7 +1256,7 @@ void charsys_add_language(char *name)
|
|||
{
|
||||
/* supplied by GSF */
|
||||
/* ranges from rfc1947 / iso 8859-7 */
|
||||
charsys_addallowed("¶¸¹º¼¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóô");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (!strcmp(name, "greek-utf8"))
|
||||
{
|
||||
|
@ -1092,7 +1272,7 @@ void charsys_add_language(char *name)
|
|||
if (!strcmp(name, "turkish"))
|
||||
{
|
||||
/* Supplied by Ayberk Yancatoral */
|
||||
charsys_addallowed("öÖçÇþÞüÜðÐý");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (!strcmp(name, "turkish-utf8"))
|
||||
{
|
||||
|
@ -1112,7 +1292,7 @@ void charsys_add_language(char *name)
|
|||
{
|
||||
/* Supplied by PHANTOm. */
|
||||
/* 0xE0 - 0xFE */
|
||||
charsys_addallowed("àáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþ");
|
||||
charsys_addallowed("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
if (!strcmp(name, "hebrew-utf8"))
|
||||
{
|
||||
|
@ -1143,7 +1323,7 @@ void charsys_add_language(char *name)
|
|||
/* [LATVIAN] */
|
||||
if (latin_utf8 || !strcmp(name, "latvian-utf8"))
|
||||
{
|
||||
/* A a, C c, E e, G g, I i, K k, Š š, U u, Ž ž */
|
||||
/* A a, C c, E e, G g, I i, K k, <EFBFBD> <20>, U u, <20> <20> */
|
||||
charsys_addmultibyterange(0xc4, 0xc4, 0x80, 0x81);
|
||||
charsys_addmultibyterange(0xc4, 0xc4, 0x92, 0x93);
|
||||
charsys_addmultibyterange(0xc4, 0xc4, 0x8c, 0x8d);
|
||||
|
@ -1159,7 +1339,7 @@ void charsys_add_language(char *name)
|
|||
/* [ESTONIAN] */
|
||||
if (latin_utf8 || !strcmp(name, "estonian-utf8"))
|
||||
{
|
||||
/* õ, ä, ö, ü, Õ, Ä, Ö, Ü */
|
||||
/* <EFBFBD>, <20>, <20>, <20>, <20>, <20>, <20>, <20> */
|
||||
charsys_addmultibyterange(0xc3, 0xc3, 0xb5, 0xb6);
|
||||
charsys_addmultibyterange(0xc3, 0xc3, 0xa4, 0xa4);
|
||||
charsys_addmultibyterange(0xc3, 0xc3, 0xbc, 0xbc);
|
||||
|
@ -1171,7 +1351,7 @@ void charsys_add_language(char *name)
|
|||
/* [LITHUANIAN] */
|
||||
if (latin_utf8 || !strcmp(name, "lithuanian-utf8"))
|
||||
{
|
||||
/* a, c, e, e, i, š, u, u, ž, A, C, E, E, I, Š, U, U, Ž */
|
||||
/* a, c, e, e, i, <EFBFBD>, u, u, <20>, A, C, E, E, I, <20>, U, U, <20> */
|
||||
charsys_addmultibyterange(0xc4, 0xc4, 0x84, 0x85);
|
||||
charsys_addmultibyterange(0xc4, 0xc4, 0x8c, 0x8d);
|
||||
charsys_addmultibyterange(0xc4, 0xc4, 0x96, 0x99);
|
||||
|
@ -1195,11 +1375,83 @@ void charsys_add_language(char *name)
|
|||
/* 0xd981 - 0xd98a */
|
||||
charsys_addmultibyterange(0xd9, 0xd9, 0x81, 0x8a);
|
||||
}
|
||||
|
||||
/* [EMOJI] */
|
||||
if (!strcmp(name, "emoji-utf8"))
|
||||
{
|
||||
/* Wikipedia perhaps isn't the best place to base our ranges on
|
||||
* but it works for now.
|
||||
*
|
||||
* ZWJ (U+200D) and Variant Selector 16 (U+FE0F) can be used in
|
||||
* homoglyph attacks so there's a check in isvalidunicodenick
|
||||
* to attempt to mitigate (but not remove!) the risk.
|
||||
*
|
||||
* Only 3 and 4 byte UTF-8 sequences are supported to make sure
|
||||
* the UTF-8 decoding doesn't break the existing multi-byte
|
||||
* support.
|
||||
*
|
||||
* isvalidunicodenick needs to be updated if any emoji code
|
||||
* points under U+2600 are added.
|
||||
*/
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Zero-width_joiner */
|
||||
charsys_addunicoderange(0x200d, 0x200d);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Miscellaneous_Symbols*/
|
||||
charsys_addunicoderange(0x2600, 0x26ff);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Dingbat#Encoding */
|
||||
charsys_addunicoderange(0x2700, 0x27bf);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Variation_Selectors_(Unicode_block) */
|
||||
charsys_addunicoderange(0xfe0f, 0xfe0f);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Regional_indicator_symbol */
|
||||
charsys_addunicoderange(0x1f1e6, 0x1f1ff);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Miscellaneous_Symbols_and_Pictographs */
|
||||
charsys_addunicoderange(0x1f300, 0x1f5ff);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Emoticons_(Unicode_block)#Emoji_modifiers
|
||||
* https://en.wikipedia.org/wiki/Miscellaneous_Symbols#Emoji_modifiers
|
||||
* https://en.wikipedia.org/wiki/Supplemental_Symbols_and_Pictographs#Emoji_modifiers
|
||||
* https://en.wikipedia.org/wiki/Miscellaneous_Symbols_and_Pictographs#Emoji_modifiers
|
||||
* https://en.wikipedia.org/wiki/Transport_and_Map_Symbols#Emoji_modifiers
|
||||
* https://en.wikipedia.org/wiki/Dingbat#Emoji_modifiers
|
||||
*
|
||||
* These are included in the previous range but still listed
|
||||
* separately due to their importance.
|
||||
*/
|
||||
charsys_addunicoderange(0x1f3fb, 0x1f3ff);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Emoticons_(Unicode_block) */
|
||||
charsys_addunicoderange(0x1f600, 0x1f64f);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Transport_and_Map_Symbols */
|
||||
charsys_addunicoderange(0x1f680, 0x1f6ff);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Supplemental_Symbols_and_Pictographs */
|
||||
charsys_addunicoderange(0x1f900, 0x1f9ff);
|
||||
|
||||
/* https://en.wikipedia.org/wiki/Symbols_and_Pictographs_Extended-A */
|
||||
charsys_addunicoderange(0x1fa70, 0x1faff);
|
||||
|
||||
/* https://www.unicode.org/reports/tr51/#valid-emoji-tag-sequences */
|
||||
/* tag digit zero .. tag digit nine */
|
||||
charsys_addunicoderange(0xe0030, 0xe0039);
|
||||
|
||||
/* tag latin small letter a .. tag latin small letter z */
|
||||
charsys_addunicoderange(0xe0061, 0xe007a);
|
||||
|
||||
/* cancel tag */
|
||||
charsys_addunicoderange(0xe007f, 0xe007f);
|
||||
}
|
||||
}
|
||||
|
||||
/** This displays all the nick characters that are permitted */
|
||||
char *charsys_displaychars(void)
|
||||
{
|
||||
/* TODO: Add ulist rendering */
|
||||
#if 0
|
||||
MBList *m;
|
||||
unsigned char hibyte, lobyte;
|
||||
|
|
|
@ -47,6 +47,7 @@ int lr_pre_command(Client *from, MessageTag *mtags, const char *buf);
|
|||
int lr_post_command(Client *from, MessageTag *mtags, const char *buf);
|
||||
int lr_close_connection(Client *client);
|
||||
int lr_packet(Client *from, Client *to, Client *intended_to, char **msg, int *len);
|
||||
void lr_new_message(Client *client, MessageTag *recv_mtags, MessageTag **mtag_list, char *signature);
|
||||
void *_labeled_response_save_context(void);
|
||||
void _labeled_response_set_context(void *ctx);
|
||||
void _labeled_response_force_end(void);
|
||||
|
@ -97,6 +98,7 @@ MOD_INIT()
|
|||
HookAdd(modinfo->handle, HOOKTYPE_POST_COMMAND, 1000000000, lr_post_command);
|
||||
HookAdd(modinfo->handle, HOOKTYPE_CLOSE_CONNECTION, 1000000000, lr_close_connection);
|
||||
HookAdd(modinfo->handle, HOOKTYPE_PACKET, 1000000000, lr_packet);
|
||||
HookAddVoid(modinfo->handle, HOOKTYPE_NEW_MESSAGE, 0, lr_new_message);
|
||||
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
@ -333,6 +335,20 @@ int lr_packet(Client *from, Client *to, Client *intended_to, char **msg, int *le
|
|||
return 0;
|
||||
}
|
||||
|
||||
void lr_new_message(Client *client, MessageTag *recv_mtags, MessageTag **mtag_list, char *signature)
|
||||
{
|
||||
/* Locally processed messages already have the label! */
|
||||
if (currentcmd.client) return;
|
||||
MessageTag *m;
|
||||
|
||||
m = find_mtag(recv_mtags, "label");
|
||||
if (m)
|
||||
{
|
||||
m = duplicate_mtag(m);
|
||||
AddListItem(m, *mtag_list);
|
||||
}
|
||||
}
|
||||
|
||||
/** This function verifies if the client sending the
|
||||
* tag is permitted to do so and uses a permitted syntax.
|
||||
*/
|
||||
|
|
|
@ -85,7 +85,7 @@ CMD_FUNC(cmd_ping)
|
|||
if (MyUser(client))
|
||||
origin = client->name; /* Make sure origin is not spoofed */
|
||||
if ((target = find_server_quick(destination)) && (target != &me))
|
||||
sendto_one(target, NULL, ":%s PING %s :%s", client->name, origin, destination);
|
||||
sendto_one(target, recv_mtags, ":%s PING %s :%s", client->name, origin, destination);
|
||||
else
|
||||
{
|
||||
sendnumeric(client, ERR_NOSUCHSERVER, destination);
|
||||
|
|
|
@ -132,11 +132,9 @@ CMD_FUNC(cmd_protoctl)
|
|||
*/
|
||||
if (strstr(charsys_get_current_languages(), "utf8") && !strstr(value, "utf8"))
|
||||
{
|
||||
unreal_log(ULOG_ERROR, "link", "LINK_DENIED_CHARSYS_INCOMPATIBLE", client,
|
||||
"Server link $client rejected. Server $me_name has utf8 in set::allowed-nickchars but $client does not.",
|
||||
log_data_string("me_name", me.name));
|
||||
exit_client(client, NULL, "Incompatible set::allowed-nickchars setting");
|
||||
return;
|
||||
unreal_log(ULOG_WARNING, "link", "LINK_WARNING_CHARSYS", client,
|
||||
"Server $client has utf8 in set::allowed-nickchars but %me does not. Proceed with caution.",
|
||||
log_data_string("me", me.name));
|
||||
}
|
||||
/* We compare the character sets to see if we should warn opers about any mismatch... */
|
||||
if (strcmp(value, charsys_get_current_languages()))
|
||||
|
|
|
@ -100,7 +100,7 @@ CMD_FUNC(cmd_svslogin)
|
|||
{
|
||||
Client *target;
|
||||
|
||||
if (!SASL_SERVER || MyUser(client) || (parc < 3) || !parv[3])
|
||||
if (MyUser(client) || (parc < 3) || !parv[3])
|
||||
return;
|
||||
|
||||
/* We actually ignore parv[1] since this is a broadcast message.
|
||||
|
|
68
src/modules/third/noglobalmsg.c
Normal file
68
src/modules/third/noglobalmsg.c
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* IRC - Internet Relay Chat, src/modules/third/noglobalmsg.c
|
||||
* (C) 2021 Polsaker - All rights reserved.
|
||||
*
|
||||
* See file AUTHORS in IRC package for additional names of
|
||||
* the programmers.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "unrealircd.h"
|
||||
|
||||
ModuleHeader MOD_HEADER
|
||||
= {
|
||||
"third/noglobalmsg",
|
||||
"1.0",
|
||||
"Disables PRIVMSG $*",
|
||||
"Polsaker",
|
||||
"unrealircd-5",
|
||||
};
|
||||
|
||||
|
||||
CMD_OVERRIDE_FUNC(override_privmsg);
|
||||
|
||||
MOD_INIT()
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
MOD_LOAD()
|
||||
{
|
||||
if (!CommandOverrideAdd(modinfo->handle, "PRIVMSG", override_privmsg))
|
||||
return MOD_FAILED;
|
||||
|
||||
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
MOD_UNLOAD()
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
CMD_OVERRIDE_FUNC(override_privmsg)
|
||||
{
|
||||
char *targetstr, *p;
|
||||
for (p = NULL, targetstr = strtoken(&p, parv[1], ","); targetstr; targetstr = strtoken(&p, NULL, ","))
|
||||
{
|
||||
if (*targetstr == '$')
|
||||
{
|
||||
sendnumeric(client, ERR_YOUREBANNEDCREEP, "Why would you want to do that?!");
|
||||
return;
|
||||
}
|
||||
}
|
||||
CallCommandOverride(ovr, client, recv_mtags, parc, parv);
|
||||
}
|
80
src/modules/third/nosajoinpart.c
Normal file
80
src/modules/third/nosajoinpart.c
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* IRC - Internet Relay Chat, src/modules/third/nosajoinpart.c
|
||||
* (C) 2021 Polsaker
|
||||
*
|
||||
* See file AUTHORS in IRC package for additional names of
|
||||
* the programmers.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "unrealircd.h"
|
||||
|
||||
ModuleHeader MOD_HEADER
|
||||
= {
|
||||
"third/nosajoinpart",
|
||||
"1.0",
|
||||
"Disables remote SAJOIN/SAPART targeted to local users",
|
||||
"Polsaker",
|
||||
"unrealircd-5",
|
||||
};
|
||||
|
||||
|
||||
CMD_OVERRIDE_FUNC(override_sajp);
|
||||
|
||||
MOD_INIT()
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
MOD_LOAD()
|
||||
{
|
||||
if (!CommandOverrideAdd(modinfo->handle, "SAJOIN", override_sajp))
|
||||
return MOD_FAILED;
|
||||
if (!CommandOverrideAdd(modinfo->handle, "SAPART", override_sajp))
|
||||
return MOD_FAILED;
|
||||
|
||||
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
MOD_UNLOAD()
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
CMD_OVERRIDE_FUNC(override_sajp)
|
||||
{
|
||||
Client *target;
|
||||
if ((parc < 3) || BadPtr(parv[2]))
|
||||
{
|
||||
sendnumeric(client, ERR_NEEDMOREPARAMS, "SAJOIN");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(target = find_person(parv[1], NULL)))
|
||||
{
|
||||
sendnumeric(client, ERR_NOSUCHNICK, parv[1]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (MyUser(target) && !MyUser(client))
|
||||
{
|
||||
sendnumeric(client, ERR_YOUREBANNEDCREEP, "I don't wanna :(");
|
||||
return;
|
||||
}
|
||||
|
||||
CallCommandOverride(ovr, client, recv_mtags, parc, parv);
|
||||
}
|
123
src/modules/third/pissquit.c
Normal file
123
src/modules/third/pissquit.c
Normal file
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
* IRC - Internet Relay Chat, src/modules/third/pissquit.c
|
||||
* (C) 2004-2021 The UnrealIRCd Team, pissnet team
|
||||
*
|
||||
* See file AUTHORS in IRC package for additional names of
|
||||
* the programmers.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 1, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include "unrealircd.h"
|
||||
|
||||
#define MSG_PISSQUIT "PISSQUIT"
|
||||
|
||||
CMD_FUNC(cmd_pissquit);
|
||||
|
||||
ModuleHeader MOD_HEADER
|
||||
= {
|
||||
"third/pissquit",
|
||||
"0.02",
|
||||
"command /pissquit: Positively Identify Server to Server QUIT",
|
||||
"pissnet team",
|
||||
"unrealircd-5",
|
||||
};
|
||||
|
||||
MOD_INIT()
|
||||
{
|
||||
CommandAdd(modinfo->handle, MSG_PISSQUIT, cmd_pissquit, 3, CMD_USER);
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
MOD_LOAD()
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
MOD_UNLOAD()
|
||||
{
|
||||
return MOD_SUCCESS;
|
||||
}
|
||||
|
||||
/*
|
||||
** cmd_pissquit
|
||||
** parv[1] = server to disconnect from its uplink
|
||||
** parv[2] = remote server that server needs to be disconnected from
|
||||
** parv[parc-1] = comment
|
||||
*/
|
||||
CMD_FUNC(cmd_pissquit)
|
||||
{
|
||||
char *server, *server_remote;
|
||||
Client *target, *target_remote;
|
||||
char *comment = (parc > 3 && parv[parc - 1]) ? parv[parc - 1] : client->name;
|
||||
|
||||
/* This permissions check is only intended as a quick filter. The SQUIT
|
||||
* code will do a proper check later. */
|
||||
if (!ValidatePermissionsForPath("route:local", client, NULL, NULL, NULL))
|
||||
{
|
||||
sendnumeric(client, ERR_NOPRIVILEGES);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((parc < 3) || BadPtr(parv[1]) || BadPtr(parv[2]))
|
||||
{
|
||||
sendnumeric(client, ERR_NEEDMOREPARAMS, MSG_PISSQUIT);
|
||||
return;
|
||||
}
|
||||
|
||||
server = parv[1];
|
||||
server_remote = parv[2];
|
||||
|
||||
target = find_server_quick(server);
|
||||
target_remote = find_server_quick(server_remote);
|
||||
|
||||
if (target && IsMe(target))
|
||||
{
|
||||
sendnotice(client, "ERROR: Unable to %s myself.", MSG_PISSQUIT);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!target || !target->srvptr)
|
||||
{
|
||||
sendnumeric(client, ERR_NOSUCHSERVER, server);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!target_remote)
|
||||
{
|
||||
sendnumeric(client, ERR_NOSUCHSERVER, server_remote);
|
||||
return;
|
||||
}
|
||||
|
||||
if (target->srvptr != target_remote)
|
||||
{
|
||||
sendnotice(client, "ERROR: Cannot disconnect %s (%s) from %s (%s). %s (%s) is connected to %s (%s) instead.",
|
||||
target->name, target->id,
|
||||
target_remote->name, target_remote->id,
|
||||
target->name, target->id,
|
||||
target->srvptr->name, target->srvptr->id);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Zeroing out the remote server shouldn't even be necessary since the
|
||||
* SQUIT code ignores all but parv[1] and parv[argc-1], but it can't
|
||||
* hurt.
|
||||
*
|
||||
* This does exceed the params count registered for the SQUIT command
|
||||
* but those aren't checked in this code path so yolo.
|
||||
* */
|
||||
parv[2] = NULL;
|
||||
do_cmd(client, recv_mtags, "SQUIT", parc, parv);
|
||||
}
|
|
@ -68,7 +68,7 @@ CMD_FUNC(cmd_tsctl)
|
|||
gettimeofday(¤ttime_tv, NULL);
|
||||
sendnotice(client, "*** Server=%s TStime=%lld.%ld",
|
||||
me.name, (long long)currenttime_tv.tv_sec, (long)currenttime_tv.tv_usec);
|
||||
sendto_server(client, 0, 0, NULL, ":%s TSCTL alltime", client->id);
|
||||
sendto_server(client, 0, 0, recv_mtags, ":%s TSCTL alltime", client->id);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -91,7 +91,8 @@ void sendto_wallops(Client *one, Client *from, FORMAT_STRING(const char *pattern
|
|||
*/
|
||||
CMD_FUNC(cmd_wallops)
|
||||
{
|
||||
const char *message = parc > 1 ? parv[1] : NULL;
|
||||
char *message;
|
||||
message = parc > 1 ? parv[1] : NULL;
|
||||
|
||||
if (BadPtr(message))
|
||||
{
|
||||
|
@ -105,5 +106,9 @@ CMD_FUNC(cmd_wallops)
|
|||
return;
|
||||
}
|
||||
|
||||
if (MyUser(client)) {
|
||||
sendto_one(client, NULL, ":%s WALLOPS :%s", client->name, message);
|
||||
}
|
||||
|
||||
sendto_wallops(client->direction, client, ":%s WALLOPS :%s", client->name, message);
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@ echo "Extracting src/version.c..."
|
|||
if [ -d ../.git ]; then
|
||||
SUFFIX="-$(git rev-parse --short HEAD)"
|
||||
fi
|
||||
id="6.0.0-git$SUFFIX"
|
||||
id="6.0.0$SUFFIX"
|
||||
echo "$id"
|
||||
|
||||
if test -r version.c
|
||||
|
@ -166,38 +166,30 @@ char *unrealcredits[] =
|
|||
|
||||
char unreallogo[] =
|
||||
{
|
||||
32,95,32,32,32,95,32,32,32,32,32,
|
||||
32,32,32,32,32,32,32,32,32,32,32,
|
||||
32,32,32,32,32,32,95,32,95,95,95,
|
||||
95,95,95,95,95,95,95,95,32,32,95,
|
||||
95,95,95,95,32,32,32,32,32,95,32,
|
||||
10,124,32,124,32,124,32,124,32,32,32,
|
||||
32,32,32,32,32,32,32,32,32,32,32,
|
||||
32,32,32,32,32,32,124,32,124,95,32,
|
||||
32,32,95,124,32,95,95,95,32,92,47,
|
||||
32,32,95,95,32,92,32,32,32,124,32,
|
||||
124,10,124,32,124,32,124,32,124,95,32,
|
||||
95,95,32,32,95,32,95,95,32,95,95,
|
||||
95,32,32,95,95,32,95,124,32,124,32,
|
||||
124,32,124,32,124,32,124,95,47,32,47,
|
||||
124,32,47,32,32,92,47,32,95,95,124,
|
||||
32,124,10,124,32,124,32,124,32,124,32,
|
||||
39,95,32,92,124,32,39,95,95,47,32,
|
||||
95,32,92,47,32,95,96,32,124,32,124,
|
||||
32,124,32,124,32,124,32,32,32,32,47,
|
||||
32,124,32,124,32,32,32,32,47,32,95,
|
||||
96,32,124,10,124,32,124,95,124,32,124,
|
||||
32,124,32,124,32,124,32,124,32,124,32,
|
||||
32,95,95,47,32,40,95,124,32,124,32,
|
||||
124,95,124,32,124,95,124,32,124,92,32,
|
||||
92,32,124,32,92,95,95,47,92,32,40,
|
||||
95,124,32,124,10,32,92,95,95,95,47,
|
||||
124,95,124,32,124,95,124,95,124,32,32,
|
||||
92,95,95,95,124,92,95,95,44,95,124,
|
||||
95,124,92,95,95,95,47,92,95,124,32,
|
||||
92,95,124,32,92,95,95,95,95,47,92,
|
||||
95,95,44,95,124,10,0,85,110,114,
|
||||
101,97,108,73,82,67,100,0};
|
||||
32,95,95,95,95,95,32,95,32,32,32,
|
||||
32,32,32,32,32,32,95,95,95,95,95,
|
||||
32,95,95,95,95,95,32,32,32,95,95,
|
||||
95,95,95,32,32,32,32,95,32,10,124,
|
||||
32,32,95,95,32,40,95,41,32,32,32,
|
||||
32,32,32,32,124,95,32,32,32,95,124,
|
||||
32,32,95,95,32,92,32,47,32,95,95,
|
||||
95,95,124,32,32,124,32,124,10,124,32,
|
||||
124,95,95,41,32,124,32,95,95,95,32,
|
||||
95,95,95,32,32,124,32,124,32,124,32,
|
||||
124,95,95,41,32,124,32,124,32,32,32,
|
||||
32,32,95,95,124,32,124,10,124,32,32,
|
||||
95,95,95,47,32,47,32,95,95,47,32,
|
||||
95,95,124,32,124,32,124,32,124,32,32,
|
||||
95,32,32,47,124,32,124,32,32,32,32,
|
||||
47,32,95,96,32,124,10,124,32,124,32,
|
||||
32,32,124,32,92,95,95,32,92,95,95,
|
||||
32,92,95,124,32,124,95,124,32,124,32,
|
||||
92,32,92,124,32,124,95,95,95,124,32,
|
||||
40,95,124,32,124,10,124,95,124,32,32,
|
||||
32,124,95,124,95,95,95,47,95,95,95,
|
||||
47,95,95,95,95,95,124,95,124,32,32,
|
||||
92,95,92,92,95,95,95,95,95,92,95,
|
||||
95,44,95,124,10};
|
||||
|
||||
char *dalinfotext[] =
|
||||
{
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
[Setup]
|
||||
AppName=UnrealIRCd 6
|
||||
AppVerName=UnrealIRCd 6.0.0-git
|
||||
AppVerName=UnrealIRCd 6.0.0
|
||||
AppPublisher=UnrealIRCd Team
|
||||
AppPublisherURL=https://www.unrealircd.org
|
||||
AppSupportURL=https://www.unrealircd.org
|
||||
|
@ -66,6 +66,7 @@ Source: "extras\tls.cnf"; DestDir: "{app}\bin"; Flags: ignoreversion
|
|||
Source: "src\modules\*.dll"; DestDir: "{app}\modules"; Flags: ignoreversion
|
||||
Source: "src\modules\chanmodes\*.dll"; DestDir: "{app}\modules\chanmodes"; Flags: ignoreversion
|
||||
Source: "src\modules\usermodes\*.dll"; DestDir: "{app}\modules\usermodes"; Flags: ignoreversion
|
||||
Source: "src\modules\snomasks\*.dll"; DestDir: "{app}\modules\snomasks"; Flags: ignoreversion
|
||||
Source: "src\modules\extbans\*.dll"; DestDir: "{app}\modules\extbans"; Flags: ignoreversion
|
||||
Source: "src\modules\third\*.dll"; DestDir: "{app}\modules\third"; Flags: ignoreversion skipifsourcedoesntexist
|
||||
|
||||
|
@ -156,7 +157,7 @@ if CurStep = ssPostInstall then
|
|||
end;
|
||||
|
||||
//*********************************************************************************
|
||||
// Checks if TLS cert file exists
|
||||
// Checks if SSL/TLS cert file exists
|
||||
//*********************************************************************************
|
||||
|
||||
procedure CurPageChanged(CurPage: Integer);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue