install-functions_fedora_server22 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768
  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. listen_addresses = "*"
  341. logging_collector = on
  342. log_destination = 'stderr'
  343. log_directory = 'pg_log'
  344. log_filename = 'postgresql-%G-%m-%d-%a.log'
  345. log_truncate_on_rotation = off
  346. log_rotation_age = 31d
  347. client_min_messages = notice
  348. log_min_messages = info
  349. log_min_error_statement = notice
  350. log_min_duration_statement = 1000
  351. log_line_prefix = '%t %u@%r:%d [%p] '
  352. log_timezone = 'US/Eastern'
  353. datestyle = 'iso, mdy'
  354. timezone = 'US/Eastern'
  355. lc_messages = 'en_US.UTF-8'
  356. lc_monetary = 'en_US.UTF-8'
  357. lc_numeric = 'en_US.UTF-8'
  358. lc_time = 'en_US.UTF-8'
  359. default_text_search_config = 'pg_catalog.english'
  360. EOF
  361. }
  362. cmd_service_sip-ext() {
  363. cat << 'EOF'
  364. <?xml version="1.0" encoding="utf-8"?>
  365. <service>
  366. <short>sip-ext</short>
  367. <description>sip ext freeswitch</description>
  368. <port protocol="tcp" port="5080"/>
  369. <port protocol="udp" port="5080"/>
  370. <port protocol="tcp" port="5081"/>
  371. </service>
  372. EOF
  373. }
  374. cmd_service_sip-int() {
  375. cat << 'EOF'
  376. <?xml version="1.0" encoding="utf-8"?>
  377. <service>
  378. <short>sip-int</short>
  379. <description>sip int freeswitch</description>
  380. <port protocol="tcp" port="5060"/>
  381. <port protocol="udp" port="5060"/>
  382. <port protocol="tcp" port="5061"/>
  383. </service>
  384. EOF
  385. }
  386. cmd_service_chronyd() {
  387. cat << 'EOF'
  388. <?xml version="1.0" encoding="utf-8"?>
  389. <service>
  390. <short>chronyd</short>
  391. <description>chronyd</description>
  392. <port protocol="udp" port="123"/>
  393. </service>
  394. EOF
  395. }
  396. cmd_service_snmp() {
  397. cat << 'EOF'
  398. <?xml version="1.0" encoding="utf-8"?>
  399. <service>
  400. <short>snmp</short>
  401. <description>snmp</description>
  402. <port protocol="udp" port="161"/>
  403. <port protocol="udp" port="162"/>
  404. </service>
  405. EOF
  406. }
  407. cmd_service_www() {
  408. cat << 'EOF'
  409. <?xml version="1.0" encoding="utf-8"?>
  410. <service>
  411. <short>www</short>
  412. <description>web services</description>
  413. <port protocol="tcp" port="80"/>
  414. <port protocol="tcp" port="82"/>
  415. <port protocol="tcp" port="443"/>
  416. </service>
  417. EOF
  418. }
  419. cmd_service_rtp() {
  420. cat << 'EOF'
  421. <?xml version="1.0" encoding="utf-8"?>
  422. <service>
  423. <short>rtp</short>
  424. <description>rtp freeswitch</description>
  425. <port protocol="udp" port="16384-32768"/>
  426. </service>
  427. EOF
  428. }
  429. cmd_service_xml_rpc() {
  430. cat << 'EOF'
  431. <?xml version="1.0" encoding="utf-8"?>
  432. <service>
  433. <short>fs-xml-rpc</short>
  434. <description>Freeswitch XML RPC</description>
  435. <port protocol="tcp" port="8787"/>
  436. </service>
  437. EOF
  438. }
  439. cmd_sysconfig_freeswitch() {
  440. cat << 'EOF'
  441. PID_FILE=/var/run/freeswitch/freeswitch.pid
  442. FS_USER=freeswitch
  443. FS_GROUP=daemon
  444. FREESWITCH_PARAMS="-ncwait -nonat -u freeswitch -g daemon -certs /etc/freeswitch/ssl"
  445. EOF
  446. }
  447. cmd_remote_pgsql_p1() {
  448. cat << 'EOF'
  449. #!/bin/bash
  450. dnf_bin=$(which dnf)
  451. # Find pgsql staff
  452. # Fix contrib
  453. rc_n=$(rpm -q postgresql-bdr94-2ndquadrant-fedora >/dev/null 2>&1; echo $?)
  454. rc=$(rpm -q postgresql-server >/dev/null 2>&1; echo $?)
  455. read -p "Enter user name for fusionpbx database : " fusionpbx_username
  456. USERNAME_FUSIONPBX="$fusionpbx_username"
  457. read -p "Enter fusionpbx database name: " fusionpbx_dbname
  458. DBNAME_FUSIONPBX="$fusionpbx_dbname"
  459. read -p "Enter freeswitch database name: " freeswitch_dbname
  460. DBNAME_FREESWITCH="$freeswitch_dbname"
  461. stty -echo
  462. echo -n "Enter $USERNAME_FUSIONPBX database user password: "
  463. read psql_passwd
  464. stty echo
  465. echo
  466. DBNAME_USER_PASSWD="$psql_passwd"
  467. read -p "Do you want deploy database with BDR (Multi Master Replication)? [Y/n] " bdr_answer
  468. if [[ $bdr_answer =~ ^([yY][eE][sS]|[yY])$ ]]; then
  469. DB_TYPE="bdr"
  470. fi
  471. if [[ "$DB_TYPE" = bdr ]] && [[ $rc_n -ne 0 ]]; then
  472. "$dnf_bin" install -y http://packages.2ndquadrant.com/postgresql-bdr94-2ndquadrant/yum-repo-rpms/postgresql-bdr94-2ndquadrant-fedora-1.0-2.noarch.rpm
  473. "$dnf_bin" install -y postgresql-bdr94-bdr postgresql-bdr94-contrib pgtune
  474. else
  475. "$dnf_bin" install -y postgresql-bdr94-bdr postgresql-bdr94-contrib pgtune
  476. fi
  477. if [[ "$DB_TYPE" != bdr ]] && [[ $rc -ne 0 ]]; then
  478. "$dnf_bin" -y install postgresql-server postgresql-contrib pgtune
  479. fi
  480. default_interface=$(ip -o route get 8.8.8.8 | awk '{print $5}')
  481. get_zone=$(firewall-cmd --get-zone-of-interface=$default_interface)
  482. service_file_array=( $(find /etc/firewalld/services -maxdepth 1 -type f -name '*.xml') )
  483. find_psql_data_dir=$(find /var/lib/pgsql -type d -name data)
  484. find_psql_service_file=$(find /usr/lib/systemd/system -type f -name postgresql*.service)
  485. find_psql_db94_setup=$(find /usr -type f -name postgresql94-setup)
  486. my_ip=$(ip -o route get 8.8.8.8 | awk '{print $7}')
  487. my_name=$(hostname -s)
  488. cp /usr/lib/firewalld/services/postgresql.xml /etc/firewalld/services
  489. for file in "${service_file_array[@]##*/}"; do
  490. firewall-cmd --permanent --zone "$get_zone" --add-service "${file%.xml}"
  491. done
  492. firewall-cmd --reload
  493. EOF
  494. }
  495. cmd_remote_pgsql_p2() {
  496. cat << 'EOF'
  497. cmd_create_db02() {
  498. echo "Database setup ..."
  499. if [[ "$DB_TYPE" != bdr ]]; then
  500. postgresql-setup --initdb
  501. echo "PgSQL already initialized continue ..."
  502. systemctl restart postgresql.service
  503. systemctl status postgresql.service
  504. mv ${find_psql_data_dir}/pg_hba.conf ${find_psql_data_dir}/pg_hba.conf.orig
  505. mv ${find_psql_data_dir}/postgresql.conf ${find_psql_data_dir}/postgresql.conf.orig
  506. psql_hba_config > ${find_psql_data_dir}/pg_hba.conf
  507. psql_config > ${find_psql_data_dir}/postgresql.conf
  508. pgtune -c 600 -i ${find_psql_data_dir}/postgresql.conf >/tmp/pgtune.conf
  509. mv ${find_psql_data_dir}/postgresql.conf{,.bak}
  510. cp /tmp/pgtune.conf ${find_psql_data_dir}/postgresql.conf
  511. chown -R postgres:postgres ${find_psql_data_dir}
  512. systemctl restart postgresql.service
  513. su - postgres -c "echo \"*:*:*:${USERNAME_FUSIONPBX}:${DBNAME_USER_PASSWD}\" > ~/.pgpass; chmod 600 ~/.pgpass"
  514. cmd_create_db
  515. su - postgres -c 'rm -f ~/.pgpass'
  516. else
  517. updatedb
  518. ${find_psql_db94_setup} initdb
  519. mv ${find_psql_data_dir}/pg_hba.conf ${find_psql_data_dir}/pg_hba.conf.orig
  520. mv ${find_psql_data_dir}/postgresql.conf ${find_psql_data_dir}/postgresql.conf.orig
  521. echo "Setting up SSL certificate for BDR ..."
  522. curl --silent -o /usr/sbin/CertMng http://ftpsrv01.networklab.ca/scripts/CertMng
  523. chmod +x /usr/sbin/CertMng
  524. CertMng --CASetup /etc/pki/pg_bdr
  525. find_cert_cnf=$(find /etc/pki/pg_bdr -maxdepth 1 -type f -name '*.cnf')
  526. CertMng --GenCert ${find_cert_cnf##*/}
  527. rm -f /usr/sbin/CertMng
  528. private_key="/etc/pki/pg_bdr/${my_name}/${my_name}-key-nopasswd.pem"
  529. chmod 600 "$private_key"
  530. cmd_postgres_bdr_conf_fusionpbx > ${find_psql_data_dir}/postgresql.conf
  531. cmd_postgres_conf_fusionpbx >> ${find_psql_data_dir}/postgresql.conf
  532. cmd_postgres_bdr_hba_fusionpbx > ${find_psql_data_dir}/pg_hba.conf
  533. pgtune -c 600 -i ${find_psql_data_dir}/postgresql.conf >/tmp/pgtune.conf
  534. mv ${find_psql_data_dir}/postgresql.conf{,.bak}
  535. cp /tmp/pgtune.conf ${find_psql_data_dir}/postgresql.conf
  536. chown -R postgres:postgres ${find_psql_data_dir} /etc/pki/pg_bdr
  537. systemctl restart postgresql-9.4.service
  538. su - postgres -c "echo \"*:*:*:${USERNAME_FUSIONPBX}:${DBNAME_USER_PASSWD}\" > ~/.pgpass; chmod 600 ~/.pgpass"
  539. cmd_create_db
  540. 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
  541. su - postgres -c "psql --command 'CREATE EXTENSION pgcrypto' -d ${DBNAME_FREESWITCH} -w --no-password"
  542. chown postgres:postgres /tmp/freeswitch-pgsql-bdr-1.6.5.sql
  543. sed -i "s/freeswitch/${USERNAME_FUSIONPBX}/" /tmp/freeswitch-pgsql-bdr-1.6.5.sql
  544. su - postgres -c "psql -d ${DBNAME_FREESWITCH} -w --no-password -f /tmp/freeswitch-pgsql-bdr-1.6.5.sql -L /tmp/sql.log"
  545. su - postgres -c 'rm -f ~/.pgpass'
  546. rm -f /tmp/freeswitch-pgsql-bdr-1.6.5.sql
  547. echo -ne "\e[31mI added to pg_hba.conf file only myself please add rest replication members.\e[0m\n"
  548. sleep 4
  549. fi
  550. }
  551. EOF
  552. }
  553. cmd_remote_pgsql_p3() {
  554. cat << 'EOF'
  555. cmd_create_db() {
  556. su - postgres -c "createuser -w --no-password -E -s -e ${USERNAME_FUSIONPBX}"
  557. su - postgres -c "createdb -w --no-password -E UTF8 -O ${USERNAME_FUSIONPBX} ${DBNAME_FREESWITCH}"
  558. su - postgres -c "createdb -w --no-password -E UTF8 -O ${USERNAME_FUSIONPBX} ${DBNAME_FUSIONPBX}"
  559. echo "Setting up passwords for user Postgres ..."
  560. su - postgres -c "psql --command '\password postgres'"
  561. echo "Setting up passwords for database user ${USERNAME_FUSIONPBX} ..."
  562. su - postgres -c "psql --command \"\password ${USERNAME_FUSIONPBX}"\"
  563. }
  564. EOF
  565. }
  566. cmd_remote_pgsql_p4() {
  567. cat << 'EOF'
  568. cmd_postgres_bdr_conf_fusionpbx() {
  569. printf "%s" "listen_addresses = '*'
  570. shared_preload_libraries = 'bdr'
  571. wal_level = 'logical'
  572. track_commit_timestamp = on
  573. max_wal_senders = 10
  574. max_replication_slots = 10
  575. ssl = true
  576. ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL'
  577. ssl_cert_file = "\'/etc/pki/pg_bdr/${my_name}/${my_name}-cert.pem\'"
  578. ssl_key_file = "\'/etc/pki/pg_bdr/${my_name}/${my_name}-key-nopasswd.pem\'"
  579. ssl_ca_file = "\'/etc/pki/pg_bdr/ca-cert.pem\'"
  580. ssl_crl_file = "\'/etc/pki/pg_bdr/ca_rev-list.pem\'"
  581. # max_worker_processes = 20
  582. # # #log_error_verbosity = verbose
  583. # # #log_min_messages = debug1
  584. # # #log_line_prefix = 'd=%d p=%p a=%a%q '
  585. # # #bdr.default_apply_delay=2000 # milliseconds
  586. # # #bdr.log_conflicts_to_table=on
  587. # # #bdr.skip_ddl_replication = off
  588. "
  589. }
  590. EOF
  591. }
  592. cmd_remote_pgsql_p5() {
  593. cat << 'EOF'
  594. psql_config() {
  595. printf "%s" "logging_collector = on
  596. log_destination = 'stderr'
  597. log_directory = 'pg_log'
  598. log_filename = 'postgresql-%G-%m-%d-%a.log'
  599. log_truncate_on_rotation = off
  600. log_rotation_age = 31d
  601. client_min_messages = notice
  602. log_min_messages = info
  603. log_min_error_statement = notice
  604. log_min_duration_statement = 1000
  605. log_line_prefix = '%t %u@%r:%d [%p]'
  606. log_timezone = 'US/Eastern'
  607. datestyle = 'iso, mdy'
  608. timezone = 'US/Eastern'
  609. lc_messages = 'en_US.UTF-8'
  610. lc_monetary = 'en_US.UTF-8'
  611. lc_numeric = 'en_US.UTF-8'
  612. lc_time = 'en_US.UTF-8'
  613. default_text_search_config = 'pg_catalog.english'
  614. "
  615. }
  616. EOF
  617. }
  618. cmd_remote_pgsql_p6() {
  619. cat << 'EOF'
  620. cmd_postgres_conf_fusionpbx() {
  621. printf "%s" "logging_collector = on
  622. log_destination = 'stderr'
  623. log_directory = 'pg_log'
  624. log_filename = 'postgresql-%G-%m-%d-%a.log'
  625. log_truncate_on_rotation = off
  626. log_rotation_age = 31d
  627. client_min_messages = notice
  628. log_min_messages = info
  629. log_min_error_statement = notice
  630. log_min_duration_statement = 1000
  631. log_line_prefix = '%t %u@%r:%d [%p] '
  632. log_timezone = 'US/Eastern'
  633. datestyle = 'iso, mdy'
  634. timezone = 'US/Eastern'
  635. lc_messages = 'en_US.UTF-8'
  636. lc_monetary = 'en_US.UTF-8'
  637. lc_numeric = 'en_US.UTF-8'
  638. lc_time = 'en_US.UTF-8'
  639. default_text_search_config = 'pg_catalog.english'
  640. "
  641. }
  642. EOF
  643. }
  644. cmd_remote_pgsql_p7() {
  645. cat << 'EOF'
  646. cmd_postgres_bdr_hba_fusionpbx() {
  647. printf "%s" "
  648. # TYPE DATABASE USER ADDRESS METHOD
  649. # "local" is for Unix domain socket connections only
  650. local all all peer
  651. # IPv4 local connections:
  652. host all all 127.0.0.1/32 trust
  653. # IPv6 local connections:
  654. host all all ::1/128 trust
  655. hostssl all all ${my_ip}/32 trust
  656. host replication postgres ${my_ip}/32 trust
  657. # Allow replication connections from localhost, by a user with the
  658. # replication privilege.
  659. #local replication postgres peer
  660. #host replication postgres 127.0.0.1/32 ident
  661. #host replication postgres ::1/128 ident
  662. "
  663. }
  664. EOF
  665. }
  666. cmd_remote_pgsql_p8() {
  667. cat << 'EOF'
  668. psql_hba_config() {
  669. printf '%s' '
  670. # TYPE DATABASE USER ADDRESS METHOD
  671. # "local" is for Unix domain socket connections only
  672. local all all peer
  673. # IPv4 local connections:
  674. host all all 127.0.0.1/32 trust
  675. # IPv6 local connections:
  676. host all all ::1/128 trust
  677. # Allow replication connections from localhost, by a user with the
  678. # replication privilege.
  679. #local replication postgres peer
  680. #host replication postgres 127.0.0.1/32 ident
  681. #host replication postgres ::1/128 ident
  682. '
  683. }
  684. EOF
  685. }