Files
adventurelandX/config.py
T
2023-12-11 21:20:21 +03:00

260 lines
9.6 KiB
Python

# This Python file uses the following encoding: utf-8
from __future__ import with_statement
import os,logging,cgi
if os.environ.get('SERVER_SOFTWARE', '').startswith('Dev'):
try:
from google.appengine.tools.dev_appserver import HardenedModulesHook
HardenedModulesHook._WHITE_LIST_C_MODULES += ['_ctypes', 'gestalt']
except: pass
import sys,json,random,time,re,math,copy,base64,cPickle,jinja2,types,urllib,operator,pickle,unicodedata
import gc as gbc
from lxml import etree as lxmletree
import datetime as rdatetime
import time as rtime
from datetime import datetime,timedelta,date
from urlparse import urlparse
from google.appengine.api.users import is_current_user_admin
from google.appengine.ext.webapp import blobstore_handlers # template,util,
from google.appengine.api import memcache,urlfetch,urlfetch_errors,mail,taskqueue,images,files,namespace_manager,search,modules,logservice
from google.appengine.ext import webapp,ndb,blobstore,deferred
from google.appengine.runtime import DeadlineExceededError
from google.appengine.runtime.apiproxy_errors import DeadlineExceededError as DeadlineExceededError2
from google.appengine.datastore.datastore_query import Cursor
class mj2u(jinja2.Undefined):
def __str__(self): 0 and logging.info("Non existing variable"); return ""
def __call__(self,*a,**d): 0 and logging.info("Non existing variables non existing call with a %s d %s"%(a,d)); return "";mj2u()
def __getattr__(self,*d,**f):
return mj2u()
j2_loader=jinja2.FileSystemLoader(os.path.dirname(__file__))
class GG(): pass
import secrets
from libraries.country_to_latlon import c_to_ll
from libraries import stripe
from libraries import amazon_ses
#from libraries import get_image_size
if os.environ.get('SERVER_SOFTWARE', '').startswith('Dev'):
is_sdk=True; is_production=is_appengine=False
stripe.verify_ssl_certs = False
stripe.api_key=secrets.stripe_test_api_key
stripe_pkey=secrets.stripe_test_pkey
else:
is_sdk=False; is_production=is_appengine=True
stripe.api_key=secrets.stripe_pkey #secret-key
stripe_pkey=secrets.stripe_api_key #publishable-key
steam_web_apikey=secrets.steam_web_apikey #for domain adventure.land: https://partner.steamgames.com/doc/webapi_overview/auth#create_publisher_key
steam_publisher_web_apikey=secrets.steam_publisher_web_apikey #from: https://partner.steamgames.com/pub/group/48241/61965/
from design.animations import *
from design.achievements import *
from design.game import *
from design.sprites import *
from design.dimensions import *
from design.monsters import *
from design.maps import *
from design.npcs import *
from design.items import *
from design.classes import *
from design.levels import *
from design.upgrades import *
from design.drops import *
from design.skills import *
from design.events import *
from design.recipes import *
from design.titles import *
from design.tokens import *
from design.games import *
from design.conditions import *
from design.cosmetics import *
from design.emotions import *
from design.projectiles import *
from design.multipliers import *
import design.precomputed as precomputed
from docs.directory import *
from utility.gallery import *
if is_production:
#maps["desertland"]["key"]="jayson_desertland_copy"
pass
game_version=783
SALES=4+5+388+5101+125/20 #donation+manual+macos+steam+sales
update_notes=[
"Happy Holidays!",
"Last Update [December 8th]",
"Skill related pull requests from the community merged.",
"Holiday season on Adventure Land!",
]
ip_to_subdomain={ #IMPORTANT: SPECIAL PAGE RULES ARE NEEDED: https://dash.cloudflare.com/b6f5a13bded5fdd273e4a1cd3777162d/adventure.land/page-rules - uss1 / eus1 was best
"35.187.255.184":"asia1",
"35.246.244.105":"eu1",
"35.228.96.241":"eu2",
"35.234.72.136":"eupvp",
"35.184.37.35":"us1",
"34.67.188.57":"us2",
"34.75.5.124":"us3",
"34.67.187.11":"uspvp",
"195.201.181.245":"eud1",
"158.69.23.127":"usd1",
}
HTTPS_MODE=True #IMPORTANT: converts server IP's to subdomain urls at create_server_api [17/11/18]
always_amazon_ses=True
SCREENSHOT_MODE=is_sdk and False
game_name="Adventure Land"
appengine_id="twodimensionalgame"
live_domain='adventure.land'
sdk_domain='thegame.com'
SDK_UPLOAD_PASSWORD=ELEMENT_PASSWORD=secrets.sdk_password
def gdi(self=None):
domain=GG()
if is_sdk:
if self:
url=urlparse(self.request.url)
protocol=url.scheme
hostname=url.hostname
else:
protocol="http"
hostname=sdk_domain
domain.base_url=protocol + "://" + hostname
domain.pref_url=domain.base_url
domain.server_ip="192.168.1.125"
domain.stripe_pkey=stripe_pkey
domain.stripe_enabled=False
domain.https_mode=False
domain.domain=hostname
else:
protocol="http"
if self and "https" in (self.request.headers.get("Cf-Visitor") or ""): protocol="https"
domain.base_url=protocol + "://" + live_domain
domain.pref_url=domain.base_url
domain.stripe_pkey=stripe_pkey
domain.stripe_enabled=False
domain.https_mode=HTTPS_MODE
domain.domain=live_domain
domain.imagesets=imagesets #for caching [12/07/20]
domain.sales=SALES
domain.ip_to_subdomain=ip_to_subdomain
domain.https=False
domain.secure_base_url=domain.base_url.replace("http://","https://")
domain.discord_url="https://discord.gg/44yUVeU"
domain.is_sdk=is_sdk
domain.io_version="4.2.0" #upgraded from 1.4.5 now [18/03/17] upgraded from 1.7.2 now [31/12/17] upgraded from 2.1.0 now [20/06/19] 2.3.0 [28/06/20] 4.0.0 [18/03/21]
domain.cm_version="5.65.1"
domain.jquery_version="3.2.0" #for some reason the previous version was 2.2.4 instead of 3.1.0 [10/04/17]
domain.howler_version="2.0.13"
domain.pixi_version="4.8.2-roundpixels" # Re-visit #PIXI's at updates + TOWN/Server change to test - 4.0.3-dev has weird click
# LTS: "4.8.2-roundpixels"
# 4.8.9-custom has an artifact appearing on t2bow
domain.pixi_fversion=""
domain.pixi_display_version="v4"
domain.pixi_layers_version="0.1.7.2"
domain.pixi_lights_version="2.0.3"
domain.pixi_filters_version="3.1.1" and "2.6.0c0"
domain.interact_version="1.2.6"
domain.gcs_bucket="2dimages"
domain.v=game_version
domain.cash=True
domain.name=game_name
domain.title=domain.name
domain.gender_types=gender_types
domain.character_types=character_types
domain.screenshot=SCREENSHOT_MODE
domain.recording_mode=False
domain.music_on=False
domain.sfx_on=False
domain.perfect_pixels=True
domain.fast_mode=True
domain.engine_mode=""
domain.d_lines=True
domain.sd_lines=True
domain.newcomer_ui=False
domain.new_attacks=True
domain.no_html=False
domain.is_bot=False
domain.is_cli=False
domain.no_graphics=False
domain.border_mode=False
domain.purchase_mode=True
domain.tutorial=True
domain.boost=0
domain.access_master=secrets.ACCESS_MASTER
domain.servers=[]
domain.characters=[]
try: domain.scale=int(float(self and self.request.get("scale") or 2))
except: domain.scale=2
try: domain.times=int(self and self.request.get("times") or 0)
except: domain.times=0
domain.load_character=self and self.request.get("load") or ""
domain.electron=False
domain.platform="web"
domain.update_notes=update_notes
if self:
if "Electron" in self.request.headers.get("User-Agent",""):
domain.electron=True
if self.request.get("buildid") and "win32" in self.request.get("buildid"): domain.platform="steam"
if self.request.get("buildid") and "darwin" in self.request.get("buildid"): domain.platform="mac"
if self.request.cookies.get("music")!="off": domain.music_on=True
if self.request.cookies.get("sfx")!="off": domain.sfx_on=True
domain.url=self.request.url
domain.section=self.request.get("section")
if self.request.get("test_clicks"): domain.test_clicks=True; domain.pixi_version="4.0.2"
if self.request.get("no_cache"): domain.v=100000+random.randrange(0,100000000)
if self.request.get("no_html"): domain.no_html=True
if self.request.get("no_html")=="bot": domain.no_html="bot"
if self.request.get("is_bot"): domain.is_bot=True
if self.request.get("is_cli"): domain.is_cli=True
if self.request.get("recording_mode"): domain.recording_mode=True; domain.boost=20; domain.sfx_on=False; domain.music_on=False
if self.request.get("no_graphics") or domain.no_html:
domain.no_graphics=True;
domain.pixi_version="fake" #NOGTODO is the hashtag
domain.pixi_fversion="?v=%s"%game_version
if self.request.get("borders") or self.request.get("border_mode"): domain.border_mode=True
if self.request.cookies.get("perfect_pixels_off") and not SCREENSHOT_MODE:
domain.perfect_pixels=False
if self.request.cookies.get("d_lines_off"):
domain.d_lines=False
if self.request.cookies.get("no_tutorial"):
domain.tutorial=False
if self.request.cookies.get("no_fast_mode"):
domain.fast_mode=False
if self.request.get("engine") or self.request.cookies.get("engine_mode"):
domain.engine_mode=self.request.get("engine") or self.request.cookies.get("engine_mode")
if self.request.cookies.get("sd_lines_off"):
domain.sd_lines=False
if self.request.cookies.get("pro_mode"):
domain.newcomer_ui=False
if self.request.cookies.get("no_weapons"):
domain.new_attacks=False
if self.request.cookies.get("manual_reload"):
domain.auto_reload="off"
else:
domain.auto_reload="auto"
if self.request.scheme=="https" or self.request.headers.get("Cf-Visitor") and self.request.headers.get("Cf-Visitor").find("https")!=-1:
domain.https=True
return domain
secure_cookies=False #not is_sdk
if SCREENSHOT_MODE:
update_notes=[
"Last Update [Nth of Month]",
"Update notes appear here",
"Usually weekly or daily updates"
]
j2=jinja2.Environment(loader=j2_loader,undefined=mj2u,autoescape=True,auto_reload=is_sdk,cache_size=-1)
def jrf(f): #jinja_register_filter
j2.filters[f.__name__]=f
return f
def jrg(f): #jinja_register_global [21/12/14]
j2.globals[f.__name__]=f
return f
really_old=datetime(1970,1,1)
distant_future=datetime(2048,1,1)