mirror of
https://github.com/Lynnesbian/FediBooks/
synced 2024-11-25 16:48:58 +00:00
Compare commits
4 commits
86f68cfa37
...
7572536361
Author | SHA1 | Date | |
---|---|---|---|
7572536361 | |||
ef27eacb69 | |||
7eac3f6f11 | |||
6b24fb667b |
5 changed files with 50 additions and 7 deletions
|
@ -5,3 +5,4 @@ requests==2.22.0
|
||||||
Flask==1.1.1
|
Flask==1.1.1
|
||||||
flask-mysqldb==0.2.0
|
flask-mysqldb==0.2.0
|
||||||
bcrypt == 3.1.7
|
bcrypt == 3.1.7
|
||||||
|
requests==2.22.0
|
||||||
|
|
|
@ -34,7 +34,7 @@ CREATE TABLE IF NOT EXISTS `bots` (
|
||||||
FOREIGN KEY (`credentials_id`) REFERENCES credentials(id) ON DELETE CASCADE
|
FOREIGN KEY (`credentials_id`) REFERENCES credentials(id) ON DELETE CASCADE
|
||||||
) ENGINE=INNODB;
|
) ENGINE=INNODB;
|
||||||
CREATE TABLE IF NOT EXISTS `fedi_account` (
|
CREATE TABLE IF NOT EXISTS `fedi_account` (
|
||||||
`handle` VARCHAR(128) NOT NULL PRIMARY KEY,
|
`handle` VARCHAR(128) PRIMARY KEY,
|
||||||
`outbox` VARCHAR(256),
|
`outbox` VARCHAR(256),
|
||||||
`credentials_id` INT NOT NULL,
|
`credentials_id` INT NOT NULL,
|
||||||
`icon` VARCHAR(512),
|
`icon` VARCHAR(512),
|
||||||
|
@ -43,9 +43,11 @@ CREATE TABLE IF NOT EXISTS `fedi_account` (
|
||||||
) ENGINE=INNODB;
|
) ENGINE=INNODB;
|
||||||
CREATE TABLE IF NOT EXISTS `posts` (
|
CREATE TABLE IF NOT EXISTS `posts` (
|
||||||
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
|
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
`fedi_id` VARCHAR(128),
|
||||||
`post_id` VARCHAR(64) NOT NULL,
|
`post_id` VARCHAR(64) NOT NULL,
|
||||||
`content` TEXT NOT NULL,
|
`content` TEXT NOT NULL,
|
||||||
`cw` BOOLEAN NOT NULL
|
`cw` BOOLEAN NOT NULL,
|
||||||
|
FOREIGN KEY (`fedi_id`) REFERENCES fedi_account(handle) ON DELETE CASCADE
|
||||||
) ENGINE=INNODB;
|
) ENGINE=INNODB;
|
||||||
CREATE TABLE IF NOT EXISTS `word_blacklist` (
|
CREATE TABLE IF NOT EXISTS `word_blacklist` (
|
||||||
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
{% elif session['step'] == 2 %}
|
{% elif session['step'] == 2 %}
|
||||||
<h2 class="thin centred">Detected instance type: {{ session['instance_type'] }}</h2>
|
<h2 class="thin centred">Detected instance type: {{ session['instance_type'] }}</h2>
|
||||||
<p>{{ session['instance'] }} is a {{ session['instance_type'] }} instance. {% if session['instance_type'] == Pleroma %}Unfortunately, bots on Pleroma instances cannot listen for replies yet. This means that your bot will have its reply functionality disabled.{% else %}{{ session['instance_type'] }} instances are fully supported, and your bot will have all functionality available.{% endif %}</p>
|
<p>{{ session['instance'] }} is a {{ session['instance_type'] }} instance. {% if session['instance_type'] == 'Pleroma' %}Unfortunately, bots on Pleroma instances cannot listen for replies yet. This means that your bot will have its reply functionality disabled.{% else %}{{ session['instance_type'] }} instances are fully supported, and your bot will have all functionality available.{% endif %}</p>
|
||||||
|
|
||||||
{% elif session['step'] == 3 %}
|
{% elif session['step'] == 3 %}
|
||||||
<p>You now need to give your bot access to the {{ session['instance'] }} account you have created for it. If you have not yet created an account on {{ session['instance'] }} for your bot to use, please do so now.</p>
|
<p>You now need to give your bot access to the {{ session['instance'] }} account you have created for it. If you have not yet created an account on {{ session['instance'] }} for your bot to use, please do so now.</p>
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
<body>
|
<body>
|
||||||
<div class="container light">
|
<div class="container light">
|
||||||
<h1 class='thin centred'>Home</h1>
|
<h1 class='thin centred'>Home</h1>
|
||||||
<p class="centred large">Hi there! You have 1 bots, all of which are currently active.</p>
|
<p class="centred large">Hi there! You have {{ bot_count }} bot{% if bot_count != 1 %}s{% endif %}{% if bot_count != 0 %}, {{ active_count }} of which {% if active_count == 1 %}is{% else %}are{% endif %} currently active.{% else %}.{% endif %}</p>
|
||||||
<p class="centred" style="margin: 50px 0;">
|
<p class="centred" style="margin: 50px 0;">
|
||||||
<a class="button btn-primary btn-large" href="/bot/create" role="button"><i class="fas fa-robot"></i> New bot</a>
|
<a class="button btn-primary btn-large" href="/bot/create" role="button"><i class="fas fa-robot"></i> New bot</a>
|
||||||
<a class="button btn-secondary btn-large" href="/settings" role="button"><i class="fas fa-cog"></i> Account settings</a>
|
<a class="button btn-secondary btn-large" href="/settings" role="button"><i class="fas fa-cog"></i> Account settings</a>
|
||||||
|
|
46
webui.py
46
webui.py
|
@ -1,8 +1,9 @@
|
||||||
from flask import Flask, render_template, session, request, redirect, url_for
|
from flask import Flask, render_template, session, request, redirect, url_for
|
||||||
from flask_mysqldb import MySQL
|
from flask_mysqldb import MySQL
|
||||||
|
import requests
|
||||||
import MySQLdb
|
import MySQLdb
|
||||||
import bcrypt
|
import bcrypt
|
||||||
import json, hashlib
|
import json, hashlib, re
|
||||||
|
|
||||||
cfg = json.load(open("config.json"))
|
cfg = json.load(open("config.json"))
|
||||||
|
|
||||||
|
@ -20,7 +21,15 @@ mysql = MySQL(app)
|
||||||
def home():
|
def home():
|
||||||
if 'userid' in session:
|
if 'userid' in session:
|
||||||
session['step'] = 1
|
session['step'] = 1
|
||||||
return render_template("home.html")
|
c = mysql.connection.cursor()
|
||||||
|
c.execute("SELECT COUNT(*) FROM `bots` WHERE user_id = %s", (session['userid'],))
|
||||||
|
bot_count = c.fetchone()[0]
|
||||||
|
active_count = None
|
||||||
|
if bot_count > 0:
|
||||||
|
c.execute("SELECT COUNT(*) FROM `bots` WHERE user_id = %s AND enabled = TRUE", (session['userid'],))
|
||||||
|
active_count = c.fetchone()[0]
|
||||||
|
c.close()
|
||||||
|
return render_template("home.html", bot_count = bot_count, active_count = active_count)
|
||||||
else:
|
else:
|
||||||
return render_template("front_page.html")
|
return render_template("front_page.html")
|
||||||
|
|
||||||
|
@ -61,8 +70,39 @@ def bot_accounts(id):
|
||||||
def bot_accounts_add():
|
def bot_accounts_add():
|
||||||
return render_template("bot_accounts_add.html")
|
return render_template("bot_accounts_add.html")
|
||||||
|
|
||||||
@app.route("/bot/create/")
|
@app.route("/bot/create/", methods=['GET', 'POST'])
|
||||||
def bot_create():
|
def bot_create():
|
||||||
|
if request.method == 'POST':
|
||||||
|
if session['step'] == 1:
|
||||||
|
# strip leading https://, if provided
|
||||||
|
session['instance'] = re.match(r"^(?:https?:\/\/)?(.*)", request.form['instance']).group(1)
|
||||||
|
|
||||||
|
# check for mastodon/pleroma
|
||||||
|
r = requests.get("https://{}/api/v1/instance".format(session['instance']))
|
||||||
|
if r.status_code == 200:
|
||||||
|
j = r.json()
|
||||||
|
if "Pleroma" in j['version']:
|
||||||
|
session['instance_type'] = "Pleroma"
|
||||||
|
session['step'] += 1
|
||||||
|
else:
|
||||||
|
if 'is_pro' in j['contact_account']:
|
||||||
|
# gab instance
|
||||||
|
session['error'] = "Eat shit and die, fascist scum."
|
||||||
|
else:
|
||||||
|
session['instance_type'] = "Mastodon"
|
||||||
|
session['step'] += 1
|
||||||
|
|
||||||
|
else:
|
||||||
|
# not a masto/pleroma instance
|
||||||
|
# misskey is currently unsupported
|
||||||
|
# all other instance types are also unsupported
|
||||||
|
# return an error message
|
||||||
|
#TODO: misskey
|
||||||
|
session['error'] = "Unsupported instance type."
|
||||||
|
|
||||||
|
elif session['step'] == 2:
|
||||||
|
pass
|
||||||
|
|
||||||
return render_template("bot_create.html")
|
return render_template("bot_create.html")
|
||||||
|
|
||||||
@app.route("/do/signup", methods=['POST'])
|
@app.route("/do/signup", methods=['POST'])
|
||||||
|
|
Loading…
Reference in a new issue