Skip to content

Commit

Permalink
Merge pull request #1 from VultureProject/dev
Browse files Browse the repository at this point in the history
Release 1.76
  • Loading branch information
KGuillemot authored Jun 11, 2020
2 parents 3ce8764 + 2223597 commit a0f6e0e
Show file tree
Hide file tree
Showing 1,424 changed files with 210,959 additions and 2 deletions.
149 changes: 149 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
# Created by https://www.gitignore.io/api/emacs,jetbrains,sublimetext,vim

### Emacs ###
# -*- mode: gitignore; -*-
*~
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*

# Org-mode
.org-id-locations
*_archive

# flymake-mode
*_flymake.*

# eshell files
/eshell/history
/eshell/lastdir

# elpa packages
/elpa/

# reftex files
*.rel

# AUCTeX auto folder
/auto/

# cask packages
.cask/
dist/

# Flycheck
flycheck_*.el

# server auth directory
/server/

# projectiles files
.projectile

### JetBrains ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff:
.idea*
.idea/workspace.xml
.idea/tasks.xml
.idea/dictionaries
.idea/vcs.xml
.idea/jsLibraryMappings.xml

# Sensitive or high-churn files:
.idea/dataSources.ids
.idea/dataSources.xml
.idea/dataSources.local.xml
.idea/sqlDataSources.xml
.idea/dynamic.xml
.idea/uiDesigner.xml

# Gradle:
.idea/gradle.xml
.idea/libraries

# Mongo Explorer plugin:
.idea/mongoSettings.xml

## File-based project format:
*.iws

## Plugin-specific files:

# IntelliJ
/out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

### JetBrains Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr


### SublimeText ###
# cache files for sublime text
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache

# workspace files are user-specific
*.sublime-workspace

# project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using SublimeText
# *.sublime-project

# sftp configuration file
sftp-config.json

# Package control specific files
Package Control.last-run
Package Control.ca-list
Package Control.ca-bundle
Package Control.system-ca-bundle
Package Control.cache/
Package Control.ca-certs/
bh_unicode_properties.cache

# Sublime-github package stores a github token in this file
# https://packagecontrol.io/packages/sublime-github
GitHub.sublime-settings


### Vim ###
# swap
[._]*.s[a-w][a-z]
[._]s[a-w][a-z]
# session
Session.vim
# temporary
.netrwhist
*~
# auto-generated tag files
tags

### Pyc Files ###
*.pyc

.couscous/
doc/.couscous/
25 changes: 23 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,23 @@
# vulture3-gui
Vulture 3 Management GUI (Django project)

# Vulture3 GUI

Welcome on the [Vulture 3](https://www.vultureproject.org) project !

![](/doc/img/screenshot.png)

## Overview

Vulture3 is an Open Source HTTP `reverse-proxy`. It ensures the security of web applications facing the internet. <br/>
Vulture3 is ready for HTTP/2 and IPv6.

Basic features are:
- Network firewall based on FreeBSD `pf`
- Network TCP balancing based on `ha-proxy`
- HTTP Proxy balancer based on `Apache`
- User Authentication against LDAP/AD, Kerberos, SQL, Radius, ...
- Web application firewall based on `ModSecurity` and `custom algorithms`
- TLS endpoint, Content rewriting, and many other cool things...

Vulture3 is build on top of FreeBSD, Apache, Redis and MongoDB. <br/>
It is horizontaly scalable by-design (Vulture Cluster) and is manageable though a unique Web GUI.

Empty file added api/__init__.py
Empty file.
3 changes: 3 additions & 0 deletions api/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#from django.contrib import admin

# Register your models here.
1 change: 1 addition & 0 deletions api/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Create your models here.
1 change: 1 addition & 0 deletions api/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Create your tests here.
97 changes: 97 additions & 0 deletions api/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
from django.conf.urls import url

from api.views.cluster import node_configuration, node_initialization, node_status, node_upgrade, node_version, \
update_replicalist, refresh_rc_conf, refresh_krb5_conf, refresh_portal_template_conf
from api.views.logs import check_status, get as get_logs
from api.views.network import up, down, running, start as net_start, stop as net_stop, reloadListener, need_restart, \
status as net_status, statusfull as net_statusfull
from api.views.services import start, restart, stop, status, redis_master
from api.views.supervision import process_info, system_time_info, realtime
from api.views.application_rest_manager import get_all, generate, update, get_by_name, get_by_regex, delete, stats,\
get_all_apps, get_all_models
from django.views.decorators.csrf import csrf_exempt

from api.views.certs import write_ca, remove_ca, remove_cert
from api.views.sso_profiles import SSOProfilesAPI
from api.views.repositories import RepositoriesAPI

urlpatterns = [
# Cluster routes
url(r'^api/cluster/node/new/$', node_configuration, name="Cluster Management"),
url(r'^api/cluster/node/init/$', node_initialization, name="Cluster Management"),
url(r'^api/cluster/node/status/$', node_status, name="Cluster Management"),
url(r'^api/cluster/node/version/$', node_version, name="Cluster Management"),
url(r'^api/cluster/replica/update/$', update_replicalist, name="Cluster Management"),
url(r'^api/cluster/management/conf/$', refresh_rc_conf, name="Cluster Management"),
url(r'^api/cluster/management/conf/krb5/$', refresh_krb5_conf, name="Cluster Management"),
url(r'^api/cluster/management/conf/portal_template/(?P<template_id>[A-Fa-f0-9]{24})/?$',
refresh_portal_template_conf, name="Cluster Management"),
url(r'^api/cluster/update/(?P<update_type>(?:engine)|(?:gui)|(?:libs))/?$', node_upgrade,
name="Cluster Management"),

# Service routes,
url(r'^api/services/(?P<service_name>[a-z0-9]{2,6})/start/$', start, name="Services Management"),
url(r'^api/services/(?P<service_name>[a-z0-9]{2,6})/restart/$', restart, name="Services Management"),
url(r'^api/services/(?P<service_name>[a-z0-9]{2,6})/stop/$', stop, name="Services Management"),
url(r'^api/services/(?P<service_name>[a-z0-9]{2,6})/status/$', status, name="Services Management"),
url(r'^api/services/redis/master/$', redis_master, name="Services Management"),

# Network routes
url(r'^api/network/listener/(?P<inet_id>[A-Fa-f0-9]{24})/up/$', up, name="Network Management"),
url(r'^api/network/listener/(?P<inet_id>[A-Fa-f0-9]{24})/down/$', down, name="Network Management"),
url(r'^api/network/listener/running/(?P<listener_id>[A-Fa-f0-9]{24})/(?P<port>[0-9]+)$', running,
name="Network Management"),
url(r'^api/network/listener/start/(?P<listenaddress_id>[A-Fa-f0-9]{24})$', net_start, name="Network Management"),
url(r'^api/network/listener/stop/(?P<listenaddress_id>[A-Fa-f0-9]{24})$', net_stop, name="Network Management"),
url(r'^api/network/listener/reloadlistener/(?P<listenaddress_id>[A-Fa-f0-9]{24})$', reloadListener,
name="Network Management"),
url(r'^api/network/listener/needrestart/(?P<listenaddress_id>[A-Fa-f0-9]{24})$', need_restart,
name="Network Management"),
url(r'^api/network/listener/status/(?P<listenaddress_id>[A-Fa-f0-9]{24})$', net_status, name="Network Management"),
url(r'^api/network/listener/statusfull/(?P<listenaddress_id>[A-Fa-f0-9]{24})$', net_statusfull,
name="Network Management"),

# Supervision routes
url(r'^api/supervision/process/$', process_info, name="Supervision"),
url(r'^api/supervision/system_time/$', system_time_info, name="Supervision"),
url(r'^api/supervision/realtime/$', realtime, name="Supervision"),

# Log management routes
url(r'^api/logs/management/$', check_status, name="Log management"),
url(r'^api/logs/get/$', get_logs, name="Log management"),

# Certificates routes
url(r'api/certs/write_ca/(?P<cert_id>[A-Fa-f0-9]{24})$', write_ca, name="Certificates Management"),
url(r'api/certs/remove_ca/(?P<cert_id>[A-Fa-f0-9]{24})$', remove_ca, name="Certificates Management"),
url(r'api/certs/remove/(?P<cert_id>[A-Fa-f0-9]{24})$', remove_cert, name="Certificates Management"),

# REST API - Application handling - <ROOT>/api/rest/app/<OPERATION>/<OPTIONS>/ #####################################
# REST API - Application handling - Listing apps
url(r'^api/rest/app/list/all/$', get_all, name='Application listing'),
url(r'^api/rest/app/list/all/(?P<fields>[|\w]*)/$', get_all, name='Application listing'),
url(r'^api/rest/app/list/application/$', get_all_apps, name='Application listing'),
url(r'^api/rest/app/list/application/(?P<fields>[|\w]*)/$', get_all_apps, name='Application listing'),
url(r'^api/rest/app/list/model/$', get_all_models, name='Application listing'),
url(r'^api/rest/app/list/model/(?P<fields>[|\w]*)/$', get_all_models, name='Application listing'),

# REST API - Application handling - Listing an app
url(r'^api/rest/app/list/name/(?P<app_name>[\w #]*)/$', get_by_name, name='Application getter by name'),
url(r'^api/rest/app/list/regex/(?P<regex>[\w #]*)/$', get_by_regex, name='Application getter by REGEX'),
url(r'^api/rest/app/list/name/(?P<app_name>[\w #]*)/(?P<fields>[|\w]*)/$', get_by_name,
name='Application getter by name'),
url(r'^api/rest/app/list/regex/(?P<regex>[\w #]*)/(?P<fields>[|\w]*)/$', get_by_regex,
name='Application getter by REGEX'),

# REST API - Application handling - Generate / Update an app
url(r'^api/rest/app/generate/$', generate, name='Application generation'),
url(r'^api/rest/app/generate/(?P<is_reload>reload)/$', generate, name='Application generation'),
url(r'^api/rest/app/update/(?P<app_name>[\w #]*)/$', update, name='Application updating'),
url(r'^api/rest/app/delete/(?P<app_name>[\w #]*)/$', delete, name='Application deletion'),

# REST API - Application handling - Stats & various
url(r'^api/rest/app/stats/$', stats, name='Number of applications'),

# REST API - SSO Profiles management
url(r'^api/rest/sso_profiles/(?P<app_id>[A-Fa-f0-9]{24})(/?|/(?P<login>.+))$', csrf_exempt(SSOProfilesAPI.as_view()), name='SSO Profiles'),
url(r'^api/rest/users/(?P<repo_id>[A-Fa-f0-9]{24})(/?|/(?P<login>.+))$', csrf_exempt(RepositoriesAPI.as_view()), name='SSO Profiles'),
]
Empty file added api/views/__init__.py
Empty file.
Loading

0 comments on commit a0f6e0e

Please sign in to comment.