diff --git a/app/portal/__init__.py b/app/portal/__init__.py index 2e025b2..726ad8f 100644 --- a/app/portal/__init__.py +++ b/app/portal/__init__.py @@ -106,6 +106,7 @@ def new_origin(group_id=None): origin.group_id = form.group.data origin.domain_name = form.domain_name.data origin.description = form.description.data + origin.auto_rotation = form.auto_rotate.data origin.created = datetime.utcnow() origin.updated = datetime.utcnow() try: @@ -137,6 +138,7 @@ def edit_origin(origin_id): if form.validate_on_submit(): origin.group_id = form.group.data origin.description = form.description.data + origin.auto_rotation = form.auto_rotate.data origin.updated = datetime.utcnow() try: db.session.commit() @@ -306,9 +308,9 @@ def edit_bridgeconf(bridgeconf_id): bridgeconf = BridgeConf.query.filter(BridgeConf.id == bridgeconf_id).first() if bridgeconf is None: return Response(render_template("error.html.j2", - section="origin", - header="404 Origin Not Found", - message="The requested origin could not be found."), + section="bridge", + header="404 Bridge Configuration Not Found", + message="The requested bridge configuration could not be found."), status=404) form = EditBridgeConfForm(description=bridgeconf.description, number=bridgeconf.number) diff --git a/app/portal/forms.py b/app/portal/forms.py index d92151d..cb7e4bc 100644 --- a/app/portal/forms.py +++ b/app/portal/forms.py @@ -20,12 +20,14 @@ class NewOriginForm(FlaskForm): domain_name = StringField('Domain Name', validators=[DataRequired()]) description = StringField('Description', validators=[DataRequired()]) group = SelectField('Group', validators=[DataRequired()]) + auto_rotate = BooleanField("Enable auto-rotation?", default=True) submit = SubmitField('Save Changes') class EditOriginForm(FlaskForm): description = StringField('Description', validators=[DataRequired()]) group = SelectField('Group', validators=[DataRequired()]) + auto_rotate = BooleanField("Enable auto-rotation?") submit = SubmitField('Save Changes') diff --git a/app/portal/templates/groups.html.j2 b/app/portal/templates/groups.html.j2 index 1c6881c..ef92d58 100644 --- a/app/portal/templates/groups.html.j2 +++ b/app/portal/templates/groups.html.j2 @@ -19,7 +19,7 @@ {{ group.group_name }} {{ group.description }} - {% if group.eotk %}√{% else %}x{% endif %} + {% if group.eotk %}✅{% else %}❌{% endif %} {{ group.origins | length }} View/Edit diff --git a/app/portal/templates/tables.html.j2 b/app/portal/templates/tables.html.j2 index 0aad4f9..5c7043c 100644 --- a/app/portal/templates/tables.html.j2 +++ b/app/portal/templates/tables.html.j2 @@ -21,8 +21,7 @@ {{ origin.domain_name }} {{ origin.description }} - {{ origin.mirrors | length }} - {{ origin.proxies | length }} + {% if origin.auto_rotation %}✅{% else %}❌{% endif %} {{ origin.group.group_name }} diff --git a/app/terraform/block_external.py b/app/terraform/block_external.py index be32510..99cefd7 100644 --- a/app/terraform/block_external.py +++ b/app/terraform/block_external.py @@ -7,7 +7,7 @@ from app.models.mirrors import Proxy def check_blocks(): - user_agent = {'User-agent': 'BypassCensorship/1.0 (contact@sr2.uk for info)'} + user_agent = {'User-agent': 'BypassCensorship/1.0'} page = requests.get(app.config['EXTERNAL_CHECK_URL'], headers=user_agent) soup = BeautifulSoup(page.content, 'html.parser') h2 = soup.find_all('h2') @@ -33,33 +33,21 @@ def check_blocks(): if vp not in app.config['EXTERNAL_VANTAGE_POINTS']: continue for url in results[vp]: - if "cloudfront.net" in url: - print(f"Found {url} blocked") - proxy = Proxy.query.filter( - Proxy.provider == "cloudfront", - Proxy.url == f"https://{url}" - ).first() - if not proxy: - print("Proxy not found") - continue - if proxy.deprecated: - print("Proxy already marked blocked") - continue - proxy.deprecate(reason="external") - if "azureedge.net" in url: - slug = url[len('https://'):][:-len('.azureedge.net')] - print(f"Found {slug} blocked") - proxy = Proxy.query.filter( - Proxy.provider == "azure_cdn", - Proxy.slug == slug - ).first() - if not proxy: - print("Proxy not found") - continue - if proxy.deprecated: - print("Proxy already marked blocked") - continue - proxy.deprecate(reason="external") + print(f"Found {url} blocked") + proxy = Proxy.query.filter( + Proxy.provider == "cloudfront", + Proxy.url == f"https://{url}" + ).first() + if not proxy: + print("Proxy not found") + continue + if not proxy.origin.auto_rotation: + print("Proxy auto-rotation forbidden for origin") + if proxy.deprecated: + print("Proxy already marked blocked") + continue + proxy.deprecate(reason="external") + db.session.commit()