import re from flask_wtf import FlaskForm from wtforms import PasswordField, StringField, SubmitField from wtforms.validators import URL, InputRequired, Regexp from .validators import AllowedHostname, NotEqualTo class LoginForm(FlaskForm): username = StringField("Username", validators=[InputRequired()]) password = PasswordField("Password", validators=[InputRequired()]) submit = SubmitField("Sign In") class EndpointForm(FlaskForm): source = StringField( "source", validators=[ InputRequired(), URL(), Regexp( "^https?://.*", flags=re.IGNORECASE, message="source must begin with http or https", ), NotEqualTo("target"), ], ) target = StringField( "target", validators=[ InputRequired(), URL(), Regexp( "^https?://.*", flags=re.IGNORECASE, message="target must begin with http or https", ), AllowedHostname(), ], )