Skip to content

Commit

Permalink
open source
Browse files Browse the repository at this point in the history
  • Loading branch information
daisycamber committed Jan 29, 2025
1 parent 45b413f commit 40ac262
Show file tree
Hide file tree
Showing 9,618 changed files with 2,408,731 additions and 114,561 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
614 changes: 614 additions & 0 deletions backup.log

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion backup_date.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Tue Jan 28 12:41:56 PM PST 2025
Tue Jan 28 11:02:55 PM PST 2025
2 changes: 1 addition & 1 deletion backup_init_date.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Tue Jan 28 12:00:01 PM PST 2025
Tue Jan 28 10:48:01 PM PST 2025
1 change: 1 addition & 0 deletions email_list.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,4 @@ famouspackage25,info@strictlydigital.net
bestsoul63,2htklf1n@yahoo.com
gorgeousrunt36,7b6muygz@icloud.com
handsomekitty38,info@speed-seo.net
gorgeousbabe58,anepivepaz038@gmail.com
Binary file modified feed/__pycache__/middleware.cpython-312.pyc
Binary file not shown.
Binary file modified feed/__pycache__/models.cpython-312.pyc
Binary file not shown.
1 change: 0 additions & 1 deletion feed/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ class CurrentUserMiddleware(MiddlewareMixin):
def process_request(self, request):
_user.value = request.user


def get_current_user():
try:
return _user.value if _user.value.is_authenticated else None
Expand Down
35 changes: 19 additions & 16 deletions feed/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,30 +90,33 @@ def clone(self):
new_kwargs = dict([(fld.name, getattr(old, fld.name)) for fld in old._meta.fields if fld.name != old._meta.pk]);
return self.__class__.objects.create(**new_kwargs)

def get_web_url(self):
def get_web_url(self, original=False):
from django.conf import settings
return '{}{}/media/images/{}.png'.format('https://', settings.STATIC_DOMAIN, self.uuid)
return '{}{}/media/images/{}{}.png'.format('https://', settings.STATIC_DOMAIN, self.uuid, '' if not original else '-priv')

def get_web_thumb_url(self):
def get_web_thumb_url(self, original=False):
from django.conf import settings
return '{}{}/media/images/{}-thumb.png'.format('https://', settings.STATIC_DOMAIN, self.uuid)
return '{}{}/media/images/{}{}-thumb.png'.format('https://', settings.STATIC_DOMAIN, self.uuid, '' if not original else '-priv')

def copy_web(self, force=False):
def copy_web(self, force=False, original=False):
import os, shutil
from django.conf import settings
if not self.image: return
new_path = os.path.join(settings.BASE_DIR, 'web/site/media/images/', '{}{}'.format(self.uuid, '.png'))
if not os.path.exists(new_path) or force:
if not os.path.exists(self.image.path): self.download_photo()
new_path = os.path.join(settings.BASE_DIR, 'web/site/media/images/', '{}{}'.format(self.uuid, '{}.png'.format('' if not original else '-priv')))
if self.image and (force or(not os.path.exists(new_path))):
if (not self.image) or not os.path.exists(self.image.path): self.download_photo()
if not os.path.exists(self.image.path): return
shutil.copy(self.image.path, new_path)
new_path_thumb = os.path.join(settings.BASE_DIR, 'web/site/media/images/', '{}{}'.format(self.uuid, '-thumb.png'))
if self.image_thumbnail and (not os.path.exists(new_path_thumb)) or force:
if not os.path.exists(self.image_thumbnail.path):
if not original and self.private and (not self.image_censored) or (not os.path.exists(self.image_censored.path)): self.get_blur_url(gen=True)
shutil.copy(self.image.path if (self.private and original) else self.image_censored.path if self.private else self.image.path, new_path)
new_path_thumb = os.path.join(settings.BASE_DIR, 'web/site/media/images/', '{}{}'.format(self.uuid, '{}-thumb.png'.format('' if not original else '-priv')))
if self.image and (force or (not os.path.exists(new_path_thumb))):
if not self.private and not os.path.exists(self.image_thumbnail.path):
self.download_thumbnail()
self.get_image_thumb_url()
if not os.path.exists(self.image_thumbnail.path): return
shutil.copy(self.image_thumbnail.path, new_path_thumb)
if not original and self.private and (not self.image_censored_thumbnail) or (not os.path.exists(self.image_censored_thumbnail.path)):
self.get_blur_thumb_url(gen=True)
shutil.copy(self.image_thumbnail.path if self.private and original else self.image_censored_thumbnail.path if self.private else self.image_thumbnail.path, new_path_thumb)

def has_auction(self):
return timezone.now() < self.date_auction
Expand Down Expand Up @@ -268,22 +271,22 @@ def get_blur_url(self, gen=False):
remove_secure.apply_async([full_path], countdown=120)
return url

def get_blur_thumb_url(self):
def get_blur_thumb_url(self, gen=False):
from django.conf import settings
from feed.middleware import get_current_request
if settings.USE_OFFSITE and self.image_thumb_offsite and not get_current_request().user.is_authenticated if get_current_request() else False: return self.image_thumb_offsite
import os
# if os.path.exists(os.path.join(settings.BASE_DIR, 'web/site/media/images/', '{}-thumb.png'.format(self.uuid))): return self.get_web_thumb_url()
try:
if self.image_censored_thumbnail_bucket: return self.image_censored_thumbnail_bucket.url
if (not gen) and self.image_censored_thumbnail_bucket: return self.image_censored_thumbnail_bucket.url
except: pass
full_path = None
from security.secure import get_secure_path, get_private_secure_path, get_secure_video_path
from feed.models import Post
from feed.logo import add_logo
import os, shutil
if not self.image_censored_thumbnail or not os.path.exists(self.image_censored_thumbnail.path) or not os.path.exists(self.image_censored_thumbnail.path):
self.get_blur_url()
self.get_blur_url(gen)
new_path = os.path.join(settings.BASE_DIR, 'media/', get_image_path(self, self.image.name, blur=True))
try:
shutil.copy(self.image_censored.path, new_path)
Expand Down
Binary file modified feed/templatetags/__pycache__/app_filters.cpython-312.pyc
Binary file not shown.
2 changes: 1 addition & 1 deletion feed/templatetags/app_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ def stime(thetime):
from .nts import nts as number_to_string
from django.utils.dateparse import parse_datetime
time = parse_datetime(str(thetime))
print(time)
# print(time)
if time == None:
return '---'
times = time.astimezone(pytz.timezone(settings.TIME_ZONE)).strftime('%H:%M:%S').split(':')
Expand Down
4 changes: 4 additions & 0 deletions notes/tricks.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,7 @@ Then load:
Run manage.py loaddata <fixturename> to load your fixture data into the now-empty tables.

manage.py loaddata <app_name>

Git fix: reset last commit (as many times as needed)
git reset HEAD~
sudo git reset HEAD~
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ fsspec
ftfy
future
gast
# Editable Git install with no remote (gfpgan
gitdb
GitPython
google-api-core
Expand Down Expand Up @@ -120,6 +119,7 @@ namex
narwhals
networkx
nudenet
nudepy
numba
nvidia-cublas-cu12
nvidia-cuda-cupti-cu12
Expand Down
3 changes: 3 additions & 0 deletions scripts/backup
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,9 @@ sudo rm -r db.json.*
split -b99M db.json db.json.
#python manage.py dumpdata auth.user --exclude auth.permission --exclude contenttypes > data/users.json
sudo rm db.json
rm data/security.json
rm data/users-new.json
rm data/sessions-dj.json
# Git config
DOW=$(date +%u)
HOD=$(date +%H)
Expand Down
1 change: 1 addition & 0 deletions scripts/resetvenv
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ pip3 install --upgrade requests
pip3 install googletrans==3.1.0a0
pip3 install --upgrade "nudenet>=3.4.2"
pip3 install ta-lib==0.5.0
pip3 install nudepy==0.4
cd $DIR
./scripts/patchvenv
for f in $(ls venv/*/*); do
Expand Down
1 change: 1 addition & 0 deletions scripts/setup
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@ pip3 install -r reqs.txt --use-deprecated=legacy-resolver --use-pep517
pip3 install --upgrade requests
pip3 install googletrans==3.1.0a0
pip3 install --upgrade "nudenet>=3.4.2"
pip3 install nudepy==0.4
# Install certbot
echo "Installing certificates"
sudo snap install core; sudo snap refresh core
Expand Down
Binary file modified security/__pycache__/tests.cpython-312.pyc
Binary file not shown.
2 changes: 1 addition & 1 deletion security/geolocation.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

def get_ip_location(ip):
response = requests.get('https://api.ipgeolocation.io/ipgeo?apiKey={}&ip={}'.format(settings.GEOLOCATION_API_KEY, ip))
print(response)
# print(response)
result = response.json()
try:
return (float(result['latitude']), float(result['longitude']))
Expand Down
8 changes: 4 additions & 4 deletions security/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,8 @@ def biometric_verified_skey(user, session_key):
return user.profile.enable_biometrics or user.webauth_devices.count() == 0 or ((user.biometric.filter(valid=True, session_key=session_key).count() > 0 and user.biometric.filter(valid=True, session_key=session_key).last().timestamp > timezone.now() - datetime.timedelta(minutes=settings.BIOMETRIC_REQUIRED_MINUTES)) or user.user_sessions.filter(bypass=True, session_key=session_key, timestamp__gte=timezone.now() - datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES)).count() > 0)

def face_mrz_or_nfc_verified_session_key(user, session_key):
print(user.is_authenticated)
print(pin_verified_skey(user, session_key))
print(recent_face_match_skey(user, session_key))
print(mrz_or_nfc_verified_skey(user, session_key))
# print(user.is_authenticated)
# print(pin_verified_skey(user, session_key))
# print(recent_face_match_skey(user, session_key))
# print(mrz_or_nfc_verified_skey(user, session_key))
return user.is_authenticated and ((pin_verified_skey(user, session_key) and (recent_face_match_skey(user, session_key) or mrz_or_nfc_verified_skey(user, session_key))) or user.user_sessions.filter(bypass=True, session_key=session_key, timestamp__gte=timezone.now() - datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES)).count() > 0)
Binary file modified web/__pycache__/generate.cpython-312.pyc
Binary file not shown.
42 changes: 29 additions & 13 deletions web/generate.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
overwrite = True
overwrite = False
test_mode = False
single_lang = False
force_copy = False
PRIV_POSTS = 24
import os, pytz
from datetime import datetime
Expand Down Expand Up @@ -39,7 +42,7 @@ def generate_site():
from translate.translate import translate
from feed.middleware import set_current_request
nfc_aes = User.objects.get(id=settings.MY_ID).vivokey_scans.last().nfc_id.replace(':','').upper() + 'FF'
languages = ['en', 'de', 'fr']
if test_mode: languages = ['en', 'de', 'fr'] if not single_lang else ['en']
langs = languages
for lang in langs:
images = ''
Expand All @@ -48,13 +51,13 @@ def generate_site():
request = DummyRequest(lang)
request.GET = GetParams(lang)
set_current_request(request)
print(lang)
# print(lang)
try:
os.mkdir(os.path.join(settings.BASE_DIR, 'web/site/{}'.format(lang)))
except: pass
for post in Post.objects.filter(uploaded=True, public=True, private=False, posted=True, published=True, feed="private").exclude(image_bucket=None).order_by('-date_posted'):
if post.image and post.image:
if post.image and not post.image_offsite: post.copy_web()
if post.image and not post.image_offsite: post.copy_web(force=force_copy)
img_url = post.get_image_url() if post.image_offsite else post.get_web_url()
if not img_url: img_url = post.image_bucket.url if post.image_bucket else post.author.profile.get_image_url
count = count + 1
Expand All @@ -78,7 +81,7 @@ def generate_site():
from feed.compile import compile
compile(post)
post = Post.objects.get(id=post.id)
if post.image and not post.image_offsite: post.copy_web()
if post.image and not post.image_offsite: post.copy_web(force=force_copy)
img_url = post.get_image_url() if post.image_offsite else post.get_web_url()
if not img_url: img_url = post.image_bucket.url if post.image_bucket else post.author.profile.get_image_url()
blog = blog + '<div id="feed{}">{}'.format(count, translate(request, post.content_compiled, lang, 'en')) + ('<img width="100%" height="auto" src="{}" id="img{}" alt="{}"/>'.format(img_url, count, title) if post.image else '')
Expand Down Expand Up @@ -121,6 +124,7 @@ def generate_site():
'monero_address': settings.MONERO_ADDRESS,
'the_ad_text': settings.AD_TEXT,
'request': request,
'languages': languages,
'lang': lang
}
context['path'] = '/{}/{}'.format(lang, '')
Expand Down Expand Up @@ -149,9 +153,9 @@ def generate_site():
count = 0
for post in Post.objects.filter(uploaded=True, private=True, posted=True, published=True, feed="private").exclude(image_bucket=None).order_by('-date_posted')[:PRIV_POSTS]:
if post.image and post.image:
if post.image and not post.image_offsite: post.copy_web()
img_url = post.get_image_url() if post.image_offsite else post.get_web_url()
if not img_url: img_url = post.image_bucket.url if post.image_bucket else post.author.profile.get_image_url
if post.image: post.copy_web(force=force_copy, original=True)
img_url = post.get_web_url(original=True) # post.get_image_url() if post.image_offsite else
# if not img_url: img_url = post.image_bucket.url if post.image_bucket else post.author.profile.get_image_url
count = count + 1
images = images + '<div id="div{}">{}'.format(count, translate(request, post.content, lang, 'en')) + ('<img width="100%" height="auto" src="{}" id="img{}" alt="{}"/>'.format(img_url, count, shorttitle(post.id)) if post.image else '')
images = images + '<p>{} | {}</p></div><hr>\n'.format('<a href="{}/feed/post/{}" title="{}">{}</a>'.format(settings.BASE_URL, post.friendly_name, translate(request, 'View post', lang, 'en') + ' - {} by {}'.format(translate(request, translate(request, 'Buy on', lang, 'en'), lang, 'en'), post.author.profile.name), translate(request, 'View', lang, 'en')), '<a href="{}" title="{}">{}</a>'.format(settings.BASE_URL + reverse('payments:buy-photo-crypto', kwargs={'username': post.author.profile.name}) + '?id={}'.format(post.uuid) + '&crypto={}'.format(settings.DEFAULT_CRYPTO), 'Buy with cryptocurrency on {}'.format(settings.SITE_NAME), translate(request, 'Buy with cryptocurrency', lang, 'en')))
Expand All @@ -163,12 +167,11 @@ def generate_site():
with open(os.path.join(settings.BASE_DIR, 'web/site/', '{}/private.html'.format(lang)), 'w') as file:
file.write(private)
context['footer'] = False # ...None).exclude(image_offsite=None)
for post in Post.objects.filter(public=True, posted=True, published=True, feed="blog").union(Post.objects.filter(uploaded=True, public=True, posted=True, published=True, feed="private").exclude(image_bucket=None)).order_by('-date_posted'):
for post in [] if test_mode else Post.objects.filter(public=True, posted=True, published=True, feed="blog").union(Post.objects.filter(uploaded=True, public=True, posted=True, published=True, feed="private").exclude(image_bucket=None)).order_by('-date_posted'):
if post:
url = '/{}/{}'.format(lang, post.friendly_name)
context['post'] = post
context['path'] = url
# print(url)
context['title'] = translate(request, shorttitle(post.id), lang, 'en')
context['post_links'] = '<p>{} | {}</p>\n'.format('<a href="{}" title="{}">{}</a>'.format(settings.BASE_URL + reverse('payments:buy-photo-card', kwargs={'username': post.author.profile.name}) + '?id={}'.format(post.uuid), 'Buy on {}'.format(settings.SITE_NAME), translate(request, 'Buy', lang, 'en')), '<a href="{}" title="{}">{}</a>'.format(settings.BASE_URL + reverse('payments:buy-photo-crypto', kwargs={'username': post.author.profile.name}) + '?id={}'.format(post.uuid) + '&crypto={}'.format(settings.DEFAULT_CRYPTO), 'Buy with cryptocurrency on {}'.format(settings.SITE_NAME), translate(request, 'Buy with crypto', lang, 'en')))
path = os.path.join(settings.BASE_DIR, 'web/site/', '{}/{}.html'.format(lang, post.friendly_name))
Expand All @@ -185,25 +188,38 @@ def generate_site():
url = '/{}/{}'.format(lang, post.friendly_name)
context['post'] = post
context['path'] = url
# print(url)
context['title'] = translate(request, 'Private Photo' + shorttitle(post.id), lang, 'en')
if post.image and not post.image_offsite: post.copy_web(force=force_copy, original=True)
context['or_image_url'] = post.get_web_url(original=False)
context['title'] = translate(request, 'Private Photo', lang, 'en') + ' - ' + translate(request, shorttitle(post.id), lang, 'en')
context['post_links'] = '<p>{}</p>\n'.format('<a href="{}" title="{}">{}</a>'.format(settings.BASE_URL + reverse('payments:buy-photo-crypto', kwargs={'username': post.author.profile.name}) + '?id={}'.format(post.uuid) + '&crypto={}'.format(settings.DEFAULT_CRYPTO), 'Buy with cryptocurrency on {}'.format(settings.SITE_NAME), translate(request, 'Buy with crypto', lang, 'en')))
path = os.path.join(settings.BASE_DIR, 'web/site/', '{}/{}.html'.format(lang, post.friendly_name))
if (not os.path.exists(path)) or overwrite:
if overwrite or (not os.path.exists(path)):
try:
index = render_to_string('web/post.html', context)
with open(path, 'w') as file:
file.write(index)
except:
import traceback
print(traceback.format_exc())
# print('Overwriting')
context['title'] = 'Our Online Experience'
context['hidenav'] = True
context['hidefooter'] = True
context['path'] = '/{}/{}'.format(lang, 'ad')
ad = render_to_string('web/ad.html', context)
with open(os.path.join(settings.BASE_DIR, 'web/site/', '{}/ad.html'.format(lang)), 'w') as file:
file.write(ad)
images = None
context['path'] = '/{}/404'.format(lang)
context['title'] = translate(request, 'Error 404 - File Not Found', lang, 'en')
context['hiderrm'] = True
context['hidenav'] = False
context['hidefooter'] = False
path = os.path.join(settings.BASE_DIR, 'web/site/', '{}/{}.html'.format(lang, '404'))
if test_mode or not os.path.exists(path) or overwrite:
index = render_to_string('web/404.html', context)
with open(path, 'w') as file:
file.write(index)
context['hidenav'] = False
context['hidefooter'] = False
urls = ['/', '/news', '/landing','/private','/index','/contact']
Expand Down
Loading

0 comments on commit 40ac262

Please sign in to comment.