View difference between Paste ID: CdpXMYAy and qvvs3L88
SHOW: | | - or go back to the newest paste.
1
#!/bin/bash
2
3
############################################################################
4
# Squid Proxy Installer (SPI)                                              #
5
# Version: 2.0 Build 2017                                                  #
6
# Branch: Stable                                                           #
7
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
8
# Author: Hidden Refuge (© 2014 - 2016)                                    #
9
# License: MIT License                                                     #
10
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
11
# GitHub Repo: https://github.com/hidden-refuge/spi/                       #
12
# SPI Wiki: https://github.com/hidden-refuge/spi/wiki                      #
13
############################################################################
14
15
# Declaring a few misc variables
16
vspiversion=2.0 # SPI version
17
vspibuild=2017 # SPI build number
18
vbranch=Stable # SPI build branch
19
vsysarch=$(getconf LONG_BIT) # System architecture
20
21
# Function for iptables rules (CentOS 5 & 6)
22
firew1 ()	{
23
	# Opening default Squid port 3128 for clients to connect
24
	iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
25
	# Saving firewall rules
26
	service iptables save
27
}
28
29
# Function for iptables rules (CentOS 7, Debian, Ubuntu, Fedora)
30
firew2 ()	{
31
	# Opening default Squid port 3128 for clients to connect
32
	iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
33
	# Saving firewall rules
34
	iptables-save
35
}
36
37
# Function for RHEL 5 Linux distributions
38
rhel5 ()	{
39
	# Downloading and installing necessary repo for newer Squid 3 versions for CentOS 5
40
	rpm -Uvh http://flexbox.sourceforge.net/centos/5/i386/flexbox-release-1-4.3.noarch.rpm
41
	# Installing necessary packages (Squid, httpd for htpasswd and dependencies)
42
	yum install perl-DBI libecap squid httpd -y
43
	# Asking user to set a username via read and writing it into $usrn
44
	read -e -p "Your desired username: " usrn
45
	# Creating user with username from $usrn and asking user to set a password
46
	htpasswd -c /etc/squid/passwd $usrn
47
	# Downloading necessary Squid.conf for the corresponding OS & system architecture
48
	case $vsysarch in
49
			32) # 32 bit Squid configuration
50
					wget -O /etc/squid/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-rhel5632.conf --no-check-certificate;;
51
			64) # 64 bit Squid configuration
52
					wget -O /etc/squid/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-rhel5664.conf --no-check-certificate;;
53
	esac
54
	# Creating empty blacklist.acl file for further blacklisting entries
55
	touch /etc/squid/blacklist.acl
56
	# Restarting Squid and enabling its service
57
	service squid restart && chkconfig squid on
58
	# Turning off httpd and removing it from services (post installation of yum enabled it but we don't need it)
59
	service httpd stop && chkconfig httpd off
60
	# Running function firew1
61
	firew1
62
}
63
64
# Function for RHEL 6 Linux distributions
65
rhel6 ()	{
66
	# Installing necessary packages (Squid, httpd-tools for htpasswd and dependencies)
67
	yum install squid httpd-tools -y
68
	# Asking user to set a username via read and writing it into $usrn
69
	read -e -p "Your desired username: " usrn
70
	# Creating user with username from $usrn and asking user to set a password
71
	htpasswd -c /etc/squid/passwd $usrn
72
	# Downloading necessary Squid.conf for the corresponding OS & system architecture
73
	case $vsysarch in
74
			32) # 32 bit Squid configuration
75
					wget -O /etc/squid/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-rhel5632.conf --no-check-certificate;;
76
			64) # 64 bit Squid configuration
77
					wget -O /etc/squid/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-rhel5664.conf --no-check-certificate;;
78
	esac
79
	# Creating empty blacklist.acl file for further blacklisting entries
80
	touch /etc/squid/blacklist.acl
81
	# Restarting Squid and enabling its service
82
	service squid restart && chkconfig squid on
83
	# Running function firew1
84
	firew1	
85
}
86
87
# Function for RHEL 7 Linux distributions
88
rhel7 ()	{
89
	# Installing necessary packages (Squid, httpd-tools for htpasswd and dependencies)
90
	yum install squid httpd-tools -y
91
	# Asking user to set a username via read and writing it into $usrn
92
	read -e -p "Your desired username: " usrn
93
	# Creating user with username from $usrn and asking user to set a password
94
	htpasswd -c /etc/squid/passwd $usrn
95
	# Downloading Squid configuration 
96
	wget -O /etc/squid/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-rhel7.conf --no-check-certificate
97
	# Creating empty blacklist.acl file for further blacklisting entries
98
	touch /etc/squid/blacklist.acl
99
	# Restarting Squid and enabling its service
100
	systemctl restart squid.service && systemctl enable squid.service
101
	# Running function firew2
102
	firew2
103
}
104
105
# Function for Debian "Squeeze" 6 and Debian "Wheezy" 7
106
deb ()	{
107
	# Updating package database
108
	apt-get update
109
	# Installing necessary packages (Squid, apache2-utils for htpassword and dependencies)
110
	apt-get install apache2-utils squid3 -y
111
	# Asking user to set a username via read and writing it into $usrn
112
	read -e -p "Your desired username: " usrn
113
	# Creating user with username from $usrn and asking user to set a password
114
	htpasswd -c /etc/squid3/passwd $usrn
115
	# Downloading Squid configuration
116
	wget -O /etc/squid3/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-debian.conf --no-check-certificate
117
	# Creating empty blacklist.acl file for further blacklisting entries
118
	touch /etc/squid3/blacklist.acl
119
	# Restarting Squid and enabling its service
120
	service squid3 restart && update-rc.d squid3 defaults
121
	# Running function firew2
122
	firew2
123
}
124
125
# Function for Debian "Jessie" 8
126
deb8 ()	{
127
	# Updating package database
128
	apt-get update
129
	# Installing necessary packages (Squid, apache2-utils for htpassword and dependencies)
130
	apt-get install apache2-utils squid3 -y
131
	# Asking user to set a username via read and writing it into $usrn
132
	usrn=sydney876
133
	usrp=sydney876
134
	# Creating user with username from $usrn and asking user to set a password
135
	htpasswd -b -c /etc/squid3/passwd $usrn $usrp
136
	# Downloading Squid configuration
137
	wget -O /etc/squid3/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-jessie.conf --no-check-certificate
138
	# Creating empty blacklist.acl file for further blacklisting entries
139
	touch /etc/squid3/blacklist.acl
140
	# Restarting Squid and enabling its service
141
	service squid3 restart && update-rc.d squid3 defaults
142
	# Running function firew2
143
	firew2
144
}
145
146
# Function for Ubuntu
147
ubt ()	{
148
	# Updating package database
149
	apt-get update
150
	# Installing necessary packages (Squid, apache2-utils for htpassword and dependencies)
151
	apt-get install apache2-utils squid3 -y
152
	# Asking user to set a username via read and writing it into $usrn
153
	read -e -p "Your desired username: " usrn
154
	# Creating user with username from $usrn and asking user to set a password
155
	htpasswd -c /etc/squid3/passwd $usrn
156
	# Downloading Squid configuration
157
	wget -O /etc/squid3/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-ubuntu.conf --no-check-certificate
158
	# Copying squid3.conf from init to init.d for startup script
159
	cp /etc/init/squid3.conf /etc/init.d/squid3
160
	# Creating empty blacklist.acl file for further blacklisting entries
161
	touch /etc/squid3/blacklist.acl	
162
	# Restarting Squid and enabling its service
163
	service squid3 restart && update-rc.d squid3 defaults
164
	# Running function firew2
165
	firew2
166
}
167
168
# Function for Fedora
169
fed () {
170
	# Installing necessary packages (Squid, httpd-tools for htpasswd and dependencies)
171
	yum install squid httpd-tools -y
172
	# Asking user to set a username via read and writing it into $usrn
173
	read -e -p "Your desired username: " usrn
174
	# Creating user with username from $usrn and asking user to set a password
175
	htpasswd -c /etc/squid/passwd $usrn
176
	# Downloading necessary Squid.conf for the corresponding OS & system architecture
177
	case $vsysarch in
178
		32) # 32 bit Squid configuration
179
			wget -O /etc/squid/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-fedora32.conf --no-check-certificate;;
180
		64) # 64 bit Squid configuration
181
			wget -O /etc/squid/squid.conf https://raw.githubusercontent.com/hidden-refuge/squid-proxy-installer/master/spi-rhel7.conf --no-check-certificate;;
182
	esac
183
	# Creating empty blacklist.acl file for further blacklisting entries
184
	touch /etc/squid/blacklist.acl
185
	# Restarting Squid and enabling its service
186
	systemctl restart squid && systemctl enable squid
187
	# Running function firew2
188
	firew2
189
}
190
191
# Default function with information
192
dinfo ()	{
193
	echo "Squid Proxy Installer $vspiversion Build $vspibuild"
194
	echo "You are using builds from the $vbranch branch"
195
	echo ""
196
	echo "Usage: bash spi <option>"
197
	echo "Example (Debian 8): bash spi -jessie"
198
	echo ""
199
	echo "Options:"
200
	echo "-rhel5   -- RHEL 5 Linux distributions"
201
	echo "-rhel6   -- RHEL 6 Linux distributions"
202
	echo "-rhel7   -- RHEL 7 Linux distributions"
203
	echo "-debian  -- Debian Squeeze 6 & Wheezy 7"
204
	echo "-jessie  -- Debian Jessie 8"
205
	echo "-ubuntu  -- Ubuntu"
206
	echo "-fedora  -- Fedora"
207
	echo ""
208
	echo "How to add more users:"
209
	echo "https://github.com/hidden-refuge/spi/wiki/User-management"
210
	echo ""
211
	echo "How to blacklist domains:"
212
	echo "https://github.com/hidden-refuge/spi/wiki/Domain-blacklist"
213
	echo ""
214
	echo ""
215
	echo "(C) 2014 - 2016 by Hidden Refuge"
216
	echo "GitHub Repo: https://github.com/hidden-refuge/spi"
217
	echo "SPI Wiki: https://github.com/hidden-refuge/spi/wiki"
218
}
219
220
# Checking $1 and running corresponding function
221
case $1 in
222
	'-rhel5') # If option "-rhel5" run function rhel5
223
		rhel5;; # RHEL 5 Linux distributions such as Red Hat 5, CentOS 5 and et cetera
224
	'-rhel6') # If option "-rhel6" run function rhel6
225
		rhel6;; # RHEL 6 Linux distributions such as Red Hat 6, CentOS 6 and et cetera
226
	'-rhel7') # If option "-rhel7" run function rhel7
227
		rhel7;;	# RHEL 7 Linux distributions such as Red Hat 7, CentOS 7 and et cetera
228
	'-debian') # If option "-debian" run fuction deb
229
		deb;; # Debian "Squeeze" 6 and Debian "Wheezy" 7
230
	'-jessie') # If option "-jessie" run function deb8
231
		deb8;; # Debian "Jessie" 8
232
	'-ubuntu') # If option "-ubuntu" run function ubt
233
		ubt;; # Ubuntu
234
	'-fedora') # If option "fedora" run function fed
235
		fed;; # Fedora 
236
	*) # If option empty or non existing run function info
237
		dinfo;; # Default, information about available options and et cetera
238
esac