Init
This commit is contained in:
parent
cabcf39458
commit
12f0b91216
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
__pycache__
|
||||
logs
|
||||
577
app.py
Normal file
577
app.py
Normal file
@ -0,0 +1,577 @@
|
||||
from flask import Flask, render_template, send_from_directory, make_response, request, redirect, session, g, json, send_file, abort
|
||||
import os
|
||||
import random
|
||||
import socket
|
||||
import oracledb
|
||||
import traceback
|
||||
import requests
|
||||
from logging.config import dictConfig
|
||||
import secrets
|
||||
from werkzeug.middleware.proxy_fix import ProxyFix
|
||||
import io
|
||||
import json
|
||||
from expiring_dict import ExpiringDict
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
capcha_site = '6LcJpHMgAAAAAMQLNY_g8J2Kv_qmCGureRN_lbGl'
|
||||
capcha_site_sec = '6LcJpHMgAAAAAIUf4Jg_7NvawQKZoLoVypDU6-d8'
|
||||
capcha_site_url='https://www.google.com/recaptcha/api/siteverify'
|
||||
site = 'salvagedb.com'
|
||||
app_path = os.path.dirname(os.path.realpath(__file__))
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
app_debug : bool = os.environ.get('APP_DEBUG',False)
|
||||
app.debug = os.environ.get('APP_DEBUG',False)
|
||||
app.secret_key = secrets.token_hex()
|
||||
app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1, x_host=1, x_prefix=1)
|
||||
|
||||
os.environ['NLS_LANG'] = 'American_America.AL32UTF8'
|
||||
|
||||
#Cache
|
||||
app.cache = ExpiringDict(60*60*24)
|
||||
|
||||
|
||||
try:
|
||||
gips = open('gips.txt').read().split('\n')
|
||||
except:
|
||||
gips=[]
|
||||
|
||||
if app_debug:
|
||||
print(gips)
|
||||
|
||||
def save_request(request):
|
||||
req_data = {}
|
||||
req_data['endpoint'] = request.endpoint
|
||||
req_data['method'] = request.method
|
||||
req_data['cookies'] = request.cookies
|
||||
req_data['data'] = request.data
|
||||
req_data['headers'] = dict(request.headers)
|
||||
req_data['headers'].pop('Cookie', None)
|
||||
req_data['args'] = request.args
|
||||
req_data['form'] = request.form
|
||||
req_data['remote_addr'] = request.remote_addr
|
||||
return req_data
|
||||
|
||||
|
||||
dictConfig(
|
||||
{
|
||||
"version": 1,
|
||||
"formatters": {
|
||||
"default": {
|
||||
"format": "[%(asctime)s] [%(levelname)s | %(module)s] %(message)s",
|
||||
"datefmt": " %d/%m/%Y %H:%M:%S"
|
||||
},
|
||||
},
|
||||
"handlers": {
|
||||
"console": {
|
||||
"class": "logging.StreamHandler",
|
||||
"formatter": "default",
|
||||
},
|
||||
"file": {
|
||||
"class": "logging.handlers.TimedRotatingFileHandler",
|
||||
"filename": app_path + "/logs/app.log",
|
||||
"when": "D",
|
||||
"interval": 10,
|
||||
"backupCount": 5,
|
||||
"formatter": "default",
|
||||
},
|
||||
|
||||
},
|
||||
"root": {"level": "DEBUG", "handlers": ["console", "file"]},
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@app.after_request
|
||||
def after_request(response):
|
||||
if request.cookies.get('user_id', None) == None:
|
||||
response.set_cookie('user_id', str(random.randint(0, 10000000000)), max_age=60 * 60 * 24 * 365 * 10)
|
||||
return response
|
||||
|
||||
|
||||
def init_session(connection, requestedTag_ignored):
|
||||
pass
|
||||
# cursor = connection.cursor()
|
||||
# cursor.execute("""
|
||||
# ALTER SESSION SET
|
||||
# TIME_ZONE = 'UTC'
|
||||
# NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI'""")
|
||||
|
||||
def start_pool():
|
||||
pool_min = 4
|
||||
pool_max = 4
|
||||
pool_inc = 0
|
||||
|
||||
if app_debug:
|
||||
print('Connecting to {}:{}/{}'.format(os.environ.get("DB_HOST"), os.environ.get("DB_PORT"), os.environ.get("DB_DBNAME")))
|
||||
|
||||
pool = oracledb.create_pool(
|
||||
user=os.environ.get("DB_USERNAME"),
|
||||
password=os.environ.get("DB_PASSWORD"),
|
||||
dsn='{}:{}/{}'.format(os.environ.get("DB_HOST"), os.environ.get("DB_PORT"), os.environ.get("DB_DBNAME")),
|
||||
#params=sample_env.get_pool_params(),
|
||||
min=pool_min,
|
||||
max=pool_max,
|
||||
increment=pool_inc,
|
||||
session_callback=init_session,
|
||||
)
|
||||
|
||||
return pool
|
||||
|
||||
@app.route("/sitemap.xml")
|
||||
def sitemap():
|
||||
conn = pool.acquire()
|
||||
cur = conn.cursor()
|
||||
cur.execute('select distinct trunc(pg/40000)+1 nm from mv_pages');
|
||||
nm = cur.fetchall()
|
||||
return render_template('sitemap.xml', site=site, siten=nm)
|
||||
|
||||
@app.route("/sitemaps/<int:sitemap_id>.xml")
|
||||
def sitemaps_xml(sitemap_id):
|
||||
try:
|
||||
id: int = int(sitemap_id)
|
||||
conn = pool.acquire()
|
||||
cur = conn.cursor()
|
||||
cur.execute('select pg from mv_pages where sitemap_number = :p1', {'p1': id})
|
||||
sitemap_pages = cur.fetchall()
|
||||
return render_template('sitemaps.xml', site=site, sitemap_pages=sitemap_pages)
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
@app.route("/")
|
||||
def index_html():
|
||||
try:
|
||||
if 'maxnum' in app.cache:
|
||||
if app_debug:
|
||||
print('Find in cache max_num={}'.format(app.cache['maxnum']))
|
||||
cnt = app.cache['maxnum']
|
||||
else:
|
||||
conn = pool.acquire()
|
||||
cur = conn.cursor()
|
||||
cur.execute('select max(num) from salvagedb')
|
||||
cnt = "{:,}".format(cur.fetchone()[0])
|
||||
app.cache['maxnum'] = cnt
|
||||
return render_template('index.html', site=site, cnt=cnt ,capcha_site=capcha_site)
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
@app.route("/privacy.html")
|
||||
def privacy_html():
|
||||
try:
|
||||
|
||||
return render_template('privacy.html', site=site)
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
@app.route("/robots.txt")
|
||||
def robot_txt():
|
||||
try:
|
||||
return render_template('robots.txt', site=site)
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
@app.route("/decode", methods = ['POST'])
|
||||
def decode():
|
||||
try:
|
||||
vin = request.form.get('q').strip()
|
||||
g_respone = request.form['g-recaptcha-response']
|
||||
capcha_check = requests.post(url=f'{capcha_site_url}?secret={capcha_site_sec}&response={g_respone}').json()
|
||||
if capcha_check['success'] == False or capcha_check['score'] <0.5:
|
||||
app.logger.info(f'Google reuest: {capcha_site_url}?secret={capcha_site_sec}&response={g_respone}')
|
||||
app.logger.info(f'Bad google answer: {capcha_check}')
|
||||
abort(401)
|
||||
return redirect(f'/detail/{vin}.html', 301)
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
|
||||
@app.route("/decodevin.html")
|
||||
def decodevin_html():
|
||||
try:
|
||||
return render_template('decodevin.html', site=site,capcha_site=capcha_site)
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
@app.route("/database/page<int:page_num>.html")
|
||||
def database_page_prc(page_num):
|
||||
try:
|
||||
pg = int(page_num)
|
||||
conn = pool.acquire()
|
||||
cur = conn.cursor()
|
||||
user_ip = get_ip(request) ## определение ip клиента
|
||||
try:
|
||||
returnVal = cur.callfunc("checkip", int, [user_ip, request.headers.get("CF-IPCountry", 'None'), get_addr(user_ip), 1, 0, 0])
|
||||
except:
|
||||
print(request)
|
||||
app.logger.error(traceback.format_exc())
|
||||
|
||||
cur.execute('select max(pg) from mv_pages')
|
||||
max_page = int(cur.fetchall()[0][0])
|
||||
cur.execute("""select rownum,s.vin,
|
||||
COALESCE ((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='26'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Make'),'UNKNOWN') make,
|
||||
COALESCE ((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='28'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Model'),'UNKNOWN') model,
|
||||
COALESCE ((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='29'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Model Year'),'UNKNOWN') year
|
||||
from salvagedb s
|
||||
where num between (select mi from mv_pages where pg = :p1) and (select ma from mv_pages where pg = :p1)""",
|
||||
{'p1': pg})
|
||||
pgf = cur.fetchall()
|
||||
return render_template('database.html', site=site, cur_page=pg, max_page=max_page, pg=pgf)
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
@app.route("/detail/<vin>.html")
|
||||
def detail_vin(vin):
|
||||
try:
|
||||
conn = pool.acquire()
|
||||
cur = conn.cursor()
|
||||
user_ip = get_ip(request) ## определение ip клиента
|
||||
try:
|
||||
returnVal = cur.callfunc("checkip", int, [user_ip, request.headers.get("CF-IPCountry", 'None'), get_addr(user_ip), 0, 0, 1])
|
||||
except:
|
||||
print(request)
|
||||
app.logger.error(traceback.format_exc())
|
||||
|
||||
cur.execute("""select 'None', COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='26'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Make'),'UNKNOWN') make,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='28'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Model'),'UNKNOWN') model,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='29'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Model Year'),'UNKNOWN') year,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='5'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Body Class'),'UNKNOWN') body,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='13'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Engine Model'),'UNKNOWN') engine,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='9'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Engine Number of Cylinders'),'UNKNOWN') celindr,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='15'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Drive Type'),'-') drive
|
||||
from (select substr(:p1,1,10) svin, :p1 vin from dual) s """, {'p1': vin})
|
||||
res = cur.fetchall()
|
||||
return render_template('details.html', site=site, vin=vin, det=res, capcha_site=capcha_site)
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
|
||||
@app.route('/search', methods = ['GET'])
|
||||
def search():
|
||||
try:
|
||||
user_ip = get_ip(request) ## определение ip клиента
|
||||
vin = request.args.get('q')
|
||||
ua = request.headers.get('User-Agent')
|
||||
app.logger.info(f'AgeNt: {ua}')
|
||||
|
||||
gmedia = False
|
||||
if ua == 'Mediapartners-Google':
|
||||
app.logger.info(f'Find MediaPartner Aget {ua}')
|
||||
if user_ip in gips:
|
||||
gmedia = True
|
||||
else:
|
||||
gmedia = False
|
||||
try:
|
||||
f = open('ips.txt','a')
|
||||
f.write(f'{user_ip}\n')
|
||||
finally:
|
||||
f.close()
|
||||
|
||||
g_respone = request.args.get('g-recaptcha-response')
|
||||
capcha_check = requests.post(url=f'{capcha_site_url}?secret={capcha_site_sec}&response={g_respone}').json()
|
||||
if capcha_check['success'] == False or capcha_check['score'] <0.5:
|
||||
app.logger.info(f'Google reuest: {capcha_site_url}?secret={capcha_site_sec}&response={g_respone}')
|
||||
app.logger.info(f'Bad google answer: {capcha_check}')
|
||||
if gmedia ==False:
|
||||
req_data = save_request(request)
|
||||
app.logger.info(json.dumps(req_data, indent=4, default=str))
|
||||
return 'bad req', 401
|
||||
|
||||
if len(vin) != 17:
|
||||
return 'bad vin!', 500
|
||||
conn = pool.acquire()
|
||||
cur = conn.cursor()
|
||||
returnVal = cur.callfunc("checkip", int, [user_ip, request.headers.get("CF-IPCountry", 'None'), get_addr(user_ip), 0, 1, 0])
|
||||
|
||||
cur.execute("""select 'None', COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='26'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Make'),'UNKNOWN') make,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='28'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Model'),'UNKNOWN') model,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='29'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Model Year'),'UNKNOWN') year,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='5'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Body Class'),'UNKNOWN') body,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='13'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Engine Model'),'UNKNOWN') engine,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='9'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Engine Number of Cylinders'),'UNKNOWN') celindr,
|
||||
COALESCE((select value from m_JSONS_FROM_NHTSA v3 where v3.svin =s.svin and v3.variableid ='15'),(select val from vind2 where svin = substr(s.vin, 1, 8) || '*' || substr(s.vin, 10, 2) and varb = 'Drive Type'),'-') drive
|
||||
from (select substr(:p1,1,10) svin, :p1 vin from dual) s """, {'p1': vin})
|
||||
res = cur.fetchall()
|
||||
cur.execute("""select rownum, t.vin, t.title, t.odo, t.odos, t.dem1, t.dem2, t.year||'/'||t.month from salvagedb t where vin = :p1 and svin = substr(:p1,1,10) """, {'p1': vin})
|
||||
his = cur.fetchall()
|
||||
return render_template('search.html', site=site, vin=vin, det=res, his=his)
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
## API
|
||||
@app.route("/api/search")
|
||||
def api_search():
|
||||
try:
|
||||
access_code = request.args.get('access_code', None)
|
||||
vin = request.args.get('vin', None)
|
||||
|
||||
user_ip = get_ip(request) ## определение ip клиента
|
||||
|
||||
# базовые проверки входящих аргументов
|
||||
if len(vin) != 17 or vin is None:
|
||||
ret = {'status': 'incorrect vin'}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
if len(access_code) > 16 or access_code is None:
|
||||
ret = {'status': 'incorrect access_code'}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
|
||||
conn = pool.acquire()
|
||||
cur = conn.cursor()
|
||||
|
||||
## проверяем access_code
|
||||
cur.execute(
|
||||
'select t.summ, t.found_price, t.notfound_price, t.decode_price from restfact t where access_code = :p1',
|
||||
{'p1': str(access_code)})
|
||||
res = cur.fetchone()
|
||||
summ = res[0]
|
||||
found_price = res[1]
|
||||
notfound_price = res[2]
|
||||
decode_price = res[3]
|
||||
|
||||
### не достаточно средств
|
||||
if summ <= 0:
|
||||
ret = {'status': 'You have insufficient balance.'}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
## ищем в истории
|
||||
cur.execute('select t.odo,t.odos,t.title,t.dem1,t.dem2,t.year,t.month from salvagedb t where vin =:p1 and svin = :p2',
|
||||
{'p1': vin.upper(), 'p2': vin.upper()[:10]})
|
||||
res = cur.fetchall()
|
||||
|
||||
if len(res) > 0:
|
||||
# found
|
||||
dat = []
|
||||
for it in res:
|
||||
dat.append({
|
||||
'odometer': it[0],
|
||||
'odometer_status': it[1],
|
||||
'title': it[2],
|
||||
'damage1': it[3],
|
||||
'damage2': it[4],
|
||||
'add_to_db': '{}-{}'.format(it[5], it[6])
|
||||
})
|
||||
ret = {
|
||||
'status': 'found',
|
||||
'vin': vin.upper(),
|
||||
'cost': found_price,
|
||||
'records': dat
|
||||
}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
cur.execute("insert into billing(access_code, vin, ip, status, dt, cost) values (:p1, :p2, :p3, :p4, CAST(SYSTIMESTAMP AT TIME ZONE 'UTC' AS DATE), :p5)",
|
||||
{'p1': str(access_code), 'p2': str(vin), 'p3': str(user_ip), 'p4': 'FOUND', 'p5': found_price})
|
||||
conn.commit()
|
||||
return response
|
||||
|
||||
else:
|
||||
# nor found
|
||||
ret = {'status': 'NOT FOUND', 'cost': notfound_price}
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
cur.execute("insert into billing(access_code, vin, ip, status, dt, cost) values (:p1, :p2, :p3, :p4, CAST(SYSTIMESTAMP AT TIME ZONE 'UTC' AS DATE), :p5)",
|
||||
{'p1': str(access_code), 'p2': str(vin), 'p3': str(user_ip), 'p4': 'NOT FOUND', 'p5': notfound_price})
|
||||
conn.commit()
|
||||
return response
|
||||
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
@app.route("/api/restfact")
|
||||
def api_restfact():
|
||||
access_code = request.args.get('access_code', None)
|
||||
if len(access_code) > 16 or access_code is None:
|
||||
ret = {'status': 'incorrect access_code'}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
|
||||
conn = pool.acquire()
|
||||
cur = conn.cursor()
|
||||
cur.callproc('make_billing')
|
||||
cur.execute(
|
||||
'select t.summ, t.found_price, t.notfound_price, t.decode_price from restfact t where access_code = :p1',
|
||||
{'p1': str(access_code)})
|
||||
res = cur.fetchone()
|
||||
summ = res[0]
|
||||
if len(res) <= 0:
|
||||
ret = {'status': 'incorrect access_code'}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
else:
|
||||
ret = {
|
||||
'access_code': access_code,
|
||||
'restfact': summ
|
||||
}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
|
||||
@app.route("/api/restfact_detail")
|
||||
def restfact_detail():
|
||||
access_code = request.args.get('access_code', None)
|
||||
if len(access_code) > 16 or access_code is None:
|
||||
ret = {'status': 'incorrect access_code'}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
|
||||
conn = pool.acquire()
|
||||
cur = conn.cursor()
|
||||
cur.callproc('make_billing')
|
||||
cur.execute('select rownum from restfact t where access_code = :p1', {'p1': str(access_code)})
|
||||
res = cur.fetchall()
|
||||
if len(res) <= 0:
|
||||
ret = {'status': 'incorrect access_code'}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
cur.execute("select vin, ip, status, dt, cost from billing where access_code = :p1 and dt > CAST(SYSTIMESTAMP AT TIME ZONE 'UTC' AS DATE) - 45 and made = 1 order by id", {'p1': str(access_code)})
|
||||
res = cur.fetchall()
|
||||
if len(res) <= 0:
|
||||
ret = {'status': 'billing not found'}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
else:
|
||||
dat = []
|
||||
for it in res:
|
||||
dat.append(
|
||||
{
|
||||
'VIN': it[0],
|
||||
'IP': it[1],
|
||||
'STATUS': it[2],
|
||||
'DATETIME': it[3].isoformat(),
|
||||
'COST': it[4]
|
||||
}
|
||||
)
|
||||
ret = {
|
||||
'access_code': access_code,
|
||||
'report': dat
|
||||
}
|
||||
response = app.response_class(
|
||||
response=json.dumps(ret),
|
||||
status=200,
|
||||
mimetype='application/json'
|
||||
)
|
||||
if app.debug:
|
||||
app.logger.debug(json.dumps(ret))
|
||||
return response
|
||||
|
||||
@app.route("/ads.txt")
|
||||
def ads_txt():
|
||||
try:
|
||||
return render_template('ads.txt')
|
||||
except:
|
||||
app.logger.error(traceback.format_exc())
|
||||
return 'bad request!', 500
|
||||
|
||||
@app.route('/favicon.ico')
|
||||
def logo():
|
||||
"""Serves the logo image."""
|
||||
|
||||
with open(app_path+"/static/favicon.ico", 'rb') as bites:
|
||||
return send_file(
|
||||
io.BytesIO(bites.read()),
|
||||
attachment_filename='favicon.ico',
|
||||
mimetype='image/x-icon'
|
||||
)
|
||||
|
||||
def get_ip(req) -> str:
|
||||
if 'X-Forwarded-For' in req.headers:
|
||||
proxy_data = req.headers['X-Forwarded-For']
|
||||
ip_list = proxy_data.split(',')
|
||||
user_ip = req.headers.get("Cf-Connecting-Ip") or ip_list[0] # first address in list is User IP
|
||||
else:
|
||||
user_ip = req.headers.get("Cf-Connecting-Ip") or req.remote_addr
|
||||
return user_ip
|
||||
|
||||
def get_addr(req) -> str:
|
||||
try:
|
||||
return socket.gethostbyaddr(req)[0]
|
||||
except:
|
||||
return req
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Start a pool of connections
|
||||
pool = start_pool()
|
||||
app.run(port=int(os.environ.get('PORT', '8080')))
|
||||
|
||||
414
gips.txt
Normal file
414
gips.txt
Normal file
@ -0,0 +1,414 @@
|
||||
66.249.87.194
|
||||
66.249.87.206
|
||||
66.249.87.193
|
||||
66.249.87.205
|
||||
66.249.87.195
|
||||
66.249.87.204
|
||||
209.85.238.172
|
||||
209.85.238.161
|
||||
209.85.238.162
|
||||
209.85.238.173
|
||||
209.85.238.174
|
||||
209.85.238.163
|
||||
209.85.238.164
|
||||
209.85.238.160
|
||||
209.85.238.165
|
||||
209.85.238.166
|
||||
209.85.238.166
|
||||
209.85.238.166
|
||||
66.249.90.164
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.164
|
||||
66.249.90.164
|
||||
66.249.90.165
|
||||
66.249.90.165
|
||||
66.249.90.163
|
||||
66.249.90.164
|
||||
66.249.90.164
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.163
|
||||
66.249.90.165
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.165
|
||||
66.249.90.160
|
||||
66.249.90.164
|
||||
66.249.90.173
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.161
|
||||
66.249.90.164
|
||||
66.249.90.163
|
||||
66.249.90.164
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.165
|
||||
66.249.90.165
|
||||
66.249.90.163
|
||||
66.249.90.165
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.164
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.164
|
||||
66.249.90.164
|
||||
66.249.90.165
|
||||
66.249.90.172
|
||||
66.249.92.193
|
||||
66.249.92.193
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.193
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.87.192
|
||||
66.249.87.192
|
||||
66.249.92.201
|
||||
72.14.199.162
|
||||
72.14.199.163
|
||||
72.14.199.161
|
||||
72.14.199.163
|
||||
72.14.199.161
|
||||
72.14.199.165
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.164
|
||||
72.14.199.165
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.161
|
||||
72.14.199.161
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.161
|
||||
72.14.199.163
|
||||
72.14.199.164
|
||||
72.14.199.163
|
||||
72.14.199.165
|
||||
72.14.199.164
|
||||
72.14.199.164
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
66.249.92.200
|
||||
66.249.87.128
|
||||
66.249.87.128
|
||||
66.249.87.132
|
||||
66.249.87.132
|
||||
66.249.87.196
|
||||
66.249.87.196
|
||||
66.249.92.199
|
||||
66.249.87.131
|
||||
66.249.87.133
|
||||
66.249.87.131
|
||||
66.249.87.131
|
||||
66.249.87.141
|
||||
66.249.87.129
|
||||
66.249.87.133
|
||||
66.249.90.171
|
||||
74.125.218.227
|
||||
74.125.218.231
|
||||
74.125.218.231
|
||||
74.125.218.225
|
||||
74.125.218.232
|
||||
74.125.218.232
|
||||
74.125.218.233
|
||||
74.125.218.225
|
||||
74.125.218.231
|
||||
74.125.218.226
|
||||
74.125.218.225
|
||||
74.125.218.232
|
||||
74.125.218.225
|
||||
74.125.218.227
|
||||
74.125.218.226
|
||||
74.125.218.226
|
||||
74.125.218.225
|
||||
74.125.218.226
|
||||
74.125.218.227
|
||||
74.125.218.233
|
||||
74.125.218.233
|
||||
74.125.218.227
|
||||
74.125.218.226
|
||||
74.125.218.232
|
||||
74.125.218.225
|
||||
74.125.218.233
|
||||
74.125.218.233
|
||||
74.125.218.227
|
||||
72.14.199.193
|
||||
72.14.199.37
|
||||
20
ips.py
Normal file
20
ips.py
Normal file
@ -0,0 +1,20 @@
|
||||
import os
|
||||
import socket
|
||||
import traceback
|
||||
|
||||
data = open('ips.txt').read().splitlines()
|
||||
f = open('gips.txt','w')
|
||||
|
||||
for it in data:
|
||||
try:
|
||||
hostname = socket.gethostbyaddr(it)
|
||||
hs = hostname[0].lower()
|
||||
if hs.startswith('rate') and hs.endswith('google.com'):
|
||||
print(f'GootHost {hs} ip: {it}')
|
||||
f.write(f'{it}\n')
|
||||
except:
|
||||
print(traceback.format_exc())
|
||||
hostname=''
|
||||
print(f'{it} -- {hostname}')
|
||||
|
||||
|
||||
451
ips.txt
Normal file
451
ips.txt
Normal file
@ -0,0 +1,451 @@
|
||||
66.249.87.194
|
||||
66.249.87.206
|
||||
66.249.87.193
|
||||
66.249.87.205
|
||||
66.249.87.195
|
||||
66.249.87.204
|
||||
172.71.147.61
|
||||
172.71.147.62
|
||||
172.69.58.90
|
||||
172.69.58.91
|
||||
172.68.150.74
|
||||
172.71.147.156
|
||||
172.71.147.155
|
||||
172.71.150.170
|
||||
172.71.150.171
|
||||
172.71.146.219
|
||||
172.71.151.133
|
||||
172.71.150.241
|
||||
172.71.147.208
|
||||
172.69.7.138
|
||||
172.70.178.90
|
||||
172.69.6.123
|
||||
172.69.7.59
|
||||
172.70.126.63
|
||||
172.70.131.189
|
||||
172.71.254.6
|
||||
172.71.254.163
|
||||
172.69.59.90
|
||||
172.70.126.58
|
||||
172.69.7.90
|
||||
172.69.6.151
|
||||
172.69.7.55
|
||||
172.70.178.201
|
||||
172.69.7.81
|
||||
172.70.131.172
|
||||
172.69.6.158
|
||||
172.70.130.96
|
||||
172.69.6.196
|
||||
172.69.6.179
|
||||
172.69.6.15
|
||||
172.70.131.99
|
||||
172.69.58.68
|
||||
172.69.6.228
|
||||
209.85.238.172
|
||||
209.85.238.161
|
||||
209.85.238.162
|
||||
209.85.238.173
|
||||
209.85.238.174
|
||||
209.85.238.163
|
||||
209.85.238.164
|
||||
209.85.238.160
|
||||
209.85.238.165
|
||||
209.85.238.166
|
||||
209.85.238.166
|
||||
209.85.238.166
|
||||
66.249.90.164
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.164
|
||||
66.249.90.164
|
||||
66.249.90.165
|
||||
66.249.90.165
|
||||
66.249.90.163
|
||||
66.249.90.164
|
||||
66.249.90.164
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.163
|
||||
66.249.90.165
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.165
|
||||
66.249.90.160
|
||||
66.249.90.164
|
||||
66.249.90.173
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.161
|
||||
66.249.90.164
|
||||
66.249.90.163
|
||||
66.249.90.164
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.165
|
||||
66.249.90.165
|
||||
66.249.90.163
|
||||
66.249.90.165
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.173
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.160
|
||||
66.249.90.163
|
||||
66.249.90.163
|
||||
66.249.90.164
|
||||
66.249.90.160
|
||||
66.249.90.161
|
||||
66.249.90.161
|
||||
66.249.90.164
|
||||
66.249.90.164
|
||||
66.249.90.165
|
||||
66.249.90.172
|
||||
66.249.92.193
|
||||
66.249.92.193
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.193
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.202
|
||||
66.249.92.194
|
||||
66.249.92.194
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.203
|
||||
66.249.92.203
|
||||
66.249.92.195
|
||||
66.249.92.195
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.202
|
||||
66.249.92.203
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.195
|
||||
66.249.92.204
|
||||
66.249.92.202
|
||||
66.249.92.204
|
||||
66.249.87.192
|
||||
66.249.87.192
|
||||
66.249.92.201
|
||||
72.14.199.162
|
||||
72.14.199.163
|
||||
72.14.199.161
|
||||
72.14.199.163
|
||||
72.14.199.161
|
||||
72.14.199.165
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.164
|
||||
72.14.199.165
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.161
|
||||
72.14.199.161
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.161
|
||||
72.14.199.163
|
||||
72.14.199.164
|
||||
72.14.199.163
|
||||
72.14.199.165
|
||||
72.14.199.164
|
||||
72.14.199.164
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
72.14.199.163
|
||||
66.249.92.200
|
||||
66.249.87.128
|
||||
66.249.87.128
|
||||
66.249.87.132
|
||||
66.249.87.132
|
||||
66.249.87.196
|
||||
66.249.87.196
|
||||
66.249.92.199
|
||||
66.249.87.131
|
||||
66.249.87.133
|
||||
66.249.87.131
|
||||
66.249.87.131
|
||||
66.249.87.141
|
||||
66.249.87.129
|
||||
66.249.87.133
|
||||
66.249.90.171
|
||||
74.125.218.227
|
||||
74.125.218.231
|
||||
74.125.218.231
|
||||
74.125.218.225
|
||||
74.125.218.232
|
||||
74.125.218.232
|
||||
74.125.218.233
|
||||
74.125.218.225
|
||||
74.125.218.231
|
||||
74.125.218.226
|
||||
74.125.218.225
|
||||
74.125.218.232
|
||||
74.125.218.225
|
||||
74.125.218.227
|
||||
74.125.218.226
|
||||
74.125.218.226
|
||||
74.125.218.225
|
||||
74.125.218.226
|
||||
74.125.218.227
|
||||
74.125.218.233
|
||||
74.125.218.233
|
||||
74.125.218.227
|
||||
74.125.218.226
|
||||
74.125.218.232
|
||||
74.125.218.225
|
||||
74.125.218.233
|
||||
74.125.218.233
|
||||
74.125.218.227
|
||||
72.14.199.193
|
||||
72.14.199.37
|
||||
1
killapp.sh
Normal file
1
killapp.sh
Normal file
@ -0,0 +1 @@
|
||||
ps -ef | grep python | grep app.py | awk '{print $2;system("sudo kill -9 " $2)}'
|
||||
2
refresh_ip.sh
Normal file
2
refresh_ip.sh
Normal file
@ -0,0 +1,2 @@
|
||||
cd /home/salvagedb/app
|
||||
python3 ips.py
|
||||
3
requirements.txt
Normal file
3
requirements.txt
Normal file
@ -0,0 +1,3 @@
|
||||
flask
|
||||
oracledb
|
||||
cacheing
|
||||
9
static/bootstrap-responsive.min.css
vendored
Normal file
9
static/bootstrap-responsive.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
12
static/bootstrap.min.css
vendored
Normal file
12
static/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
static/curved-arrow.png
Normal file
BIN
static/curved-arrow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.0 KiB |
BIN
static/favicon.ico
Normal file
BIN
static/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
BIN
static/faviconV2.png
Normal file
BIN
static/faviconV2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 463 B |
556
static/plus.css
Normal file
556
static/plus.css
Normal file
@ -0,0 +1,556 @@
|
||||
/* Mega Menu*/
|
||||
.plus-mega a{
|
||||
text-decoration: none;
|
||||
padding-left: 20px;
|
||||
display: block;
|
||||
}
|
||||
.plus-mega li{
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
.dropdown-menu.cols2{
|
||||
min-width: 280px;
|
||||
}
|
||||
.dropdown-menu.cols2 .span2{
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
|
||||
|
||||
.dropdown-menu.cols3{
|
||||
min-width: 420px;
|
||||
}
|
||||
.dropdown-menu.cols3 .span2{
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
|
||||
|
||||
.dropdown-menu.cols4{
|
||||
min-width: 560px;
|
||||
}
|
||||
.dropdown-menu.cols4 .span2{
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
|
||||
|
||||
.dropdown-menu.cols5{
|
||||
min-width: 700px;
|
||||
}
|
||||
.dropdown-menu.cols5 .span2{
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
|
||||
|
||||
.dropdown-menu.cols6{
|
||||
min-width: 840px;
|
||||
}
|
||||
.dropdown-menu.cols6 .span2{
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
|
||||
.plus-mega li > a > i{
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
|
||||
/* Menu With Images */
|
||||
.dropdown-menu > li > a > i{
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Comments */
|
||||
.plus-comment {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 30px;
|
||||
-webkit-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.plus-comment .pointer{
|
||||
border:solid 10px transparent;
|
||||
border-right-color:#FFF;
|
||||
position:absolute;
|
||||
margin:20px 0px 0 80px;
|
||||
|
||||
}
|
||||
|
||||
.plus-comment img{
|
||||
float:left;
|
||||
max-width: 100%;
|
||||
margin-left: 20px;
|
||||
|
||||
}
|
||||
|
||||
.plus-comment p{
|
||||
color:#000;
|
||||
padding: 10px;
|
||||
margin-left: 100px;
|
||||
background-color: #FFF;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
|
||||
/* box-shadow */
|
||||
-webkit-box-shadow: rgba(0,0,0,0.2) 0px 1px 2px;
|
||||
-moz-box-shadow: rgba(0,0,0,0.2) 0px 1px 2px;
|
||||
box-shadow: rgba(0,0,0,0.5) 0px 2px 3px;
|
||||
}
|
||||
|
||||
.plus-comment .plus-comment-details{
|
||||
float: left;
|
||||
width: 90px;
|
||||
}
|
||||
.plus-comment-details label{
|
||||
font-weight: normal;
|
||||
font-size: 12px;
|
||||
line-height: 15px;
|
||||
margin-left: 0px;
|
||||
margin-top: 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.plus-comment-details .plus-comment-date{
|
||||
margin-top: 0px;
|
||||
padding: 0px;
|
||||
font-size: 10px;
|
||||
|
||||
}
|
||||
.plus-comment .plus-comment-tools{
|
||||
margin-left: 100px;
|
||||
}
|
||||
.plus-comment .plus-comment-tools > a{
|
||||
margin-left: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
/* reply */
|
||||
|
||||
|
||||
.plus-comment-reply {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 30px;
|
||||
-webkit-border-radius: 10px;
|
||||
-moz-border-radius: 10px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.plus-comment-reply .pointer{
|
||||
border:solid 10px transparent;
|
||||
border-right-color:#FFF;
|
||||
position:absolute;
|
||||
margin:20px 0px 0 140px;
|
||||
|
||||
}
|
||||
|
||||
.plus-comment-reply img{
|
||||
float:left;
|
||||
max-width: 100%;
|
||||
margin-left: 20px;
|
||||
|
||||
}
|
||||
|
||||
.plus-comment-reply p{
|
||||
color:#000;
|
||||
padding: 10px;
|
||||
margin-left: 160px;
|
||||
background-color: #FFF;
|
||||
-webkit-border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
border-radius: 5px;
|
||||
|
||||
/* box-shadow */
|
||||
-webkit-box-shadow: rgba(0,0,0,0.2) 0px 1px 2px;
|
||||
-moz-box-shadow: rgba(0,0,0,0.2) 0px 1px 2px;
|
||||
box-shadow: rgba(0,0,0,0.5) 0px 2px 3px;
|
||||
}
|
||||
|
||||
.plus-comment-reply .plus-comment-details{
|
||||
float: left;
|
||||
width: 90px;
|
||||
margin-left: 60px;
|
||||
}
|
||||
|
||||
.plus-comment-reply .plus-comment-tools{
|
||||
margin-left: 150px;
|
||||
}
|
||||
.plus-comment-reply .plus-comment-tools > a{
|
||||
margin-left: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* ////////////////////////////// */
|
||||
|
||||
|
||||
/* Draggable */
|
||||
|
||||
.plus-draggable{
|
||||
padding: 0px;
|
||||
}
|
||||
.plus-draggable p{
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/*/////////////////////////*/
|
||||
|
||||
/* Collapsable */
|
||||
|
||||
.plus-collapsible{
|
||||
padding: 0px;
|
||||
}
|
||||
.plus-collapsible p{
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.plus-collapsible > .navbar{
|
||||
margin-bottom: 0px !important;
|
||||
}
|
||||
|
||||
|
||||
/* ////////////////// */
|
||||
|
||||
/* Box */
|
||||
|
||||
.plus-box{
|
||||
padding: 0px;
|
||||
}
|
||||
.plus-box p{
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
/* ///////////////// */
|
||||
|
||||
/* Vertical Menu */
|
||||
.plus-verticalMenu > ul{
|
||||
display:none;
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.plus-verticalMenu > ul > li >a{
|
||||
text-decoration: none;
|
||||
color:inherit;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
/* ///////////// */
|
||||
|
||||
ul.nav li.dropdown:hover ul.dropdown-menu.plus-hover{
|
||||
display: block;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a.menu:after, .dropdown-toggle:after {
|
||||
content: none;
|
||||
}
|
||||
|
||||
/* ///////////////*/
|
||||
|
||||
|
||||
/* Pricing Table */
|
||||
|
||||
.plus-pricing{
|
||||
text-align: center;
|
||||
list-style: none;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
|
||||
-webkit-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
-moz-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
|
||||
}
|
||||
.plus-pricing > li{
|
||||
background-color: #fff;
|
||||
padding: 0.9375em;
|
||||
border-bottom-width: 1px;
|
||||
border-bottom-style: solid;
|
||||
}
|
||||
.plus-pricing-head{
|
||||
background-color: #DDDDDD;
|
||||
padding: 0.9375em 1.25em;
|
||||
}
|
||||
.plus-pricing-head h2{
|
||||
margin: 0;
|
||||
}
|
||||
.plus-pricing-price{
|
||||
background-color: #eee;
|
||||
padding: 0.9375em 1.25em;
|
||||
}
|
||||
.plus-pricing-price h3{
|
||||
margin: 0;
|
||||
}
|
||||
.plus-pricing-details{
|
||||
padding: 0.9375em;
|
||||
color:#000;
|
||||
}
|
||||
|
||||
/* ////////////////////////// */
|
||||
|
||||
/* Picture Caption */
|
||||
|
||||
.plus-pic{
|
||||
border: solid 2px #ccc;
|
||||
position: relative;
|
||||
|
||||
}
|
||||
.plus-pic > img{
|
||||
width:100%;
|
||||
}
|
||||
.plus-pic a{
|
||||
color:#fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
.plus-pic > .plus-badge{
|
||||
background-color: #5DCE0C;
|
||||
padding: 2px 5px;
|
||||
position: absolute;
|
||||
color: #fff;
|
||||
-webkit-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
-moz-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
}
|
||||
|
||||
.plus-pic > .btn{
|
||||
position: absolute;
|
||||
-webkit-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
-moz-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
}
|
||||
|
||||
.plus-pic > .right-top{
|
||||
right:-7px;
|
||||
top:10px;
|
||||
}
|
||||
|
||||
.plus-pic > .left-top{
|
||||
left:-7px;
|
||||
top:10px;
|
||||
}
|
||||
|
||||
.plus-pic > .left-bottom{
|
||||
left:-7px;
|
||||
bottom:10px;
|
||||
}
|
||||
|
||||
.plus-pic > .right-bottom{
|
||||
right:-7px;
|
||||
bottom:10px;
|
||||
}
|
||||
|
||||
|
||||
/* /////////////// */
|
||||
|
||||
/* Image Hovers */
|
||||
.plus-pic .plus-hover{
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.plus-pic:hover .plus-hover{
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* /////////// */
|
||||
.plus-empty-5{
|
||||
content: " ";
|
||||
height: 5px;
|
||||
}
|
||||
.plus-empty-10{
|
||||
content: " ";
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.plus-empty-20{
|
||||
content: " ";
|
||||
height: 20px;
|
||||
}
|
||||
.plus-empty-30{
|
||||
content: " ";
|
||||
height: 30px;
|
||||
}
|
||||
.plus-empty-40{
|
||||
content: " ";
|
||||
height: 40px;
|
||||
}
|
||||
.plus-empty-50{
|
||||
content: " ";
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
/* Post */
|
||||
.plus-post{
|
||||
position: relative;
|
||||
-webkit-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
-moz-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
}
|
||||
.plus-post > .arrow-right{
|
||||
position: absolute;
|
||||
border-top: 10px solid transparent;
|
||||
border-bottom: 10px solid transparent;
|
||||
border-left: 10px solid #ccc;
|
||||
right: -10px;
|
||||
top: 10px;
|
||||
}
|
||||
.plus-social-tools > a{
|
||||
|
||||
margin-left: 10px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.plus-social-tools{
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
|
||||
/* Metro Nav */
|
||||
.plus-metro{
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
border-bottom: none;
|
||||
position: absolute;
|
||||
left:-20px;
|
||||
z-index: 999;
|
||||
overflow: visible;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.plus-metro.plus-metro-right{
|
||||
right:20px;
|
||||
}
|
||||
|
||||
.plus-metro-nav a{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.navbar .nav > li > .plus-metro:after {
|
||||
border-bottom: none;
|
||||
}
|
||||
.navbar .nav > li > .plus-metro:before {
|
||||
border-bottom:none;
|
||||
}
|
||||
|
||||
|
||||
.plus-metro-nav{
|
||||
|
||||
-webkit-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
-moz-box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
box-shadow: rgba(0,0,0,0.2) 0px 1px 3px;
|
||||
|
||||
}
|
||||
|
||||
.plus-metro-nav .box{
|
||||
height: 100px;
|
||||
margin: 5px;
|
||||
display: table;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.plus-metro-nav .box.red{
|
||||
background-color: #D32C2C;
|
||||
}
|
||||
.plus-metro-nav .box.lightblue{
|
||||
background-color: #00A8EC;
|
||||
}
|
||||
.plus-metro-nav .box.darkblue{
|
||||
background-color: #0061DC;
|
||||
}
|
||||
.plus-metro-nav .box.green{
|
||||
background-color: #43B51F;
|
||||
}
|
||||
.plus-metro-nav .box.purple{
|
||||
background-color: #640F6C;
|
||||
}
|
||||
.plus-metro-nav .box.orange{
|
||||
background-color: #43B51F;
|
||||
}
|
||||
.plus-metro-nav .box.facebook{
|
||||
background-color: #3C5B9B;
|
||||
}
|
||||
.plus-metro-nav .box.pink{
|
||||
background-color: #D6668F;
|
||||
}
|
||||
.plus-metro-nav .box.deviant{
|
||||
background-color: #455449;
|
||||
}
|
||||
.plus-metro-nav .box.brown{
|
||||
background-color: #BF7A30;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.plus-metro-nav .box > h5{
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.plus-metro-nav .box > h5 > i{
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.plus-metro-nav .box.height2{
|
||||
height: 210px;
|
||||
}
|
||||
|
||||
.plus-metro-nav .box.height3{
|
||||
height: 320px;
|
||||
}
|
||||
|
||||
.plus-metro-nav .span6.box{
|
||||
padding-right: 0px;
|
||||
}
|
||||
|
||||
.plus-metro > .arrow-up {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid black;
|
||||
position: absolute;
|
||||
left:40px;
|
||||
top:-1px;
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 980px) {
|
||||
.plus-metro-nav{
|
||||
height: auto !important;
|
||||
z-index: 999;
|
||||
left:0px;
|
||||
position: static !important;
|
||||
float: none;
|
||||
clear: both;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.plus-metro{
|
||||
top: auto;
|
||||
float: none;
|
||||
}
|
||||
|
||||
.plus-metro-nav > a{
|
||||
padding: 0px !important;
|
||||
}
|
||||
|
||||
.plus-metro > .arrow-up{
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.plus-metro-nav .box{
|
||||
position: static;
|
||||
width:90px;
|
||||
height: 90px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
}
|
||||
215
static/plus2.css
Normal file
215
static/plus2.css
Normal file
@ -0,0 +1,215 @@
|
||||
body {
|
||||
padding-top: 60px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
wrapper {
|
||||
width: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.share_buttons {
|
||||
width: 268px;
|
||||
height: 38px;
|
||||
float: right;
|
||||
padding-top: 10px;
|
||||
padding-left: 1px;
|
||||
padding-right: 10px;
|
||||
margin-top: 0;
|
||||
-moz-border-radius: 4px;
|
||||
-webkit-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
background: #E2E2E2;
|
||||
}
|
||||
|
||||
.share_buttons .facebook {
|
||||
display: block;
|
||||
width: 79px;
|
||||
height: 27px;
|
||||
margin-left: 10px;
|
||||
float: left;
|
||||
background:
|
||||
transparent url('https://storage.googleapis.com/static.salvagedb.com/tray_share_buttons.png') no-repeat 0 0;
|
||||
}
|
||||
|
||||
.share_buttons .twitter {
|
||||
display: block;
|
||||
width: 79px;
|
||||
height: 27px;
|
||||
margin-left: 10px;
|
||||
float: left;
|
||||
background:
|
||||
transparent url('https://storage.googleapis.com/static.salvagedb.com/tray_share_buttons.png') no-repeat 0 -54px;
|
||||
}
|
||||
|
||||
|
||||
.share_buttons .google {
|
||||
width: 79px;
|
||||
height: 27px;
|
||||
margin-left: 10px;
|
||||
float: left;
|
||||
background:
|
||||
transparent url('https://storage.googleapis.com/static.salvagedb.com/tray_share_buttons.png') no-repeat 0 -108px;
|
||||
}
|
||||
|
||||
input {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#find_your_car{text-align:left;color:#06c;margin-top:0;}
|
||||
#s1earch_bar{width:700px;}
|
||||
#vininput{width:300px;font-size:1.5em;height:35px;padding:0 0 0 10px;}
|
||||
#s1earch_bar{width:700px;margin:0 0 0 -320px;}
|
||||
#s1earch_bar .search_box{height:35px;font-size:1.5em;padding:0 0 0 10px;}
|
||||
#s1earch_bar #make_model{width:350px;}
|
||||
#s1earch_bar #near{margin:5px 5px 0px 5px;font-size:18px;}
|
||||
#s1earch_bar #zipcode{width:100px;}
|
||||
#s1earch_bar #go1_button{position:relative;top:1px;height:37px;font-size:20px;margin-left:8px;}
|
||||
#go_button{top:1px;height:37px;font-size:22px;margin-left:8px;}
|
||||
|
||||
#hor-zebra
|
||||
{
|
||||
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
|
||||
font-size: 12px;
|
||||
margin: 45px;
|
||||
background-image: url("https://storage.googleapis.com/static.salvagedb.com/menu-bg.png?v=1");
|
||||
background-repeat:no-repeat;
|
||||
text-align: left;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
#hor-zebra a
|
||||
{
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
padding: 10px 8px;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
#hor-zebra a:hover {text-decoration:underline}
|
||||
#hor-zebra th
|
||||
{
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
padding: 10px 8px;
|
||||
color: #039;
|
||||
}
|
||||
#hor-zebra td
|
||||
{
|
||||
padding: 8px;
|
||||
color: #669;
|
||||
}
|
||||
|
||||
#hor-zebra .odd
|
||||
{
|
||||
background: #e8edff;
|
||||
}
|
||||
|
||||
#hor-minimalist-a
|
||||
{
|
||||
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
|
||||
font-size: 12px;
|
||||
margin: 1px;
|
||||
width: 495px;
|
||||
border-collapse: collapse;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
||||
#hor-minimalist-a th
|
||||
{
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
color: #039;
|
||||
padding: 10px 8px;
|
||||
border-bottom: 2px solid #6678b1;
|
||||
}
|
||||
|
||||
#hor-minimalist-a td
|
||||
{
|
||||
color: #669;
|
||||
padding: 9px 8px 0px 8px;
|
||||
}
|
||||
|
||||
#hor-minimalist-a a
|
||||
{
|
||||
color: #669;
|
||||
padding: 9px 8px 0px 8px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#hor-minimalist-a tbody tr:hover a
|
||||
{
|
||||
color: #009;
|
||||
}
|
||||
|
||||
|
||||
#hor-minimalist-a tbody tr:hover td
|
||||
{
|
||||
color: #009;
|
||||
}
|
||||
|
||||
#hor-minimalist2-a
|
||||
{
|
||||
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
|
||||
font-size: 12px;
|
||||
margin: 1px;
|
||||
border-collapse: collapse;
|
||||
text-align: left;
|
||||
}
|
||||
#hor-minimalist2-a th
|
||||
{
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
color: #039;
|
||||
padding: 10px 8px;
|
||||
border-bottom: 2px solid #6678b1;
|
||||
}
|
||||
|
||||
#hor-minimalist2-a td
|
||||
{
|
||||
color: #669;
|
||||
padding: 9px 8px 0px 8px;
|
||||
}
|
||||
|
||||
#hor-minimalist2-a a
|
||||
{
|
||||
color: #669;
|
||||
padding: 9px 8px 0px 8px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#hor-minimalist2-a tbody tr:hover a
|
||||
{
|
||||
color: #009;
|
||||
}
|
||||
|
||||
|
||||
#hor-minimalist2-a tbody tr:hover td
|
||||
{
|
||||
color: #009;
|
||||
}
|
||||
|
||||
|
||||
#one-column-emphasis
|
||||
{
|
||||
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
|
||||
font-size: 12px;
|
||||
margin: 45px;
|
||||
width: 480px;
|
||||
text-align: left;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
#one-column-emphasis th
|
||||
{
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
padding: 12px 15px;
|
||||
color: #039;
|
||||
}
|
||||
#one-column-emphasis td
|
||||
{
|
||||
padding: 10px 15px;
|
||||
color: #669;
|
||||
border-top: 1px solid #e8edff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
307
static/privacy.css
Normal file
307
static/privacy.css
Normal file
@ -0,0 +1,307 @@
|
||||
html#iubenda_policy,#iubenda_policy body{
|
||||
margin:0;
|
||||
padding:0
|
||||
}
|
||||
html#iubenda_policy{
|
||||
overflow-y:scroll;
|
||||
font-size:100%;
|
||||
-webkit-text-size-adjust:100%;
|
||||
-ms-text-size-adjust:100%
|
||||
}
|
||||
#iubenda_policy h1,#iubenda_policy h2,#iubenda_policy h3,#iubenda_policy h4,#iubenda_policy p,#iubenda_policy strong,#iubenda_policy li,#iubenda_policy ul{
|
||||
margin:0;
|
||||
padding:0;
|
||||
border:0;
|
||||
font-weight:normal;
|
||||
font-style:normal;
|
||||
font-size:100%;
|
||||
line-height:1;
|
||||
font-family:inherit
|
||||
}
|
||||
#iubenda_policy ul{
|
||||
list-style:none
|
||||
}
|
||||
html#iubenda_policy{
|
||||
-webkit-font-smoothing:antialiased
|
||||
}
|
||||
#iubenda_policy p{
|
||||
font-size:13px;
|
||||
font-weight:normal;
|
||||
line-height:18px;
|
||||
margin-bottom:9px
|
||||
}
|
||||
#iubenda_policy h1,#iubenda_policy h2,#iubenda_policy h3,#iubenda_policy h4{
|
||||
font-weight:bold;
|
||||
color:#59636d
|
||||
}
|
||||
#iubenda_policy h1{
|
||||
margin-bottom:18px;
|
||||
font-size:30px;
|
||||
line-height:2
|
||||
}
|
||||
#iubenda_policy h2{
|
||||
font-size:24px;
|
||||
margin-bottom:18px;
|
||||
line-height:1.5
|
||||
}
|
||||
#iubenda_policy h3,#iubenda_policy h4{
|
||||
margin-bottom:9px
|
||||
}
|
||||
#iubenda_policy h3{
|
||||
font-size:18px
|
||||
}
|
||||
#iubenda_policy h4{
|
||||
font-size:16px
|
||||
}
|
||||
#iubenda_policy ul{
|
||||
list-style:disc;
|
||||
padding-top:5px
|
||||
}
|
||||
#iubenda_policy ul li{
|
||||
list-style:disc;
|
||||
line-height:19px;
|
||||
font-size:13px;
|
||||
margin-left:30px;
|
||||
margin-top:2px
|
||||
}
|
||||
#iubenda_policy hr{
|
||||
margin:0 0 19px;
|
||||
border:0;
|
||||
border-bottom:1px solid #eee
|
||||
}
|
||||
#iubenda_policy strong{
|
||||
font-style:inherit;
|
||||
font-weight:bold
|
||||
}
|
||||
#iubenda_policy .box_primary{
|
||||
border:1px solid #c0c1c1;
|
||||
border-bottom-color:#a8aaab;
|
||||
-webkit-box-shadow:0 1px 0 #ebebec;
|
||||
-moz-box-shadow:0 1px 0 #ebebec;
|
||||
box-shadow:0 1px 0 #ebebec;
|
||||
-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.1);
|
||||
-moz-box-shadow:0 1px 0 rgba(0,0,0,0.1);
|
||||
box-shadow:0 1px 0 rgba(0,0,0,0.1);
|
||||
background:#FFF
|
||||
}
|
||||
#iubenda_policy .box_10{
|
||||
padding:10px;
|
||||
-webkit-border-radius:3px;
|
||||
-moz-border-radius:3px;
|
||||
border-radius:3px;
|
||||
margin-bottom:15px
|
||||
}
|
||||
#iubenda_policy .box_10>.w_icon_24,#iubenda_policy .box_10.expand>.w_icon_24,#iubenda_policy .box_10>.w_icon_24.expand-click,#iubenda_policy .box_10.expand>.w_icon_24.expand-click{
|
||||
padding-left:45px;
|
||||
background-repeat:no-repeat;
|
||||
background-color:transparent;
|
||||
background-position-x:10px;
|
||||
background-position-y:10px;
|
||||
background-position:10px 10px
|
||||
}
|
||||
#iubenda_policy hr{
|
||||
padding-top:15px;
|
||||
margin:0 0 15px 0
|
||||
}
|
||||
#iubenda_policy .expand-click{
|
||||
cursor:pointer;
|
||||
position:relative
|
||||
}
|
||||
#iubenda_policy .box_10.expand .expand-click{
|
||||
margin:-10px;
|
||||
padding:12px 25px 13px 10px
|
||||
}
|
||||
#iubenda_policy .box_10.expand .expand-content{
|
||||
margin-top:10px
|
||||
}
|
||||
#iubenda_policy .box_10.expand .expand-content>*:first-child{
|
||||
margin-top:0;
|
||||
padding-top:0
|
||||
}
|
||||
#iubenda_policy .expand .expand-click,#iubenda_policy .box_10.expand .expand-click{
|
||||
border-bottom:1px dotted #DDD;
|
||||
margin-bottom:10px;
|
||||
-webkit-transition:.2s linear all;
|
||||
-moz-transition:.2s linear all;
|
||||
-ms-transition:.2s linear all;
|
||||
-o-transition:.2s linear all;
|
||||
transition:.2s linear all
|
||||
}
|
||||
html#iubenda_policy,#iubenda_policy body{
|
||||
background-color:#FFF
|
||||
}
|
||||
#iubenda_policy{
|
||||
font-family:"Helvetica Neue",Helvetica,Arial,FreeSans,sans-serif;
|
||||
font-size:13px;
|
||||
font-weight:normal;
|
||||
line-height:18px;
|
||||
color:#59636d
|
||||
}
|
||||
#iubenda_policy body{
|
||||
margin:0
|
||||
}
|
||||
#iubenda_policy .icon_ribbon{
|
||||
background-image:url(data:image/png;
|
||||
base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAW0lEQVR42u3OwQkAIQxE0XSWVrazlJpdQdGDC0pQEf7A3ELmibsPV1V9pDM%2FAQAAAAAAAAAAAAAAEAXY1%2BcUwCQnITYD6niL2ASo4z3EaoDKf8qNBQHxArgK8ALKMXCw%2Bim7vwAAAABJRU5ErkJggg%3D%3D)
|
||||
}
|
||||
#iubenda_policy .iub_base_container{
|
||||
-webkit-border-radius:3px;
|
||||
-moz-border-radius:3px;
|
||||
border-radius:3px;
|
||||
background:#fff;
|
||||
color:#6b6b6b;
|
||||
position:relative
|
||||
}
|
||||
#iubenda_policy p{
|
||||
line-height:19px;
|
||||
margin:0;
|
||||
padding-top:11px
|
||||
}
|
||||
#iubenda_policy .iub_content{
|
||||
position:relative;
|
||||
padding:25px 30px;
|
||||
margin:0 auto;
|
||||
-webkit-border-radius:3px 3px 0 0;
|
||||
-moz-border-radius:3px 3px 0 0;
|
||||
border-radius:3px 3px 0 0
|
||||
}
|
||||
#iubenda_policy #wbars{
|
||||
position:relative;
|
||||
overflow-y:auto;
|
||||
overflow-x:hidden
|
||||
}
|
||||
#iubenda_policy .iub_header{
|
||||
border-bottom:1px dotted #dfdfdf;
|
||||
padding-bottom:25px;
|
||||
position:relative
|
||||
}
|
||||
#iubenda_policy .iub_header p{
|
||||
margin:0;
|
||||
padding:0
|
||||
}
|
||||
#iubenda_policy h1,#iubenda_policy h2,#iubenda_policy h3{
|
||||
color:#3f3f3f;
|
||||
margin:0
|
||||
}
|
||||
#iubenda_policy h1+p,#iubenda_policy h2+p,#iubenda_policy h3+p{
|
||||
padding-top:5px
|
||||
}
|
||||
#iubenda_policy h1{
|
||||
font-size:19px;
|
||||
font-weight:normal;
|
||||
line-height:23px;
|
||||
margin-bottom:5px
|
||||
}
|
||||
#iubenda_policy h2{
|
||||
font-size:17px;
|
||||
font-weight:bold;
|
||||
line-height:21px;
|
||||
padding-top:21px
|
||||
}
|
||||
#iubenda_policy h3{
|
||||
font-size:13px;
|
||||
line-height:19px;
|
||||
font-weight:bold;
|
||||
padding-top:24px
|
||||
}
|
||||
#iubenda_policy h3+p{
|
||||
padding-top:0
|
||||
}
|
||||
#iubenda_policy h4{
|
||||
font-size:13px;
|
||||
font-weight:bold;
|
||||
padding-top:19px;
|
||||
margin-bottom:0
|
||||
}
|
||||
#iubenda_policy h4:first-child{
|
||||
padding-top:0
|
||||
}
|
||||
#iubenda_policy .one_line_col{
|
||||
zoom:1;
|
||||
float:left;
|
||||
width:100%;
|
||||
border-bottom:1px dotted #dfdfdf
|
||||
}
|
||||
#iubenda_policy .one_line_col:before,#iubenda_policy .one_line_col:after{
|
||||
display:table;
|
||||
content:"";
|
||||
zoom:1;
|
||||
*display:inline
|
||||
}
|
||||
#iubenda_policy .one_line_col:after{
|
||||
clear:both
|
||||
}
|
||||
#iubenda_policy .legal_pp .one_line_col{
|
||||
float:none;
|
||||
border-top:0;
|
||||
padding-bottom:21px
|
||||
}
|
||||
#iubenda_policy .legal_pp .definitions{
|
||||
margin-top:21px
|
||||
}
|
||||
|
||||
#iubenda_policy .legal_pp .definitions .expand-click.w_icon_24{
|
||||
margin-top:-11px;
|
||||
padding:14px 10px 12px 45px;
|
||||
background-repeat:no-repeat;
|
||||
background-color:transparent;
|
||||
background-position-x:5px;
|
||||
background-position-y:0;
|
||||
background-position:5px 0
|
||||
}
|
||||
#iubenda_policy .legal_pp .definitions .expand-content{
|
||||
padding-left:5px;
|
||||
padding-right:5px
|
||||
}
|
||||
#iubenda_policy .iub_footer{
|
||||
clear:both;
|
||||
position:relative;
|
||||
font-size:11px
|
||||
}
|
||||
#iubenda_policy .iub_footer p{
|
||||
font-size:11px;
|
||||
padding:0
|
||||
}
|
||||
#iubenda_policy .iub_content .iub_footer{
|
||||
padding:24px 0
|
||||
}
|
||||
@media(max-width:767px){
|
||||
#iubenda_policy .legal_pp .one_line_col{
|
||||
width:100%
|
||||
}
|
||||
}
|
||||
@media(max-width:480px){
|
||||
html#iubenda_policy{
|
||||
padding:0
|
||||
}
|
||||
#iubenda_policy body{
|
||||
padding:0
|
||||
}
|
||||
#iubenda_policy .iub_base_container,#iubenda_policy .iub_container{
|
||||
margin:0
|
||||
}
|
||||
#iubenda_policy .one_line_col{
|
||||
width:100%
|
||||
}
|
||||
#iubenda_policy .iub_content{
|
||||
padding-left:20px;
|
||||
padding-right:20px
|
||||
}
|
||||
}
|
||||
#iubenda_policy.iubenda_fixed_policy .iub_base_container{
|
||||
max-width:800px
|
||||
}
|
||||
#iubenda_policy.iubenda_fixed_policy .iub_container{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
zoom:1
|
||||
}
|
||||
#iubenda_policy.iubenda_fixed_policy .iub_container:before,#iubenda_policy.iubenda_fixed_policy .iub_container:after{
|
||||
display:table;
|
||||
content:"";
|
||||
zoom:1;
|
||||
*display:inline
|
||||
}
|
||||
#iubenda_policy.iubenda_fixed_policy .iub_container:after{
|
||||
clear:both
|
||||
}
|
||||
BIN
static/slogo.png
Normal file
BIN
static/slogo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
1
static/styles__ltr.css
Normal file
1
static/styles__ltr.css
Normal file
File diff suppressed because one or more lines are too long
BIN
static/vin-position1.gif
Normal file
BIN
static/vin-position1.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
23
sync_cloud_nginx.sh
Normal file
23
sync_cloud_nginx.sh
Normal file
@ -0,0 +1,23 @@
|
||||
#!/bin/bash
|
||||
|
||||
CLOUDFLARE_FILE_PATH=/etc/nginx/cloudflare
|
||||
|
||||
echo "#Cloudflare" > $CLOUDFLARE_FILE_PATH;
|
||||
echo "" >> $CLOUDFLARE_FILE_PATH;
|
||||
|
||||
echo "# - IPv4" >> $CLOUDFLARE_FILE_PATH;
|
||||
for i in `curl -s -L https://www.cloudflare.com/ips-v4`; do
|
||||
echo "set_real_ip_from $i;" >> $CLOUDFLARE_FILE_PATH;
|
||||
done
|
||||
|
||||
echo "" >> $CLOUDFLARE_FILE_PATH;
|
||||
echo "# - IPv6" >> $CLOUDFLARE_FILE_PATH;
|
||||
for i in `curl -s -L https://www.cloudflare.com/ips-v6`; do
|
||||
echo "set_real_ip_from $i;" >> $CLOUDFLARE_FILE_PATH;
|
||||
done
|
||||
|
||||
echo "" >> $CLOUDFLARE_FILE_PATH;
|
||||
echo "real_ip_header CF-Connecting-IP;" >> $CLOUDFLARE_FILE_PATH;
|
||||
|
||||
#test configuration and reload nginx
|
||||
nginx -t && systemctl reload nginx
|
||||
1
templates/ads.txt
Normal file
1
templates/ads.txt
Normal file
@ -0,0 +1 @@
|
||||
google.com, pub-2964481252074108, DIRECT, f08c47fec0942fa0
|
||||
114
templates/database.html
Normal file
114
templates/database.html
Normal file
@ -0,0 +1,114 @@
|
||||
{% extends "head.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="hero-unit">
|
||||
<h1>Buying a Used Car? Check it!</h1>
|
||||
<br>
|
||||
<p><a href="https://www.salvagedb.com/" title="Salvagedb.com" rel="nofollow">Salvagedb.com</a> provides
|
||||
information about salvage or junk vehicles; damage from hail, flood or fire; mileage discrepancies or
|
||||
odometer rollback; and gray market vehicles. We do not claim that the car got in our databank has salvage
|
||||
title, but the fact that it has been damaged for sure. Our site helps people avoid buying a damaged vehicle
|
||||
in the past.
|
||||
</p>
|
||||
<div class="wrapper">
|
||||
<!--
|
||||
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
|
||||
<table border="0" cellspacing="0" cellpadding="0" align="center" style="padding: 0px 0px 0px 0px">
|
||||
<tr>
|
||||
<td width="500px">
|
||||
<table id="hor-minimalist-a" summary="Salvage cars;Database page 1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Make</th>
|
||||
<th scope="col">Model</th>
|
||||
<th scope="col">Year</th>
|
||||
<th scope="col">
|
||||
<center>VIN</center>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for it in pg%}
|
||||
{% if it[0] <=25 %}
|
||||
<tr>
|
||||
|
||||
<td>{{it[2]}}</td>
|
||||
<td>{{it[3][0:14]}}</td>
|
||||
<td>{{it[4]}}</td>
|
||||
<td style="text-align:right;"><a href="/detail/{{it[1]}}.html"
|
||||
title="vin check - {{it[1]}} ">{{it[1]}}<i
|
||||
class="icon-search"></i></a></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
<td width="500px">
|
||||
<table id="hor-minimalist-a" summary="Salvage cars;Database page 1">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Make</th>
|
||||
<th scope="col">Model</th>
|
||||
<th scope="col">Year</th>
|
||||
<th scope="col">
|
||||
<center>VIN</center>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{% for it in pg%}
|
||||
{% if it[0] >25 %}
|
||||
<tr>
|
||||
|
||||
<td>{{it[2]}}</td>
|
||||
<td>{{it[3][0:14]}}</td>
|
||||
<td>{{it[4]}}</td>
|
||||
<td style="text-align:right;"><a href="/detail/{{it[1]}}.html"
|
||||
title="vin check - {{it[1]}} ">{{it[1]}}<i
|
||||
class="icon-search"></i></a></td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</table>
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<br><br>
|
||||
<div class="row">
|
||||
<div class="span4"> </div>
|
||||
<div class="span4 offset1">
|
||||
|
||||
{% if cur_page==1 %}
|
||||
<button class="btn">1</button>
|
||||
<a class="btn" href="/database/page2.html">2</a>
|
||||
<a class="btn" href="/database/page3.html">3</a>
|
||||
<a class="btn" href="/database/page2.html">Next</a>
|
||||
<a class="btn" href="/database/page{{max_page}}.html">Last</a>
|
||||
{% endif %}
|
||||
|
||||
{% if cur_page==max_page %}
|
||||
<a class="btn" href="/database/page{{max_page-1}}.html">Prev</a>
|
||||
<a class="btn" href="/database/page{{max_page-2}}.html">{{max_page-2}}</a>
|
||||
<a class="btn" href="/database/page{{max_page-1}}.html">{{max_page-2}}</a>
|
||||
<button class="btn">{{cur_page}}</button>
|
||||
{% endif %}
|
||||
|
||||
{% if cur_page!=1 and cur_page!=max_page %}
|
||||
<a class="btn" href="/database/page{{cur_page-1}}.html">Prev</a>
|
||||
<button class="btn">{{cur_page}}</button>
|
||||
<a class="btn" href="/database/page{{cur_page+1}}.html">Next</a>
|
||||
<a class="btn" href="/database/page{{max_page}}.html">Last</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div><br>
|
||||
<hr>
|
||||
|
||||
{% endblock %}
|
||||
58
templates/decodevin.html
Normal file
58
templates/decodevin.html
Normal file
@ -0,0 +1,58 @@
|
||||
{% extends "head.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="hero-unit">
|
||||
<h1>Buying a Used Car? Check it!</h1>
|
||||
<br>
|
||||
<p><a href="https://www.salvagedb.com/" title="Salvagedb.com" rel="nofollow">Salvagedb.com</a> provides
|
||||
information about salvage or junk vehicles; damage from hail, flood or fire; mileage discrepancies or
|
||||
odometer rollback; and gray market vehicles. We do not claim that the car got in our databank has salvage
|
||||
title, but the fact that it has been damaged for sure. Our site helps people avoid buying a damaged vehicle
|
||||
in the past.
|
||||
</p>
|
||||
<div class="wrapper">
|
||||
<!--
|
||||
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row-fluid">
|
||||
<center>
|
||||
|
||||
|
||||
<form id="search_bar" action="/decode" method="post">
|
||||
|
||||
<div style="display: inline-block;">
|
||||
<h2 id="find_your_car">ENTER <a href="https://en.wikipedia.org/wiki/Vehicle_Identification_Number"
|
||||
target="_blank">VIN</a> YOU CAR</h2>
|
||||
<input type="text" id="vininput" name="q" class="search_box ui-autocomplete-input" autocomplete="off"
|
||||
value="" role="textbox" autofocus="" required="" validate="length_between,17,17">
|
||||
<button class="g-recaptcha btn btn-primary" type="submit" data-sitekey="{{capcha_site}}" id="go_button" data-callback='onSubmit' data-action='submit' style="margin-bottom: 10px;">Check It</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
</center>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function onSubmit(token) {
|
||||
document.getElementById("search_bar").submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<br><br>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
87
templates/details.html
Normal file
87
templates/details.html
Normal file
@ -0,0 +1,87 @@
|
||||
{% extends "head.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="hero-unit">
|
||||
<h1>Buying a Used Car? Check it!</h1>
|
||||
<br>
|
||||
<p><a href="https://www.salvagedb.com/" title="Salvagedb.com" rel="nofollow">Salvagedb.com</a> provides
|
||||
information about salvage or junk vehicles; damage from hail, flood or fire; mileage discrepancies or
|
||||
odometer rollback; and gray market vehicles. We do not claim that the car got in our databank has salvage
|
||||
title, but the fact that it has been damaged for sure. Our site helps people avoid buying a damaged vehicle
|
||||
in the past.
|
||||
</p></div>
|
||||
<div class="wrapper">
|
||||
|
||||
|
||||
<center>
|
||||
<table id="one-column-emphasis">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Make</td>
|
||||
<td>{{det[0][1]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Model</td>
|
||||
<td>{{det[0][2]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Year</td>
|
||||
<td>{{det[0][3]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Body Style</td>
|
||||
<td>{{det[0][4]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Engine</td>
|
||||
<td>{{det[0][5]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cylinders</td>
|
||||
<td>{{det[0][6]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Drive</td>
|
||||
<td>{{det[0][7]}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<table style="width: 986px; height: 78px; text-align: left; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="1" rowspan="1" style="text-align: center;"><h2>Search salvage history?</h2></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="undefined" valign="undefined">
|
||||
<div style="text-align: center;">
|
||||
<form name="search_bar" id="search_bar" action="/search" method="get">
|
||||
<input id="make_model" class="search_box ui-autocomplete-input" name="q" size="55" value="{{vin}}" autocomplete="off" spellcheck="false" type="text">
|
||||
<button class="g-recaptcha btn btn-primary" data-sitekey="{{capcha_site}}" id="go_button" data-callback='onSubmit' data-action='submit' style="margin-bottom: 10px;">Search</button>
|
||||
</form>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</center>
|
||||
<br>
|
||||
<center>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
|
||||
<script>
|
||||
function onSubmit(token) {
|
||||
document.getElementById("search_bar").submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<br><br>
|
||||
{% endblock %}
|
||||
<input value="Search" class="btn btn-primary" type="submit" id="go_button">
|
||||
103
templates/head-moto.html_backup
Normal file
103
templates/head-moto.html_backup
Normal file
@ -0,0 +1,103 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta http-equiv="x-dns-prefetch-control" content="on">
|
||||
<meta name="bothunter-verification" content="b6173305926f27509754d5b9e3a2deafd8ac1129">
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta name="keywords"
|
||||
content="salvage, vehicle, vehicles, car history, vehicle history, salvage vehicle, salvage vehicles, salvage auto, salvage autos, salvage car, salvage cars, car salvage, vehicle salvage, wreck, wrecked car, car wreck, car part, insurance salvage, insurance car, insurance vehicle, junk, junked, junk car, junk cars">
|
||||
<meta name="description"
|
||||
content="Salvagedb provides information about salvage or junk vehicles; damage from hail, flood or fire; mileage discrepancies or odometer rollback; and gray market vehicles.">
|
||||
<meta name="msvalidate.01" content="2BB4375B58200E283A4EC3AC62DF0F3D">
|
||||
<meta name="google-site-verification" content="NBTledQfL0wfsD78Ro4s-mdYTEMhXUQGBpsy4aLor9M">
|
||||
<meta property="fb:admins" content="100000893732418">
|
||||
<meta http-equiv="Content-Language" content="en">
|
||||
<title>Vehicle history check. Check your car VIN. For FREE!</title>
|
||||
<link href="https://storage.googleapis.com/static.salvagedb.com/favicon.ico" rel="shortcut icon"
|
||||
type="image/x-icon">
|
||||
<link href="/static/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="/static/bootstrap-responsive.min.css" rel="stylesheet">
|
||||
<link href="/static/plus.css" rel="stylesheet">
|
||||
<link href="/static/plus2.css" rel="stylesheet">
|
||||
<style type="text/css">
|
||||
</style>
|
||||
|
||||
<!-- Matomo -->
|
||||
<script>
|
||||
var _paq = window._paq = window._paq || [];
|
||||
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
||||
_paq.push(['trackPageView']);
|
||||
_paq.push(['enableLinkTracking']);
|
||||
(function() {
|
||||
var u="//analytics.salvagedb.com/";
|
||||
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
||||
_paq.push(['setSiteId', '1']);
|
||||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
||||
})();
|
||||
</script>
|
||||
<!-- End Matomo Code -->
|
||||
|
||||
<!-- Yatomo -->
|
||||
<script type="text/javascript" >
|
||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
||||
m[i].l=1*new Date();
|
||||
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
||||
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
|
||||
(window, document, "script", "https://mc.yandex.com/metrika/tag.js", "ym");
|
||||
|
||||
ym(99030590, "init", {
|
||||
clickmap:true,
|
||||
trackLinks:true,
|
||||
accurateTrackBounce:true,
|
||||
webvisor:true
|
||||
});
|
||||
</script>
|
||||
<noscript><div><img src="https://mc.yandex.com/watch/99030590" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
||||
<!-- End Matomo Code -->
|
||||
|
||||
<script src="https://www.google.com/recaptcha/api.js"></script>
|
||||
|
||||
<link rel="stylesheet"
|
||||
href="data:text/css;charset=utf-8;base64,LyogU2V0IHRoZSBhcHAgYXR0cmlidXRlIHRvIHlvdXIgYXBwJ3MgZGFzaC1kZWxpbWl0ZWQgYWxpYXMuICovCmNsb3VkZmxhcmUtYXBwW2FwcD0ieW91ci1hcHAtbmFtZSJdIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDAuNWVtIDAuMmVtOwogIG91dGxpbmU6IDFweCBkb3R0ZWQ7CiAgcGFkZGluZzogMC41ZW07Cn0KCi8qIFVzZSBuYXRpdmUgZWxlbWVudHMgd2hlbiB5b3UnZCBsaWtlIHRvIGluaGVyaXQgc29tZSBzdHlsZXMgZnJvbSB0aGUgcGFnZS4gKi8KY2xvdWRmbGFyZS1hcHBbYXBwPSJ5b3VyLWFwcC1uYW1lIl0gcCB7CiAgdGV4dC1pbmRlbnQ6IDA7Cn0KCi8qIFVzZSBlbSB1bml0cyB0byBzY2FsZSBlbGVtZW50cyBmb3IgZGlmZmVyZW50IGluaGVyaXRlZCBzdHlsZXMuICovCmNsb3VkZmxhcmUtYXBwW2FwcD0ieW91ci1hcHAtbmFtZSJdIGgxIHsKICBmb250LXNpemU6IDEuOGVtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgovKiBVc2UgY3VzdG9tIGVsZW1lbnRzIHRvIGF2b2lkIHN0eWxlIGluaGVyaXRhbmNlLiAqLwpjbG91ZGZsYXJlLWFwcFthcHA9InlvdXItYXBwLW5hbWUiXSBleGFtcGxlLWJ1dHRvbiB7CiAgYm9yZGVyOiAxcHggc29saWQ7Cn0KCi8qIFByZWZpeCBjbGFzc2VzIHdpdGggeW91ciBhcHAncyBhbGlhcyB0byBhdm9pZCBzdHlsZSBjb2xsaXNpb25zLiAqLwpjbG91ZGZsYXJlLWFwcFthcHA9InlvdXItYXBwLW5hbWUiXSAuZXhhbXBsZS1oaWdobGlnaHRlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OwogIG91dGxpbmU6IDAuMmVtIHNvbGlkIHllbGxvdzsKfQo=">
|
||||
</head>
|
||||
<body data-new-gr-c-s-check-loaded="14.982.0">
|
||||
<div class="navbar navbar-fixed-top">
|
||||
<div class="navbar-inner">
|
||||
<div class="container">
|
||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</a>
|
||||
<a class="brand" href="https://www.salvagedb.com/">
|
||||
<img src="/static/slogo.png" height="28">
|
||||
Salvagedb.com</a>
|
||||
<div class="nav-collapse">
|
||||
<ul class="nav">
|
||||
<li class="active"><a href="/">Home</a></li>
|
||||
<li class="no2"><a href="/database/page1.html">Salvage vehicles</a></li>
|
||||
<li class="no3"><a href="/decodevin.html">Decode VIN</a></li>
|
||||
<li class="no4"><a href="https://www.salvagedb.com/#">Salvage catalog</a></li>
|
||||
<li class="no6"><a href="mailto:info@salvagedb.com">Contact</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
|
||||
<br>
|
||||
<footer>
|
||||
<p style="text-align:center"> All information about the vehicles and their damage was obtained from open
|
||||
sources.<br> Salvagedb.com, 2010-<script>document.write(new Date().getFullYear())</script>. All Rights Reserved.</p>
|
||||
<p style="text-align:center"><a href="privacy.html">Privacy Policy.</a></p>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
88
templates/head.html
Normal file
88
templates/head.html
Normal file
@ -0,0 +1,88 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta http-equiv="x-dns-prefetch-control" content="on">
|
||||
<meta name="bothunter-verification" content="b6173305926f27509754d5b9e3a2deafd8ac1129">
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta name="keywords"
|
||||
content="salvage, vehicle, vehicles, car history, vehicle history, salvage vehicle, salvage vehicles, salvage auto, salvage autos, salvage car, salvage cars, car salvage, vehicle salvage, wreck, wrecked car, car wreck, car part, insurance salvage, insurance car, insurance vehicle, junk, junked, junk car, junk cars">
|
||||
<meta name="description"
|
||||
content="Salvagedb provides information about salvage or junk vehicles; damage from hail, flood or fire; mileage discrepancies or odometer rollback; and gray market vehicles.">
|
||||
<meta name="msvalidate.01" content="2BB4375B58200E283A4EC3AC62DF0F3D">
|
||||
<meta name="google-site-verification" content="NBTledQfL0wfsD78Ro4s-mdYTEMhXUQGBpsy4aLor9M">
|
||||
<meta property="fb:admins" content="100000893732418">
|
||||
<meta http-equiv="Content-Language" content="en">
|
||||
<title>Vehicle history check. Check your car VIN. For FREE!</title>
|
||||
<link href="https://storage.googleapis.com/static.salvagedb.com/favicon.ico" rel="shortcut icon"
|
||||
type="image/x-icon">
|
||||
<link href="/static/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="/static/bootstrap-responsive.min.css" rel="stylesheet">
|
||||
<link href="/static/plus.css" rel="stylesheet">
|
||||
<link href="/static/plus2.css" rel="stylesheet">
|
||||
<style type="text/css">
|
||||
</style>
|
||||
|
||||
|
||||
<!-- Yatomo -->
|
||||
<script type="text/javascript" >
|
||||
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
|
||||
m[i].l=1*new Date();
|
||||
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
|
||||
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
|
||||
(window, document, "script", "https://mc.yandex.com/metrika/tag.js", "ym");
|
||||
|
||||
ym(99030590, "init", {
|
||||
clickmap:true,
|
||||
trackLinks:true,
|
||||
accurateTrackBounce:true,
|
||||
webvisor:true
|
||||
});
|
||||
</script>
|
||||
<noscript><div><img src="https://mc.yandex.com/watch/99030590" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
|
||||
<!-- End Matomo Code -->
|
||||
|
||||
<script src="https://www.google.com/recaptcha/api.js"></script>
|
||||
|
||||
<link rel="stylesheet"
|
||||
href="data:text/css;charset=utf-8;base64,LyogU2V0IHRoZSBhcHAgYXR0cmlidXRlIHRvIHlvdXIgYXBwJ3MgZGFzaC1kZWxpbWl0ZWQgYWxpYXMuICovCmNsb3VkZmxhcmUtYXBwW2FwcD0ieW91ci1hcHAtbmFtZSJdIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDAuNWVtIDAuMmVtOwogIG91dGxpbmU6IDFweCBkb3R0ZWQ7CiAgcGFkZGluZzogMC41ZW07Cn0KCi8qIFVzZSBuYXRpdmUgZWxlbWVudHMgd2hlbiB5b3UnZCBsaWtlIHRvIGluaGVyaXQgc29tZSBzdHlsZXMgZnJvbSB0aGUgcGFnZS4gKi8KY2xvdWRmbGFyZS1hcHBbYXBwPSJ5b3VyLWFwcC1uYW1lIl0gcCB7CiAgdGV4dC1pbmRlbnQ6IDA7Cn0KCi8qIFVzZSBlbSB1bml0cyB0byBzY2FsZSBlbGVtZW50cyBmb3IgZGlmZmVyZW50IGluaGVyaXRlZCBzdHlsZXMuICovCmNsb3VkZmxhcmUtYXBwW2FwcD0ieW91ci1hcHAtbmFtZSJdIGgxIHsKICBmb250LXNpemU6IDEuOGVtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgovKiBVc2UgY3VzdG9tIGVsZW1lbnRzIHRvIGF2b2lkIHN0eWxlIGluaGVyaXRhbmNlLiAqLwpjbG91ZGZsYXJlLWFwcFthcHA9InlvdXItYXBwLW5hbWUiXSBleGFtcGxlLWJ1dHRvbiB7CiAgYm9yZGVyOiAxcHggc29saWQ7Cn0KCi8qIFByZWZpeCBjbGFzc2VzIHdpdGggeW91ciBhcHAncyBhbGlhcyB0byBhdm9pZCBzdHlsZSBjb2xsaXNpb25zLiAqLwpjbG91ZGZsYXJlLWFwcFthcHA9InlvdXItYXBwLW5hbWUiXSAuZXhhbXBsZS1oaWdobGlnaHRlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OwogIG91dGxpbmU6IDAuMmVtIHNvbGlkIHllbGxvdzsKfQo=">
|
||||
</head>
|
||||
<body data-new-gr-c-s-check-loaded="14.982.0">
|
||||
<div class="navbar navbar-fixed-top">
|
||||
<div class="navbar-inner">
|
||||
<div class="container">
|
||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</a>
|
||||
<a class="brand" href="https://www.salvagedb.com/">
|
||||
<img src="/static/slogo.png" height="28">
|
||||
Salvagedb.com</a>
|
||||
<div class="nav-collapse">
|
||||
<ul class="nav">
|
||||
<li class="active"><a href="/">Home</a></li>
|
||||
<li class="no2"><a href="/database/page1.html">Salvage vehicles</a></li>
|
||||
<li class="no3"><a href="/decodevin.html">Decode VIN</a></li>
|
||||
<li class="no4"><a href="https://www.salvagedb.com/#">Salvage catalog</a></li>
|
||||
<li class="no6"><a href="mailto:info@salvagedb.com">Contact</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
{% block content %}{% endblock %}
|
||||
|
||||
<br>
|
||||
<footer>
|
||||
<p style="text-align:center"> All information about the vehicles and their damage was obtained from open
|
||||
sources.<br> Salvagedb.com, 2010-<script>document.write(new Date().getFullYear())</script>. All Rights Reserved.</p>
|
||||
<p style="text-align:center"><a href="privacy.html">Privacy Policy.</a></p>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
67
templates/index.html
Normal file
67
templates/index.html
Normal file
@ -0,0 +1,67 @@
|
||||
{% extends "head.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="hero-unit">
|
||||
<h1>Buying a Used Car? Check it!</h1>
|
||||
<br>
|
||||
<p><a href="https://www.salvagedb.com/" title="Salvagedb.com" rel="nofollow">Salvagedb.com</a> provides
|
||||
information about salvage or junk vehicles; damage from hail, flood or fire; mileage discrepancies or
|
||||
odometer rollback; and gray market vehicles. We do not claim that the car got in our databank has salvage
|
||||
title, but the fact that it has been damaged for sure. Our site helps people avoid buying a damaged vehicle
|
||||
in the past.
|
||||
</p>
|
||||
<div class="wrapper">
|
||||
<!--
|
||||
|
||||
-->
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row-fluid">
|
||||
<center>
|
||||
|
||||
|
||||
<form id="search_bar" action="/decode" method="post">
|
||||
|
||||
<div style="display: inline-block;">
|
||||
<h2 id="find_your_car">ENTER <a href="https://en.wikipedia.org/wiki/Vehicle_Identification_Number"
|
||||
target="_blank">VIN</a> YOU CAR</h2>
|
||||
<input type="text" id="vininput" name="q" class="search_box ui-autocomplete-input" autocomplete="off"
|
||||
value="" role="textbox" autofocus="" required="" validate="length_between,17,17">
|
||||
<button class="g-recaptcha btn btn-primary" type="submit" data-sitekey="{{capcha_site}}" id="go_button" data-callback='onSubmit' data-action='submit' style="margin-bottom: 10px;">Check It</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
|
||||
</center>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<h2 style="text-align: center;">Over {{ cnt }} salvage vehicles added.</h2>
|
||||
<br>
|
||||
<center>
|
||||
|
||||
</center>
|
||||
<br>
|
||||
<br><br>
|
||||
<center>
|
||||
<img src="static/vin-position1.gif">
|
||||
</center>
|
||||
<br>
|
||||
<script>
|
||||
function onSubmit(token) {
|
||||
document.getElementById("search_bar").submit();
|
||||
}
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
|
||||
290
templates/privacy.html
Normal file
290
templates/privacy.html
Normal file
@ -0,0 +1,290 @@
|
||||
{% raw %}
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html id="iubenda_policy" class="iubenda_fixed_policy">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<title>Privacy Policy of www.salvagedb.com</title>
|
||||
<meta content="privacy policy" name="keywords">
|
||||
<meta http-equiv="Content-Language" content="en">
|
||||
<meta name="robots" content="noindex, follow">
|
||||
|
||||
<meta property="og:title" content="Privacy Policy of www.salvagedb.com">
|
||||
<meta property="og:type" content="website">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link href="static/privacy.css" media="screen" rel="stylesheet" type="text/css">
|
||||
<style>@media print {#ghostery-purple-box {display:none !important}}</style>
|
||||
<link rel="stylesheet"
|
||||
href="data:text/css;charset=utf-8;base64,LyogU2V0IHRoZSBhcHAgYXR0cmlidXRlIHRvIHlvdXIgYXBwJ3MgZGFzaC1kZWxpbWl0ZWQgYWxpYXMuICovCmNsb3VkZmxhcmUtYXBwW2FwcD0ieW91ci1hcHAtbmFtZSJdIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW46IDAuNWVtIDAuMmVtOwogIG91dGxpbmU6IDFweCBkb3R0ZWQ7CiAgcGFkZGluZzogMC41ZW07Cn0KCi8qIFVzZSBuYXRpdmUgZWxlbWVudHMgd2hlbiB5b3UnZCBsaWtlIHRvIGluaGVyaXQgc29tZSBzdHlsZXMgZnJvbSB0aGUgcGFnZS4gKi8KY2xvdWRmbGFyZS1hcHBbYXBwPSJ5b3VyLWFwcC1uYW1lIl0gcCB7CiAgdGV4dC1pbmRlbnQ6IDA7Cn0KCi8qIFVzZSBlbSB1bml0cyB0byBzY2FsZSBlbGVtZW50cyBmb3IgZGlmZmVyZW50IGluaGVyaXRlZCBzdHlsZXMuICovCmNsb3VkZmxhcmUtYXBwW2FwcD0ieW91ci1hcHAtbmFtZSJdIGgxIHsKICBmb250LXNpemU6IDEuOGVtOwogIGZvbnQtd2VpZ2h0OiBib2xkOwp9CgovKiBVc2UgY3VzdG9tIGVsZW1lbnRzIHRvIGF2b2lkIHN0eWxlIGluaGVyaXRhbmNlLiAqLwpjbG91ZGZsYXJlLWFwcFthcHA9InlvdXItYXBwLW5hbWUiXSBleGFtcGxlLWJ1dHRvbiB7CiAgYm9yZGVyOiAxcHggc29saWQ7Cn0KCi8qIFByZWZpeCBjbGFzc2VzIHdpdGggeW91ciBhcHAncyBhbGlhcyB0byBhdm9pZCBzdHlsZSBjb2xsaXNpb25zLiAqLwpjbG91ZGZsYXJlLWFwcFthcHA9InlvdXItYXBwLW5hbWUiXSAuZXhhbXBsZS1oaWdobGlnaHRlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OwogIG91dGxpbmU6IDAuMmVtIHNvbGlkIHllbGxvdzsKfQo=">
|
||||
</head>
|
||||
<body>
|
||||
<div id="wbars_all">
|
||||
<div class="iub_container iub_base_container">
|
||||
<div id="wbars">
|
||||
<div class="iub_content legal_pp">
|
||||
<div class="iub_header">
|
||||
<h1>Privacy Policy of <strong>www.salvagedb.com</strong></h1>
|
||||
<p>In order to receive information about your Personal Data, the purposes and the parties the Data
|
||||
is shared with, contact the Owner.</p>
|
||||
</div>
|
||||
<div class="one_line_col">
|
||||
<h2 id="owner_of_the_data">Owner and Data Controller</h2>
|
||||
</div>
|
||||
<div class="one_line_col">
|
||||
<h2 id="types_of_data">Types of Data collected</h2>
|
||||
<p>The owner does not provide a list of Personal Data types collected.</p>
|
||||
<p>Complete details on each type of Personal Data collected are provided in the dedicated sections
|
||||
of this privacy policy or by specific explanation texts displayed prior to the Data
|
||||
collection.<br>Personal Data may be freely provided by the User, or, in case of Usage Data,
|
||||
collected automatically when using this Application.<br>Unless specified otherwise, all Data
|
||||
requested by this Application is mandatory and failure to provide this Data may make it
|
||||
impossible for this Application to provide its services. In cases where this Application
|
||||
specifically states that some Data is not mandatory, Users are free not to communicate this Data
|
||||
without consequences to the availability or the functioning of the Service.<br>Users who are
|
||||
uncertain about which Personal Data is mandatory are welcome to contact the Owner.<br>Any use of
|
||||
Cookies <20> or of other tracking tools <20> by this Application or by the owners of third-party
|
||||
services used by this Application serves the purpose of providing the Service required by the
|
||||
User, in addition to any other purposes described in the present document and in the Cookie
|
||||
Policy, if available.</p>
|
||||
<p>Users are responsible for any third-party Personal Data obtained, published or shared through
|
||||
this Application and confirm that they have the third party's consent to provide the Data to the
|
||||
Owner.</p>
|
||||
</div>
|
||||
<div class="one_line_col">
|
||||
<h2 id="place_of_processing">Mode and place of processing the Data</h2>
|
||||
<h3>Methods of processing</h3>
|
||||
<p>The Owner takes appropriate security measures to prevent unauthorized access, disclosure,
|
||||
modification, or unauthorized destruction of the Data.<br>The Data processing is carried out
|
||||
using computers and/or IT enabled tools, following organizational procedures and modes strictly
|
||||
related to the purposes indicated. In addition to the Owner, in some cases, the Data may be
|
||||
accessible to certain types of persons in charge, involved with the operation of this
|
||||
Application (administration, sales, marketing, legal, system administration) or external parties
|
||||
(such as third-party technical service providers, mail carriers, hosting providers, IT
|
||||
companies, communications agencies) appointed, if necessary, as Data Processors by the Owner.
|
||||
The updated list of these parties may be requested from the Owner at any time.</p>
|
||||
<h3>Legal basis of processing</h3>
|
||||
<p>The Owner may process Personal Data relating to Users if one of the following applies:</p>
|
||||
<ul>
|
||||
<li>Users have given their consent for one or more specific purposes. Note: Under some
|
||||
legislations the Owner may be allowed to process Personal Data until the User objects to
|
||||
such processing (<28>opt-out<75>), without having to rely on consent or any other of the following
|
||||
legal bases. This, however, does not apply, whenever the processing of Personal Data is
|
||||
subject to European data protection law;
|
||||
</li>
|
||||
<li>provision of Data is necessary for the performance of an agreement with the User and/or for
|
||||
any pre-contractual obligations thereof;
|
||||
</li>
|
||||
<li>processing is necessary for compliance with a legal obligation to which the Owner is
|
||||
subject;
|
||||
</li>
|
||||
<li>processing is related to a task that is carried out in the public interest or in the
|
||||
exercise of official authority vested in the Owner;
|
||||
</li>
|
||||
<li>processing is necessary for the purposes of the legitimate interests pursued by the Owner or
|
||||
by a third party.
|
||||
</li>
|
||||
</ul>
|
||||
<p>In any case, the Owner will gladly help to clarify the specific legal basis that applies to the
|
||||
processing, and in particular whether the provision of Personal Data is a statutory or
|
||||
contractual requirement, or a requirement necessary to enter into a contract. </p>
|
||||
<h3>Place</h3>
|
||||
<p>The Data is processed at the Owner's operating offices and in any other places where the parties
|
||||
involved in the processing are located.<br><br>
|
||||
Depending on the User's location, data transfers may involve transferring the User's Data to a
|
||||
country other than their own. To find out more about the place of processing of such transferred
|
||||
Data, Users can check the section containing details about the processing of Personal Data.</p>
|
||||
<p>Users are also entitled to learn about the legal basis of Data transfers to a country outside the
|
||||
European Union or to any international organization governed by public international law or set
|
||||
up by two or more countries, such as the UN, and about the security measures taken by the Owner
|
||||
to safeguard their Data.<br><br>
|
||||
If any such transfer takes place, Users can find out more by checking the relevant sections of
|
||||
this document or inquire with the Owner using the information provided in the contact section.
|
||||
</p>
|
||||
<h3>Retention time</h3>
|
||||
<p>Personal Data shall be processed and stored for as long as required by the purpose they have been
|
||||
collected for.</p>
|
||||
<p>Therefore:</p>
|
||||
<ul>
|
||||
<li>Personal Data collected for purposes related to the performance of a contract between the
|
||||
Owner and the User shall be retained until such contract has been fully performed.
|
||||
</li>
|
||||
<li>Personal Data collected for the purposes of the Owner<65>s legitimate interests shall be
|
||||
retained as long as needed to fulfill such purposes. Users may find specific information
|
||||
regarding the legitimate interests pursued by the Owner within the relevant sections of this
|
||||
document or by contacting the Owner.
|
||||
</li>
|
||||
</ul>
|
||||
<p>The Owner may be allowed to retain Personal Data for a longer period whenever the User has given
|
||||
consent to such processing, as long as such consent is not withdrawn. Furthermore, the Owner may
|
||||
be obliged to retain Personal Data for a longer period whenever required to do so for the
|
||||
performance of a legal obligation or upon order of an authority.<br><br>
|
||||
Once the retention period expires, Personal Data shall be deleted. Therefore, the right to
|
||||
access, the right to erasure, the right to rectification and the right to data portability
|
||||
cannot be enforced after expiration of the retention period.</p>
|
||||
</div>
|
||||
<div class="one_line_col">
|
||||
<h2>The rights of Users</h2>
|
||||
<p>Users may exercise certain rights regarding their Data processed by the Owner.</p>
|
||||
<p>In particular, Users have the right to do the following:</p>
|
||||
<ul>
|
||||
<li><b>Withdraw their consent at any time.</b> Users have the right to withdraw consent where
|
||||
they have previously given their consent to the processing of their Personal Data.
|
||||
</li>
|
||||
<li><b>Object to processing of their Data.</b> Users have the right to object to the processing
|
||||
of their Data if the processing is carried out on a legal basis other than consent. Further
|
||||
details are provided in the dedicated section below.
|
||||
</li>
|
||||
<li><b>Access their Data.</b> Users have the right to learn if Data is being processed by the
|
||||
Owner, obtain disclosure regarding certain aspects of the processing and obtain a copy of
|
||||
the Data undergoing processing.
|
||||
</li>
|
||||
<li><b>Verify and seek rectification.</b> Users have the right to verify the accuracy of their
|
||||
Data and ask for it to be updated or corrected.
|
||||
</li>
|
||||
<li><b>Restrict the processing of their Data.</b> Users have the right, under certain
|
||||
circumstances, to restrict the processing of their Data. In this case, the Owner will not
|
||||
process their Data for any purpose other than storing it.
|
||||
</li>
|
||||
<li><b>Have their Personal Data deleted or otherwise removed.</b> Users have the right, under
|
||||
certain circumstances, to obtain the erasure of their Data from the Owner.
|
||||
</li>
|
||||
<li><b>Receive their Data and have it transferred to another controller.</b> Users have the
|
||||
right to receive their Data in a structured, commonly used and machine readable format and,
|
||||
if technically feasible, to have it transmitted to another controller without any hindrance.
|
||||
This provision is applicable provided that the Data is processed by automated means and that
|
||||
the processing is based on the User's consent, on a contract which the User is part of or on
|
||||
pre-contractual obligations thereof.
|
||||
</li>
|
||||
<li><b>Lodge a complaint.</b> Users have the right to bring a claim before their competent data
|
||||
protection authority.
|
||||
</li>
|
||||
</ul>
|
||||
<h3>Details about the right to object to processing</h3>
|
||||
<p>Where Personal Data is processed for a public interest, in the exercise of an official authority
|
||||
vested in the Owner or for the purposes of the legitimate interests pursued by the Owner, Users
|
||||
may object to such processing by providing a ground related to their particular situation to
|
||||
justify the objection.</p>
|
||||
<p>Users must know that, however, should their Personal Data be processed for direct marketing
|
||||
purposes, they can object to that processing at any time without providing any justification. To
|
||||
learn, whether the Owner is processing Personal Data for direct marketing purposes, Users may
|
||||
refer to the relevant sections of this document. </p>
|
||||
<h3>How to exercise these rights</h3>
|
||||
<p>Any requests to exercise User rights can be directed to the Owner through the contact details
|
||||
provided in this document. These requests can be exercised free of charge and will be addressed
|
||||
by the Owner as early as possible and always within one month.</p>
|
||||
</div>
|
||||
<div class="one_line_col">
|
||||
<h2 id="further_data_processing_info">Additional information about Data collection and
|
||||
processing</h2>
|
||||
<h3>Legal action</h3>
|
||||
<p>
|
||||
The User's Personal Data may be used for legal purposes by the Owner in Court or in the stages
|
||||
leading to possible legal action arising from improper use of this Application or the related
|
||||
Services.<br>The User declares to be aware that the Owner may be required to reveal personal
|
||||
data upon request of public authorities.
|
||||
</p>
|
||||
<h3>Additional information about User's Personal Data</h3>
|
||||
<p>
|
||||
In addition to the information contained in this privacy policy, this Application may provide
|
||||
the User with additional and contextual information concerning particular Services or the
|
||||
collection and processing of Personal Data upon request.
|
||||
</p>
|
||||
<h3>System logs and maintenance</h3>
|
||||
<p>
|
||||
For operation and maintenance purposes, this Application and any third-party services may
|
||||
collect files that record interaction with this Application (System logs) use other Personal
|
||||
Data (such as the IP Address) for this purpose.
|
||||
</p>
|
||||
<h3>Information not contained in this policy</h3>
|
||||
<p>
|
||||
More details concerning the collection or processing of Personal Data may be requested from the
|
||||
Owner at any time. Please see the contact information at the beginning of this document.
|
||||
</p>
|
||||
<h3>How <20>Do Not Track<63> requests are handled</h3>
|
||||
<p>
|
||||
This Application does not support <20>Do Not Track<63> requests.<br>To determine whether any of the
|
||||
third-party services it uses honor the <20>Do Not Track<63> requests, please read their privacy
|
||||
policies.
|
||||
</p>
|
||||
<h3>Changes to this privacy policy</h3>
|
||||
<p>
|
||||
The Owner reserves the right to make changes to this privacy policy at any time by giving notice
|
||||
to its Users on this page and possibly within this Application and/or - as far as technically
|
||||
and legally feasible - sending a notice to Users via any contact information available to the
|
||||
Owner. It is strongly recommended to check this page often, referring to the date of the last
|
||||
modification listed at the bottom. <br><br>
|
||||
Should the changes affect processing activities performed on the basis of the User<65>s consent,
|
||||
the Owner shall collect new consent from the User, where required.
|
||||
</p>
|
||||
</div>
|
||||
<div class="one_line_col">
|
||||
<div class="box_primary box_10 definitions expand">
|
||||
<h3 class="expand-click w_icon_24 icon_ribbon">
|
||||
Definitions and legal references
|
||||
</h3>
|
||||
<div class="expand-content">
|
||||
<h4>Personal Data (or Data)</h4>
|
||||
<p>Any information that directly, indirectly, or in connection with other information <20>
|
||||
including a personal identification number <20> allows for the identification or
|
||||
identifiability of a natural person.</p>
|
||||
<h4>Usage Data</h4>
|
||||
<p>Information collected automatically through this Application (or third-party services
|
||||
employed in this Application), which can include: the IP addresses or domain names of
|
||||
the computers utilized by the Users who use this Application, the URI addresses (Uniform
|
||||
Resource Identifier), the time of the request, the method utilized to submit the request
|
||||
to the server, the size of the file received in response, the numerical code indicating
|
||||
the status of the server's answer (successful outcome, error, etc.), the country of
|
||||
origin, the features of the browser and the operating system utilized by the User, the
|
||||
various time details per visit (e.g., the time spent on each page within the
|
||||
Application) and the details about the path followed within the Application with special
|
||||
reference to the sequence of pages visited, and other parameters about the device
|
||||
operating system and/or the User's IT environment.</p>
|
||||
<h4>User</h4>
|
||||
<p>The individual using this Application who, unless otherwise specified, coincides with the
|
||||
Data Subject.</p>
|
||||
<h4>Data Subject</h4>
|
||||
<p>The natural person to whom the Personal Data refers.</p>
|
||||
<h4>Data Processor (or Data Supervisor)</h4>
|
||||
<p>The natural or legal person, public authority, agency or other body which processes
|
||||
Personal Data on behalf of the Controller, as described in this privacy policy.</p>
|
||||
<h4>Data Controller (or Owner)</h4>
|
||||
<p>The natural or legal person, public authority, agency or other body which, alone or
|
||||
jointly with others, determines the purposes and means of the processing of Personal
|
||||
Data, including the security measures concerning the operation and use of this
|
||||
Application. The Data Controller, unless otherwise specified, is the Owner of this
|
||||
Application.</p>
|
||||
<h4>
|
||||
This Application
|
||||
</h4>
|
||||
<p>The means by which the Personal Data of the User is collected and processed.</p>
|
||||
<h4>Service</h4>
|
||||
<p>The service provided by this Application as described in the relative terms (if
|
||||
available) and on this site/application.</p>
|
||||
<h4>European Union (or EU)
|
||||
</h4>
|
||||
<p>Unless otherwise specified, all references made within this document to the European
|
||||
Union include all current member states to the European Union and the European Economic
|
||||
Area.
|
||||
</p>
|
||||
<hr>
|
||||
<h4>Legal information</h4>
|
||||
<p>This privacy statement has been prepared based on provisions of multiple legislations,
|
||||
including Art. 13/14 of Regulation (EU) 2016/679 (General Data Protection
|
||||
Regulation).</p>
|
||||
<p>This privacy policy relates solely to this Application, if not stated otherwise within
|
||||
this document.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="iub_footer">
|
||||
<p>
|
||||
Latest update: May 13, 2018
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
{% endraw %}
|
||||
835
templates/robots.txt
Normal file
835
templates/robots.txt
Normal file
@ -0,0 +1,835 @@
|
||||
User-agent: *
|
||||
Disallow: /detail/
|
||||
Disallow: /search
|
||||
Disallow: /info/
|
||||
|
||||
|
||||
User-agent: Yandex
|
||||
Disallow: /
|
||||
|
||||
User-agent: Amazonbot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SemrushBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: MJ12bot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: AhrefsBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: gigabot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Gigabot/2.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: msnbot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: msnbot/1.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ia_archiver
|
||||
Disallow: /
|
||||
|
||||
User-Agent: libwww-perl
|
||||
Disallow: /
|
||||
|
||||
User-Agent: NetStat.Ru Agent
|
||||
Disallow: /
|
||||
User-Agent: WebAlta Crawler/1.3.25
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Yahoo!-MMCrawler/3.x
|
||||
Disallow: /
|
||||
|
||||
User-Agent: MMCrawler/3.x
|
||||
Disallow: /
|
||||
|
||||
User-Agent: NG/2.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: slurp
|
||||
Disallow: /
|
||||
|
||||
User-Agent: aipbot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Alexibot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: GameSpyHTTP/1.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Aqua_Products
|
||||
Disallow: /
|
||||
|
||||
User-Agent: asterias
|
||||
Disallow: /
|
||||
|
||||
User-Agent: b2w/0.1
|
||||
Disallow: /
|
||||
|
||||
User-Agent: BackDoorBot/1.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: becomebot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: BlowFish/1.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Bookmark search tool
|
||||
Disallow: /
|
||||
|
||||
User-Agent: BotALot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: BotRightHere
|
||||
Disallow: /
|
||||
|
||||
User-Agent: BuiltBotTough
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Bullseye/1.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: BunnySlippers
|
||||
Disallow: /
|
||||
|
||||
User-Agent: CheeseBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: CherryPicker
|
||||
Disallow: /
|
||||
|
||||
User-Agent: CherryPickerElite/1.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: CherryPickerSE/1.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Copernic
|
||||
Disallow: /
|
||||
|
||||
User-Agent: CopyRightCheck
|
||||
Disallow: /
|
||||
|
||||
User-Agent: cosmos
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Crescent
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Crescent Internet ToolPak HTTP OLE Control v.1.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: DittoSpyder
|
||||
Disallow: /
|
||||
|
||||
User-Agent: EmailCollector
|
||||
Disallow: /
|
||||
|
||||
User-Agent: EmailSiphon
|
||||
Disallow: /
|
||||
|
||||
User-Agent: EmailWolf
|
||||
Disallow: /
|
||||
|
||||
User-Agent: EroCrawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ExtractorPro
|
||||
Disallow: /
|
||||
|
||||
User-Agent: FairAd Client
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Fasterfox
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Flaming AttackBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Foobot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Gaisbot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: GetRight/4.2
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Harvest/1.5
|
||||
Disallow: /
|
||||
|
||||
User-Agent: hloader
|
||||
Disallow: /
|
||||
|
||||
User-Agent: httplib
|
||||
Disallow: /
|
||||
|
||||
User-Agent: HTTrack 3.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: humanlinks
|
||||
Disallow: /
|
||||
|
||||
User-Agent: IconSurf
|
||||
Disallow: /
|
||||
|
||||
User-Agent: InfoNaviRobot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Iron33/1.0.2
|
||||
Disallow: /
|
||||
|
||||
User-Agent: JennyBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Kenjin Spider
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Keyword Density/0.9
|
||||
Disallow: /
|
||||
|
||||
User-Agent: larbin
|
||||
Disallow: /
|
||||
|
||||
User-Agent: LexiBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: libWeb/clsHTTP
|
||||
Disallow: /
|
||||
|
||||
User-Agent: LinkextractorPro
|
||||
Disallow: /
|
||||
|
||||
User-Agent: LinkScan/8.1a Unix
|
||||
Disallow: /
|
||||
|
||||
User-Agent: LinkWalker
|
||||
Disallow: /
|
||||
|
||||
User-Agent: LNSpiderguy
|
||||
Disallow: /
|
||||
|
||||
User-Agent: lwp-trivial
|
||||
Disallow: /
|
||||
|
||||
User-Agent: lwp-trivial/1.34
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Mata Hari
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Microsoft URL Control
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Microsoft URL Control - 5.01.4511
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Microsoft URL Control - 6.00.8169
|
||||
Disallow: /
|
||||
|
||||
User-Agent: MIIxpc
|
||||
Disallow: /
|
||||
|
||||
User-Agent: MIIxpc/4.2
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Mister PiX
|
||||
Disallow: /
|
||||
|
||||
User-Agent: moget
|
||||
Disallow: /
|
||||
|
||||
User-Agent: moget/2.1
|
||||
Disallow: /
|
||||
|
||||
User-Agent: MSIECrawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: NetAnts
|
||||
Disallow: /
|
||||
|
||||
User-Agent: NICErsPRO
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Offline Explorer
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Openbot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Openfind
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Openfind data gatherer
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Oracle Ultra Search
|
||||
Disallow: /
|
||||
|
||||
User-Agent: PerMan
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ProPowerBot/2.14
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ProWebWalker
|
||||
Disallow: /
|
||||
|
||||
User-Agent: psbot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Python-urllib
|
||||
Disallow: /
|
||||
|
||||
User-Agent: QueryN Metasearch
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Radiation Retriever 1.1
|
||||
Disallow: /
|
||||
|
||||
User-Agent: RepoMonkey
|
||||
Disallow: /
|
||||
|
||||
User-Agent: RepoMonkey Bait & Tackle/v1.01
|
||||
Disallow: /
|
||||
|
||||
User-Agent: RMA
|
||||
Disallow: /
|
||||
|
||||
User-Agent: searchpreview
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SiteSnagger
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SpankBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: spanner
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SurveyBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: suzuran
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Szukacz/1.4
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Teleport
|
||||
Disallow: /
|
||||
|
||||
User-Agent: TeleportPro
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Telesoft
|
||||
Disallow: /
|
||||
|
||||
User-Agent: The Intraformant
|
||||
Disallow: /
|
||||
|
||||
User-Agent: TheNomad
|
||||
Disallow: /
|
||||
|
||||
User-Agent: TightTwatBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: toCrawl/UrlDispatcher
|
||||
Disallow: /
|
||||
|
||||
User-Agent: True_Robot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: True_Robot/1.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: turingos
|
||||
Disallow: /
|
||||
|
||||
User-Agent: TurnitinBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: TurnitinBot/1.5
|
||||
Disallow: /
|
||||
|
||||
User-Agent: URL Control
|
||||
Disallow: /
|
||||
|
||||
User-Agent: URL_Spider_Pro
|
||||
Disallow: /
|
||||
|
||||
User-Agent: URLy Warning
|
||||
Disallow: /
|
||||
|
||||
User-Agent: VCI
|
||||
Disallow: /
|
||||
|
||||
User-Agent: VCI WebViewer VCI WebViewer Win32
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Web Image Collector
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebAuto
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebBandit
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebBandit/3.50
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebCapture 2.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebCopier
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebCopier v.2.2
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebCopier v3.2a
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebEnhancer
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebSauger
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Website Quester
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Webster Pro
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebStripper
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebZip
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebZip
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebZip/4.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebZIP/4.21
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebZIP/5.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Wget
|
||||
Disallow: /
|
||||
|
||||
User-Agent: wget
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Wget/1.5.3
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Wget/1.6
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WWW-Collector-E
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Xenu's
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Xenu's Link Sleuth 1.1c
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Zeus
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Zeus 32297 Webster Pro V2.9 Win32
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Zeus Link Scout
|
||||
Disallow: /
|
||||
|
||||
User-Agent: EmailSiphon
|
||||
Disallow: /
|
||||
|
||||
User-Agent: EmailCollector
|
||||
Disallow: /
|
||||
|
||||
User-Agent: teoma
|
||||
Disallow: /
|
||||
|
||||
User-Agent: NjuiceBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Scrapy
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Baiduspider
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SeznamBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: crawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: JS-Kit
|
||||
Disallow: /
|
||||
|
||||
User-Agent: HybridBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Voyager
|
||||
Disallow: /
|
||||
|
||||
User-Agent: PostRank
|
||||
Disallow: /
|
||||
|
||||
User-Agent: DomainCrawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: MegaIndex.ru
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ltx71
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Exabot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: CCBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: DotBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: GetIntent\ Crawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Butterfly
|
||||
Disallow: /
|
||||
|
||||
User-Agent: libwww
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SWeb
|
||||
Disallow: /
|
||||
|
||||
User-Agent: LinkExchanger
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Soup
|
||||
Disallow: /
|
||||
|
||||
User-Agent: GrapeshotCrawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: DnyzBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: spbot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: DeuSu
|
||||
Disallow: /
|
||||
|
||||
User-Agent: MLBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: InternetSeer
|
||||
Disallow: /
|
||||
|
||||
User-Agent: BUbiNG
|
||||
Disallow: /
|
||||
|
||||
User-Agent: FairShare
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Yeti
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Birubot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: YottosBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: gold\ crawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Linguee
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Ezooms
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Purebot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: kmSearchBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SiteBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: CamontSpider
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ptd-crawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: HTTrack
|
||||
Disallow: /
|
||||
|
||||
User-Agent: suggybot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ttCrawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Nutch
|
||||
Disallow: /
|
||||
|
||||
User-Agent: msnbot-media
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Abonti
|
||||
Disallow: /
|
||||
|
||||
User-Agent: aggregator
|
||||
Disallow: /
|
||||
|
||||
User-Agent: BDCbot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: BLEXBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Bullseye
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ca\-crawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Cegbfeieh
|
||||
Disallow: /
|
||||
|
||||
User-Agent: coccoc
|
||||
Disallow: /
|
||||
|
||||
User-Agent: CyotekWebCopy/1\.7
|
||||
Disallow: /
|
||||
|
||||
User-Agent: CyotekHTTP/2\.0
|
||||
Disallow: /
|
||||
|
||||
User-Agent: discobot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Download Ninja
|
||||
Disallow: /
|
||||
|
||||
User-Agent: EasouSpider
|
||||
Disallow: /
|
||||
|
||||
User-Agent: FeedBooster
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Genieo
|
||||
Disallow: /
|
||||
|
||||
User-Agent: grub\-client
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Harvest
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ieautodiscovery
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Incutio
|
||||
Disallow: /
|
||||
|
||||
User-Agent: IstellaBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: JamesBOT
|
||||
Disallow: /
|
||||
|
||||
User-Agent: k2spider
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Keyword Density/0\.9
|
||||
Disallow: /
|
||||
|
||||
User-Agent: libWeb
|
||||
Disallow: /
|
||||
|
||||
User-Agent: linko
|
||||
Disallow: /
|
||||
|
||||
User-Agent: LinkScan/8\.1a Unix
|
||||
Disallow: /
|
||||
|
||||
User-Agent: lmspider
|
||||
Disallow: /
|
||||
|
||||
User-Agent: lwp\-trivial
|
||||
Disallow: /
|
||||
|
||||
User-Agent: magpie
|
||||
Disallow: /
|
||||
|
||||
User-Agent: MaxPointCrawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: MegaIndex
|
||||
Disallow: /
|
||||
|
||||
User-Agent: memoryBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Mippin
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Missigua Locator
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Niki\-Bot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: NPBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: OLEcrawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: panscient\.com
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ProPowerBot/2\.14
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Python\-urllib
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Riddler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: serf
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SISTRIX
|
||||
Disallow: /
|
||||
|
||||
User-Agent: sitecheck\.Internetseer\.com
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Serpstat
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SnapPreviewBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Sogou
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Spinn3r
|
||||
Disallow: /
|
||||
|
||||
User-Agent: SpyFu
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Szukacz/1\.4
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Titan
|
||||
Disallow: /
|
||||
|
||||
User-Agent: UbiCrawler
|
||||
Disallow: /
|
||||
|
||||
User-Agent: UnisterBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Unknown
|
||||
Disallow: /
|
||||
|
||||
User-Agent: uptime files
|
||||
Disallow: /
|
||||
|
||||
User-Agent: User-Agent
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Vedma
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WBSearchBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Web Downloader/6\.9
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebmasterWorldForumBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WebReaper
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Wotbox
|
||||
Disallow: /
|
||||
|
||||
User-Agent: wsr\-agent
|
||||
Disallow: /
|
||||
|
||||
User-Agent: WWW\-Collector\-E
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Zao
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ZyBORG
|
||||
Disallow: /
|
||||
|
||||
User-Agent: ahrefs
|
||||
Disallow: /
|
||||
|
||||
User-Agent: qwantify
|
||||
Disallow: /
|
||||
|
||||
User-Agent: qwant
|
||||
Disallow: /
|
||||
|
||||
User-Agent: semrush
|
||||
Disallow: /
|
||||
|
||||
User-Agent: Detectify
|
||||
Disallow: /
|
||||
|
||||
User-Agent: LinkpadBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: FlipboardProxy
|
||||
Disallow: /
|
||||
|
||||
User-Agent: aiHitBot
|
||||
Disallow: /
|
||||
|
||||
User-Agent: trovitBot
|
||||
Disallow: /
|
||||
|
||||
|
||||
|
||||
|
||||
Sitemap: https://www.salvagedb.com/sitemap.xml
|
||||
Host: https://www.salvagedb.com
|
||||
106
templates/search.html
Normal file
106
templates/search.html
Normal file
@ -0,0 +1,106 @@
|
||||
{% extends "head.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="hero-unit">
|
||||
<h1>Buying a Used Car? Check it!</h1>
|
||||
<br>
|
||||
<p><a href="https://www.salvagedb.com/" title="Salvagedb.com" rel="nofollow">Salvagedb.com</a> provides
|
||||
information about salvage or junk vehicles; damage from hail, flood or fire; mileage discrepancies or
|
||||
odometer rollback; and gray market vehicles. We do not claim that the car got in our databank has salvage
|
||||
title, but the fact that it has been damaged for sure. Our site helps people avoid buying a damaged vehicle
|
||||
in the past.
|
||||
</p></div>
|
||||
<div class="wrapper">
|
||||
|
||||
<center>
|
||||
<br>
|
||||
<table border="0">
|
||||
<tr>
|
||||
<td>
|
||||
<div class="span4">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<table id="one-column-emphasis" style="font-size: 16px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Make</td>
|
||||
<td>{{det[0][1]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Model</td>
|
||||
<td>{{det[0][2]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Year</td>
|
||||
<td>{{det[0][3]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Body Style</td>
|
||||
<td>{{det[0][4]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Engine</td>
|
||||
<td>{{det[0][5]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cylinders</td>
|
||||
<td>{{det[0][6]}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Drive</td>
|
||||
<td>{{det[0][7]}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<center>
|
||||
|
||||
{% if his %}
|
||||
|
||||
<table id="hor-minimalist-a" style="width:900px;font-size: 16px;">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">VIN</th>
|
||||
<th scope="col">Title</th>
|
||||
<th scope="col">Odometer</th>
|
||||
<th scope="col">Odometer Status</th>
|
||||
<th scope="col">Primary Damage</th>
|
||||
<th scope="col">Secondary Damage</th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for it in his%}
|
||||
<tr>
|
||||
<td style="color:red">{{it[1]}}</td>
|
||||
<td style="color:red">{{it[2]}}</td>
|
||||
<td style="color:red">{{it[3]}}</td>
|
||||
<td style="color:red">{{it[4]}}</td>
|
||||
<td style="color:red">{{it[5]}}</td>
|
||||
<td style="color:red">{{it[6]}}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
|
||||
<table border="0">
|
||||
<tr><td><h1>Salvage history not found.<h1></td></tr>
|
||||
</table>
|
||||
|
||||
{% endif %}
|
||||
|
||||
<div style="height: 50px"></div>
|
||||
</center>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
<br><br>
|
||||
{% endblock %}
|
||||
7
templates/sitemap.xml
Normal file
7
templates/sitemap.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<sitemap>
|
||||
{% for n in siten %}
|
||||
<loc>https://{{site}}/sitemaps/{{n[0]}}.xml</loc>
|
||||
{% endfor %}
|
||||
</sitemap>
|
||||
</sitemapindex>
|
||||
6
templates/sitemaps.xml
Normal file
6
templates/sitemaps.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url><loc>https://{{site}}/</loc></url>
|
||||
{% for it in sitemap_pages %}
|
||||
<url><loc>https://{{site}}/database/page{{it[0]}}.html</loc><changefreq>yearly</changefreq><priority>0.9</priority></url>
|
||||
{% endfor %}
|
||||
</urlset>
|
||||
1
tnsnames.ora
Normal file
1
tnsnames.ora
Normal file
@ -0,0 +1 @@
|
||||
db1_local=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=89.110.92.87) (PORT=17921))) (CONNECT_DATA=(SERVICE_NAME=db1)))
|
||||
8
watchdog.sh
Normal file
8
watchdog.sh
Normal file
@ -0,0 +1,8 @@
|
||||
wget -q --spider https://www.salvagedb.com
|
||||
retVal=$?
|
||||
if [ $retVal -ne 0 ]; then
|
||||
ps -ef | grep python | grep app.py | awk '{print $2;system("sudo kill -9 " $2)}'
|
||||
fi
|
||||
exit $retVal
|
||||
|
||||
#ps -ef | grep python | grep app.py | awk '{print $2;system("sudo kill -9 " $2)}'
|
||||
Loading…
x
Reference in New Issue
Block a user