install-functions_fedora_server22 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767
  1. # ~* SHELL FUNCTIONS FUSIONPBX *~
  2. #
  3. #
  4. #
  5. pause() {
  6. local key="$@"
  7. [ -z $key ] && key="Are you sure? Press [Enter] key to continue..."
  8. read -p "$key" readEnterKey
  9. }
  10. fix_perm() {
  11. for dir in $(find . -type d); do
  12. setfacl -m user:nginx:rwx,group:nginx:rwx "$dir"
  13. done
  14. }
  15. deploy_remote_pgsql() {
  16. cmd_remote_pgsql_p1 > /tmp/deploy_remote_pgsql
  17. cmd_remote_pgsql_p2 >> /tmp/deploy_remote_pgsql
  18. cmd_remote_pgsql_p3 >> /tmp/deploy_remote_pgsql
  19. cmd_remote_pgsql_p4 >> /tmp/deploy_remote_pgsql
  20. cmd_remote_pgsql_p5 >> /tmp/deploy_remote_pgsql
  21. cmd_remote_pgsql_p6 >> /tmp/deploy_remote_pgsql
  22. cmd_remote_pgsql_p7 >> /tmp/deploy_remote_pgsql
  23. cmd_remote_pgsql_p8 >> /tmp/deploy_remote_pgsql
  24. echo "cmd_create_db02" >> /tmp/deploy_remote_pgsql
  25. chmod +x /tmp/deploy_remote_pgsql
  26. }
  27. deploy_fusion_pbx() {
  28. shopt -s nullglob dotglob
  29. files=("$1"/*)
  30. if (( ${#files[*]} )); then
  31. read -r -p "FusionPBX directory is not empty Do you want to delete it ? [Y/n] " del_answer
  32. if [[ $del_answer =~ ^([yY][eE][sS]|[yY])$ ]]; then
  33. rm -rf "$1"
  34. mkdir -p "$1"
  35. git clone https://github.com/fusionpbx/fusionpbx.git "$1"
  36. rm -rf "$1"/.git
  37. fi
  38. elif (( ! ${#files[*]} )); then
  39. rm -rf "$1"
  40. mkdir -p "$1"
  41. git clone https://github.com/fusionpbx/fusionpbx.git "$1"
  42. rm -rf "$1"/.git
  43. else
  44. echo "Error occured ..."
  45. fi
  46. # echo "Correcting directory for customized provisioning templates ..."
  47. # mkdir -p /etc/fusionpbx/resources
  48. # cp "$1"/resources/config.php /etc/fusionpbx
  49. # cp /usr/share/freeswitch/scripts/resources/config.lua /etc/fusionpbx
  50. # cp -rp "$1"/resources/templates /etc/fusionpbx/resources
  51. # rm -rf /etc/fusionpbx/resources/templates/{conf,engine}
  52. # chown -R nginx:nginx /etc/fusionpbx
  53. #
  54. shopt -u nullglob dotglob
  55. }
  56. cmd_create_db() {
  57. su - postgres -c "createuser -w --no-password -E -s -e ${USERNAME_FUSIONPBX}"
  58. su - postgres -c "createdb -w --no-password -E UTF8 -O ${USERNAME_FUSIONPBX} ${DBNAME_FREESWITCH}"
  59. su - postgres -c "createdb -w --no-password -E UTF8 -O ${USERNAME_FUSIONPBX} ${DBNAME_FUSIONPBX}"
  60. echo "Setting up passwords for user Postgres ..."
  61. su - postgres -c "psql --command '\password postgres'"
  62. echo "Setting up passwords for database user ${USERNAME_FUSIONPBX} ..."
  63. su - postgres -c "psql --command \"\password ${USERNAME_FUSIONPBX}"\"
  64. }
  65. cmd_crontab_fusionpbx() {
  66. updatedb
  67. xml_cdr_bin=$(find /usr/share/nginx -type f -name v_xml_cdr_import.php)
  68. php_bin=$(which php)
  69. cat << EOF
  70. * * * * * root ${php_bin} ${xml_cdr_bin} >/dev/null 2>&1
  71. EOF
  72. }
  73. cmd_ulogd_fusionpbx() {
  74. cat << 'EOF'
  75. [global]
  76. logfile=/var/log/ulogd/ulogd.log
  77. loglevel=5
  78. rmem=131071
  79. bufsize=150000
  80. plugin="/usr/lib64/ulogd/ulogd_inppkt_NFLOG.so"
  81. plugin="/usr/lib64/ulogd/ulogd_inppkt_ULOG.so"
  82. plugin="/usr/lib64/ulogd/ulogd_inpflow_NFCT.so"
  83. plugin="/usr/lib64/ulogd/ulogd_filter_IFINDEX.so"
  84. plugin="/usr/lib64/ulogd/ulogd_output_SYSLOG.so"
  85. plugin="/usr/lib64/ulogd/ulogd_output_LOGEMU.so"
  86. plugin="/usr/lib64/ulogd/ulogd_raw2packet_BASE.so"
  87. plugin="/usr/lib64/ulogd/ulogd_filter_PRINTPKT.so"
  88. plugin="/usr/lib64/ulogd/ulogd_filter_IP2STR.so"
  89. # Write log to "/var/log/messages" with SYSLOG option
  90. #stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:SYSLOG
  91. #stack=log2:NFLOG,base2:BASE,ifi2:IFINDEX,ip2str1:IP2STR,print2:PRINTPKT,emu2:SYSLOG
  92. # Write log through plugin LOGEMU plugin
  93. stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU
  94. stack=log2:NFLOG,base2:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu2:LOGEMU
  95. [log1]
  96. group=2
  97. numeric_label=1
  98. [log2]
  99. group=3
  100. numeric_label=0
  101. [emu1]
  102. file="/var/log/firewalld_log/firewalld_accept.log"
  103. sync=1
  104. [emu2]
  105. file="/var/log/firewalld_log/firewalld_drop.log"
  106. sync=1
  107. EOF
  108. }
  109. cmd_nginx_fusionpbx() {
  110. cat << 'EOF'
  111. server {
  112. listen 82;
  113. #listen 443 default ssl;
  114. #server_name fusionpbx;
  115. access_log /var/log/nginx/fusionpbx.access_log;
  116. error_log /var/log/nginx/fusionpbx.error_log;
  117. root /usr/share/nginx/fusionpbx;
  118. #ssl_certificate /etc/ssl/fusionpbx.ssl.crt;
  119. #ssl_certificate_key /etc/ssl/fusionpbx.ssl.key.nopass;
  120. location / {
  121. root /usr/share/nginx/fusionpbx;
  122. index index.php;
  123. }
  124. #grandstream
  125. rewrite "^.*/provision/cfg([A-Fa-f0-9]{12})(\.(xml|cfg))?$" /app/provision/?mac=\$1;
  126. #aastra
  127. #rewrite "^.*/provision/([A-Fa-f0-9]{12})(\.(cfg))?$" /app/provision/?mac=\$1 last;
  128. #yealink common
  129. rewrite "^.*/(y[0-9]{12})(\.cfg)?$" /app/provision/index.php?file=\$1\$2;
  130. #yealink mac
  131. rewrite "^.*/([A-Fa-f0-9]{12})(\.(xml|cfg))?$" /app/provision/index.php?mac=\$1 last;
  132. location ~ \.php$ {
  133. if (!-f $request_filename) {
  134. return 404;
  135. }
  136. fastcgi_split_path_info ^(.+\.php)(/.+)$;
  137. include /etc/nginx/fastcgi_params;
  138. fastcgi_pass 127.0.0.1:9000;
  139. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  140. }
  141. location ~ /resources/ {
  142. root /usr/share/nginx/fusionpbx;
  143. allow all;
  144. fastcgi_split_path_info ^(.+\.php)(/.+)$;
  145. include /etc/nginx/fastcgi_params;
  146. fastcgi_pass 127.0.0.1:9000;
  147. fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  148. }
  149. location ~ .ht {
  150. deny all;
  151. }
  152. location ~^.+.(db)$ {
  153. deny all;
  154. }
  155. }
  156. EOF
  157. }
  158. cmd_yum_repo_fusionpbx() {
  159. cat << 'EOF'
  160. [networklab-F22-Server]
  161. name = VoIP - NetworkLab
  162. baseurl = http://ftpsrv01.networklab.ca/fedora/22/RPMS/$basearch
  163. enabled = 1
  164. protect = 0
  165. gpgcheck = 1
  166. gpgkey = http://ftpsrv01.networklab.ca/fedora/22/RPMS/keys/RPM-GPG-KEY-NetworkLab-F22-Server
  167. [networklab-F22-Server-noarch]
  168. name = VoIP Noarch - NetworkLab
  169. baseurl = http://ftpsrv01.networklab.ca/fedora/22/RPMS/noarch
  170. enabled = 1
  171. protect = 0
  172. gpgcheck = 1
  173. gpgkey = http://ftpsrv01.networklab.ca/fedora/22/RPMS/keys/RPM-GPG-KEY-NetworkLab-F22-Server
  174. EOF
  175. }
  176. cmd_snmp_fusionpbx() {
  177. cat << "EOF"
  178. rocommunity public
  179. syslocation ${SUPPORTNAME}
  180. syscontact ${SUPPORTEMAIL}
  181. EOF
  182. }
  183. cmd_odbc_fusionpbx() {
  184. cat << EOF
  185. [myodbc3]
  186. Driver = ${find_psql_lib}
  187. Description = Connector/ODBC 3.51 Driver DSN
  188. SERVER = ${DB_HOST}
  189. PORT = 5432
  190. USER = ${USERNAME_FUSIONPBX}
  191. Password =
  192. Database = ${DBNAME_FREESWITCH}
  193. ReadOnly = No
  194. Servertype = postgres
  195. DSN = myodbc3
  196. [myodbc4]
  197. Driver = ${find_psql_lib}
  198. Description = Connector/ODBC 3.51 Driver DSN
  199. SERVER = ${DB_HOST}
  200. PORT = 5432
  201. USER = ${USERNAME_FUSIONPBX}
  202. Password =
  203. Database = ${DBNAME_FUSIONPBX}
  204. ReadOnly = No
  205. Servertype = postgres
  206. DSN = myodbc4
  207. [Default]
  208. Driver = PostgreSQL
  209. Description = PostgreSQL Data Source
  210. Server = 127.0.0.1
  211. Port = 5432
  212. UserName = feeswitch
  213. Password =
  214. EOF
  215. }
  216. cmd_odbc_fusionpbx_p2() {
  217. cat << EOF
  218. [ODBC]
  219. Trace = Yes
  220. TraceFile = /var/log/pgsql-trace.log
  221. EOF
  222. }
  223. cmd_fail2ban_fusionpbx() {
  224. cat << "EOF"
  225. [INCLUDES]
  226. before = paths-fedora.conf
  227. [DEFAULT]
  228. ignoreip = 127.0.0.1/8
  229. ignorecommand =
  230. bantime = 7200
  231. findtime = 600
  232. maxretry = 3
  233. backend = auto
  234. usedns = warn
  235. logencoding = auto
  236. enabled = false
  237. filter = %(__name__)s
  238. destemail = ${user_email}
  239. sender = fail2ban@localhost
  240. mta = sendmail
  241. protocol = tcp
  242. chain = INPUT
  243. port = 0:65535
  244. banaction = firewallcmd-ipset
  245. action_ = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
  246. action_mw = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
  247. %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]
  248. action_mwl = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
  249. %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]
  250. action_xarf = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
  251. xarf-login-attack[service=%(__name__)s, sender="%(sender)s", logpath=%(logpath)s, port="%(port)s"]
  252. action_blocklist_de = blocklist_de[email="%(sender)s", service=%(filter)s, apikey="%(blocklist_de_apikey)s"]
  253. action_badips = badips.py[category="%(name)s", banaction="%(banaction)s"]
  254. action = %(action_)s
  255. [freeswitch]
  256. enabled = true
  257. port = 5060,5061,5081,5082
  258. action = %(action_mwl)s
  259. logpath = /var/log/freeswitch/freeswitch.log
  260. maxretry = 3
  261. [nginx-http-auth]
  262. enabled = true
  263. action = %(action_mwl)s
  264. port = 82,http,https
  265. logpath = %(nginx_error_log)s
  266. [nginx-botsearch]
  267. enabled = true
  268. action = %(action_mwl)s
  269. port = 82,http,https
  270. logpath = %(nginx_error_log)s
  271. maxretry = 2
  272. [php-url-fopen]
  273. enabled = true
  274. action = %(action_mwl)s
  275. port = 82,http,https
  276. bantime = 86400
  277. logpath = %(nginx_access_log)s
  278. maxretry = 2
  279. EOF
  280. }
  281. cmd_postgres_hba_fusionpbx() {
  282. cat << 'EOF'
  283. # TYPE DATABASE USER ADDRESS METHOD
  284. # "local" is for Unix domain socket connections only
  285. local all all peer
  286. # IPv4 local connections:
  287. host all all 127.0.0.1/32 trust
  288. # IPv6 local connections:
  289. host all all ::1/128 trust
  290. # Allow replication connections from localhost, by a user with the
  291. # replication privilege.
  292. #local replication postgres peer
  293. #host replication postgres 127.0.0.1/32 ident
  294. #host replication postgres ::1/128 ident
  295. EOF
  296. }
  297. cmd_postgres_bdr_hba_fusionpbx() {
  298. cat << "EOF"
  299. # TYPE DATABASE USER ADDRESS METHOD
  300. # "local" is for Unix domain socket connections only
  301. local all all peer
  302. # IPv4 local connections:
  303. host all all 127.0.0.1/32 peer
  304. # IPv6 local connections:
  305. host all all ::1/128 peer
  306. hostssl all all ${my_ip}/32 trust
  307. host replication postgres ${my_ip}/32 trust
  308. # Allow replication connections from localhost, by a user with the
  309. # replication privilege.
  310. #local replication postgres peer
  311. #host replication postgres 127.0.0.1/32 ident
  312. #host replication postgres ::1/128 ident
  313. EOF
  314. }
  315. cmd_postgres_bdr_conf_fusionpbx() {
  316. cat << EOF
  317. listen_addresses = "*"
  318. shared_preload_libraries = "bdr"
  319. wal_level = "logical"
  320. track_commit_timestamp = on
  321. max_wal_senders = 10
  322. max_replication_slots = 10
  323. ssl = true
  324. ssl_ciphers = "HIGH:MEDIUM:+3DES:!aNULL"
  325. ssl_cert_file = "/etc/pki/pg_bdr/${my_name}/${my_name}-cert.pem"
  326. ssl_key_file = "/etc/pki/pg_bdr/${my_name}/${my_name}-key-nopasswd.pem"
  327. ssl_ca_file = "/etc/pki/pg_bdr/ca-cert.pem"
  328. ssl_crl_file = "/etc/pki/pg_bdr/ca_rev-list.pem"
  329. # max_worker_processes = 20
  330. #log_error_verbosity = verbose
  331. #log_min_messages = debug1
  332. #log_line_prefix = 'd=%d p=%p a=%a%q '
  333. #bdr.default_apply_delay=2000 # milliseconds
  334. #bdr.log_conflicts_to_table=on
  335. #bdr.skip_ddl_replication = off
  336. EOF
  337. }
  338. cmd_postgres_conf_fusionpbx() {
  339. cat << 'EOF'
  340. max_connections = 100
  341. shared_buffers = 256MB
  342. logging_collector = on
  343. log_destination = 'stderr'
  344. log_directory = 'pg_log'
  345. log_filename = 'postgresql-%G-%m-%d-%a.log'
  346. log_truncate_on_rotation = off
  347. log_rotation_age = 31d
  348. client_min_messages = notice
  349. log_min_messages = info
  350. log_min_error_statement = notice
  351. log_min_duration_statement = 1000
  352. log_line_prefix = '%t %u@%r:%d [%p] '
  353. log_timezone = 'US/Eastern'
  354. datestyle = 'iso, mdy'
  355. timezone = 'US/Eastern'
  356. lc_messages = 'en_US.UTF-8'
  357. lc_monetary = 'en_US.UTF-8'
  358. lc_numeric = 'en_US.UTF-8'
  359. lc_time = 'en_US.UTF-8'
  360. default_text_search_config = 'pg_catalog.english'
  361. EOF
  362. }
  363. cmd_service_sip-ext() {
  364. cat << 'EOF'
  365. <?xml version="1.0" encoding="utf-8"?>
  366. <service>
  367. <short>sip-ext</short>
  368. <description>sip ext freeswitch</description>
  369. <port protocol="tcp" port="5080"/>
  370. <port protocol="udp" port="5080"/>
  371. <port protocol="tcp" port="5081"/>
  372. </service>
  373. EOF
  374. }
  375. cmd_service_sip-int() {
  376. cat << 'EOF'
  377. <?xml version="1.0" encoding="utf-8"?>
  378. <service>
  379. <short>sip-int</short>
  380. <description>sip int freeswitch</description>
  381. <port protocol="tcp" port="5060"/>
  382. <port protocol="udp" port="5060"/>
  383. <port protocol="tcp" port="5061"/>
  384. </service>
  385. EOF
  386. }
  387. cmd_service_chronyd() {
  388. cat << 'EOF'
  389. <?xml version="1.0" encoding="utf-8"?>
  390. <service>
  391. <short>chronyd</short>
  392. <description>chronyd</description>
  393. <port protocol="udp" port="123"/>
  394. </service>
  395. EOF
  396. }
  397. cmd_service_snmp() {
  398. cat << 'EOF'
  399. <?xml version="1.0" encoding="utf-8"?>
  400. <service>
  401. <short>snmp</short>
  402. <description>snmp</description>
  403. <port protocol="udp" port="161"/>
  404. <port protocol="udp" port="162"/>
  405. </service>
  406. EOF
  407. }
  408. cmd_service_www() {
  409. cat << 'EOF'
  410. <?xml version="1.0" encoding="utf-8"?>
  411. <service>
  412. <short>www</short>
  413. <description>web services</description>
  414. <port protocol="tcp" port="80"/>
  415. <port protocol="tcp" port="82"/>
  416. <port protocol="tcp" port="443"/>
  417. </service>
  418. EOF
  419. }
  420. cmd_service_rtp() {
  421. cat << 'EOF'
  422. <?xml version="1.0" encoding="utf-8"?>
  423. <service>
  424. <short>rtp</short>
  425. <description>rtp freeswitch</description>
  426. <port protocol="udp" port="16384-32768"/>
  427. </service>
  428. EOF
  429. }
  430. cmd_service_xml_rpc() {
  431. cat << 'EOF'
  432. <?xml version="1.0" encoding="utf-8"?>
  433. <service>
  434. <short>fs-xml-rpc</short>
  435. <description>Freeswitch XML RPC</description>
  436. <port protocol="tcp" port="8787"/>
  437. </service>
  438. EOF
  439. }
  440. cmd_sysconfig_freeswitch() {
  441. cat << 'EOF'
  442. PID_FILE=/var/run/freeswitch/freeswitch.pid
  443. FS_USER=freeswitch
  444. FS_GROUP=daemon
  445. FREESWITCH_PARAMS="-ncwait -nonat -u freeswitch -g daemon -certs /etc/freeswitch/ssl"
  446. EOF
  447. }
  448. cmd_remote_pgsql_p1() {
  449. cat << 'EOF'
  450. #!/bin/bash
  451. dnf_bin=$(which dnf)
  452. # Find pgsql staff
  453. # Fix contrib
  454. rc_n=$(rpm -q postgresql-bdr94-2ndquadrant-fedora >/dev/null 2>&1; echo $?)
  455. rc=$(rpm -q postgresql-server >/dev/null 2>&1; echo $?)
  456. read -p "Enter user name for fusionpbx database : " fusionpbx_username
  457. USERNAME_FUSIONPBX="$fusionpbx_username"
  458. read -p "Enter fusionpbx database name: " fusionpbx_dbname
  459. DBNAME_FUSIONPBX="$fusionpbx_dbname"
  460. read -p "Enter freeswitch database name: " freeswitch_dbname
  461. DBNAME_FREESWITCH="$freeswitch_dbname"
  462. stty -echo
  463. echo -n "Enter $USERNAME_FUSIONPBX database user password: "
  464. read psql_passwd
  465. stty echo
  466. echo
  467. DBNAME_USER_PASSWD="$psql_passwd"
  468. read -p "Do you want deploy database with BDR (Multi Master Replication)? [Y/n] " bdr_answer
  469. if [[ $bdr_answer =~ ^([yY][eE][sS]|[yY])$ ]]; then
  470. DB_TYPE="bdr"
  471. fi
  472. if [[ "$DB_TYPE" = bdr ]] && [[ $rc_n -ne 0 ]]; then
  473. "$dnf_bin" install -y http://packages.2ndquadrant.com/postgresql-bdr94-2ndquadrant/yum-repo-rpms/postgresql-bdr94-2ndquadrant-fedora-1.0-2.noarch.rpm
  474. "$dnf_bin" install -y postgresql-bdr94-bdr postgresql-bdr94-contrib
  475. else
  476. "$dnf_bin" install -y postgresql-bdr94-bdr postgresql-bdr94-contrib
  477. fi
  478. if [[ "$DB_TYPE" != bdr ]] && [[ $rc -ne 0 ]]; then
  479. "$dnf_bin" -y install postgresql-server
  480. fi
  481. default_interface=$(ip -o route get 8.8.8.8 | awk '{print $5}')
  482. get_zone=$(firewall-cmd --get-zone-of-interface=$default_interface)
  483. service_file_array=( $(find /etc/firewalld/services -maxdepth 1 -type f -name '*.xml') )
  484. find_psql_data_dir=$(find /var/lib/pgsql -type d -name data)
  485. find_psql_service_file=$(find /usr/lib/systemd/system -type f -name postgresql*.service)
  486. find_psql_db94_setup=$(find /usr -type f -name postgresql94-setup)
  487. my_ip=$(ip -o route get 8.8.8.8 | awk '{print $7}')
  488. my_name=$(hostname -s)
  489. cp /usr/lib/firewalld/services/postgresql.xml /etc/firewalld/services
  490. for file in "${service_file_array[@]##*/}"; do
  491. firewall-cmd --permanent --zone "$get_zone" --add-service "${file%.xml}"
  492. done
  493. firewall-cmd --reload
  494. EOF
  495. }
  496. cmd_remote_pgsql_p2() {
  497. cat << 'EOF'
  498. cmd_create_db02() {
  499. echo "Database setup ..."
  500. if [[ "$DB_TYPE" != bdr ]]; then
  501. postgresql-setup --initdb
  502. echo "PgSQL already initialized continue ..."
  503. systemctl restart postgresql.service
  504. systemctl status postgresql.service
  505. mv ${find_psql_data_dir}/pg_hba.conf ${find_psql_data_dir}/pg_hba.conf.orig
  506. mv ${find_psql_data_dir}/postgresql.conf ${find_psql_data_dir}/postgresql.conf.orig
  507. psql_hba_config > ${find_psql_data_dir}/pg_hba.conf
  508. psql_config > ${find_psql_data_dir}/postgresql.conf
  509. chown -R postgres:postgres ${find_psql_data_dir}
  510. systemctl restart postgresql.service
  511. su - postgres -c "echo \"*:*:*:${USERNAME_FUSIONPBX}:${DBNAME_USER_PASSWD}\" > ~/.pgpass; chmod 600 ~/.pgpass"
  512. cmd_create_db
  513. su - postgres -c 'rm -f ~/.pgpass'
  514. else
  515. updatedb
  516. ${find_psql_db94_setup} initdb
  517. mv ${find_psql_data_dir}/pg_hba.conf ${find_psql_data_dir}/pg_hba.conf.orig
  518. mv ${find_psql_data_dir}/postgresql.conf ${find_psql_data_dir}/postgresql.conf.orig
  519. echo "Setting up SSL certificate for BDR ..."
  520. curl --silent -o /usr/sbin/CertMng http://ftpsrv01.networklab.ca/scripts/CertMng
  521. chmod +x /usr/sbin/CertMng
  522. CertMng --CASetup /etc/pki/pg_bdr
  523. find_cert_cnf=$(find /etc/pki/pg_bdr -maxdepth 1 -type f -name '*.cnf')
  524. CertMng --GenCert ${find_cert_cnf##*/}
  525. rm -f /usr/sbin/CertMng
  526. private_key="/etc/pki/pg_bdr/${my_name}/${my_name}-key-nopasswd.pem"
  527. chmod 600 "$private_key"
  528. cmd_postgres_bdr_conf_fusionpbx > ${find_psql_data_dir}/postgresql.conf
  529. cmd_postgres_conf_fusionpbx >> ${find_psql_data_dir}/postgresql.conf
  530. cmd_postgres_bdr_hba_fusionpbx > ${find_psql_data_dir}/pg_hba.conf
  531. chown -R postgres:postgres ${find_psql_data_dir} /etc/pki/pg_bdr
  532. systemctl restart postgresql-9.4.service
  533. su - postgres -c "echo \"*:*:*:${USERNAME_FUSIONPBX}:${DBNAME_USER_PASSWD}\" > ~/.pgpass; chmod 600 ~/.pgpass"
  534. cmd_create_db
  535. curl --silent -u fusionpbx_Admin:dron12345 --silent -o /tmp/freeswitch-pgsql-bdr-1.6.5.sql http://ftpsrv01.networklab.ca/misc/freeswitch-pgsql-bdr-1.6.5.sql
  536. su - postgres -c "psql --command 'CREATE EXTENSION pgcrypto' -d ${DBNAME_FREESWITCH} -w --no-password"
  537. chown postgres:postgres /tmp/freeswitch-pgsql-bdr-1.6.5.sql
  538. sed -i "s/freeswitch/${USERNAME_FUSIONPBX}/" /tmp/freeswitch-pgsql-bdr-1.6.5.sql
  539. su - postgres -c "psql -d ${DBNAME_FREESWITCH} -w --no-password -f /tmp/freeswitch-pgsql-bdr-1.6.5.sql -L /tmp/sql.log"
  540. su - postgres -c 'rm -f ~/.pgpass'
  541. rm -f /tmp/freeswitch-pgsql-bdr-1.6.5.sql
  542. echo -ne "\e[31mI added to pg_hba.conf file only myself please add rest replication members.\e[0m\n"
  543. sleep 4
  544. fi
  545. }
  546. EOF
  547. }
  548. cmd_remote_pgsql_p3() {
  549. cat << 'EOF'
  550. cmd_create_db() {
  551. su - postgres -c "createuser -w --no-password -E -s -e ${USERNAME_FUSIONPBX}"
  552. su - postgres -c "createdb -w --no-password -E UTF8 -O ${USERNAME_FUSIONPBX} ${DBNAME_FREESWITCH}"
  553. su - postgres -c "createdb -w --no-password -E UTF8 -O ${USERNAME_FUSIONPBX} ${DBNAME_FUSIONPBX}"
  554. echo "Setting up passwords for user Postgres ..."
  555. su - postgres -c "psql --command '\password postgres'"
  556. echo "Setting up passwords for database user ${USERNAME_FUSIONPBX} ..."
  557. su - postgres -c "psql --command \"\password ${USERNAME_FUSIONPBX}"\"
  558. }
  559. EOF
  560. }
  561. cmd_remote_pgsql_p4() {
  562. cat << 'EOF'
  563. cmd_postgres_bdr_conf_fusionpbx() {
  564. printf "%s" "listen_addresses = '*'
  565. shared_preload_libraries = 'bdr'
  566. wal_level = 'logical'
  567. track_commit_timestamp = on
  568. max_wal_senders = 10
  569. max_replication_slots = 10
  570. ssl = true
  571. ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'
  572. ssl_cert_file = "\'/etc/pki/pg_bdr/${my_name}/${my_name}-cert.pem\'"
  573. ssl_key_file = "\'/etc/pki/pg_bdr/${my_name}/${my_name}-key-nopasswd.pem\'"
  574. ssl_ca_file = "\'/etc/pki/pg_bdr/ca-cert.pem\'"
  575. ssl_crl_file = "\'/etc/pki/pg_bdr/ca_rev-list.pem\'"
  576. # max_worker_processes = 20
  577. # # #log_error_verbosity = verbose
  578. # # #log_min_messages = debug1
  579. # # #log_line_prefix = 'd=%d p=%p a=%a%q '
  580. # # #bdr.default_apply_delay=2000 # milliseconds
  581. # # #bdr.log_conflicts_to_table=on
  582. # # #bdr.skip_ddl_replication = off
  583. "
  584. }
  585. EOF
  586. }
  587. cmd_remote_pgsql_p5() {
  588. cat << 'EOF'
  589. psql_config() {
  590. printf "%s" "max_connections = 100
  591. shared_buffers = 256MB
  592. logging_collector = on
  593. log_destination = 'stderr'
  594. log_directory = 'pg_log'
  595. log_filename = 'postgresql-%G-%m-%d-%a.log'
  596. log_truncate_on_rotation = off
  597. log_rotation_age = 31d
  598. client_min_messages = notice
  599. log_min_messages = info
  600. log_min_error_statement = notice
  601. log_min_duration_statement = 1000
  602. log_line_prefix = '%t %u@%r:%d [%p]'
  603. log_timezone = 'US/Eastern'
  604. datestyle = 'iso, mdy'
  605. timezone = 'US/Eastern'
  606. lc_messages = 'en_US.UTF-8'
  607. lc_monetary = 'en_US.UTF-8'
  608. lc_numeric = 'en_US.UTF-8'
  609. lc_time = 'en_US.UTF-8'
  610. default_text_search_config = 'pg_catalog.english'
  611. "
  612. }
  613. EOF
  614. }
  615. cmd_remote_pgsql_p6() {
  616. cat << 'EOF'
  617. cmd_postgres_conf_fusionpbx() {
  618. printf "%s" "max_connections = 100
  619. shared_buffers = 256MB
  620. logging_collector = on
  621. log_destination = 'stderr'
  622. log_directory = 'pg_log'
  623. log_filename = 'postgresql-%G-%m-%d-%a.log'
  624. log_truncate_on_rotation = off
  625. log_rotation_age = 31d
  626. client_min_messages = notice
  627. log_min_messages = info
  628. log_min_error_statement = notice
  629. log_min_duration_statement = 1000
  630. log_line_prefix = '%t %u@%r:%d [%p] '
  631. log_timezone = 'US/Eastern'
  632. datestyle = 'iso, mdy'
  633. timezone = 'US/Eastern'
  634. lc_messages = 'en_US.UTF-8'
  635. lc_monetary = 'en_US.UTF-8'
  636. lc_numeric = 'en_US.UTF-8'
  637. lc_time = 'en_US.UTF-8'
  638. default_text_search_config = 'pg_catalog.english'
  639. "
  640. }
  641. EOF
  642. }
  643. cmd_remote_pgsql_p7() {
  644. cat << 'EOF'
  645. cmd_postgres_bdr_hba_fusionpbx() {
  646. printf "%s" "
  647. # TYPE DATABASE USER ADDRESS METHOD
  648. # "local" is for Unix domain socket connections only
  649. local all all peer
  650. # IPv4 local connections:
  651. host all all 127.0.0.1/32 trust
  652. # IPv6 local connections:
  653. host all all ::1/128 trust
  654. hostssl all all ${my_ip}/32 trust
  655. host replication postgres ${my_ip}/32 trust
  656. # Allow replication connections from localhost, by a user with the
  657. # replication privilege.
  658. #local replication postgres peer
  659. #host replication postgres 127.0.0.1/32 ident
  660. #host replication postgres ::1/128 ident
  661. "
  662. }
  663. EOF
  664. }
  665. cmd_remote_pgsql_p8() {
  666. cat << 'EOF'
  667. psql_hba_config() {
  668. printf '%s' '
  669. # TYPE DATABASE USER ADDRESS METHOD
  670. # "local" is for Unix domain socket connections only
  671. local all all peer
  672. # IPv4 local connections:
  673. host all all 127.0.0.1/32 trust
  674. # IPv6 local connections:
  675. host all all ::1/128 trust
  676. # Allow replication connections from localhost, by a user with the
  677. # replication privilege.
  678. #local replication postgres peer
  679. #host replication postgres 127.0.0.1/32 ident
  680. #host replication postgres ::1/128 ident
  681. '
  682. }
  683. EOF
  684. }