Compare commits

...

8 Commits

Author SHA1 Message Date
2f2bc581d4 Add captcha 2024-01-04 06:15:12 +00:00
61225ebd20 Fix bug from capitals in 'https://' 2023-04-29 19:38:05 +00:00
7943e291fb Add entries to top of guestbook instead 2023-04-19 04:29:41 +00:00
9220022d3e Add filters 2022-08-11 20:40:15 +00:00
5509264136 Improve filters 2022-07-27 05:09:40 +00:00
da6efccf86 Freeze requirements 2022-06-18 04:17:37 +00:00
7eba92016e Send controller message on error, change hr line 2022-06-17 22:32:56 +00:00
b420720a2c Improve logging, url prefixes 2022-01-07 00:19:01 +00:00
4 changed files with 4335 additions and 9 deletions

2143
index.html.bak Normal file

File diff suppressed because it is too large Load Diff

17
requirements.txt Normal file
View File

@@ -0,0 +1,17 @@
aiohttp==3.6.3
async-timeout==3.0.1
attrs==21.2.0
certifi==2021.10.8
chardet==3.0.4
idna==2.10
idna-ssl==1.1.0
multidict==4.7.6
pkg-resources==0.0.0
pyaes==1.6.1
pyasn1==0.4.8
requests==2.25.1
rsa==4.7.2
Telethon==1.23.0
typing-extensions==3.10.0.0
urllib3==1.26.8
yarl==1.5.1

2120
reversed.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,13 @@
import os
import logging
logging.basicConfig(
format='[%(asctime)s] %(levelname)s %(module)s/%(funcName)s - %(message)s',
level=logging.DEBUG if os.environ.get('DEBUG') else logging.INFO)
import settings import settings
import asyncio import asyncio
import json import json
import requests
from datetime import datetime from datetime import datetime
from uuid import uuid4 from uuid import uuid4
from telethon import TelegramClient, events from telethon import TelegramClient, events
@@ -12,11 +19,20 @@ TANNER = 79316791
messages = {} messages = {}
def controller_message(message):
payload = dict(misc=message)
r = requests.post('https://tbot.tannercollin.com/message', data=payload, timeout=10)
if r.status_code == 200:
return True
else:
logging.exception('Unable to communicate with controller! Message: ' + message)
return False
@bot.on(events.NewMessage(incoming=True)) @bot.on(events.NewMessage(incoming=True))
async def new_message(event): async def new_message(event):
text = event.raw_text text = event.raw_text
sender = event.sender_id sender = event.sender_id
print(sender, text) logging.info('{} {}'.format(sender, text))
if sender != TANNER: if sender != TANNER:
return return
@@ -30,33 +46,63 @@ async def new_message(event):
await event.reply('Message ID not found. Did the bot restart?') await event.reply('Message ID not found. Did the bot restart?')
return return
entry = '--------------------------\n\n{} - {}'.format(data['date'], data['name']) entry = '\n\n{} - {}'.format(data['date'], data['name'])
website = data['website'] website = data['website']
if website: if website:
if not website.startswith('http://') and not website.startswith('https://'): prefixes = ['http://', 'https://', 'gemini://', 'gopher://']
for prefix in prefixes:
if website.lower().startswith(prefix):
break
else: # for loop
website = 'http://' + website website = 'http://' + website
entry += ' (<a href="{0}" target="_blank" rel="noreferrer noopener">{0}</a>)'.format(website) entry += ' (<a href="{0}" target="_blank" rel="noreferrer noopener">{0}</a>)'.format(website)
entry += '\n\n{}\n\n'.format(data['message']) entry += '\n\n{}\n\n------------------------------------------------------------'.format(data['message'])
with open('data/g/index.html', 'a') as f: with open('data/g/index.html', 'r') as f:
page = f.read()
with open('data/g/index.html', 'w') as f:
header, entries = page.split('===========', maxsplit=1)
f.write(header)
f.write('===========')
f.write(entry) f.write(entry)
f.write(entries)
await event.reply('Entry added to t0.vc/g') await event.reply('Entry added to t0.vc/g')
print('Added', data) logging.info('Added: {}'.format(data))
async def message_tanner(name, website, message, captcha, mid):
if 'tanner' not in captcha.lower():
return
if name.replace(' ', '') in ['website', 'webpage', 'homepage']:
return
report = 'Name: {}\n\nWebsite: {}\n\nMessage: {}\n\n/allow_{}'
try:
await bot.send_message(TANNER, message=report.format(name, website, message, mid))
except:
logging.error('Problem sending bot message.')
controller_message('t0sig: problem sending bot message!')
exit()
async def submit(request): async def submit(request):
data = dict(await request.post()) data = dict(await request.post())
data['date'] = str(datetime.today().date()) data['date'] = str(datetime.today().date())
mid = str(uuid4()).split('-')[0] mid = str(uuid4()).split('-')[0]
print(mid, data) logging.info('{} {}'.format(mid, data))
try: try:
fake_username = data.get('fake_username', '') # not used yet
name = data['name'] name = data['name']
website = data.get('website', '') website = data.get('website', '')
message = data['message'] message = data['message']
captcha = data.get('captcha', '')
except KeyError: except KeyError:
raise web.HTTPBadRequest(reason='You are missing something.') raise web.HTTPBadRequest(reason='You are missing something.')
@@ -70,8 +116,8 @@ async def submit(request):
if len(message) > 1000: if len(message) > 1000:
raise web.HTTPBadRequest(reason='Message is too long.') raise web.HTTPBadRequest(reason='Message is too long.')
report = 'Name: {}\n\nWebsite: {}\n\nMessage: {}\n\n/allow_{}' await message_tanner(name, website, message, captcha, mid)
await bot.send_message(TANNER, message=report.format(name, website, message, mid))
messages[mid] = data messages[mid] = data
with open('data/messages.log', 'a') as f: with open('data/messages.log', 'a') as f: