mirror of https://github.com/Aidaho12/haproxy-wi
parent
a5174a152d
commit
88471af613
|
@ -755,7 +755,7 @@ def update_db_v_7_2_3():
|
||||||
|
|
||||||
def update_ver():
|
def update_ver():
|
||||||
try:
|
try:
|
||||||
Version.update(version='7.2.5.0').execute()
|
Version.update(version='7.2.6.0').execute()
|
||||||
except Exception:
|
except Exception:
|
||||||
print('Cannot update version')
|
print('Cannot update version')
|
||||||
|
|
||||||
|
|
|
@ -245,16 +245,13 @@ def get_user_id_by_username(username: str):
|
||||||
|
|
||||||
|
|
||||||
def get_user_role_by_uuid(uuid, group_id):
|
def get_user_role_by_uuid(uuid, group_id):
|
||||||
query = (
|
try:
|
||||||
UserGroups.select(UserGroups.user_role_id).join(UUID, on=(UserGroups.user_id == UUID.user_id)
|
query_res = UserGroups.select(UserGroups.user_role_id).join(
|
||||||
|
UUID, on=(UserGroups.user_id == UUID.user_id)
|
||||||
).where(
|
).where(
|
||||||
(UUID.uuid == uuid) &
|
(UUID.uuid == uuid) &
|
||||||
(UserGroups.user_group_id == group_id)
|
(UserGroups.user_group_id == group_id)
|
||||||
)
|
).execute()
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
|
||||||
query_res = query.execute()
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
out_error(e)
|
out_error(e)
|
||||||
else:
|
else:
|
||||||
|
@ -262,6 +259,20 @@ def get_user_role_by_uuid(uuid, group_id):
|
||||||
return int(user_id.user_role_id)
|
return int(user_id.user_role_id)
|
||||||
|
|
||||||
|
|
||||||
|
def get_user_current_group_by_uuid(uuid):
|
||||||
|
try:
|
||||||
|
query_res = User.select(User.groups).join(
|
||||||
|
UUID, on=(User.user_id == UUID.user_id)
|
||||||
|
).where(
|
||||||
|
(UUID.uuid == uuid)
|
||||||
|
).execute()
|
||||||
|
except Exception as e:
|
||||||
|
out_error(e)
|
||||||
|
else:
|
||||||
|
for user_id in query_res:
|
||||||
|
return int(user_id.groups)
|
||||||
|
|
||||||
|
|
||||||
def write_user_uuid(login, user_uuid):
|
def write_user_uuid(login, user_uuid):
|
||||||
session_ttl = get_setting('session_ttl')
|
session_ttl = get_setting('session_ttl')
|
||||||
user_id = get_user_id_by_username(login)
|
user_id = get_user_id_by_username(login)
|
||||||
|
|
|
@ -209,10 +209,18 @@ def get_users_params(**kwargs):
|
||||||
raise Exception('error: Cannot get user UUID')
|
raise Exception('error: Cannot get user UUID')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
group_id = int(request.cookies.get('group'))
|
group_id = user_sql.get_user_current_group_by_uuid(user_uuid)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise Exception(f'error: Cannot get user group: {e}')
|
raise Exception(f'error: Cannot get user group: {e}')
|
||||||
|
|
||||||
|
try:
|
||||||
|
group_id_from_cookies = int(request.cookies.get('group'))
|
||||||
|
except Exception as e:
|
||||||
|
raise Exception(f'error: Cannot get group id from cookies: {e}')
|
||||||
|
|
||||||
|
if group_id_from_cookies != group_id:
|
||||||
|
raise Exception('error: Wrong current group')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
role = user_sql.get_user_role_by_uuid(user_uuid, group_id)
|
role = user_sql.get_user_role_by_uuid(user_uuid, group_id)
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|
|
@ -60,9 +60,9 @@ def check_new_version(service):
|
||||||
proxy_dict = common.return_proxy_dict()
|
proxy_dict = common.return_proxy_dict()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
response = requests.get(f'https://roxy-wi.org/version/get/{service}', timeout=1, proxies=proxy_dict)
|
response = requests.get(f'https://roxy-wi.org/version/get/{service}', timeout=5, proxies=proxy_dict)
|
||||||
if service == 'roxy-wi':
|
if service == 'roxy-wi':
|
||||||
requests.get(f'https://roxy-wi.org/version/send/{current_ver}', timeout=1, proxies=proxy_dict)
|
requests.get(f'https://roxy-wi.org/version/send/{current_ver}', timeout=5, proxies=proxy_dict)
|
||||||
|
|
||||||
res = response.content.decode(encoding='UTF-8')
|
res = response.content.decode(encoding='UTF-8')
|
||||||
except requests.exceptions.RequestException as e:
|
except requests.exceptions.RequestException as e:
|
||||||
|
@ -82,7 +82,7 @@ def update_user_status() -> None:
|
||||||
adapter = HTTPAdapter(max_retries=retry_strategy)
|
adapter = HTTPAdapter(max_retries=retry_strategy)
|
||||||
roxy_wi_get_plan = requests.Session()
|
roxy_wi_get_plan = requests.Session()
|
||||||
roxy_wi_get_plan.mount("https://", adapter)
|
roxy_wi_get_plan.mount("https://", adapter)
|
||||||
roxy_wi_get_plan = requests.get(f'https://roxy-wi.org/user-name/{user_name}', timeout=1, proxies=proxy_dict)
|
roxy_wi_get_plan = requests.get(f'https://roxy-wi.org/user-name/{user_name}', timeout=5, proxies=proxy_dict)
|
||||||
try:
|
try:
|
||||||
status = roxy_wi_get_plan.content.decode(encoding='UTF-8')
|
status = roxy_wi_get_plan.content.decode(encoding='UTF-8')
|
||||||
status = status.split(' ')
|
status = status.split(' ')
|
||||||
|
|
|
@ -2,7 +2,6 @@ import os
|
||||||
import json
|
import json
|
||||||
from packaging import version
|
from packaging import version
|
||||||
|
|
||||||
from flask import render_template
|
|
||||||
import ansible
|
import ansible
|
||||||
import ansible_runner
|
import ansible_runner
|
||||||
|
|
||||||
|
@ -35,81 +34,28 @@ def show_installation_output(error: str, output: list, service: str, rc=0):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def show_success_installation(service):
|
def generate_geoip_inv(server_ip: str, installed_service: str, geoip_update: int) -> object:
|
||||||
lang = roxywi_common.get_user_lang_for_flask()
|
inv = {"server": {"hosts": {}}}
|
||||||
return render_template('include/show_success_installation.html', service=service, lang=lang)
|
server_ips = []
|
||||||
|
|
||||||
|
inv['server']['hosts'][server_ip] = {
|
||||||
|
'service_dir': common.return_nice_path(sql.get_setting(f'{installed_service}_dir')),
|
||||||
|
'maxmind_key': sql.get_setting('maxmind_key'),
|
||||||
|
'UPDATE': geoip_update
|
||||||
|
|
||||||
|
}
|
||||||
|
server_ips.append(server_ip)
|
||||||
|
|
||||||
|
return inv, server_ips
|
||||||
|
|
||||||
|
|
||||||
def geoip_installation(serv, geoip_update, service):
|
def generate_grafana_inv() -> object:
|
||||||
proxy = sql.get_setting('proxy')
|
inv = {"server": {"hosts": {}}}
|
||||||
maxmind_key = sql.get_setting('maxmind_key')
|
server_ips = []
|
||||||
proxy_serv = ''
|
inv['server']['hosts']['localhost'] = {}
|
||||||
ssh_settings = return_ssh_keys_path(serv)
|
server_ips.append('localhost')
|
||||||
full_path = '/var/www/haproxy-wi/app'
|
|
||||||
|
|
||||||
if service in ('haproxy', 'nginx'):
|
return inv, server_ips
|
||||||
service_dir = common.return_nice_path(sql.get_setting(f'{service}_dir'))
|
|
||||||
script = f'install_{service}_geoip.sh'
|
|
||||||
else:
|
|
||||||
raise Exception('warning: select a server and service first')
|
|
||||||
|
|
||||||
if proxy is not None and proxy != '' and proxy != 'None':
|
|
||||||
proxy_serv = proxy
|
|
||||||
|
|
||||||
try:
|
|
||||||
os.system(f"cp {full_path}/scripts/{script} {full_path}/{script}")
|
|
||||||
except Exception as e:
|
|
||||||
raise Exception(f'error: {e}')
|
|
||||||
|
|
||||||
commands = [
|
|
||||||
f"chmod +x {full_path}/{script} && {full_path}/{script} PROXY={proxy_serv} SSH_PORT={ssh_settings['port']} UPDATE={geoip_update} "
|
|
||||||
f"maxmind_key={maxmind_key} service_dir={service_dir} HOST={serv} USER={ssh_settings['user']} "
|
|
||||||
f"PASS={ssh_settings['password']} KEY={ssh_settings['key']}"
|
|
||||||
]
|
|
||||||
|
|
||||||
return_out = server_mod.subprocess_execute_with_rc(commands[0])
|
|
||||||
|
|
||||||
try:
|
|
||||||
show_installation_output(return_out['error'], return_out['output'], 'GeoLite2 Database', rc=return_out['rc'])
|
|
||||||
except Exception as e:
|
|
||||||
raise Exception(e)
|
|
||||||
|
|
||||||
os.remove(f'{full_path}/{script}')
|
|
||||||
|
|
||||||
return show_success_installation('GeoLite2 Database')
|
|
||||||
|
|
||||||
|
|
||||||
def grafana_install():
|
|
||||||
script = "install_grafana.sh"
|
|
||||||
proxy = sql.get_setting('proxy')
|
|
||||||
proxy_serv = ''
|
|
||||||
host = os.environ.get('HTTP_HOST', '')
|
|
||||||
full_path = '/var/www/haproxy-wi/app'
|
|
||||||
|
|
||||||
try:
|
|
||||||
os.system(f"cp {full_path}/scripts/{script} {full_path}/{script}")
|
|
||||||
except Exception as e:
|
|
||||||
raise Exception(f'error: {e}')
|
|
||||||
|
|
||||||
if proxy is not None and proxy != '' and proxy != 'None':
|
|
||||||
proxy_serv = proxy
|
|
||||||
|
|
||||||
cmd = f"chmod +x {full_path}/{script} && {full_path}/{script} PROXY={proxy_serv}"
|
|
||||||
output, error = server_mod.subprocess_execute(cmd)
|
|
||||||
|
|
||||||
if error:
|
|
||||||
roxywi_common.logging('Roxy-WI server', error, roxywi=1)
|
|
||||||
else:
|
|
||||||
for line in output:
|
|
||||||
if any(s in line for s in ("Traceback", "FAILED")):
|
|
||||||
try:
|
|
||||||
return line
|
|
||||||
except Exception:
|
|
||||||
return output
|
|
||||||
|
|
||||||
os.remove(f'{full_path}/{script}')
|
|
||||||
|
|
||||||
return f'success: Grafana and Prometheus servers were installed. You can find Grafana on http://{host}:3000<br>'
|
|
||||||
|
|
||||||
|
|
||||||
def generate_kp_inv(json_data: json, installed_service) -> object:
|
def generate_kp_inv(json_data: json, installed_service) -> object:
|
||||||
|
@ -155,13 +101,9 @@ def generate_kp_inv(json_data: json, installed_service) -> object:
|
||||||
def generate_waf_inv(server_ip: str, installed_service: str) -> object:
|
def generate_waf_inv(server_ip: str, installed_service: str) -> object:
|
||||||
inv = {"server": {"hosts": {}}}
|
inv = {"server": {"hosts": {}}}
|
||||||
server_ips = []
|
server_ips = []
|
||||||
if installed_service == "waf":
|
|
||||||
service_dir = sql.get_setting('haproxy_dir')
|
|
||||||
else:
|
|
||||||
service_dir = sql.get_setting('nginx_dir')
|
|
||||||
|
|
||||||
inv['server']['hosts'][server_ip] = {
|
inv['server']['hosts'][server_ip] = {
|
||||||
'SERVICE_PATH': service_dir
|
'SERVICE_PATH': common.return_nice_path(sql.get_setting(f'{installed_service}_dir'))
|
||||||
}
|
}
|
||||||
server_ips.append(server_ip)
|
server_ips.append(server_ip)
|
||||||
|
|
||||||
|
@ -404,7 +346,7 @@ def install_service(service: str, json_data: str) -> object:
|
||||||
|
|
||||||
def _install_ansible_collections():
|
def _install_ansible_collections():
|
||||||
old_ansible_server = ''
|
old_ansible_server = ''
|
||||||
collections = ('community.general', 'ansible.posix', 'community.docker')
|
collections = ('community.general', 'ansible.posix', 'community.docker', 'community.grafana')
|
||||||
trouble_link = 'Read <a href="https://roxy-wi.org/troubleshooting#ansible_collection" target="_blank" class="link">troubleshooting</a>'
|
trouble_link = 'Read <a href="https://roxy-wi.org/troubleshooting#ansible_collection" target="_blank" class="link">troubleshooting</a>'
|
||||||
for collection in collections:
|
for collection in collections:
|
||||||
if not os.path.isdir(f'/usr/share/httpd/.ansible/collections/ansible_collections/{collection.replace(".", "/")}'):
|
if not os.path.isdir(f'/usr/share/httpd/.ansible/collections/ansible_collections/{collection.replace(".", "/")}'):
|
||||||
|
|
|
@ -77,7 +77,8 @@ def get_exporter_version(exporter, server_ip):
|
||||||
@bp.route('/grafana')
|
@bp.route('/grafana')
|
||||||
def install_grafana():
|
def install_grafana():
|
||||||
try:
|
try:
|
||||||
return service_mod.grafana_install()
|
inv, server_ips = service_mod.generate_grafana_inv()
|
||||||
|
return service_mod.run_ansible(inv, server_ips, 'grafana'), 201
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return f'{e}'
|
return f'{e}'
|
||||||
|
|
||||||
|
@ -121,9 +122,10 @@ def install_geoip():
|
||||||
service = request.form.get('service')
|
service = request.form.get('service')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return service_mod.geoip_installation(server_ip, geoip_update, service)
|
inv, server_ips = service_mod.generate_geoip_inv(server_ip, service, geoip_update)
|
||||||
|
return service_mod.run_ansible(inv, server_ips, f'{service}_geoip'), 201
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return str(e)
|
return f'{e}'
|
||||||
|
|
||||||
|
|
||||||
@bp.route('/geoip/<service>/<server_ip>')
|
@bp.route('/geoip/<service>/<server_ip>')
|
||||||
|
|
|
@ -4,7 +4,7 @@ set -e -o pipefail
|
||||||
|
|
||||||
country_location="GeoLite2-Country-CSV_*/GeoLite2-Country-Locations-en.csv"
|
country_location="GeoLite2-Country-CSV_*/GeoLite2-Country-Locations-en.csv"
|
||||||
country_ip="GeoLite2-Country-CSV_*/GeoLite2-Country-Blocks-IPv4.csv"
|
country_ip="GeoLite2-Country-CSV_*/GeoLite2-Country-Blocks-IPv4.csv"
|
||||||
haproxy_dir="{{haproxy_dir}}"
|
service_dir="{{service_dir}}"
|
||||||
MAXMIND_LICENSE="{{maxmind_key}}"
|
MAXMIND_LICENSE="{{maxmind_key}}"
|
||||||
PROXY="{{PROXY}}"
|
PROXY="{{PROXY}}"
|
||||||
|
|
||||||
|
@ -45,10 +45,10 @@ while read line; do
|
||||||
|
|
||||||
done < $country_location
|
done < $country_location
|
||||||
|
|
||||||
if [[ ! -d "$haproxy_dir"/geoip ]]; then
|
if [[ ! -d "$service_dir"/geoip ]]; then
|
||||||
mkdir "$haproxy_dir"/geoip
|
mkdir "$service_dir"/geoip
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cp subnets/* "$haproxy_dir"/geoip
|
cp subnets/* "$service_dir"/geoip
|
||||||
|
|
||||||
systemctl reload haproxy
|
systemctl reload haproxy
|
|
@ -1,19 +1,15 @@
|
||||||
- hosts: "{{ variable_host }}"
|
- hosts: all
|
||||||
become: yes
|
become: yes
|
||||||
become_method: sudo
|
become_method: sudo
|
||||||
tasks:
|
tasks:
|
||||||
- name: Set SSH port
|
|
||||||
set_fact:
|
|
||||||
ansible_port: "{{SSH_PORT}}"
|
|
||||||
|
|
||||||
- name: Creates directory
|
- name: Creates directory
|
||||||
file:
|
file:
|
||||||
path: "{{haproxy_dir}}/geoip"
|
path: "{{service_dir}}/geoip"
|
||||||
state: directory
|
state: directory
|
||||||
|
|
||||||
- name: Creates directory
|
- name: Creates directory
|
||||||
file:
|
file:
|
||||||
path: "{{haproxy_dir}}/scripts"
|
path: "{{service_dir}}/scripts"
|
||||||
state: directory
|
state: directory
|
||||||
|
|
||||||
- name: Install wget
|
- name: Install wget
|
||||||
|
@ -30,16 +26,16 @@
|
||||||
- name: Copy GeoIP script in place.
|
- name: Copy GeoIP script in place.
|
||||||
template:
|
template:
|
||||||
src: /var/www/haproxy-wi/app/scripts/ansible/roles/geoip.sh.j2
|
src: /var/www/haproxy-wi/app/scripts/ansible/roles/geoip.sh.j2
|
||||||
dest: "{{haproxy_dir}}/scripts/geoip.sh"
|
dest: "{{service_dir}}/scripts/geoip.sh"
|
||||||
mode: 0777
|
mode: 0777
|
||||||
|
|
||||||
- name: Execute the script
|
- name: Execute the script
|
||||||
command: "{{haproxy_dir}}/scripts/geoip.sh"
|
command: "{{service_dir}}/scripts/geoip.sh"
|
||||||
|
|
||||||
- name: Update geoip every Wednesday
|
- name: Update geoip every Wednesday
|
||||||
cron:
|
cron:
|
||||||
name: "Update geoip"
|
name: "Update HAProxy geoip"
|
||||||
minute: "0"
|
minute: "0"
|
||||||
hour: "01"
|
hour: "01"
|
||||||
weekday: "3"
|
weekday: "3"
|
||||||
job: "{{haproxy_dir}}/scripts/geoip.sh"
|
job: "{{service_dir}}/scripts/geoip.sh"
|
|
@ -69,7 +69,7 @@
|
||||||
when: (ansible_facts['os_family'] == "RedHat" or ansible_facts['os_family'] == 'CentOS')
|
when: (ansible_facts['os_family'] == "RedHat" or ansible_facts['os_family'] == 'CentOS')
|
||||||
|
|
||||||
|
|
||||||
- name: Disble SELINUX in config
|
- name: Disable SELINUX in config
|
||||||
template:
|
template:
|
||||||
src: ../../haproxy/templates/selinux.j2
|
src: ../../haproxy/templates/selinux.j2
|
||||||
dest: /etc/selinux/config
|
dest: /etc/selinux/config
|
||||||
|
@ -79,7 +79,7 @@
|
||||||
- '"Enforcing" in sestatus.stdout'
|
- '"Enforcing" in sestatus.stdout'
|
||||||
|
|
||||||
|
|
||||||
- name: Disble SELINUX in env
|
- name: Disable SELINUX in env
|
||||||
shell: setenforce 0 2> /dev/null
|
shell: setenforce 0 2> /dev/null
|
||||||
ignore_errors: yes
|
ignore_errors: yes
|
||||||
debugger: never
|
debugger: never
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
- name: Install NGINX GeoIP
|
- name: Install NGINX GeoIP
|
||||||
hosts: "{{ variable_host }}"
|
hosts: all
|
||||||
become: yes
|
become: yes
|
||||||
become_method: sudo
|
become_method: sudo
|
||||||
gather_facts: yes
|
gather_facts: yes
|
||||||
|
|
|
@ -1,16 +1,12 @@
|
||||||
---
|
---
|
||||||
- name: Set SSH port
|
|
||||||
set_fact:
|
|
||||||
ansible_port: "{{SSH_PORT}}"
|
|
||||||
|
|
||||||
- name: Creates directory
|
- name: Creates directory
|
||||||
file:
|
file:
|
||||||
path: "{{nginx_dir}}/geoip"
|
path: "{{service_dir}}/geoip"
|
||||||
state: directory
|
state: directory
|
||||||
|
|
||||||
- name: Creates directory
|
- name: Creates directory
|
||||||
file:
|
file:
|
||||||
path: "{{nginx_dir}}/scripts"
|
path: "{{service_dir}}/scripts"
|
||||||
state: directory
|
state: directory
|
||||||
|
|
||||||
- name: Install wget
|
- name: Install wget
|
||||||
|
@ -27,17 +23,17 @@
|
||||||
- name: Copy GeoIP script in place.
|
- name: Copy GeoIP script in place.
|
||||||
template:
|
template:
|
||||||
src: geoip.sh.j2
|
src: geoip.sh.j2
|
||||||
dest: "{{nginx_dir}}/scripts/geoip.sh"
|
dest: "{{service_dir}}/scripts/geoip.sh"
|
||||||
mode: 0777
|
mode: 0777
|
||||||
|
|
||||||
- name: Execute the script
|
- name: Execute the script
|
||||||
command: "{{nginx_dir}}/scripts/geoip.sh"
|
command: "{{service_dir}}/scripts/geoip.sh"
|
||||||
|
|
||||||
- name: Update geoip every Wednesday
|
- name: Update geoip every Wednesday
|
||||||
cron:
|
cron:
|
||||||
name: "Update geoip"
|
name: "Update NGINX geoip"
|
||||||
minute: "0"
|
minute: "0"
|
||||||
hour: "01"
|
hour: "01"
|
||||||
weekday: "3"
|
weekday: "3"
|
||||||
job: "{{nginx_dir}}/scripts/geoip.sh"
|
job: "{{service_dir}}/scripts/geoip.sh"
|
||||||
when: UPDATE == "1"
|
when: UPDATE == "1"
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
cd {{nginx_dir}}/scripts
|
cd {{service_dir}}/scripts
|
||||||
git clone https://github.com/sherpya/geolite2legacy.git || true
|
git clone https://github.com/sherpya/geolite2legacy.git || true
|
||||||
cd geolite2legacy
|
cd geolite2legacy
|
||||||
wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key={{maxmind_key}}&suffix=zip" -qO geoip2Country.zip
|
wget "https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key={{maxmind_key}}&suffix=zip" -qO geoip2Country.zip
|
||||||
|
|
||||||
python3 geolite2legacy.py -i geoip2Country.zip -o GeoIP.dat
|
python3 geolite2legacy.py -i geoip2Country.zip -o GeoIP.dat
|
||||||
mv GeoIP.dat {{nginx_dir}}/geoip/
|
mv GeoIP.dat {{service_dir}}/geoip/
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
for ARGUMENT in "$@"
|
|
||||||
do
|
|
||||||
KEY=$(echo $ARGUMENT | cut -f1 -d=)
|
|
||||||
VALUE=$(echo $ARGUMENT | cut -f2 -d=)
|
|
||||||
|
|
||||||
case "$KEY" in
|
|
||||||
PROXY) PROXY=${VALUE} ;;
|
|
||||||
*)
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ! -d "/var/www/haproxy-wi/app/scripts/ansible/roles/cloudalchemy.grafana" ]; then
|
|
||||||
if [ ! -z $PROXY ];then
|
|
||||||
export https_proxy="$PROXY"
|
|
||||||
export http_proxy="$PROXY"
|
|
||||||
fi
|
|
||||||
ansible-galaxy install cloudalchemy.grafana --roles-path /var/www/haproxy-wi/app/scripts/ansible/roles/
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -d "/var/www/haproxy-wi/app/scripts/ansible/roles/cloudalchemy.prometheus" ]; then
|
|
||||||
if [ ! -z $PROXY ];then
|
|
||||||
export https_proxy="$PROXY"
|
|
||||||
export http_proxy="$PROXY"
|
|
||||||
fi
|
|
||||||
ansible-galaxy install cloudalchemy.prometheus --roles-path /var/www/haproxy-wi/app/scripts/ansible/roles/
|
|
||||||
fi
|
|
||||||
|
|
||||||
export ANSIBLE_HOST_KEY_CHECKING=False
|
|
||||||
export ANSIBLE_DISPLAY_SKIPPED_HOSTS=False
|
|
||||||
export ACTION_WARNINGS=False
|
|
||||||
export LOCALHOST_WARNING=False
|
|
||||||
export COMMAND_WARNINGS=False
|
|
||||||
|
|
||||||
PWD=/var/www/haproxy-wi/app/scripts/ansible/
|
|
||||||
|
|
||||||
ansible-playbook $PWD/roles/grafana.yml -e "PROXY=$PROXY"
|
|
||||||
|
|
||||||
if [ $? -gt 0 ]
|
|
||||||
then
|
|
||||||
echo "error: Can't install Grafana and Prometheus services <br /><br />"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
if ! sudo grep -Fxq " - job_name: proxy" /etc/prometheus/prometheus.yml; then
|
|
||||||
sudo echo " - job_name: proxy" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
|
||||||
sudo echo " metrics_path: /metrics" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
|
||||||
sudo echo " static_configs:" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
|
||||||
sudo echo " - targets:" | sudo tee -a /etc/prometheus/prometheus.yml > /dev/null
|
|
||||||
fi
|
|
|
@ -1,48 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
for ARGUMENT in "$@"
|
|
||||||
do
|
|
||||||
KEY=$(echo "$ARGUMENT" | cut -f1 -d=)
|
|
||||||
VALUE=$(echo "$ARGUMENT" | cut -f2 -d=)
|
|
||||||
|
|
||||||
case "$KEY" in
|
|
||||||
PROXY) PROXY=${VALUE} ;;
|
|
||||||
UPDATE) UPDATE=${VALUE} ;;
|
|
||||||
maxmind_key) maxmind_key=${VALUE} ;;
|
|
||||||
service_dir) service_dir=${VALUE} ;;
|
|
||||||
HOST) HOST=${VALUE} ;;
|
|
||||||
USER) USER=${VALUE} ;;
|
|
||||||
PASS) PASS=${VALUE} ;;
|
|
||||||
KEY) KEY=${VALUE} ;;
|
|
||||||
SSH_PORT) SSH_PORT=${VALUE} ;;
|
|
||||||
*)
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
export ANSIBLE_HOST_KEY_CHECKING=False
|
|
||||||
export ANSIBLE_DISPLAY_SKIPPED_HOSTS=False
|
|
||||||
export ACTION_WARNINGS=False
|
|
||||||
export LOCALHOST_WARNING=False
|
|
||||||
export COMMAND_WARNINGS=False
|
|
||||||
|
|
||||||
PWD=/var/www/haproxy-wi/app/scripts/ansible/
|
|
||||||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
|
||||||
|
|
||||||
if [[ $maxmind_key == "" ]]; then
|
|
||||||
echo "error: the Maxmind key cannot be empty"
|
|
||||||
rm -f $PWD/$HOST
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $KEY == "" ]]; then
|
|
||||||
ansible-playbook $PWD/roles/geoip.yml -e "ansible_user=$USER ansible_ssh_pass='$PASS' variable_host=$HOST PROXY=$PROXY UPDATE=$UPDATE haproxy_dir=$service_dir maxmind_key=$maxmind_key SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
|
||||||
else
|
|
||||||
ansible-playbook $PWD/roles/geoip.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY UPDATE=$UPDATE haproxy_dir=$service_dir maxmind_key=$maxmind_key SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $? -gt 0 ]
|
|
||||||
then
|
|
||||||
echo "error: Cannot download GeoLite2 database"
|
|
||||||
rm -f $PWD/$HOST
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
rm -f $PWD/$HOST
|
|
|
@ -1,48 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
for ARGUMENT in "$@"
|
|
||||||
do
|
|
||||||
KEY=$(echo "$ARGUMENT" | cut -f1 -d=)
|
|
||||||
VALUE=$(echo "$ARGUMENT" | cut -f2 -d=)
|
|
||||||
|
|
||||||
case "$KEY" in
|
|
||||||
PROXY) PROXY=${VALUE} ;;
|
|
||||||
UPDATE) UPDATE=${VALUE} ;;
|
|
||||||
maxmind_key) maxmind_key=${VALUE} ;;
|
|
||||||
service_dir) service_dir=${VALUE} ;;
|
|
||||||
HOST) HOST=${VALUE} ;;
|
|
||||||
USER) USER=${VALUE} ;;
|
|
||||||
PASS) PASS=${VALUE} ;;
|
|
||||||
KEY) KEY=${VALUE} ;;
|
|
||||||
SSH_PORT) SSH_PORT=${VALUE} ;;
|
|
||||||
*)
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
export ANSIBLE_HOST_KEY_CHECKING=False
|
|
||||||
export ANSIBLE_DISPLAY_SKIPPED_HOSTS=False
|
|
||||||
export ACTION_WARNINGS=False
|
|
||||||
export LOCALHOST_WARNING=False
|
|
||||||
export COMMAND_WARNINGS=False
|
|
||||||
|
|
||||||
PWD=/var/www/haproxy-wi/app/scripts/ansible/
|
|
||||||
echo "$HOST ansible_port=$SSH_PORT" > $PWD/$HOST
|
|
||||||
|
|
||||||
if [[ $maxmind_key == "" ]]; then
|
|
||||||
echo "error: the Maxmind key cannot be empty"
|
|
||||||
rm -f $PWD/$HOST
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $KEY == "" ]]; then
|
|
||||||
ansible-playbook $PWD/roles/nginx_geoip.yml -e "ansible_user=$USER ansible_ssh_pass='$PASS' variable_host=$HOST PROXY=$PROXY UPDATE=$UPDATE nginx_dir=$service_dir maxmind_key=$maxmind_key SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
|
||||||
else
|
|
||||||
ansible-playbook $PWD/roles/nginx_geoip.yml --key-file $KEY -e "ansible_user=$USER variable_host=$HOST PROXY=$PROXY UPDATE=$UPDATE nginx_dir=$service_dir maxmind_key=$maxmind_key SSH_PORT=$SSH_PORT" -i $PWD/$HOST
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $? -gt 0 ]
|
|
||||||
then
|
|
||||||
echo "error: Cannot download GeoLite2 database"
|
|
||||||
rm -f $PWD/$HOST
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
rm -f $PWD/$HOST
|
|
|
@ -1,117 +1,32 @@
|
||||||
$( function() {
|
$( function() {
|
||||||
$('#install').click(function () {
|
$('#install').click(function () {
|
||||||
installService('haproxy')
|
installService('haproxy')
|
||||||
});
|
|
||||||
$('#nginx_install').click(function () {
|
|
||||||
installService('nginx');
|
|
||||||
});
|
|
||||||
$('#apache_install').click(function () {
|
|
||||||
installService('apache');
|
|
||||||
});
|
|
||||||
$('#grafana_install').click(function () {
|
|
||||||
$("#ajaxmon").html('');
|
|
||||||
$("#ajaxmon").html(wait_mess);
|
|
||||||
$.ajax({
|
|
||||||
url: "/app/install/grafana",
|
|
||||||
// data: {
|
|
||||||
// token: $('#token').val()
|
|
||||||
// },
|
|
||||||
// type: "POST",
|
|
||||||
success: function (data) {
|
|
||||||
data = data.replace(/\s+/g, ' ');
|
|
||||||
$("#ajaxmon").html('');
|
|
||||||
if (data.indexOf('FAILED') != '-1' || data.indexOf('UNREACHABLE') != '-1' || data.indexOf('ERROR') != '-1') {
|
|
||||||
toastr.clear();
|
|
||||||
var p_err = show_pretty_ansible_error(data);
|
|
||||||
toastr.error(p_err);
|
|
||||||
} else if (data.indexOf('success') != '-1') {
|
|
||||||
toastr.clear();
|
|
||||||
toastr.success(data);
|
|
||||||
} else if (data.indexOf('Info') != '-1') {
|
|
||||||
toastr.clear();
|
|
||||||
toastr.info(data);
|
|
||||||
} else {
|
|
||||||
toastr.clear();
|
|
||||||
toastr.info(data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$('#haproxy_exp_install').click(function () {
|
|
||||||
installExporter('haproxy');
|
|
||||||
});
|
|
||||||
$('#nginx_exp_install').click(function () {
|
|
||||||
installExporter('nginx');
|
|
||||||
});
|
|
||||||
$('#apache_exp_install').click(function () {
|
|
||||||
installExporter('apache');
|
|
||||||
});
|
|
||||||
$('#keepalived_exp_install').click(function () {
|
|
||||||
installExporter('keepalived');
|
|
||||||
});
|
|
||||||
$('#node_exp_install').click(function () {
|
|
||||||
installExporter('node');
|
|
||||||
});
|
|
||||||
$("#haproxyaddserv").on('selectmenuchange', function () {
|
|
||||||
showServiceVersion('haproxy');
|
|
||||||
});
|
|
||||||
$("#nginxaddserv").on('selectmenuchange', function () {
|
|
||||||
showServiceVersion('nginx');
|
|
||||||
});
|
|
||||||
$("#apacheaddserv").on('selectmenuchange', function () {
|
|
||||||
showServiceVersion('apache');
|
|
||||||
});
|
|
||||||
$("#haproxy_exp_addserv").on('selectmenuchange', function () {
|
|
||||||
showExporterVersion('haproxy');
|
|
||||||
});
|
|
||||||
$("#nginx_exp_addserv").on('selectmenuchange', function () {
|
|
||||||
showExporterVersion('nginx');
|
|
||||||
});
|
|
||||||
$("#apache_exp_addserv").on('selectmenuchange', function () {
|
|
||||||
showExporterVersion('apache');
|
|
||||||
});
|
|
||||||
$("#keepalived_exp_addserv").on('selectmenuchange', function () {
|
|
||||||
showExporterVersion('keepalived');
|
|
||||||
});
|
|
||||||
$("#node_exp_addserv").on('selectmenuchange', function () {
|
|
||||||
showExporterVersion('node');
|
|
||||||
});
|
|
||||||
$( "#geoipserv" ).on('selectmenuchange',function() {
|
|
||||||
if($('#geoip_service option:selected').val() != '------') {
|
|
||||||
checkGeoipInstallation();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
$( "#geoip_service" ).on('selectmenuchange',function() {
|
$('#nginx_install').click(function () {
|
||||||
if($('#geoipserv option:selected').val() != '------') {
|
installService('nginx');
|
||||||
checkGeoipInstallation();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
$( "#geoip_install" ).click(function() {
|
$('#apache_install').click(function () {
|
||||||
var updating_geoip = 0;
|
installService('apache');
|
||||||
if ($('#updating_geoip').is(':checked')) {
|
});
|
||||||
updating_geoip = '1';
|
$('#grafana_install').click(function () {
|
||||||
}
|
$("#ajaxmon").html('');
|
||||||
$("#ajax-geoip").html(wait_mess);
|
$("#ajaxmon").html(wait_mess);
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/app/install/geoip",
|
url: "/app/install/grafana",
|
||||||
data: {
|
// data: {
|
||||||
server_ip: $('#geoipserv option:selected').val(),
|
// token: $('#token').val()
|
||||||
service: $('#geoip_service option:selected').val(),
|
// },
|
||||||
update: updating_geoip,
|
// type: "POST",
|
||||||
token: $('#token').val()
|
|
||||||
},
|
|
||||||
type: "POST",
|
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
data = data.replace(/^\s+|\s+$/g, '');
|
data = data.replace(/\s+/g, ' ');
|
||||||
$("#ajax-geoip").html('')
|
$("#ajaxmon").html('');
|
||||||
if (data.indexOf('error:') != '-1' || data.indexOf('FAILED') != '-1') {
|
if (data.indexOf('FAILED') != '-1' || data.indexOf('UNREACHABLE') != '-1' || data.indexOf('ERROR') != '-1') {
|
||||||
toastr.clear();
|
toastr.clear();
|
||||||
var p_err = show_pretty_ansible_error(data);
|
var p_err = show_pretty_ansible_error(data);
|
||||||
toastr.error(p_err);
|
toastr.error(p_err);
|
||||||
} else if (data.indexOf('success:') != '-1') {
|
} else if (data.indexOf('success') != '-1') {
|
||||||
toastr.clear();
|
toastr.clear();
|
||||||
toastr.success(data);
|
toastr.success(data);
|
||||||
$("#geoip_service").trigger("selectmenuchange");
|
|
||||||
} else if (data.indexOf('Info') != '-1') {
|
} else if (data.indexOf('Info') != '-1') {
|
||||||
toastr.clear();
|
toastr.clear();
|
||||||
toastr.info(data);
|
toastr.info(data);
|
||||||
|
@ -122,6 +37,84 @@ $( function() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
$('#haproxy_exp_install').click(function () {
|
||||||
|
installExporter('haproxy');
|
||||||
|
});
|
||||||
|
$('#nginx_exp_install').click(function () {
|
||||||
|
installExporter('nginx');
|
||||||
|
});
|
||||||
|
$('#apache_exp_install').click(function () {
|
||||||
|
installExporter('apache');
|
||||||
|
});
|
||||||
|
$('#keepalived_exp_install').click(function () {
|
||||||
|
installExporter('keepalived');
|
||||||
|
});
|
||||||
|
$('#node_exp_install').click(function () {
|
||||||
|
installExporter('node');
|
||||||
|
});
|
||||||
|
$("#haproxyaddserv").on('selectmenuchange', function () {
|
||||||
|
showServiceVersion('haproxy');
|
||||||
|
});
|
||||||
|
$("#nginxaddserv").on('selectmenuchange', function () {
|
||||||
|
showServiceVersion('nginx');
|
||||||
|
});
|
||||||
|
$("#apacheaddserv").on('selectmenuchange', function () {
|
||||||
|
showServiceVersion('apache');
|
||||||
|
});
|
||||||
|
$("#haproxy_exp_addserv").on('selectmenuchange', function () {
|
||||||
|
showExporterVersion('haproxy');
|
||||||
|
});
|
||||||
|
$("#nginx_exp_addserv").on('selectmenuchange', function () {
|
||||||
|
showExporterVersion('nginx');
|
||||||
|
});
|
||||||
|
$("#apache_exp_addserv").on('selectmenuchange', function () {
|
||||||
|
showExporterVersion('apache');
|
||||||
|
});
|
||||||
|
$("#keepalived_exp_addserv").on('selectmenuchange', function () {
|
||||||
|
showExporterVersion('keepalived');
|
||||||
|
});
|
||||||
|
$("#node_exp_addserv").on('selectmenuchange', function () {
|
||||||
|
showExporterVersion('node');
|
||||||
|
});
|
||||||
|
$("#geoipserv").on('selectmenuchange', function () {
|
||||||
|
if ($('#geoip_service option:selected').val() != '------') {
|
||||||
|
checkGeoipInstallation();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("#geoip_service").on('selectmenuchange', function () {
|
||||||
|
if ($('#geoipserv option:selected').val() != '------') {
|
||||||
|
checkGeoipInstallation();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("#geoip_install").click(function () {
|
||||||
|
var updating_geoip = 0;
|
||||||
|
if ($('#updating_geoip').is(':checked')) {
|
||||||
|
updating_geoip = '1';
|
||||||
|
}
|
||||||
|
$("#ajax-geoip").html(wait_mess);
|
||||||
|
let service = $('#geoip_service option:selected').val();
|
||||||
|
$.ajax({
|
||||||
|
url: "/app/install/geoip",
|
||||||
|
data: {
|
||||||
|
server_ip: $('#geoipserv option:selected').val(),
|
||||||
|
service: service,
|
||||||
|
update: updating_geoip,
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function (data) {
|
||||||
|
$("#ajax-geoip").html('');
|
||||||
|
try {
|
||||||
|
if (data.indexOf('error:') != '-1') {
|
||||||
|
toastr.error(data);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
parseAnsibleJsonOutput(data, service + ' GeoIP', '#geoip_service');
|
||||||
|
$("#geoip_service").trigger("selectmenuchange");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
function checkGeoipInstallation() {
|
function checkGeoipInstallation() {
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
|
|
Loading…
Reference in New Issue