|
@@ -33,8 +33,9 @@ VARIANTS='full full-vim chat'
|
33
|
33
|
IN_DEFAULT_INSTALL=1
|
34
|
34
|
SHOW_ON_ABOUT=1
|
35
|
35
|
|
36
|
|
-IRC_PORT=6697
|
37
|
|
-IRC_ONION_PORT=6697
|
|
36
|
+IRC_BOUNCER_PORT=6697
|
|
37
|
+IRC_ONION_PORT=$IRC_BOUNCER_PORT
|
|
38
|
+IRC_PORT=6698
|
38
|
39
|
|
39
|
40
|
# An optional password to log into IRC. This applies to all users
|
40
|
41
|
IRC_PASSWORD=
|
|
@@ -42,14 +43,35 @@ IRC_PASSWORD=
|
42
|
43
|
irc_variables=(MY_USERNAME
|
43
|
44
|
MY_NAME
|
44
|
45
|
IRC_PORT
|
|
46
|
+ IRC_BOUNCER_PORT
|
45
|
47
|
IRC_PASSWORD
|
|
48
|
+ IRC_OPERATOR_PASSWORD
|
46
|
49
|
DEFAULT_DOMAIN_NAME
|
47
|
50
|
INSTALLED_WITHIN_DOCKER
|
48
|
51
|
ONION_ONLY)
|
49
|
52
|
|
|
53
|
+function start_irc_bouncer {
|
|
54
|
+ su -c 'znc -p' - znc
|
|
55
|
+}
|
|
56
|
+
|
|
57
|
+function stop_irc_bouncer {
|
|
58
|
+ pkill znc
|
|
59
|
+}
|
|
60
|
+
|
|
61
|
+function remove_user_irc_bouncer {
|
|
62
|
+ remove_username="$1"
|
|
63
|
+
|
|
64
|
+ if [ -f /home/znc/.znc/config/znc.conf ]; then
|
|
65
|
+ stop_irc_bouncer
|
|
66
|
+ sed -i "/<User ${remove_username}>/,/</User>/d" /home/znc/.znc/config/znc.conf
|
|
67
|
+ start_irc_bouncer
|
|
68
|
+ fi
|
|
69
|
+}
|
|
70
|
+
|
50
|
71
|
function remove_user_irc {
|
51
|
72
|
remove_username="$1"
|
52
|
73
|
|
|
74
|
+ remove_user_irc_bouncer ${remove_username}
|
53
|
75
|
if [ -d /home/${remove_username}/.irssi ]; then
|
54
|
76
|
rm -rf /home/${remove_username}/.irssi
|
55
|
77
|
fi
|
|
@@ -58,6 +80,58 @@ function remove_user_irc {
|
58
|
80
|
fi
|
59
|
81
|
}
|
60
|
82
|
|
|
83
|
+function add_user_irc_bouncer {
|
|
84
|
+ new_username="$1"
|
|
85
|
+ new_user_password="$2"
|
|
86
|
+ is_admin='true'
|
|
87
|
+ if [ ! $3 ]; then
|
|
88
|
+ is_admin='false'
|
|
89
|
+ fi
|
|
90
|
+
|
|
91
|
+ read_config_param IRC_PORT
|
|
92
|
+ read_config_param DEFAULT_DOMAIN_NAME
|
|
93
|
+
|
|
94
|
+ stop_irc_bouncer
|
|
95
|
+
|
|
96
|
+ new_user_salt_base1="$(create_password 20)"
|
|
97
|
+ new_user_salt_base2=$(echo "$new_user_salt_base1" | sed "s|#|.|g")
|
|
98
|
+ new_user_salt=$(echo "$new_user_salt_base2" | sed "s|#|.|g")
|
|
99
|
+ new_user_hash=$(echo "${new_user_password}${new_user_salt}" | sha256sum)
|
|
100
|
+ new_user_pass="sha256#${new_user_hash}#${new_user_salt}#"
|
|
101
|
+
|
|
102
|
+ echo "<User ${new_username}>" >> /home/znc/.znc/config/znc.conf
|
|
103
|
+ echo " Pass = ${new_user_pass}" >> /home/znc/.znc/config/znc.conf
|
|
104
|
+ echo " Admin = ${is_admin}" >> /home/znc/.znc/config/znc.conf
|
|
105
|
+ echo " Nick = ${new_username}" >> /home/znc/.znc/config/znc.conf
|
|
106
|
+ echo " AltNick = ${new_username}_" >> /home/znc/.znc/config/znc.conf
|
|
107
|
+ echo " Ident = ${new_username}" >> /home/znc/.znc/config/znc.conf
|
|
108
|
+ echo " RealName = ${new_username}" >> /home/znc/.znc/config/znc.conf
|
|
109
|
+ echo ' Buffer = 100' >> /home/znc/.znc/config/znc.conf
|
|
110
|
+ echo ' AutoClearChanBuffer = true' >> /home/znc/.znc/config/znc.conf
|
|
111
|
+ echo ' ChanModes = +stn' >> /home/znc/.znc/config/znc.conf
|
|
112
|
+ echo '' >> /home/znc/.znc/config/znc.conf
|
|
113
|
+ echo ' LoadModule = chansaver' >> /home/znc/.znc/config/znc.conf
|
|
114
|
+ echo ' LoadModule = controlpanel' >> /home/znc/.znc/config/znc.conf
|
|
115
|
+ echo ' LoadModule = perform' >> /home/znc/.znc/config/znc.conf
|
|
116
|
+ echo '' >> /home/znc/.znc/config/znc.conf
|
|
117
|
+ echo " <Network ${PROJECT_NAME}>" >> /home/znc/.znc/config/znc.conf
|
|
118
|
+ echo ' LoadModule = chansaver' >> /home/znc/.znc/config/znc.conf
|
|
119
|
+ echo ' LoadModule = keepnick' >> /home/znc/.znc/config/znc.conf
|
|
120
|
+ echo ' LoadModule = perform' >> /home/znc/.znc/config/znc.conf
|
|
121
|
+ echo ' LoadModule = simple_away' >> /home/znc/.znc/config/znc.conf
|
|
122
|
+ echo '' >> /home/znc/.znc/config/znc.conf
|
|
123
|
+ echo " Server = ${DEFAULT_DOMAIN_NAME} +${IRC_PORT}" >> /home/znc/.znc/config/znc.conf
|
|
124
|
+ echo '' >> /home/znc/.znc/config/znc.conf
|
|
125
|
+ echo " <Chan ${PROJECT_NAME}>" >> /home/znc/.znc/config/znc.conf
|
|
126
|
+ echo ' </Chan>' >> /home/znc/.znc/config/znc.conf
|
|
127
|
+ echo ' </Network>' >> /home/znc/.znc/config/znc.conf
|
|
128
|
+ echo '</User>' >> /home/znc/.znc/config/znc.conf
|
|
129
|
+
|
|
130
|
+ chown -R znc:znc /home/znc/.znc
|
|
131
|
+
|
|
132
|
+ start_irc_bouncer
|
|
133
|
+}
|
|
134
|
+
|
61
|
135
|
function add_user_irc {
|
62
|
136
|
new_username="$1"
|
63
|
137
|
new_user_password="$2"
|
|
@@ -128,6 +202,7 @@ function add_user_irc {
|
128
|
202
|
|
129
|
203
|
chown -R ${new_username}:${new_username} /home/${new_username}/.irssi
|
130
|
204
|
|
|
205
|
+ add_user_irc_bouncer "${new_username}" "${IRC_PASSWORD}"
|
131
|
206
|
echo '0'
|
132
|
207
|
}
|
133
|
208
|
|
|
@@ -245,10 +320,10 @@ function remove_irc {
|
245
|
320
|
rm -rf /etc/ngircd
|
246
|
321
|
fi
|
247
|
322
|
|
248
|
|
- iptables -D INPUT -p tcp --dport 1024:65535 --sport ${IRC_PORT} -j ACCEPT
|
|
323
|
+ iptables -D INPUT -p tcp --dport 1024:65535 --sport ${IRC_BOUNCER_PORT} -j ACCEPT
|
249
|
324
|
function_check save_firewall_settings
|
250
|
325
|
save_firewall_settings
|
251
|
|
- firewall_remove ${IRC_PORT} tcp
|
|
326
|
+ firewall_remove ${IRC_BOUNCER_PORT} tcp
|
252
|
327
|
|
253
|
328
|
function_check remove_onion_service
|
254
|
329
|
remove_onion_service irc ${IRC_ONION_PORT}
|
|
@@ -271,11 +346,11 @@ function configure_firewall_for_irc {
|
271
|
346
|
if [[ ${ONION_ONLY} != "no" ]]; then
|
272
|
347
|
return
|
273
|
348
|
fi
|
274
|
|
- iptables -I INPUT -p tcp --dport 1024:65535 --sport ${IRC_PORT} -j ACCEPT
|
|
349
|
+ iptables -I INPUT -p tcp --dport 1024:65535 --sport ${IRC_BOUNCER_PORT} -j ACCEPT
|
275
|
350
|
function_check save_firewall_settings
|
276
|
351
|
save_firewall_settings
|
277
|
352
|
|
278
|
|
- firewall_add IRC ${IRC_PORT} tcp
|
|
353
|
+ firewall_add IRC ${IRC_BOUNCER_PORT} tcp
|
279
|
354
|
echo 'configure_firewall_for_irc' >> ${COMPLETION_FILE}
|
280
|
355
|
}
|
281
|
356
|
|
|
@@ -457,9 +532,43 @@ function install_irc_client {
|
457
|
532
|
install_completed irc_client
|
458
|
533
|
}
|
459
|
534
|
|
|
535
|
+function install_irc_bouncer {
|
|
536
|
+ if [[ $(app_is_installed irc_bouncer) == "1" ]]; then
|
|
537
|
+ return
|
|
538
|
+ fi
|
|
539
|
+
|
|
540
|
+ apt-get -yq install znc
|
|
541
|
+
|
|
542
|
+ adduser --disabled-login --gecos 'znc' znc
|
|
543
|
+
|
|
544
|
+ mkdir -p /home/znc/.znc/configs
|
|
545
|
+ mkdir -p /home/znc/.znc/users
|
|
546
|
+
|
|
547
|
+ echo 'Version = 1.4' > /home/znc/.znc/configs/znc.conf
|
|
548
|
+ echo '<Listener l>' >> /home/znc/.znc/configs/znc.conf
|
|
549
|
+ echo " Port = $IRC_PORT" >> /home/znc/.znc/configs/znc.conf
|
|
550
|
+ echo ' IPv4 = true' >> /home/znc/.znc/configs/znc.conf
|
|
551
|
+ echo ' IPv6 = true' >> /home/znc/.znc/configs/znc.conf
|
|
552
|
+ echo ' SSL = true' >> /home/znc/.znc/configs/znc.conf
|
|
553
|
+ echo '</Listener>' >> /home/znc/.znc/configs/znc.conf
|
|
554
|
+
|
|
555
|
+ chown -R znc:znc /home/znc/.znc
|
|
556
|
+
|
|
557
|
+ # certificate for use with SSL
|
|
558
|
+ start_irc_bouncer
|
|
559
|
+
|
|
560
|
+ function_check cron_add_mins
|
|
561
|
+ cron_add_mins 10 "/usr/bin/znc 2> /dev/null" znc
|
|
562
|
+
|
|
563
|
+ add_user_irc_bouncer "${MY_USERNAME}" "${IRC_PASSWORD}" true
|
|
564
|
+
|
|
565
|
+ install_completed irc_bouncer
|
|
566
|
+}
|
|
567
|
+
|
460
|
568
|
function install_irc {
|
461
|
569
|
install_irc_server
|
462
|
570
|
install_irc_client
|
|
571
|
+ install_irc_bouncer
|
463
|
572
|
APP_INSTALLED=1
|
464
|
573
|
}
|
465
|
574
|
|