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():
|
||||
try:
|
||||
Version.update(version='7.2.5.0').execute()
|
||||
Version.update(version='7.2.6.0').execute()
|
||||
except Exception:
|
||||
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):
|
||||
query = (
|
||||
UserGroups.select(UserGroups.user_role_id).join(UUID, on=(UserGroups.user_id == UUID.user_id)
|
||||
try:
|
||||
query_res = UserGroups.select(UserGroups.user_role_id).join(
|
||||
UUID, on=(UserGroups.user_id == UUID.user_id)
|
||||
).where(
|
||||
(UUID.uuid == uuid) &
|
||||
(UserGroups.user_group_id == group_id)
|
||||
)
|
||||
)
|
||||
|
||||
try:
|
||||
query_res = query.execute()
|
||||
).execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
else:
|
||||
|
@ -262,6 +259,20 @@ def get_user_role_by_uuid(uuid, group_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):
|
||||
session_ttl = get_setting('session_ttl')
|
||||
user_id = get_user_id_by_username(login)
|
||||
|
|
|
@ -209,10 +209,18 @@ def get_users_params(**kwargs):
|
|||
raise Exception('error: Cannot get user UUID')
|
||||
|
||||
try:
|
||||
group_id = int(request.cookies.get('group'))
|
||||
group_id = user_sql.get_user_current_group_by_uuid(user_uuid)
|
||||
except Exception as 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:
|
||||
role = user_sql.get_user_role_by_uuid(user_uuid, group_id)
|
||||
except Exception:
|
||||
|
|
|
@ -60,9 +60,9 @@ def check_new_version(service):
|
|||
proxy_dict = common.return_proxy_dict()
|
||||
|
||||
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':
|
||||
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')
|
||||
except requests.exceptions.RequestException as e:
|
||||
|
@ -82,7 +82,7 @@ def update_user_status() -> None:
|
|||
adapter = HTTPAdapter(max_retries=retry_strategy)
|
||||
roxy_wi_get_plan = requests.Session()
|
||||
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:
|
||||
status = roxy_wi_get_plan.content.decode(encoding='UTF-8')
|
||||
status = status.split(' ')
|
||||
|
|
|
@ -2,7 +2,6 @@ import os
|
|||
import json
|
||||
from packaging import version
|
||||
|
||||
from flask import render_template
|
||||
import ansible
|
||||
import ansible_runner
|
||||
|
||||
|
@ -35,81 +34,28 @@ def show_installation_output(error: str, output: list, service: str, rc=0):
|
|||
return True
|
||||
|
||||
|
||||
def show_success_installation(service):
|
||||
lang = roxywi_common.get_user_lang_for_flask()
|
||||
return render_template('include/show_success_installation.html', service=service, lang=lang)
|
||||
def generate_geoip_inv(server_ip: str, installed_service: str, geoip_update: int) -> object:
|
||||
inv = {"server": {"hosts": {}}}
|
||||
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):
|
||||
proxy = sql.get_setting('proxy')
|
||||
maxmind_key = sql.get_setting('maxmind_key')
|
||||
proxy_serv = ''
|
||||
ssh_settings = return_ssh_keys_path(serv)
|
||||
full_path = '/var/www/haproxy-wi/app'
|
||||
def generate_grafana_inv() -> object:
|
||||
inv = {"server": {"hosts": {}}}
|
||||
server_ips = []
|
||||
inv['server']['hosts']['localhost'] = {}
|
||||
server_ips.append('localhost')
|
||||
|
||||
if service in ('haproxy', 'nginx'):
|
||||
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>'
|
||||
return inv, server_ips
|
||||
|
||||
|
||||
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:
|
||||
inv = {"server": {"hosts": {}}}
|
||||
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] = {
|
||||
'SERVICE_PATH': service_dir
|
||||
'SERVICE_PATH': common.return_nice_path(sql.get_setting(f'{installed_service}_dir'))
|
||||
}
|
||||
server_ips.append(server_ip)
|
||||
|
||||
|
@ -404,7 +346,7 @@ def install_service(service: str, json_data: str) -> object:
|
|||
|
||||
def _install_ansible_collections():
|
||||
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>'
|
||||
for collection in collections:
|
||||
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')
|
||||
def install_grafana():
|
||||
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:
|
||||
return f'{e}'
|
||||
|
||||
|
@ -121,9 +122,10 @@ def install_geoip():
|
|||
service = request.form.get('service')
|
||||
|
||||
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:
|
||||
return str(e)
|
||||
return f'{e}'
|
||||
|
||||
|
||||
@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_ip="GeoLite2-Country-CSV_*/GeoLite2-Country-Blocks-IPv4.csv"
|
||||
haproxy_dir="{{haproxy_dir}}"
|
||||
service_dir="{{service_dir}}"
|
||||
MAXMIND_LICENSE="{{maxmind_key}}"
|
||||
PROXY="{{PROXY}}"
|
||||
|
||||
|
@ -45,10 +45,10 @@ while read line; do
|
|||
|
||||
done < $country_location
|
||||
|
||||
if [[ ! -d "$haproxy_dir"/geoip ]]; then
|
||||
mkdir "$haproxy_dir"/geoip
|
||||
if [[ ! -d "$service_dir"/geoip ]]; then
|
||||
mkdir "$service_dir"/geoip
|
||||
fi
|
||||
|
||||
cp subnets/* "$haproxy_dir"/geoip
|
||||
cp subnets/* "$service_dir"/geoip
|
||||
|
||||
systemctl reload haproxy
|
|
@ -1,19 +1,15 @@
|
|||
- hosts: "{{ variable_host }}"
|
||||
- hosts: all
|
||||
become: yes
|
||||
become_method: sudo
|
||||
tasks:
|
||||
- name: Set SSH port
|
||||
set_fact:
|
||||
ansible_port: "{{SSH_PORT}}"
|
||||
|
||||
- name: Creates directory
|
||||
file:
|
||||
path: "{{haproxy_dir}}/geoip"
|
||||
path: "{{service_dir}}/geoip"
|
||||
state: directory
|
||||
|
||||
- name: Creates directory
|
||||
file:
|
||||
path: "{{haproxy_dir}}/scripts"
|
||||
path: "{{service_dir}}/scripts"
|
||||
state: directory
|
||||
|
||||
- name: Install wget
|
||||
|
@ -30,16 +26,16 @@
|
|||
- name: Copy GeoIP script in place.
|
||||
template:
|
||||
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
|
||||
|
||||
- name: Execute the script
|
||||
command: "{{haproxy_dir}}/scripts/geoip.sh"
|
||||
command: "{{service_dir}}/scripts/geoip.sh"
|
||||
|
||||
- name: Update geoip every Wednesday
|
||||
cron:
|
||||
name: "Update geoip"
|
||||
name: "Update HAProxy geoip"
|
||||
minute: "0"
|
||||
hour: "01"
|
||||
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')
|
||||
|
||||
|
||||
- name: Disble SELINUX in config
|
||||
- name: Disable SELINUX in config
|
||||
template:
|
||||
src: ../../haproxy/templates/selinux.j2
|
||||
dest: /etc/selinux/config
|
||||
|
@ -79,7 +79,7 @@
|
|||
- '"Enforcing" in sestatus.stdout'
|
||||
|
||||
|
||||
- name: Disble SELINUX in env
|
||||
- name: Disable SELINUX in env
|
||||
shell: setenforce 0 2> /dev/null
|
||||
ignore_errors: yes
|
||||
debugger: never
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
- name: Install NGINX GeoIP
|
||||
hosts: "{{ variable_host }}"
|
||||
hosts: all
|
||||
become: yes
|
||||
become_method: sudo
|
||||
gather_facts: yes
|
||||
|
|
|
@ -1,16 +1,12 @@
|
|||
---
|
||||
- name: Set SSH port
|
||||
set_fact:
|
||||
ansible_port: "{{SSH_PORT}}"
|
||||
|
||||
- name: Creates directory
|
||||
file:
|
||||
path: "{{nginx_dir}}/geoip"
|
||||
path: "{{service_dir}}/geoip"
|
||||
state: directory
|
||||
|
||||
- name: Creates directory
|
||||
file:
|
||||
path: "{{nginx_dir}}/scripts"
|
||||
path: "{{service_dir}}/scripts"
|
||||
state: directory
|
||||
|
||||
- name: Install wget
|
||||
|
@ -27,17 +23,17 @@
|
|||
- name: Copy GeoIP script in place.
|
||||
template:
|
||||
src: geoip.sh.j2
|
||||
dest: "{{nginx_dir}}/scripts/geoip.sh"
|
||||
dest: "{{service_dir}}/scripts/geoip.sh"
|
||||
mode: 0777
|
||||
|
||||
- name: Execute the script
|
||||
command: "{{nginx_dir}}/scripts/geoip.sh"
|
||||
command: "{{service_dir}}/scripts/geoip.sh"
|
||||
|
||||
- name: Update geoip every Wednesday
|
||||
cron:
|
||||
name: "Update geoip"
|
||||
name: "Update NGINX geoip"
|
||||
minute: "0"
|
||||
hour: "01"
|
||||
weekday: "3"
|
||||
job: "{{nginx_dir}}/scripts/geoip.sh"
|
||||
job: "{{service_dir}}/scripts/geoip.sh"
|
||||
when: UPDATE == "1"
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
cd {{nginx_dir}}/scripts
|
||||
cd {{service_dir}}/scripts
|
||||
git clone https://github.com/sherpya/geolite2legacy.git || true
|
||||
cd geolite2legacy
|
||||
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
|
||||
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() {
|
||||
$('#install').click(function () {
|
||||
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();
|
||||
}
|
||||
$('#install').click(function () {
|
||||
installService('haproxy')
|
||||
});
|
||||
$( "#geoip_service" ).on('selectmenuchange',function() {
|
||||
if($('#geoipserv option:selected').val() != '------') {
|
||||
checkGeoipInstallation();
|
||||
}
|
||||
$('#nginx_install').click(function () {
|
||||
installService('nginx');
|
||||
});
|
||||
$( "#geoip_install" ).click(function() {
|
||||
var updating_geoip = 0;
|
||||
if ($('#updating_geoip').is(':checked')) {
|
||||
updating_geoip = '1';
|
||||
}
|
||||
$("#ajax-geoip").html(wait_mess);
|
||||
$('#apache_install').click(function () {
|
||||
installService('apache');
|
||||
});
|
||||
$('#grafana_install').click(function () {
|
||||
$("#ajaxmon").html('');
|
||||
$("#ajaxmon").html(wait_mess);
|
||||
$.ajax({
|
||||
url: "/app/install/geoip",
|
||||
data: {
|
||||
server_ip: $('#geoipserv option:selected').val(),
|
||||
service: $('#geoip_service option:selected').val(),
|
||||
update: updating_geoip,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
url: "/app/install/grafana",
|
||||
// data: {
|
||||
// token: $('#token').val()
|
||||
// },
|
||||
// type: "POST",
|
||||
success: function (data) {
|
||||
data = data.replace(/^\s+|\s+$/g, '');
|
||||
$("#ajax-geoip").html('')
|
||||
if (data.indexOf('error:') != '-1' || data.indexOf('FAILED') != '-1') {
|
||||
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') {
|
||||
} else if (data.indexOf('success') != '-1') {
|
||||
toastr.clear();
|
||||
toastr.success(data);
|
||||
$("#geoip_service").trigger("selectmenuchange");
|
||||
} else if (data.indexOf('Info') != '-1') {
|
||||
toastr.clear();
|
||||
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() {
|
||||
$.ajax( {
|
||||
|
|
Loading…
Reference in New Issue