mirror of
https://github.com/ManfredAabye/OpenSim-Viewer-Webinterface.git
synced 2026-08-14 00:48:10 +00:00
14102025
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
Konfigurieren sie ihre Robust.ini wie folgt:
|
||||
|
||||
MapTileURL = "${Const|BaseURL}:${Const|PublicPort}/oswebinterface/maptile.php";
|
||||
SearchURL = "${Const|BaseURL}:${Const|PublicPort}/oswebinterface/searchservice.php";
|
||||
DestinationGuide = "${Const|BaseURL}/oswebinterface/guide.php"
|
||||
AvatarPicker = "${Const|BaseURL}/oswebinterface/avatarpicker.php"
|
||||
GridSearch = "${Const|BaseURL}/oswebinterface/gridsearch.php";
|
||||
MessageURI = "${Const|BaseURL}/oswebinterface/messages.php";
|
||||
welcome = ${Const|BaseURL}/oswebinterface/welcomesplashpage.php
|
||||
economy = ${Const|BaseURL}:8008/
|
||||
about = ${Const|BaseURL}/oswebinterface/aboutinformation.php
|
||||
register = ${Const|BaseURL}/oswebinterface/createavatar.php
|
||||
help = ${Const|BaseURL}/oswebinterface/help.php
|
||||
password = ${Const|BaseURL}/oswebinterface/passwordreset.php
|
||||
partner = ${Const|BaseURL}/oswebinterface/partner.php
|
||||
GridStatus = ${Const|BaseURL}:${Const|PublicPort}/oswebinterface/gridstatus.php
|
||||
GridStatusRSS = ${Const|BaseURL}:${Const|PublicPort}/oswebinterface/gridstatusrss.php
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 37 KiB |
@@ -0,0 +1,258 @@
|
||||
'mailexpire.com', 'spamtrail.com', 'wwwnew.eu', '007addict.com', '012.net.il', '0451.com', '0815.ru', '10minutemail.com',
|
||||
'123greetings.com', '12wqqwmeds.com', '143.red-83-49-70.dynamicip.rima-tde.net', '163.com', '163data.com.cn', '168.com',
|
||||
'168city.com', '169.cc', '188mail.com', '1funplace.com', '1net.gr', '2-mail.com',
|
||||
'208.red-88-7-51.staticip.rima-tde.net', '212-127-152-19.cable.quicknet.nl', '212.com', '21cn.com',
|
||||
'238-133-231-201.fibertel.com.ar', '263.net.cn', '2XS.net', '2bsure.com', '2cute4u.co.uk', '2d.com', '2die4.com',
|
||||
'2friend.com', '2hotforyou.net', '2ndmail.com', '2rd.net', '33edmeds.com', '37.com', '3d-painting.com', '444.net',
|
||||
'45pharmes.com', '4g546ufgfrh5.org', '4g54asd5.org', '4hismail.com', '4worldmail.com', '50mail.com', '53.com',
|
||||
'53533b3b.cable.casema.nl', '6210.hu', '70.44.150.107.res-cmts.val.ptd.net', '702mail.co.za',
|
||||
'73.181.192.61.tokyo.flets.alpha-net.ne.jp', '775rgt.com', '84-232-149-95.rdsnet.ro', '86-122-52-191.rdsnet.ro',
|
||||
'88cresa.com', '97rock.com', 'ABEDRABBO.COM.NETSOLMAIL.NET', 'ADSL-140-41.myt.mu', 'ADSL-TPLUS-80-55.telecomplus.net',
|
||||
'COM.NETSOLMAIL.NET', 'COMCAST.NET', 'INBOUND.ABEDRABBO.COM.NETSOLMAIL.NET', 'Inktel.com', 'KX100.NET',
|
||||
'LearnLink.Emory.Edu', 'MAILCONTROL.com', 'MX01.KONTENT.De', 'Math.Princeton.EDU', 'MyPersonalEmail.com',
|
||||
'NETSOLMAIL.NET', 'OFSfa-03p5-110.ppp11.odn.ad.jp', 'OFSfa-04p3-188.ppp11.odn.ad.jp', 'SAUSGW01.amd.com', 'SPRIGGS.com',
|
||||
'Safe-mail.net', 'ShowFans.com', 'SpamMotel.com', 'Supergewinne.de', 'TMP.com', 'VideoMailStudio.com',
|
||||
'W2a14.w.pppool.de', 'Wappi.com', 'WaveCom.CA', 'a-mx.apm-internet.net', 'a-z-o.ch', 'a2000.nl', 'aaahmail.com',
|
||||
'aacgroup.co.uk', 'aaronsen.com', 'aaronsw.com', 'ab.cyberhome.ne.jp', 'abacus.ba', 'aball.de', 'abc123.ru', 'abcom.se',
|
||||
'abedofroses.com', 'abeille-web.com', 'abeisv.specialnotice.info', 'abelcine.com', 'aberton.ru', 'abess.com',
|
||||
'abestco.com', 'abirnet.co.il', 'abk.dk', 'abkawa.de', 'abm.com.pl', 'abmemory.com', 'abo.ch', 'abodetao.com',
|
||||
'abody.freeserve.co.uk', 'abramsart.com', 'abril.com.br', 'absolutecomfort.ru', 'absoluttrade.ru', 'absound.ca',
|
||||
'abu.org.my', 'abysse.net', 'ac-service.com', 'academyhr.com', 'accessdata.com', 'accmail.com', 'accomline.com',
|
||||
'accopmu.ru', 'acds.es', 'acihouston.com', 'acm.org', 'acmecity.com', 'acornonline.com', 'actasap.com',
|
||||
'activatormail.com', 'ad.jp', 'adaap.com', 'adamshall.com', 'adexec.com', 'adhost.com', 'adpepper.em.falkag.de',
|
||||
'adresse.de', 'adsl-598411e4.monradsl.monornet.hu', 'adsl.datanet.hu', 'adsl.proxad.net', 'adsl.tpnet.pl',
|
||||
'adsl196-28-98-217-196.adsl196-12.iam.net.ma', 'adultmail.tv', 'afpa.fr', 'afreeinternet.com', 'afrobacon.com',
|
||||
'agency.osha.eu.int', 'ai.net', 'airmail.net', 'airtelbroadband.in', 'al-islam.com', 'alacarta.com', 'alcplan.com',
|
||||
'alex4all.com', 'alexandria.cc', 'aley.com', 'alfc.com', 'aliancarep.com.br', 'allasianuk.com', 'allesklar.de',
|
||||
'allin1.com', 'alloymail.com', 'allstarz.org', 'alltel.net', 'almajal-omulibya.com', 'alpha-net.ne.jp',
|
||||
'alshamil.net.ae', 'altavista.fr', 'altavista.nl', 'altern.org', 'ameritech.net', 'amnestymail.com', 'amuro.net',
|
||||
'andylau.net', 'another.com', 'ansluten.com', 'antichef.net', 'antronomia.com', 'appriver.com',
|
||||
'area.city.shiroishi.miyagi.jp', 'ariadne-t.gr', 'aristotle.algonet.se', 'arizona.co.jp', 'armymail.com', 'arrakis.es',
|
||||
'artesmarciales.com', 'arti.vub.ac.be', 'artlover.com', 'artnet.com.br', 'as9105.com', 'asgard.net.au', 'asheville.com',
|
||||
'asia.com', 'asianhome.net', 'asianwired.com', 'asics.fr', 'asistencia.org', 'asta-net.com.pl', 'astra.qui.ub.es',
|
||||
'at1.atns.de', 'atlantech.net', 'atlas.cz', 'atlaswebmail.com', 'atnchile.com', 'att.biz', 'att.net', 'attbi.com',
|
||||
'audioseek.com', 'auna.net', 'aussiemail.com.au', 'australiamail.com', 'autofever-online.com', 'backstreetboysclub.com',
|
||||
'badtzmail.com', 'balcke-duerr.de', 'barracuda.callawaygardens.com', 'beaufortweb.org.uk', 'behringer.de',
|
||||
'bellsouth.net', 'bergelmir.ai.net', 'best-pagerank.de', 'bettahits.biz', 'bezeqint.net', 'bhnet.com.br', 'biering.de',
|
||||
'bigfoot.com', 'biglabels.de', 'bigping.com', 'bigping.de', 'bikerider.com', 'bilkent.edu.tr', 'billfan.com',
|
||||
'bio-muesli.info', 'bio-muesli.net', 'bionic.zerberus.de', 'biz.rr.com', 'biz4hits.biz', 'bk.ru', 'bkkmail.com',
|
||||
'bl7-106-81.dsl.telepac.pt', 'bla-bla.com', 'blackbox.at', 'blackburnmail.com', 'blarg.net', 'blazeblow.net',
|
||||
'blazemail.com', 'blogopt.com', 'blowsearch.com', 'blue-tomato.at', 'bluetone.cz', 'blueyonder.co.uk', 'bmpd.com',
|
||||
'bmypc.com', 'boardermail.com', 'boarderzone.com', 'bochnia.pl', 'bodhi.lawlita.com', 'boerse-extra.de', 'bogota.com',
|
||||
'boh.com', 'boitolet.com', 'bol.net.in', 'bombdiggity.com', 'bonbon.net', 'bonnag.com', 'boom.ru', 'bootbox.net',
|
||||
'bosnianmail.com', 'brasilia.net', 'brasiltelecom.net.br', 'bravanese.com', 'bredband.com', 'brightideatoys.info',
|
||||
'britneyclub.com', 'broadcastemail.com', 'brunet.bn', 'bta.net.cn', 'btc-net.bg', 'btcc.org', 'btcentralplus.com',
|
||||
'btmx1.sun.com', 'btopenworld.com', 'buck.ncia.net', 'buffymail.com', 'bumpymail.com', 'bumpymail.com', 'burgerking.de',
|
||||
'business.telecomitalia.it', 'buy-cheap-cigarette.info', 'buy-discount-cigarettes.info', 'buzzlemail.com',
|
||||
'bxemail.com', 'cable.casema.nl', 'cable.ntl.com', 'cable.quicknet.nl', 'caiway.nl', 'cams-wg.com', 'cape.com',
|
||||
'captain.net', 'car.co.id', 'caramail.com', 'cared45.com', 'caribsurf.com', 'carleton.ca', 'carlstedt.se',
|
||||
'carnival.com', 'cartsys.com', 'casema.net', 'casema.nl', 'cashette.com', 'cat-22.info', 'cataloniamail.com',
|
||||
'catholic.org', 'cc.fc.ul.pt', 'cc.hut.fi', 'cc.jyu.fi', 'ccc.gr', 'ccj.ufsc.br', 'ccsg.tau.ac.il', 'ccsi.com',
|
||||
'cdkomm.central-druck.intra', 'cdsnet.com', 'cel.com', 'celineclub.com', 'centermail*', 'centermail.com',
|
||||
'centermail.net', 'central-druck.de', 'centurytel.net', 'cern.ch', 'cgey.com', 'cghost.s-a-d.de', 'cgocable.net',
|
||||
'chalky.com', 'chalo.net', 'charter.com', 'check-inn.com', 'chello.at', 'chello.nl', 'chello.pl', 'china.com',
|
||||
'china139.com', 'chinabyte.com', 'christian.net', 'ciateq.mx', 'cibertribe.pt', 'cibis.de', 'cic.klte.hu',
|
||||
'cicely5.cicely.de', 'cif.fr', 'cigma.asso.fr', 'ciklo-centar.hr', 'cimaglobal.com', 'cime.nl', 'cin.nihon-u.ac.jp',
|
||||
'cinci.rr.com', 'city-of-nottingham.com', 'city2city.com', 'cityline.ru', 'clara.net',
|
||||
'client-200.121.222.241.speedy.net.pe', 'cliffhanger.com', 'club-internet.fr', 'clubvdo.net', 'clustermail.de',
|
||||
'cm.vtr.net', 'cmail01.tradeeasyhk.net', 'cnchost.com', 'cnn.com', 'co.kr', 'co.uk', 'cobra-tech.de', 'com.ar',
|
||||
'com.br', 'com.cn', 'com.ph', 'com.pl', 'com.tr', 'com.ve', 'comcast.net', 'comcastbusiness.net', 'comed45a.com',
|
||||
'computerbizop.com', 'conk.com', 'connectfree.co.uk', 'cool.ne.jp', 'coolhousing.net', 'coolquality.info',
|
||||
'cooperate.niftyserve.com', 'copetel.com.ar', 'correo1.com', 'cotas.com.bo', 'cotton-cottage.com', 'cottypediment.com',
|
||||
'couponpilot.de', 'covad.net', 'cox-internet.com', 'cox.net', 'cpe.netcabo.pt', 'craydon.com', 'craydon.de',
|
||||
'crewstart.com', 'crm1.numail.co.uk', 'cryohost.net', 'csi.com.do', 'ct-shop.com', 'ctk-gmbh.de', 'ctmiller.net',
|
||||
'cumbriamail.com', 'cust.in', 'cwaitrew.com', 'cwazy.co.uk', 'cx.airnet.ne.jp', 'cyber.net.pk', 'cyberemailings.com',
|
||||
'cyberhome.ne.jp', 'cyberservices.nl', 'cynetcity.com', 'd-rex.net', 'damhost.com', 'dannemann.de', 'darkcorner.com',
|
||||
'darkplace.com', 'dartmail.net', 'datacast.prserv.net', 'datacds.net', 'datanet.hu', 'davidcharles.co.uk',
|
||||
'dcemail.com', 'dejanews.com', 'delfi.lv', 'deliriumctouch.com', 'destin.com', 'dglnet.com.br', 'dic.blogopt.com',
|
||||
'dicoll.co.uk', 'didamail.com', 'digiro.net', 'dillard.edu', 'discardmail*', 'discardmail.com', 'discardmail.de',
|
||||
'disenthroner.com', 'dmailman.com', 'dnat.migtel.ru', 'dnbhq.com', 'dodgeit.com', 'dodgit.com', 'doh75.com',
|
||||
'dolally.com', 'dolfijn.nl', 'domaindisc.net', 'domatic.net', 'domvista.net', 'donau.de', 'dontsendmespam.de',
|
||||
'doramail.com', 'dowse.com', 'dr.com', 'dragonballz.net', 'dragonet.es', 'dream-dimensions.de', 'drizzle.com',
|
||||
'dsabaus.com', 'dsl-w.verizon.net', 'dsl.brasiltelecom.net.br', 'dsl.telepac.pt', 'dsl54025d43.pool.t-online.hu',
|
||||
'dsl85-98-27413.ttnet.net.tr', 'dsl88-246-479.ttnet.net.tr', 'dtl.co.nz', 'dublin.com', 'dumpmail.de', 'duse.net',
|
||||
'dyn.centurytel.net', 'dynamic.caiway.nl', 'dynamic.hinet.net', 'dynamic.orange.es', 'dynamic.sbb.co.yu',
|
||||
'dynamicip.rima-tde.net', 'e178227164.adsl.alicedsl.de', 'earthling.net', 'east.net.cn', 'east.verizon.net',
|
||||
'eastlink.ca', 'eastside.com', 'easynet.net', 'easypeasy.com', 'ebs.ulead.com', 'ec-messenger.com', 'echostation.com',
|
||||
'ecocity.com', 'ecua.net.ec', 'edu.tr', 'educationdirect.com', 'egn.de', 'ehmail.com', 'ei.tum.de', 'eintagsmail.de',
|
||||
'el-nacional.com', 'elbowraffle.net', 'email.accmail.com', 'emaildienst.de', 'emailias.com', 'emails.ru',
|
||||
'emailstar.net', 'emailstuff.com', 'emailsystems.com', 'emailto.de', 'emanator.demon.co.uk', 'emancipacion.org',
|
||||
'emar.de', 'ematic.com', 'embassysil.com', 'emocion.net.ar', 'emv9.com', 'enter.valdemarsvik.se', 'epicinnovations.com',
|
||||
'eppl.us', 'estnet.bg', 'etb.net.co', 'eudoramail.com', 'euireland.ie', 'eule-idt.de', 'euro.net', 'europe.adobe.com',
|
||||
'ev24.net', 'ewmd41.com', 'exclusive.pl', 'exo.com', 'ezrs.com', 'f6.dion.ne.jp', 'facilitynetwork.net', 'facom.fr',
|
||||
'fadmail.com', 'fastacura.com', 'fastchevy.com', 'fastchrysler.com', 'fastemail.us', 'fastermail.com',
|
||||
'fastkawasaki.com', 'fastmail.ca', 'fastmail.fm', 'fastmail.gr', 'fastmazda.com', 'fastmitsubishi.com',
|
||||
'fastnissan.com', 'fastres.net', 'fastsubaru.com', 'fastsuzuki.com', 'fasttoyota.com', 'fastwebnet.it',
|
||||
'fastyamaha.com', 'fatal.ru', 'fatty.boom.ru', 'fbx.proxad.net', 'female.ru', 'femenino.com', 'fenwick.com', 'fepg.net',
|
||||
'ff8.zzn.com', 'ffc.co.jp', 'fffpharems.com', 'fiberia.com', 'fibertel.com.ar', 'fiestabrava.com', 'finklfan.com',
|
||||
'firemail.de', 'firewall.biconcaveautomate.com', 'firstgate-newsletter.de', 'fishhoo.com', 'flashmail.com',
|
||||
'flets.alpha-net.ne.jp', 'flix.de', 'fon.bg.ac.yu', 'forenhoster.com', 'foryou74.com', 'foxinternet.com',
|
||||
'fr.clara.net', 'fr.logansvideos.com', 'free-online.net', 'free-spy.net', 'free.fr.logansvideos.com', 'freecontent.cc',
|
||||
'freemail.besoft.org', 'freemail.gr', 'freemail.it', 'freemail.ne.jp', 'freemail.nl', 'freenation.net',
|
||||
'freeproblem.com', 'freeserve.co.uk', 'freeserve.com', 'freetweak.com', 'front14.org', 'futurequest.net', 'gala.net',
|
||||
'gamewood.net', 'gamopi.pleonaste.com', 'gamport.com', 'gaoland.net', 'garbagemail.com', 'gate.net',
|
||||
'gateway.abedofroses.com', 'gateway.insightbb.com', 'gatewaybank.com', 'gawab.com', 'gaweb.com', 'gc.edu', 'gedris.org',
|
||||
'gee-wiz.com', 'geekmail.com', 'germanfriendfinder.com', 'gerts.net', 'gestorialallana.com', 'gestur.atnchile.com',
|
||||
'getscrews.com', 'gewhiz1.com', 'gewinnspiele.com', 'gfk.se', 'gfllp.com', 'ghosttexter.de',
|
||||
'gifts-of-distinction.co.uk', 'ginko.de', 'giorgioimages.com.au', 'gjr.paknet.com.pk',
|
||||
'glaswegian.sprinklecomponentry.com', 'glay.org', 'glencoeschools.org', 'glenmanning.com', 'globalobligations.com',
|
||||
'globalsources.com', 'globetrotter.net', 'globoxchange.com', 'gms.net', 'go-west.com', 'go4bowling.com', 'goaachen.de',
|
||||
'gogogolf.net', 'gohip.com', 'golfilla.info', 'goodsolitaire.com', 'gorillaswithdirtyarmpits.com', 'gothnation.com',
|
||||
'gouv-exil.org', 'graffiti.net', 'grafxhousenetwork.net', 'graphtablet.com', 'grat-host.in', 'gravity.net.au',
|
||||
'grechys.com', 'greenie.muc.de', 'gruis.hk', 'gt2004.org', 'gulfislands.com', 'gunmen.lestercur.com', 'gunsnet.net',
|
||||
'gurlmail.com', 'gymlaufen.ch', 'haburi.com', 'halfmortgage.com', 'halftomorrow.com', 'hantz.com', 'happyhangover.com',
|
||||
'hardcorexxxmag.com', 'hawaii.res.rr.com', 'hci.net', 'hediard.fr', 'heinrich-it-service.de', 'helicon.net',
|
||||
'hellokitty.com', 'helpdesk.nl', 'hepaticae.com', 'hermes.eolas-services.com', 'hiit.fi', 'hinet.net', 'hismail.cc',
|
||||
'hispeed.ch', 'hkem.com', 'hkepost.com', 'hkid.com', 'hobnaildas.com', 'hoffman.cc.sophia.ac.jp', 'holzach.biz',
|
||||
'home.nl', 'home.ro', 'homer.cyberwebhosting.net', 'host233-249-dynamic.9-87-r.retail.telecomitalia.it', 'hot.ee',
|
||||
'hotpop.com', 'houston.res.rr.com', 'huhmail.com', 'hurra.de', 'hurting.com', 'hush.com', 'hushmail.com',
|
||||
'hutchcity.com', 'hvm.macromedia.com', 'i-box-letter.de', 'i-love-cats.com', 'iam.net.ma', 'icdc.com',
|
||||
'idealyze.com.br', 'ifg.com', 'igd.fhg.de', 'iinet.com', 'ikp.atm.com.pl', 'il.comcast.net', 'illusionmovies.com',
|
||||
'imagelink.com.br', 'imails.info', 'iname.com', 'inbox.com', 'india.com', 'ineltec.ch', 'inet-shops.ru', 'inetekk.com',
|
||||
'infoapex.com', 'infomail.papierunion.de', 'infowest.com', 'injection.dk', 'inmail.sk', 'innercite.com',
|
||||
'inonesearch.com', 'insidebaltimore.net', 'insightbb.com', 'instuttgart.de', 'intelnett.com', 'inter.net.il',
|
||||
'interia.pl', 'internal.morris.com', 'iobox.de', 'iof.fhg.de', 'iol.cz', 'iop.org', 'ip.fastwebnet.it', 'ipeg.com',
|
||||
'iron2.cyberhome.ne.jp', 'isleuthmail.com', 'ispd.de', 'ist.co.za', 'itee.uq.edu.au', 'itn.is', 'itronic.cc',
|
||||
'itwol.bhp.com.au', 'iux01.insel.ch', 'ivillage.com', 'izbb.com', 'jaeggi.ch', 'japan.co.jp', 'javascript.org',
|
||||
'jaydemail.com', 'jazztel.es', 'jccomp.com', 'jesi.nettuno.it', 'jetable.com', 'jetable.net', 'jetable.org',
|
||||
'jippii.co.uk', 'johnsmith.co.uk', 'joinme.com', 'journalismfan.com', 'joymail.com', 'jpopmail.com', 'juchu.de',
|
||||
'jumpy.it', 'jungbecker.de', 'juno.com', 'justopt.info', 'kabachan.com', 'kabel1-vip.de', 'kajima.com', 'kali.com.cn',
|
||||
'kansascity.com', 'karachioye.com', 'kasmail.com', 'kavitha.com', 'kcdata.com', 'kefir.000buy.com', 'kellychen.com',
|
||||
'keromail.com', 'ket.de', 'kichimail.com', 'kittymail.com', 'kki.net.pl', 'klassmaster.com', 'klinik-rkz.de',
|
||||
'korea-dpr.com', 'koreamail.co.kr', 'kponet.fi', 'kschoice.net', 'kulturbetrieb.info', 'landings.com', 'lanetro.com',
|
||||
'laposte.net', 'larochelle-innovation.com', 'latinmail.com', 'lawyer.com', 'learnmoreonline.net', 'leere-drohungen.de',
|
||||
'legoland.de', 'lei3.cable.ntl.com', 'leo.org', 'leonlai.net', 'lestercur.com', 'lexpress.net', 'libero.iol.it',
|
||||
'liebe.de', 'linex.com', 'linuxmail.org', 'list.ru', 'literaturelover.com', 'livedoor.com', 'liwest.at', 'ln.edu.hk',
|
||||
'lnwhij.woulditbe.com', 'logansvideos.com', 'lookingtostayoutoflovetrouble.com', 'looksmart.co.uk', 'loveable.com',
|
||||
'loversearching.com', 'lsc.net.tw', 'lukoil.ru', 'lycos.co.uk', 'lycos.com', 'lycosmail.com', 'm-kg241p.ocn.ne.jp',
|
||||
'm-s-n.net', 'ma.kcom.ne.jp', 'mac-email.com', 'madcrazy.com', 'madeincanada.com', 'mail-in.freeserve.com',
|
||||
'mail-relay.handy.de', 'mail.4fts.com', 'mail.aacgroup.co.uk', 'mail.aas.com.kw', 'mail.abacus.ba', 'mail.abgrp.ru',
|
||||
'mail.adition.net', 'mail.adulthosting.com', 'mail.airbridge.net', 'mail.alfc.com', 'mail.bulgaria.com', 'mail.com',
|
||||
'mail.com.fr', 'mail.csuchico.edu', 'mail.cwverlag.de', 'mail.dangerzone.org', 'mail.fishhoo.com', 'mail.gr',
|
||||
'mail.htl22.at', 'mail.interq.or.jp', 'mail.kitty.cc', 'mail.kolej.mff.cuni.cz', 'mail.ru', 'mail.saabnet.com',
|
||||
'mail.usa.com', 'mail.zp.ua', 'mail15.com', 'mail2.pvt.net', 'mail2Alicia.com', 'mail2Amanda.com', 'mail2Bernard.com',
|
||||
'mail2Clark.com', 'mail2Dale.com', 'mail2Darlene.com', 'mail2Erin.com', 'mail2Eva.com', 'mail2Fred.com',
|
||||
'mail2Howard.com', 'mail2Josh.com', 'mail2Judy.com', 'mail2Julian.com', 'mail2Kristin.com', 'mail2Lance.com',
|
||||
'mail2Laurie.com', 'mail2Marries.com', 'mail2Rachel.com', 'mail2Ricky.com', 'mail2Riley.com', 'mail2Stephanie.com',
|
||||
'mail2Tim.com', 'mail2Tony.com', 'mail2go.com', 'mail2world.com', 'mail4u.nl', 'mailandnews.com', 'mailasia.com',
|
||||
'mailcity.com', 'mailenvelopes.com', 'mailer-service.de', 'mailexchanger.universia.es', 'mailexcite.com',
|
||||
'mailexpire.com', 'mailin8r.com', 'mailinator.com', 'mailinator.net', 'mailinator2.com', 'mailout.inetekk.com',
|
||||
'mailout1.inetekk.com', 'mailout2.inetekk.com', 'mailout3.inetekk.com', 'mailout4.inetekk.com', 'mailout5.inetekk.com',
|
||||
'mailoye.com', 'mailstart.com', 'maktoob.com', 'mandic.com.br', 'manfinancial.com', 'manus-manum-lavat.info',
|
||||
'marchmail.com', 'marijuana.com', 'marsmail.de', 'marsmail.eu', 'masterhost.ru', 'mauimail.com', 'maxonline.com.sg',
|
||||
'maxthon.com', 'mbx.cc', 'mchsi.com', 'mci.com', 'mcmac.com', 'mdnet.com.br', 'mecha.ne.jp', 'medic.net.au',
|
||||
'medicalmbn.com', 'medicinemail.com', 'medienkultur-stuttgart.de', 'medsxs4.com', 'megaboymail.com', 'meishi.co.jp',
|
||||
'melin.nu', 'mercaturejoy.com', 'meri.uwasa.fi', 'merlin.net.au', 'messagebeamer.de', 'messagizer.de',
|
||||
'messe-crossmedia.de', 'metaling.si', 'metorex.fi', 'mexxxico.com', 'mhd.de', 'microce.de', 'micromail.com',
|
||||
'micromail.com.au', 'micromail.ie', 'mid-heidelberg.de', 'midgard.ai.net', 'mighty.co.za', 'migtel.ru',
|
||||
'millennianet.com', 'millenniumbuggered.com', 'millionengewinn.net', 'mindspring.com', 'minedu.fi', 'mira.altern.org',
|
||||
'miranda.zianet.com', 'misco.fagms.de', 'misery.net', 'mitgliedersupport.de', 'ml1.net', 'mm.pl', 'mma.com.br',
|
||||
'modernart.ie', 'modesta.pl', 'modic.cz', 'modomail.com', 'modusconsult.de', 'moini.de', 'moj.go.kr', 'moncourrier.com',
|
||||
'monornet.hu', 'monradsl.monornet.hu', 'moo321.com', 'moonwalk.se', 'moose-mail.com', 'morefdumplings.com',
|
||||
'movemail.com', 'movilnet.com.ve', 'mrde45r.com', 'mt2009.com', 'mtu-net.ru', 'multimania.fr', 'mummys-boy.com',
|
||||
'musclemail.com', 'mwb.biglobe.ne.jp', 'mx.futurequest.net', 'mx.lukoil.ru', 'mx0.wwwnew.eu', 'mx1.fr.clara.net',
|
||||
'mx1.masterhost.ru', 'mx1.rdsnet.ro', 'mx2.fr.clara.net', 'mx4.mts.net', 'mx5.aball.de', 'mx5.fl.megamailservers.com',
|
||||
'mxfep01.bredband.com', 'mxzilla6.xs4all.nl', 'my-yep.com', 'myfastmail.com', 'myownemail.com', 'myriadrecords.com',
|
||||
'mysg.8m.com', 'myt.mu', 'mytoys-mail.de', 'mytrashmail.com', 'myx.net', 'nana.co.il', 'nastyservice.info',
|
||||
'naukanet.ru', 'ncfcomm.com', 'ne.jp', 'nebenjob.de', 'nervmich.net', 'nervtmich.net', 'net-search.org', 'net.ae',
|
||||
'net.au', 'net.co', 'net.il', 'net.in', 'net.ma', 'net.my', 'net.pe', 'net.pl', 'net.tr', 'net.tw', 'net24.it',
|
||||
'netbank.com.br', 'netcabo.pt', 'netcityhk.com', 'netlane.com', 'netscape.net', 'nettv4u.de', 'netvision.net.il',
|
||||
'netvista.net', 'netzidiot.de', 'nevada.co.jp', 'newhorizons.ac.cr', 'newmail.net', 'newprosdirect.com', 'news.com',
|
||||
'news.dannemann.de', 'news247.de', 'newsflash.de', 'newsletter.conrad.de', 'newsletter.otto.de', 'newsletter.penton.de',
|
||||
'newsubdomain.com', 'nicholastse.net', 'nicole.org', 'niftyserve.com', 'nockmedia.de', 'nomail2me.com',
|
||||
'nonstopconsulting.de', 'nospammail.net', 'nostra.by', 'ns1.on2web.dk', 'ntep.nec.co.jp', 'ntl.com', 'nts.ru',
|
||||
'nttc.org', 'numail.co.uk', 'numericable.fr', 'nurfuerspam.de', 'nv.charter.com', 'nyc.rr.com',
|
||||
'nycmny.east.verizon.net', 'nycny.net', 'o2.pl', 'odn.ad.jp', 'oico.com', 'oldmx1.init7.net', 'oleane.net',
|
||||
'ols.aaronsen.com', 'olympus.net', 'omni-host.com', 'on-luebeck.de', 'onebox.com', 'onetwomax.de', 'oni.pt',
|
||||
'online.ee', 'online.fr', 'online.no', 'online.sh.cn', 'ono.com', 'ono.es', 'onocable.ono.com', 'onthenet.com.au',
|
||||
'openface.ca', 'operamail.com', 'optician.com', 'optinet.de', 'oracle-consultant.co.uk', 'orange.es', 'orcon.net.nz',
|
||||
'org.my', 'oricom.ca', 'osi.pl', 'osn.de', 'otagochamber.co.nz', 'otakumail.com', 'otava.fi',
|
||||
'ottawakiosk.webminders.com', 'out.returnpath.net', 'outblaze.com', 'outgun.com', 'ozbytes.net.au', 'pacbell.net',
|
||||
'pajek.net', 'pamho.net', 'paris.com', 'parlex.com', 'passiongas.com', 'pathlengths.info', 'patra.net',
|
||||
'paycenter.com.cn', 'pbadmail.com', 'pearl-online.de', 'peoplemail.com.cn', 'perenter.com', 'perlen.dk',
|
||||
'perthmail.com', 'phantom.org', 'phentermine-site.5u.com', 'phentermineorder.boom.ru', 'phreaker.net', 'pi.se',
|
||||
'pinoymail.com', 'planet49.com', 'plastico.ro', 'playingcupid.com', 'pldt.net', 'plenio.de', 'pleonaste.com',
|
||||
'pmktg-online.com', 'pnb.com.ph', 'poker777.boom.ru', 'policeds.com', 'polyonomy.com', 'pookmail.com',
|
||||
'pool.t-online.hu', 'pool8249.interbusiness.it', 'pop06.odn.ne.jp', 'porno.wildrhino.com', 'portal2.com',
|
||||
'portcharles.net', 'post.com', 'power.net', 'ppp11.odn.ad.jp', 'pppoe.mtu-net.ru', 'priest.com',
|
||||
'printec-distribution.de', 'privacy.net', 'proconnect-mail.com', 'prod-infinitum.com.mx', 'prodigy.net.mx',
|
||||
'progressmail.net', 'pronet.be', 'propagation.net', 'prout.de', 'proxad.net', 'prtc.net', 'psicorps.com', 'psinet.be',
|
||||
'psmtp.com', 'ptd.net', 'public1.ptt.js.cn', 'punkass.com', 'purinmail.com', 'put2.net', 'qldsugar.com',
|
||||
'qseuzfv55a.adsl.datanet.hu', 'quality-only.info', 'qualityandsweet.info', 'quicknet.nl', 'quickslick.com',
|
||||
'quisalot.biz', 'qwas34d5.com', 'qwest.net', 'r-a-v-e.com', 'rad-dresden.de', 'rainbow.cc',
|
||||
'range81-158.btcentralplus.com', 'rb21ex.com', 'rbnet.com', 'rdominicana.com', 'rdsnet.ro', 'recode.me',
|
||||
'recovermyfiles.com', 'recycler.com', 'red-83-49-70.dynamicip.rima-tde.net', 'red-88-7-51.staticip.rima-tde.net',
|
||||
'red.bezeqint.net', 'rediffmail.com', 'refusalabsentminded.com', 'registeredsite.com', 'relay.intercom.es',
|
||||
'relay1.esined.net', 'res-cmts.val.ptd.net', 'res.rr.com', 'rescue-europe.com', 'retail.telecomitalia.it',
|
||||
'retsat1.com.pl', 'rezrez.rsc03.com', 'rfaust.de', 'rich.east.verizon.net', 'rima-tde.net', 'risquemail.com',
|
||||
'rock.com', 'rocketmail.com', 'rome.com', 'rootsrock.biz', 'rotario.com', 'rotld.ro', 'rr.com', 'russiangirlwant.com',
|
||||
'rzs02.init.de', 's-web.de', 'sacbeemail.com', 'safersurf.*', 'sandelf.de', 'sanfranmail.com', 'sapo.pt',
|
||||
'saturnperformance.com', 'sbcmail1.prodigy.net', 'sbcmail2.prodigy.net', 'sbcmail3.prodigy.net', 'sbcmail4.prodigy.net',
|
||||
'sbcmail5.prodigy.net', 'sbcmail6.prodigy.net', 'sbcmail7.prodigy.net', 'sbcmail8.prodigy.net', 'sbcmail9.prodigy.net',
|
||||
'schnaeppchenjagd.de', 'schwabe-braun.de', 'scotiacapital.com', 'secretmotive.com', 'secure-mail.cn',
|
||||
'secure.dot-names.com', 'secureserver.net', 'sedo.de', 'seed.net.tw', 'senseless-entertainment.com', 'sent.at',
|
||||
'server.intermediary.com', 'server420.dnslive.net', 'server73.appriver.com', 'sesmail.com', 'sewon-teletech.co.kr',
|
||||
'sgn3.sgn.com', 'shawcable.net', 'shopbeachcity.com', 'sicup.de', 'sierranet.net', 'sinewave.com', 'single-match.info',
|
||||
'sitefoundry.net', 'sitek.net', 'sitespider.co.uk', 'siutao.com', 'skating.net', 'skrzynka.pl', 'slappajack.com',
|
||||
'slb.de', 'sleekhost.com', 'sloncentral.info', 'smartmedia.co.uk', 'smithhanley.com', 'smtp.oleane.net',
|
||||
'smtp.prodigy.net.mx', 'smtp.secureserver.net', 'smtp1.lix.aon.at', 'smtp1.rslcom.fi', 'snail-mail.net',
|
||||
'sneakemail.com', 'snet.net', 'sofort-mail.de', 'sofortmail.de', 'softhome.net', 'sogetthis.com', 'solcon.nl',
|
||||
'solicit.cottypediment.com', 'sonet.sp.ru', 'soon.com', 'soyou.com', 'spacetolet.com', 'spam.la', 'spambob.com',
|
||||
'spambob.net', 'spambob.org', 'spambog.com', 'spambog.de', 'spambog.ru', 'spambot.com', 'spambox.info', 'spambox.us',
|
||||
'spamcorptastic.com', 'spamex.com', 'spamgourmet.com', 'spamherelots.com', 'spamhole.com', 'spaminator.de',
|
||||
'spammotel.com', 'spamtrail.com', 'spankthedonkey.com', 'sparfieber.de', 'spb.ru', 'spbnit.ru', 'speedy.com.ar',
|
||||
'speedy.net.pe', 'spire.com', 'spl.at', 'sprachzentrum.de', 'spray.it', 'spray.net', 'sprinklecomponentry.com',
|
||||
'ssl.fujitsu.com', 'ssole1.com', 'ssole3.com', 'stagcreek.ca', 'stage-n-light.de', 'stait.freeserve.co.uk',
|
||||
'stalco.co.ae', 'stams.strath.ac.uk', 'standesbeamte.de', 'stangroome.freeserve.co.uk', 'staple-online.co.uk',
|
||||
'star.teuto.de', 'starcoffee.de', 'stardust-lyrics.de', 'starfury77.club24.co.uk', 'stargard.mm.pl', 'starline.ee',
|
||||
'starmedia.com', 'start.com.au', 'start.no', 'staticip.rima-tde.net', 'stilap.hepaticae.com', 'stonemultimedia.com',
|
||||
'sun.com', 'sunsgame.com', 'superdating.biz', 'surfer.at', 'surfy.net', 'swu.dk', 'swva.net', 'sysob.de', 't-online.hu',
|
||||
'takas.lt', 'talkcity.com', 'tampabay.rr.com', 'tampascene.com', 'teaminform.com', 'techie.com', 'technikdirekt.de',
|
||||
'tedata.net', 'teewars.org', 'tele.dk', 'telecomitalia.it', 'telecomplus.net', 'telenor.co.uk', 'telepac.pt',
|
||||
'telesp.net.br', 'telkom.net', 'telkomadsl.co.za', 'telstra.com', 'telus.net', 'temet-nosce.info', 'templetae.com',
|
||||
'temporarily.de', 'temporaryinbox.com', 'tempus-fugit.info', 'termquotes.prserv.net', 'terra.com', 'terra.com.gt',
|
||||
'terra.com.sv', 'terra.es', 'terra.net.lb', 'test.com', 'test.de', 'thatsthegame.com', 'the-lair.com',
|
||||
'the-village.co.uk', 'thebrewer.com', 'thecigarettes.info', 'thedepot.com', 'thedoghousemail.com', 'thefishfinder.com',
|
||||
'themail.co.uk', 'thewannadies.co.uk', 'thewildmild.de', 'thisdomainl.com', 'thisisnotmyrealemail.com', 'thy.com',
|
||||
'ties.itu.ch', 'tiscali.co.uk', 'tiscali.fr', 'tiscali.it', 'tm.net.my', 'tnp.pl', 'tokorea.com.cn',
|
||||
'tokyo.flets.alpha-net.ne.jp', 'tom.com', 'toosexyforyou.com', 'topaz.kiev.ua', 'toursdesport.com', 'toys4bigboys.net',
|
||||
'tpnet.pl', 'trademailer.de', 'trash-mail.com', 'trash-mail.de', 'trash-mail.net', 'trashdevil.com', 'trashdevil.de',
|
||||
'trashmail.com', 'trashmail.de', 'trashmail.net', 'trashmail.org', 'trashymail.com', 'trinion1.datenloch.de',
|
||||
'trionline.de', 'truthmail.com', 'ttnet.net.tr', 'tv1.de', 'tv8.se', 'tvalliance.co.uk', 'tvcheck.se', 'tvnet.hu',
|
||||
'tvnet.lt', 'tvpress.channel4.ru', 'tvs.no', 'tvscheessel.de', 'tvtel.pt', 'twtelecom.net', 'tx.res.rr.com',
|
||||
'u-net.com', 'uark.edu', 'ublaze.com', 'uk111.com', 'uk2.net', 'uk420.com', 'ulb.ac.be', 'ultrapostman.com',
|
||||
'unete.com', 'unicum.de', 'uniserve.ca', 'universia.es', 'upc-d.chello.nl', 'usa.com', 'usa.net', 'usarabia.com',
|
||||
'usclargo.com', 'user.auna.net', 'user.veloxzone.com.br', 'usertools.net', 'uswestmail.net', 'uunet.uu.net',
|
||||
'uyi78h.com', 'uytgrt.com', 'uzpi.cz', 'val.ptd.net', 'valuehost.ru', 'veloxzone.com.br', 'veretekk.com', 'verizon.com',
|
||||
'verizon.net', 'vested99.com', 'veyr4zw.com', 'vfemail.net', 'videotron.ca', 'vilaweb.com', 'virtua.com.br',
|
||||
'virtual.finland.fi', 'virus112.com', 'vistaprint.rsc01.com', 'visto.com', 'vivax.com.br', 'vmx40.multikabel.net',
|
||||
'vntc.ru', 'vrflow.oulu.fi', 'vsnl.net.in', 'vtr.net', 'vtt.fi', 'wakwak.ne.jp', 'wanaboo.com', 'wanadoo.co.uk',
|
||||
'wanadoo.fr', 'wanadoo.nl', 'waw.pl', 'wazup.com', 'wcenviro.com', 'we4z3.com', 'web-mail-service.de', 'webfun.tv',
|
||||
'webmail.co.za', 'webmail.net.nz', 'webpool.de', 'wegwerfadresse.de', 'wels.net', 'wemedsc.com', 'westham-fan.com',
|
||||
'wewonthewar.com', 'whatever.com', 'wideopenwest.com', 'wildmail.com', 'willhackforfood.biz', 'wisconsin.cern.ch',
|
||||
'woerth.de', 'world4fun.ch', 'worldonline.de', 'wowzers.net', 'wp.pl', 'wprost.pl', 'wuerzburg.de', 'www.bundestag.de',
|
||||
'www.freewebs.com', 'www.hot.ee', 'www1.bonusoptinlist.com', 'www1.cornbreadparty.com', 'www1.dirtydawgmailer.com',
|
||||
'www1.getpornmailer.com', 'www1.qutetown.com', 'www1.readoptinmail.com', 'www1.superoptinmail.com',
|
||||
'www1.wistlework.com', 'www1.xxxoptinmail.com', 'www2.cornbreadparty.com', 'www2.doubleoptinxxx.com',
|
||||
'www2.funnymondays.com', 'www2.goodxxxmail.com', 'www2.optinpimps.com', 'www2.overyounow.com', 'www2.perfectoptin.com',
|
||||
'www2.pimpoptinmailer.com', 'www2.solidemailservers.com', 'www2.topleveloptin.com', 'www2.youoptedin.com',
|
||||
'www3.bobblebuster.com', 'www3.confirmedoptin.com', 'www3.crazycrowns.com', 'www3.freshmailers.com',
|
||||
'www3.goldenoptin.com', 'www3.goodxxxmail.com', 'www3.optedinmailer.com', 'www3.pornoptin.com',
|
||||
'www3.primetimemailer.com', 'www3.sandwichmonkey.com', 'www3.stationarybands.com', 'www3.topleveloptin.com',
|
||||
'www3.wildjuicer.com', 'www3.youoptedin.com', 'www4.bobblebuster.com', 'www4.dearestkindly.com',
|
||||
'www4.dirtydawgmailer.com', 'www4.freshoptinmail.com', 'www4.hornymailers.com', 'www4.platinumpornmailer.com',
|
||||
'www4.primetimemailer.com', 'www4.youoptedin.com', 'www5.adultmarketinggroup.com', 'www5.dearestkindly.com',
|
||||
'www5.dirtydawgmailer.com', 'www5.freshoptinmails.com', 'www5.marketingoptin.com', 'www5.theonlyoptinlist.com',
|
||||
'www5.xxxoptinmailer.com', 'www6.freshoptinmail.com', 'www6.jerkydrive.com', 'www6.perfectoptin.com',
|
||||
'www6.pimpoptinmailer.com', 'www6.truepimpmarketing.com', 'www7.bargainoptin.com', 'www7.freshoptinmails.com',
|
||||
'www7.getoptedin.com', 'www7.marketingoptin.com', 'www7.pickuppieces.com', 'www7.premiummailsystems.com',
|
||||
'www7.qutetown.com', 'www7.truepimpmarketing.com', 'www7.xxxmailers.com', 'www8.bargainoptin.com',
|
||||
'www8.confirmedoptin.com', 'www8.cornbreadparty.com', 'www8.foolspleasure.com', 'www8.freshoptinmail.com',
|
||||
'www8.optedinmailer.com', 'www8.readoptinmail.com', 'www8.xxxmailers.com', 'www8.xxxoptinmailer.com',
|
||||
'www9.awesomexxxmailer.com', 'www9.doubleoptinxxx.com', 'www9.friendlycluster.com', 'www9.pickuppieces.com',
|
||||
'www9.pureoptins.com', 'www9.sandwichmonkey.com', 'www9.sexoptedin.com', 'www9.stationarybands.com',
|
||||
'www9.yourmailservices.com', 'wwwplanet.net', 'wx88.net', 'x4u2.desy.de', 'xcelco.on.ca', 'xmr3.com', 'xoom.com',
|
||||
'xp-hosting.com', 'xpost.net', 'yandex.ru', 'yapost.com', 'yebox.com', 'yehey.com', 'yemenmail.com', 'yes.com',
|
||||
'ymail.ru', 'yourfrontdoor.com', 'yourmail.com.au', 'yyhmail.com', 'zeebede.com', 'zhongkang.com.cn', 'zipmail.com.br',
|
||||
'zipolite.com', 'zipzaps.de', 'zmail.ru', 'zooloose.ch', 'zoznam.sk', 'zrekjc.icangonow.com', 'zworg.com',
|
||||
'zybermail.com', 'zzn.com',
|
||||
@@ -0,0 +1,202 @@
|
||||
<?php
|
||||
require_once 'env.php';
|
||||
|
||||
// RemoteAdmin
|
||||
// RemoteAdmin-Konfiguration
|
||||
// RemoteAdmin configuration
|
||||
define('REMOTEADMIN_URL', 'localhost'); // URL des RemoteAdmin-Servers / URL of the RemoteAdmin server
|
||||
define('REMOTEADMIN_PORT', 8002); // Port des RemoteAdmin-Servers / Port of the RemoteAdmin server
|
||||
|
||||
// Seitenadressen
|
||||
// Website addresses
|
||||
define('BASE_URL', 'http://yourdomain.com'); // Basis-URL der Webseite / Base URL of the website
|
||||
define('SITE_NAME', 'Dein Grid Name'); // Name des Grids / Name of the grid
|
||||
|
||||
// Konfigurationsoptionen Standard Template:
|
||||
// Template configuration options:
|
||||
// "headerBlanc.php", "headerST.php", "headerW3.php", "headerBT5.php", "headerFoundation.php", "headerMaterialize.php", "headerTailwind.php", "headerPrimer.php", "headerTachyons.php", "headerSpectre.php", "headerTent.php"
|
||||
define('HEADER_FILE', 'headerBlanc.php'); // Ändere diesen Wert, um die verschiedenen Template-Header-Dateien zu laden. / Change this value to load different template header files.
|
||||
|
||||
// Konfigurationsoption für den Banker
|
||||
// Banker configuration option
|
||||
define('BANKER_UUID', '00000000-0000-0000-0000-000000000000'); // UUID des Bankers / UUID of the banker
|
||||
|
||||
// Verifizierungsfunktionen
|
||||
// Verification methods
|
||||
define('VERIFICATION_METHOD', 'email'); // 'email' oder 'uuid' / 'email' or 'uuid'
|
||||
|
||||
// Asset Bilder
|
||||
// Asset images
|
||||
define('ASSETPFAD', 'cache/'); // Pfad zum Asset-Cache / Path to the asset cache
|
||||
define('ASSET_FEHLT', ASSETPFAD . '00000000-0000-0000-0000-000000000002'); // Standardbild für fehlende Assets / Default image for missing assets
|
||||
define('GRID_PORT', ':8002'); // Port für Grid-Dienste / Port for grid services
|
||||
define('GRID_ASSETS', ':8003/assets/'); // Pfad für Grid-Assets / Path for grid assets
|
||||
define('GRID_ASSETS_SERVER', BASE_URL . 'GRID_ASSETS'); // URL des Asset-Servers / URL of the asset server
|
||||
|
||||
// Guide
|
||||
define('GRIDLIST_FILE', 'include/gridlist.csv'); // Datei für die Grid-Liste / File for the grid list
|
||||
define('GRIDLIST_VIEW', 'json'); // 'json', 'database' oder 'grid' / 'json', 'database', or 'grid'
|
||||
|
||||
// Tagesmeldungen
|
||||
// Daily updates
|
||||
define('SHOW_DAILY_UPDATE', true); // Ein- oder ausschalten / Enable or disable
|
||||
define('DAILY_UPDATE_TYPE', 'rss'); // 'text' oder 'rss' / 'text' or 'rss'
|
||||
define('DAILYTEXT', 'Dies ist eine aus der config.php konfigurierte tagesaktuelle Einblendung.'); // Tagesaktueller Text / Daily text
|
||||
define('RSS_FEED_URL', BASE_URL . '/oswebinterface/include/rss-feed.php'); // URL des RSS-Feeds / URL of the RSS feed
|
||||
define('FEED_CACHE_PATH', __DIR__.'/feed_cache.html'); // Cache-Dateipfad / Cache file path
|
||||
define('FEED_CACHE_MAX_AGE', 3600); // Cache max. 60 Minuten alt / Cache max. 60 minutes old
|
||||
define('CALENDAR_TITLE', 'Event Calendar'); // Titel des Event-Kalenders / Title of the event calendar
|
||||
|
||||
// Media
|
||||
define('MEDIA_SERVER', 'http://localhost:8500/stream'); // URL des Media-Servers / URL of the media server
|
||||
define('MEDIA_SERVER_STATUS', 'http://localhost:8500/status-json.xsl'); // Status-URL des Media-Servers / Status URL of the media server
|
||||
|
||||
// Passwörter (unbedingt austauschen!)
|
||||
// Passwords (must be changed!)
|
||||
// Für das Austauschen der Passwörter könnt ihr den paswd_generator.php benutzen, den ihr im Verzeichnis /include findet.
|
||||
// To change the passwords, you can use paswd_generator.php located in the /include directory.
|
||||
$registration_passwords_register = ["VpOM2bHFc6gdqUim", "zMemu5UJuro60nYJ", "cD3pc5JidIYMkTFT", "FBJpMfLHnVXNAncy", "1vyekSHvL3bYDNhT"];
|
||||
$registration_passwords_reset = ["eYUzmLO3lWDoEUZA", "ufFG8zJZvOuj6KzM", "tjwggl9ts3o6fCUs", "FYKn70uhJRFy6pum", "jEXqiYewLl6iPTCT"];
|
||||
$registration_passwords_partner = ["hBEMpDKEhEiBtMXx", "wtnpTrCSswBVbR9o", "Q9HUnk7BjIvKZ1qN", "YLta8TC4YivhYuMc", "RNhGZaJtCnwq26fs"];
|
||||
$registration_passwords_inventory = ["e46D3pp1bTV7qpBg", "VtsCH82rmtPix5AU", "VKY2kFV6qmrd0iHi", "VihXaKyikESI5rTK", "fGN9dUIszXdZJr3v"];
|
||||
$registration_passwords_datatable = ["yOu2IxJ8146dS0kY", "y3fycXPplGS6CjY5", "ycwRc0fr2QbZNPqc", "3pTz8Zk6qeYUf2VY", "G10LGqpqs0BjDdEO"];
|
||||
$registration_passwords_listinventar = ["IWhMSXFWxwM8Gw4b", "AbzWoKqSDLyKaQXV", "kBFFJTUs2CvVuHIM", "A9VuDk9rTdcSXwLg", "uhArUTWoVY9j5eXi"];
|
||||
$registration_passwords_picreader = ["sho8zTi2AXiane0s", "lC0ppkQN44Qxle8z", "yOCTqbHjJGuGSKdh", "efOOM4T8o3h5Vu4o", "snSOrbrvn9le3pG1"];
|
||||
$registration_passwords_mutelist = ["YOLrPXUQGPs4VtKC", "svBfxgcGePLmbKxf", "dGZQNZcDmYJXt593", "XTtuHEUtJH5rQzPQ", "crsSbntrL0gFBRwH"];
|
||||
$registration_passwords_avatarpicker = ["EugW3d9jU5EPlPqq", "H2sHVvuDf8AMYF6t", "XTTQ4689dMiu8afT", "SWogtvKIpR9Mxozy", "vateDhRqGjIlhyBw"];
|
||||
$registration_passwords_economy = ["5MvFSN7kbQ3ydFUl", "EvNywokrdO8NfaAc", "G47u0ppMSyOHEptB", "1cUgVgExxukp8zua", "YRNlhyr5OMObr2na"];
|
||||
$registration_passwords_events = ["LvRBVZOGY65deOpS", "FWVBcqNPKUecDK7b", "2JJzb1kv7aQQM9kp", "636pCKpPZSqvDYBP", "aqYicdJdnrnV4Vvw"];
|
||||
|
||||
// Farben der Webseite
|
||||
// Website colors
|
||||
$colorSchemes = array(
|
||||
'grayscale1' => array('header' => '#333333', 'footer' => '#333333', 'secondary' => '#666666', 'primary' => '#E0E0E0'),
|
||||
'grayscale2' => array('header' => '#4F4F4F', 'footer' => '#4F4F4F', 'secondary' => '#A0A0A0', 'primary' => '#FFFFFF'),
|
||||
'grayscale3' => array('header' => '#2B2B2B', 'footer' => '#2B2B2B', 'secondary' => '#858585', 'primary' => '#D9D9D9'),
|
||||
'emeraldDream' => array('header' => '#50C878', 'footer' => '#50C878', 'secondary' => '#98FB98', 'primary' => '#006400'),
|
||||
'coralReef' => array('header' => '#FF7F50', 'footer' => '#FF7F50', 'secondary' => '#FFD700', 'primary' => '#8B0000'),
|
||||
'purpleHaze' => array('header' => '#8A2BE2', 'footer' => '#8A2BE2', 'secondary' => '#DA70D6', 'primary' => '#4B0082'),
|
||||
'sunshineMeadow' => array('header' => '#FFD700', 'footer' => '#FFD700', 'secondary' => '#F0E68C', 'primary' => '#556B2F'),
|
||||
'autumnLeaves' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FFD700', 'primary' => '#8B4513'),
|
||||
'coolCyan' => array('header' => '#00CED1', 'footer' => '#00CED1', 'secondary' => '#E0FFFF', 'primary' => '#20B2AA'),
|
||||
'deepPurple' => array('header' => '#9400D3', 'footer' => '#9400D3', 'secondary' => '#9932CC', 'primary' => '#8B008B'),
|
||||
'warmAmber' => array('header' => '#FFBF00', 'footer' => '#FFBF00', 'secondary' => '#FFD700', 'primary' => '#FF8C00'),
|
||||
'gentlePink' => array('header' => '#FF69B4', 'footer' => '#FF69B4', 'secondary' => '#FFB6C1', 'primary' => '#FF1493'),
|
||||
'midnightTeal' => array('header' => '#008080', 'footer' => '#008080', 'secondary' => '#40E0D0', 'primary' => '#20B2AA'),
|
||||
'sunsetOrange' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FF6347', 'primary' => '#FF7F50'),
|
||||
'forestGreen' => array('header' => '#228B22', 'footer' => '#228B22', 'secondary' => '#32CD32', 'primary' => '#006400'),
|
||||
'icyBlue' => array('header' => '#00BFFF', 'footer' => '#00BFFF', 'secondary' => '#ADD8E6', 'primary' => '#1E90FF'),
|
||||
'rosyRed' => array('header' => '#FF6347', 'footer' => '#FF6347', 'secondary' => '#FF7F7F', 'primary' => '#FF4500'),
|
||||
'plumPurple' => array('header' => '#8B008B', 'footer' => '#8B008B', 'secondary' => '#DA70D6', 'primary' => '#9932CC'),
|
||||
'vibrantYellow' => array('header' => '#FFD700', 'footer' => '#FFD700', 'secondary' => '#FFFF00', 'primary' => '#FFA500'),
|
||||
'aquaMarine' => array('header' => '#7FFFD4', 'footer' => '#7FFFD4', 'secondary' => '#E0FFFF', 'primary' => '#40E0D0'),
|
||||
'burntSienna' => array('header' => '#E97451', 'footer' => '#E97451', 'secondary' => '#D2691E', 'primary' => '#CD5C5C'),
|
||||
'mintGreen' => array('header' => '#98FF98', 'footer' => '#98FF98', 'secondary' => '#ADFF2F', 'primary' => '#32CD32'),
|
||||
'sapphireBlue' => array('header' => '#0F52BA', 'footer' => '#0F52BA', 'secondary' => '#4682B4', 'primary' => '#1E90FF'),
|
||||
'coralPink' => array('header' => '#F88379', 'footer' => '#F88379', 'secondary' => '#FF7F50', 'primary' => '#FF6347'),
|
||||
'jadeGreen' => array('header' => '#00A36C', 'footer' => '#00A36C', 'secondary' => '#50C878', 'primary' => '#2E8B57'),
|
||||
'peachOrange' => array('header' => '#FFDAB9', 'footer' => '#FFDAB9', 'secondary' => '#FFE4B5', 'primary' => '#FFA07A'),
|
||||
'rubyRed' => array('header' => '#9B111E', 'footer' => '#9B111E', 'secondary' => '#FF6347', 'primary' => '#B22222'),
|
||||
'skyBlue' => array('header' => '#87CEEB', 'footer' => '#87CEEB', 'secondary' => '#B0E0E6', 'primary' => '#00BFFF'),
|
||||
'burntOrange' => array('header' => '#FF7F50', 'footer' => '#FF7F50', 'secondary' => '#FFA07A', 'primary' => '#FF4500'),
|
||||
'standardcolor' => array('header' => '#cdb38b', 'footer' => '#eecfa1', 'secondary' => '#f5f5dc', 'primary' => '#4F4F4F')
|
||||
);
|
||||
// Die Farbschaltflächen habe ich eingefügt, damit man sich ein Gesamtbild der Farbschemata machen kann.
|
||||
// Bitte lasst eurer Kreativität freien Lauf und ändert die Farbschemata nach Belieben.
|
||||
// I added the color buttons to give an overview of the color schemes.
|
||||
// Feel free to unleash your creativity and modify the color schemes as you like.
|
||||
define('SHOW_COLOR_BUTTONS', false); // Farbschaltflächen anzeigen (true/false) / Show color buttons (true/false)
|
||||
define('INITIAL_COLOR_SCHEME', 'standardcolor'); // Farbschema auswählen / Select color scheme
|
||||
|
||||
// Farben und Schriftart
|
||||
// Colors and fonts
|
||||
$currentColorScheme = $colorSchemes[INITIAL_COLOR_SCHEME];
|
||||
define('HEADER_COLOR', $currentColorScheme['header']); // Header-Farbe / Header color
|
||||
define('FOOTER_COLOR', $currentColorScheme['footer']); // Footer-Farbe / Footer color
|
||||
define('SECONDARY_COLOR', $currentColorScheme['secondary']); // Sekundärfarbe / Secondary color
|
||||
define('PRIMARY_COLOR', $currentColorScheme['primary']); // Primäre Schriftfarbe / Primary text color
|
||||
|
||||
define('FONT_FAMILY_STATS', 'Arial, Verdana, sans-serif'); // Schriftart für Statistiken / Font for statistics
|
||||
define('FONT_FAMILY', 'Pacifico, normal, serif'); // Schriftart für die Webseite / Font for the website
|
||||
|
||||
// Schriftgrößen
|
||||
// Font sizes
|
||||
define('BASE_FONT_SIZE', '26px'); // Standardgröße für Text / Default text size
|
||||
define('TITLE_FONT_SIZE', '48px'); // Größe für Überschriften / Size for headings
|
||||
define('STATS_FONT_SIZE', '14px'); // Größe für Statistik-Text / Size for statistics text
|
||||
|
||||
// Links
|
||||
define('LINK_COLOR', '#3A3A3A'); // Standard Link-Farbe / Default link color
|
||||
define('LINK_HOVER_COLOR', 'red'); // Link-Farbe beim Hover / Link color on hover
|
||||
|
||||
// Hintergrund- und Vordergrundbilder
|
||||
// Background and foreground images
|
||||
define('BACKGROUND_IMAGE', 'pics/transparent.png'); // Hintergrundbild / Background image
|
||||
define('FOREGROUND_IMAGE', 'pics/transparent.png'); // Logo oder Vordergrundbild / Logo or foreground image
|
||||
define('BACKGROUND_OPACITY', 1.0); // Transparenz des Hintergrunds / Background opacity
|
||||
define('FOREGROUND_OPACITY', 1.0); // Transparenz des Logos / Logo opacity
|
||||
|
||||
// Anzeigeoptionen
|
||||
// Display options
|
||||
define('LOGO_ON', 'OFF'); // Logo anzeigen: ON / OFF / Show logo: ON / OFF
|
||||
define('TEXT_ON', 'ON'); // Begrüßungstext anzeigen: ON / OFF / Show welcome text: ON / OFF
|
||||
define('LOGO_PATH', 'include/Metavers150.png'); // Pfad zum Logo / Path to the logo
|
||||
define('LOGO_WIDTH', '50%'); // Logo-Breite / Logo width
|
||||
define('LOGO_HEIGHT', '25%'); // Logo-Höhe / Logo height
|
||||
define('GUIDE_DATA', 'DATA'); // DATA/JSON guide anzeigen / Show DATA/JSON guide
|
||||
|
||||
// Begrüßungstext
|
||||
// Welcome text
|
||||
define('LOGO_FONT', 'Lobster'); // Schriftart des Logos / Font for the logo
|
||||
define('PRIMARY_COLOR_LOGO', '#00FFFF'); // Allgemeine Schriftfarbe / General text color
|
||||
define('WELCOME_TEXT', '<p> Willkommen im ' . SITE_NAME . '</p>'); // Begrüßungstext / Welcome text
|
||||
define('WELCOME_TEXT_WIDTH', '50%'); // Standardbreite / Default width
|
||||
define('WELCOME_TEXT_HEIGHT', 'auto'); // Standardhöhe / Default height
|
||||
define('WELCOME_TEXT_COLOR', PRIMARY_COLOR_LOGO); // Farbe des Textes / Text color
|
||||
define('WELCOME_TEXT_ALIGN', 'left'); // Zentriert, links oder rechts / Centered, left, or right
|
||||
define('WELCOME_TEXT_FONT_SIZE', '24px'); // Schriftgröße des Textes / Text font size
|
||||
|
||||
// Bildanzeige-Einstellungen
|
||||
// Image display settings
|
||||
define('SLIDESHOW_FOLDER', './images'); // Verzeichnis für die Bilder / Directory for images
|
||||
define('IMAGE_SIZE', 'width:100%;height:100%'); // Größe der Bilder / Size of images
|
||||
define('SLIDESHOW_DELAY', 9000); // Zeit zwischen Bildern (in ms) / Time between images (in ms)
|
||||
|
||||
// Einstellungen für Maptiles
|
||||
// Settings for maptiles
|
||||
define('FREI_COLOR', '#0088FF'); // Farbe für freie Koordinaten / Color for free coordinates
|
||||
define('BESCHLAGT_COLOR', '#55C155'); // Farbe für SingleRegion / Color for SingleRegion
|
||||
define('VARREGION_COLOR', '#006400'); // Farbe für VarRegion / Color for VarRegion
|
||||
define('CENTER_COLOR', '#FF0000'); // Farbe für Zentrum / Color for center
|
||||
define('TILE_SIZE', '25px'); // Größe der Farbfelder / Size of color fields
|
||||
|
||||
// Zentrum des Grids
|
||||
// Center of the grid
|
||||
define('CONF_CENTER_COORD_X', 3000); // X-KOORDINATE DES ZENTRUMS / X coordinate of the center
|
||||
define('CONF_CENTER_COORD_Y', 3000); // Y-KOORDINATE DES ZENTRUMS / Y coordinate of the center
|
||||
|
||||
define('MAPS_X', 32); // Anzahl der Kacheln in X-Richtung / Number of tiles in X direction
|
||||
define('MAPS_Y', 32); // Anzahl der Kacheln in Y-Richtung / Number of tiles in Y direction
|
||||
|
||||
// MOTD-Einstellung: 'Dyn' für dynamisch, 'Static' für statisch
|
||||
// MOTD setting: 'Dyn' for dynamic, 'Static' for static
|
||||
define('MOTD', 'Dyn'); // Oder 'Static' / Or 'Static'
|
||||
|
||||
// Statische MOTD (nur relevant, wenn MOTD auf 'Static' gesetzt ist)
|
||||
// Static MOTD (only relevant if MOTD is set to 'Static')
|
||||
define('MOTD_STATIC_MESSAGE', 'Willkommen auf im Grid! Bitte beachte unsere Regeln.'); // Statische Nachricht / Static message
|
||||
define('MOTD_STATIC_TYPE', 'system'); // Typ der Nachricht / Type of message
|
||||
define('MOTD_STATIC_URL_TOS', BASE_URL . '/include/tos.php'); // URL zur TOS-Seite / URL to the TOS page
|
||||
define('MOTD_STATIC_URL_DMCA', BASE_URL . '/include/dmca.php'); // URL zur DMCA-Seite / URL to the DMCA page
|
||||
|
||||
// Definiere verschiedene RSS-Feed-URLs getrennt durch Komma.
|
||||
// Define different RSS feed URLs separated by commas.
|
||||
$feed_urls = [
|
||||
'http://opensimulator.org/viewgit/?a=rss-log&p=opensim', // Standard-Feed / Default feed
|
||||
'https://www.hypergridbusiness.com/feed'
|
||||
];
|
||||
|
||||
// Maximale Anzahl der Einträge pro Feed
|
||||
// Maximum number of entries per feed
|
||||
$max_entries = 50;
|
||||
?>
|
||||
@@ -0,0 +1,225 @@
|
||||
<?php
|
||||
// Check if env.php exists, if not, show setup instructions
|
||||
if (!file_exists(__DIR__ . '/env.php')) {
|
||||
die('
|
||||
<div style="font-family: Arial, sans-serif; max-width: 600px; margin: 50px auto; padding: 20px; border: 2px solid #dc3545; border-radius: 8px; background: #f8f9fa;">
|
||||
<h2 style="color: #dc3545; margin-top: 0;">⚠️ Configuration Required</h2>
|
||||
<p><strong>The environment configuration file is missing!</strong></p>
|
||||
<p>Please follow these steps to complete the setup:</p>
|
||||
<ol>
|
||||
<li>Copy <code>include/env.example.php</code> to <code>include/env.php</code></li>
|
||||
<li>Edit <code>include/env.php</code> with your database credentials</li>
|
||||
<li>Copy <code>include/config.example.php</code> to <code>include/config.php</code></li>
|
||||
<li>Edit <code>include/config.php</code> to match your OpenSimulator setup</li>
|
||||
</ol>
|
||||
<p><strong>Example database settings for env.php:</strong></p>
|
||||
<pre style="background: #e9ecef; padding: 10px; border-radius: 4px;">
|
||||
define(\'DB_SERVER\', \'localhost\');
|
||||
define(\'DB_USERNAME\', \'opensim\');
|
||||
define(\'DB_PASSWORD\', \'your_password\');
|
||||
define(\'DB_NAME\', \'opensim\');
|
||||
</pre>
|
||||
<p style="margin-bottom: 0;"><em>Refresh this page after creating the configuration files.</em></p>
|
||||
</div>
|
||||
');
|
||||
}
|
||||
|
||||
require_once 'env.php';
|
||||
|
||||
// RemoteAdmin
|
||||
// RemoteAdmin-Konfiguration
|
||||
// RemoteAdmin configuration
|
||||
define('REMOTEADMIN_URL', 'localhost'); // URL des RemoteAdmin-Servers / URL of the RemoteAdmin server
|
||||
define('REMOTEADMIN_PORT', 8002); // Port des RemoteAdmin-Servers / Port of the RemoteAdmin server
|
||||
|
||||
// Seitenadressen
|
||||
// Website addresses
|
||||
define('BASE_URL', 'http://localhost'); // Basis-URL der Webseite / Base URL of the website
|
||||
define('SITE_NAME', 'OpenSim Grid'); // Name des Grids / Name of the grid
|
||||
|
||||
// Konfigurationsoptionen Standard Template:
|
||||
// Template configuration options:
|
||||
// "headerBlanc.php", "headerST.php", "headerW3.php", "headerBT5.php", "headerFoundation.php", "headerMaterialize.php", "headerTailwind.php", "headerPrimer.php", "headerTachyons.php", "headerSpectre.php", "headerTent.php", "headerModern.php"
|
||||
define('HEADER_FILE', 'headerModern.php'); // Ändere diesen Wert, um die verschiedenen Template-Header-Dateien zu laden. / Change this value to load different template header files.
|
||||
|
||||
// Konfigurationsoption für den Banker
|
||||
// Banker configuration option
|
||||
define('BANKER_UUID', '00000000-0000-0000-0000-000000000000'); // UUID des Bankers / UUID of the banker
|
||||
|
||||
// Verifizierungsfunktionen
|
||||
// Verification methods
|
||||
define('VERIFICATION_METHOD', 'email'); // 'email' oder 'uuid' / 'email' or 'uuid'
|
||||
|
||||
// Asset Bilder
|
||||
// Asset images
|
||||
define('ASSETPFAD', 'cache/'); // Pfad zum Asset-Cache / Path to the asset cache
|
||||
define('ASSET_FEHLT', ASSETPFAD . '00000000-0000-0000-0000-000000000002'); // Standardbild für fehlende Assets / Default image for missing assets
|
||||
define('GRID_PORT', ':8002'); // Port für Grid-Dienste / Port for grid services
|
||||
define('GRID_ASSETS', ':8003/assets/'); // Pfad für Grid-Assets / Path for grid assets
|
||||
define('GRID_ASSETS_SERVER', BASE_URL . GRID_ASSETS); // URL des Asset-Servers / URL of the asset server
|
||||
|
||||
// Guide
|
||||
define('GRIDLIST_FILE', 'include/gridlist.csv'); // Datei für die Grid-Liste / File for the grid list
|
||||
define('GRIDLIST_VIEW', 'json'); // 'json', 'database' oder 'grid' / 'json', 'database', or 'grid'
|
||||
|
||||
// Tagesmeldungen
|
||||
// Daily updates
|
||||
define('SHOW_DAILY_UPDATE', true); // Ein- oder ausschalten / Enable or disable
|
||||
define('DAILY_UPDATE_TYPE', 'rss'); // 'text' oder 'rss' / 'text' or 'rss'
|
||||
define('DAILYTEXT', 'Welcome to our OpenSimulator Grid! This is a sample daily message.'); // Tagesaktueller Text / Daily text
|
||||
define('RSS_FEED_URL', BASE_URL . '/oswebinterface/include/rss-feed.php'); // URL des RSS-Feeds / URL of the RSS feed
|
||||
define('FEED_CACHE_PATH', __DIR__.'/feed_cache.html'); // Cache-Dateipfad / Cache file path
|
||||
define('FEED_CACHE_MAX_AGE', 3600); // Cache max. 60 Minuten alt / Cache max. 60 minutes old
|
||||
define('CALENDAR_TITLE', 'Event Calendar'); // Titel des Event-Kalenders / Title of the event calendar
|
||||
|
||||
// Media
|
||||
define('MEDIA_SERVER', 'http://localhost:8500/stream'); // URL des Media-Servers / URL of the media server
|
||||
define('MEDIA_SERVER_STATUS', 'http://localhost:8500/status-json.xsl'); // Status-URL des Media-Servers / Status URL of the media server
|
||||
|
||||
// Passwörter (unbedingt austauschen!)
|
||||
// Passwords (must be changed!)
|
||||
// Für das Austauschen der Passwörter könnt ihr den paswd_generator.php benutzen, den ihr im Verzeichnis /include findet.
|
||||
// To change the passwords, you can use paswd_generator.php located in the /include directory.
|
||||
$registration_passwords_register = ["VpOM2bHFc6gdqUim", "zMemu5UJuro60nYJ", "cD3pc5JidIYMkTFT", "FBJpMfLHnVXNAncy", "1vyekSHvL3bYDNhT"];
|
||||
$registration_passwords_reset = ["eYUzmLO3lWDoEUZA", "ufFG8zJZvOuj6KzM", "tjwggl9ts3o6fCUs", "FYKn70uhJRFy6pum", "jEXqiYewLl6iPTCT"];
|
||||
$registration_passwords_partner = ["hBEMpDKEhEiBtMXx", "wtnpTrCSswBVbR9o", "Q9HUnk7BjIvKZ1qN", "YLta8TC4YivhYuMc", "RNhGZaJtCnwq26fs"];
|
||||
$registration_passwords_inventory = ["e46D3pp1bTV7qpBg", "VtsCH82rmtPix5AU", "VKY2kFV6qmrd0iHi", "VihXaKyikESI5rTK", "fGN9dUIszXdZJr3v"];
|
||||
$registration_passwords_datatable = ["yOu2IxJ8146dS0kY", "y3fycXPplGS6CjY5", "ycwRc0fr2QbZNPqc", "3pTz8Zk6qeYUf2VY", "G10LGqpqs0BjDdEO"];
|
||||
$registration_passwords_listinventar = ["IWhMSXFWxwM8Gw4b", "AbzWoKqSDLyKaQXV", "kBFFJTUs2CvVuHIM", "A9VuDk9rTdcSXwLg", "uhArUTWoVY9j5eXi"];
|
||||
$registration_passwords_picreader = ["sho8zTi2AXiane0s", "lC0ppkQN44Qxle8z", "yOCTqbHjJGuGSKdh", "efOOM4T8o3h5Vu4o", "snSOrbrvn9le3pG1"];
|
||||
$registration_passwords_mutelist = ["YOLrPXUQGPs4VtKC", "svBfxgcGePLmbKxf", "dGZQNZcDmYJXt593", "XTtuHEUtJH5rQzPQ", "crsSbntrL0gFBRwH"];
|
||||
$registration_passwords_avatarpicker = ["EugW3d9jU5EPlPqq", "H2sHVvuDf8AMYF6t", "XTTQ4689dMiu8afT", "SWogtvKIpR9Mxozy", "vateDhRqGjIlhyBw"];
|
||||
$registration_passwords_economy = ["5MvFSN7kbQ3ydFUl", "EvNywokrdO8NfaAc", "G47u0ppMSyOHEptB", "1cUgVgExxukp8zua", "YRNlhyr5OMObr2na"];
|
||||
$registration_passwords_events = ["LvRBVZOGY65deOpS", "FWVBcqNPKUecDK7b", "2JJzb1kv7aQQM9kp", "636pCKpPZSqvDYBP", "aqYicdJdnrnV4Vvw"];
|
||||
|
||||
// Farben der Webseite
|
||||
// Website colors
|
||||
$colorSchemes = array(
|
||||
'grayscale1' => array('header' => '#333333', 'footer' => '#333333', 'secondary' => '#666666', 'primary' => '#E0E0E0'),
|
||||
'grayscale2' => array('header' => '#4F4F4F', 'footer' => '#4F4F4F', 'secondary' => '#A0A0A0', 'primary' => '#FFFFFF'),
|
||||
'grayscale3' => array('header' => '#2B2B2B', 'footer' => '#2B2B2B', 'secondary' => '#858585', 'primary' => '#D9D9D9'),
|
||||
'emeraldDream' => array('header' => '#50C878', 'footer' => '#50C878', 'secondary' => '#98FB98', 'primary' => '#006400'),
|
||||
'coralReef' => array('header' => '#FF7F50', 'footer' => '#FF7F50', 'secondary' => '#FFD700', 'primary' => '#8B0000'),
|
||||
'purpleHaze' => array('header' => '#8A2BE2', 'footer' => '#8A2BE2', 'secondary' => '#DA70D6', 'primary' => '#4B0082'),
|
||||
'sunshineMeadow' => array('header' => '#FFD700', 'footer' => '#FFD700', 'secondary' => '#F0E68C', 'primary' => '#556B2F'),
|
||||
'autumnLeaves' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FFD700', 'primary' => '#8B4513'),
|
||||
'coolCyan' => array('header' => '#00CED1', 'footer' => '#00CED1', 'secondary' => '#E0FFFF', 'primary' => '#20B2AA'),
|
||||
'deepPurple' => array('header' => '#9400D3', 'footer' => '#9400D3', 'secondary' => '#9932CC', 'primary' => '#8B008B'),
|
||||
'warmAmber' => array('header' => '#FFBF00', 'footer' => '#FFBF00', 'secondary' => '#FFD700', 'primary' => '#FF8C00'),
|
||||
'gentlePink' => array('header' => '#FF69B4', 'footer' => '#FF69B4', 'secondary' => '#FFB6C1', 'primary' => '#FF1493'),
|
||||
'midnightTeal' => array('header' => '#008080', 'footer' => '#008080', 'secondary' => '#40E0D0', 'primary' => '#20B2AA'),
|
||||
'sunsetOrange' => array('header' => '#FF4500', 'footer' => '#FF4500', 'secondary' => '#FF6347', 'primary' => '#FF7F50'),
|
||||
'forestGreen' => array('header' => '#228B22', 'footer' => '#228B22', 'secondary' => '#32CD32', 'primary' => '#006400'),
|
||||
'icyBlue' => array('header' => '#00BFFF', 'footer' => '#00BFFF', 'secondary' => '#ADD8E6', 'primary' => '#1E90FF'),
|
||||
'rosyRed' => array('header' => '#FF6347', 'footer' => '#FF6347', 'secondary' => '#FF7F7F', 'primary' => '#FF4500'),
|
||||
'plumPurple' => array('header' => '#8B008B', 'footer' => '#8B008B', 'secondary' => '#DA70D6', 'primary' => '#9932CC'),
|
||||
'vibrantYellow' => array('header' => '#FFD700', 'footer' => '#FFD700', 'secondary' => '#FFFF00', 'primary' => '#FFA500'),
|
||||
'aquaMarine' => array('header' => '#7FFFD4', 'footer' => '#7FFFD4', 'secondary' => '#E0FFFF', 'primary' => '#40E0D0'),
|
||||
'burntSienna' => array('header' => '#E97451', 'footer' => '#E97451', 'secondary' => '#D2691E', 'primary' => '#CD5C5C'),
|
||||
'mintGreen' => array('header' => '#98FF98', 'footer' => '#98FF98', 'secondary' => '#ADFF2F', 'primary' => '#32CD32'),
|
||||
'sapphireBlue' => array('header' => '#0F52BA', 'footer' => '#0F52BA', 'secondary' => '#4682B4', 'primary' => '#1E90FF'),
|
||||
'coralPink' => array('header' => '#F88379', 'footer' => '#F88379', 'secondary' => '#FF7F50', 'primary' => '#FF6347'),
|
||||
'jadeGreen' => array('header' => '#00A36C', 'footer' => '#00A36C', 'secondary' => '#50C878', 'primary' => '#2E8B57'),
|
||||
'peachOrange' => array('header' => '#FFDAB9', 'footer' => '#FFDAB9', 'secondary' => '#FFE4B5', 'primary' => '#FFA07A'),
|
||||
'rubyRed' => array('header' => '#9B111E', 'footer' => '#9B111E', 'secondary' => '#FF6347', 'primary' => '#B22222'),
|
||||
'skyBlue' => array('header' => '#87CEEB', 'footer' => '#87CEEB', 'secondary' => '#B0E0E6', 'primary' => '#00BFFF'),
|
||||
'burntOrange' => array('header' => '#FF7F50', 'footer' => '#FF7F50', 'secondary' => '#FFA07A', 'primary' => '#FF4500'),
|
||||
'standardcolor' => array('header' => '#cdb38b', 'footer' => '#eecfa1', 'secondary' => '#f5f5dc', 'primary' => '#4F4F4F')
|
||||
);
|
||||
|
||||
// Farbschaltflächen anzeigen
|
||||
define('SHOW_COLOR_BUTTONS', true); // Farbschaltflächen anzeigen (true/false) / Show color buttons (true/false)
|
||||
define('INITIAL_COLOR_SCHEME', 'standardcolor'); // Farbschema auswählen / Select color scheme
|
||||
|
||||
// Farben und Schriftart
|
||||
// Colors and fonts
|
||||
$currentColorScheme = $colorSchemes[INITIAL_COLOR_SCHEME];
|
||||
define('HEADER_COLOR', $currentColorScheme['header']); // Header-Farbe / Header color
|
||||
define('FOOTER_COLOR', $currentColorScheme['footer']); // Footer-Farbe / Footer color
|
||||
define('SECONDARY_COLOR', $currentColorScheme['secondary']); // Sekundärfarbe / Secondary color
|
||||
define('PRIMARY_COLOR', $currentColorScheme['primary']); // Primäre Schriftfarbe / Primary text color
|
||||
|
||||
define('FONT_FAMILY_STATS', 'Arial, Verdana, sans-serif'); // Schriftart für Statistiken / Font for statistics
|
||||
define('FONT_FAMILY', 'Pacifico, normal, serif'); // Schriftart für die Webseite / Font for the website
|
||||
|
||||
// Schriftgrößen
|
||||
// Font sizes
|
||||
define('BASE_FONT_SIZE', '26px'); // Standardgröße für Text / Default text size
|
||||
define('TITLE_FONT_SIZE', '48px'); // Größe für Überschriften / Size for headings
|
||||
define('STATS_FONT_SIZE', '14px'); // Größe für Statistik-Text / Size for statistics text
|
||||
|
||||
// Links
|
||||
define('LINK_COLOR', '#3A3A3A'); // Standard Link-Farbe / Default link color
|
||||
define('LINK_HOVER_COLOR', 'red'); // Link-Farbe beim Hover / Link color on hover
|
||||
|
||||
// Hintergrund- und Vordergrundbilder
|
||||
// Background and foreground images
|
||||
define('BACKGROUND_IMAGE', 'pics/transparent.png'); // Hintergrundbild / Background image
|
||||
define('FOREGROUND_IMAGE', 'pics/transparent.png'); // Logo oder Vordergrundbild / Logo or foreground image
|
||||
define('BACKGROUND_OPACITY', 1.0); // Transparenz des Hintergrunds / Background opacity
|
||||
define('FOREGROUND_OPACITY', 1.0); // Transparenz des Logos / Logo opacity
|
||||
|
||||
// Anzeigeoptionen
|
||||
// Display options
|
||||
define('LOGO_ON', 'OFF'); // Logo anzeigen: ON / OFF / Show logo: ON / OFF
|
||||
define('TEXT_ON', 'ON'); // Begrüßungstext anzeigen: ON / OFF / Show welcome text: ON / OFF
|
||||
define('LOGO_PATH', 'include/Metavers150.png'); // Pfad zum Logo / Path to the logo
|
||||
define('LOGO_WIDTH', '50%'); // Logo-Breite / Logo width
|
||||
define('LOGO_HEIGHT', '25%'); // Logo-Höhe / Logo height
|
||||
define('GUIDE_DATA', 'DATA'); // DATA/JSON guide anzeigen / Show DATA/JSON guide
|
||||
|
||||
// Begrüßungstext
|
||||
// Welcome text
|
||||
define('LOGO_FONT', 'Lobster'); // Schriftart des Logos / Font for the logo
|
||||
define('PRIMARY_COLOR_LOGO', '#00FFFF'); // Allgemeine Schriftfarbe / General text color
|
||||
define('WELCOME_TEXT', '<p> Welcome to ' . SITE_NAME . '</p>'); // Begrüßungstext / Welcome text
|
||||
define('WELCOME_TEXT_WIDTH', '50%'); // Standardbreite / Default width
|
||||
define('WELCOME_TEXT_HEIGHT', 'auto'); // Standardhöhe / Default height
|
||||
define('WELCOME_TEXT_COLOR', PRIMARY_COLOR_LOGO); // Farbe des Textes / Text color
|
||||
define('WELCOME_TEXT_ALIGN', 'left'); // Zentriert, links oder rechts / Centered, left, or right
|
||||
define('WELCOME_TEXT_FONT_SIZE', '24px'); // Schriftgröße des Textes / Text font size
|
||||
|
||||
// Bildanzeige-Einstellungen
|
||||
// Image display settings
|
||||
define('SLIDESHOW_FOLDER', './images'); // Verzeichnis für die Bilder / Directory for images
|
||||
define('IMAGE_SIZE', 'width:100%;height:100%'); // Größe der Bilder / Size of images
|
||||
define('SLIDESHOW_DELAY', 9000); // Zeit zwischen Bildern (in ms) / Time between images (in ms)
|
||||
|
||||
// Einstellungen für Maptiles
|
||||
// Settings for maptiles
|
||||
define('FREI_COLOR', '#0088FF'); // Farbe für freie Koordinaten / Color for free coordinates
|
||||
define('BESCHLAGT_COLOR', '#55C155'); // Farbe für SingleRegion / Color for SingleRegion
|
||||
define('VARREGION_COLOR', '#006400'); // Farbe für VarRegion / Color for VarRegion
|
||||
define('CENTER_COLOR', '#FF0000'); // Farbe für Zentrum / Color for center
|
||||
define('TILE_SIZE', '25px'); // Größe der Farbfelder / Size of color fields
|
||||
|
||||
// Zentrum des Grids
|
||||
// Center of the grid
|
||||
define('CONF_CENTER_COORD_X', 3000); // X-KOORDINATE DES ZENTRUMS / X coordinate of the center
|
||||
define('CONF_CENTER_COORD_Y', 3000); // Y-KOORDINATE DES ZENTRUMS / Y coordinate of the center
|
||||
|
||||
define('MAPS_X', 32); // Anzahl der Kacheln in X-Richtung / Number of tiles in X direction
|
||||
define('MAPS_Y', 32); // Anzahl der Kacheln in Y-Richtung / Number of tiles in Y direction
|
||||
|
||||
// MOTD-Einstellung: 'Dyn' für dynamisch, 'Static' für statisch
|
||||
// MOTD setting: 'Dyn' for dynamic, 'Static' for static
|
||||
define('MOTD', 'Dyn'); // Oder 'Static' / Or 'Static'
|
||||
|
||||
// Statische MOTD (nur relevant, wenn MOTD auf 'Static' gesetzt ist)
|
||||
// Static MOTD (only relevant if MOTD is set to 'Static')
|
||||
define('MOTD_STATIC_MESSAGE', 'Welcome to our Grid! Please follow our rules.'); // Statische Nachricht / Static message
|
||||
define('MOTD_STATIC_TYPE', 'system'); // Typ der Nachricht / Type of message
|
||||
define('MOTD_STATIC_URL_TOS', BASE_URL . '/include/tos.php'); // URL zur TOS-Seite / URL to the TOS page
|
||||
define('MOTD_STATIC_URL_DMCA', BASE_URL . '/include/dmca.php'); // URL zur DMCA-Seite / URL to the DMCA page
|
||||
|
||||
// Definiere verschiedene RSS-Feed-URLs getrennt durch Komma.
|
||||
// Define different RSS feed URLs separated by commas.
|
||||
$feed_urls = [
|
||||
'http://opensimulator.org/viewgit/?a=rss-log&p=opensim', // Standard-Feed / Default feed
|
||||
'https://www.hypergridbusiness.com/feed'
|
||||
];
|
||||
|
||||
// Maximale Anzahl der Einträge pro Feed
|
||||
// Maximum number of entries per feed
|
||||
$max_entries = 50;
|
||||
?>
|
||||
@@ -0,0 +1,322 @@
|
||||
<?php
|
||||
|
||||
// Globale Variablen verwenden
|
||||
global $osVorname, $osNachname, $osEMail, $osHash, $osSalt, $benutzeruuid, $inventoryuuid, $neuparentFolderID, $neuHauptFolderID, $osDatum, $pdo;
|
||||
|
||||
//$pdo = new PDO("mysql:host=$CONF_db_server;dbname=$CONF_db_database", $CONF_db_user, $CONF_db_pass);
|
||||
$pdo = new PDO("mysql:host=" . DB_SERVER . ";dbname=" . DB_NAME, DB_USERNAME, DB_PASSWORD);
|
||||
|
||||
|
||||
// Avatar eintragen
|
||||
$neuer_user = array();
|
||||
$neuer_user['PrincipalID'] = $benutzeruuid;
|
||||
$neuer_user['ScopeID'] = '00000000-0000-0000-0000-000000000000';
|
||||
$neuer_user['FirstName'] = $osVorname;
|
||||
$neuer_user['LastName'] = $osNachname;
|
||||
$neuer_user['Email'] = $osEMail;
|
||||
$neuer_user['ServiceURLs'] = 'HomeURI= InventoryServerURI= AssetServerURI=';
|
||||
$neuer_user['Created'] = $osDatum;
|
||||
$neuer_user['UserLevel'] = '0';
|
||||
$neuer_user['UserFlags'] = '0';
|
||||
$neuer_user['UserTitle'] = '';
|
||||
$neuer_user['active'] = '1';
|
||||
|
||||
|
||||
// $statement = $pdo->prepare("INSERT INTO UserAccounts (email, vorname, nachname) VALUES (:email, :vorname, :nachname)");
|
||||
$statement = $pdo->prepare("INSERT INTO UserAccounts (PrincipalID, ScopeID, FirstName, LastName, Email, ServiceURLs, Created, UserLevel, UserFlags, UserTitle, active) VALUES (:PrincipalID, :ScopeID, :FirstName, :LastName, :Email, :ServiceURLs, :Created, :UserLevel, :UserFlags, :UserTitle, :active)");
|
||||
$statement->execute($neuer_user);
|
||||
|
||||
|
||||
// UUID, passwordHash, passwordSalt, webLoginKey, accountType
|
||||
$neues_passwd = array();
|
||||
$neues_passwd['UUID'] = $benutzeruuid;
|
||||
$neues_passwd['passwordHash'] = $osHash;
|
||||
$neues_passwd['passwordSalt'] = $osSalt;
|
||||
$neues_passwd['webLoginKey'] = '00000000-0000-0000-0000-000000000000';
|
||||
$neues_passwd['accountType'] = 'UserAccount';
|
||||
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO auth (UUID, passwordHash, passwordSalt, webLoginKey, accountType) VALUES (:UUID, :passwordHash, :passwordSalt, :webLoginKey, :accountType)");
|
||||
$statement->execute($neues_passwd);
|
||||
|
||||
// Das nachfolgende eintragen in der GridUser Spalte
|
||||
$neuer_GridUser = array();
|
||||
$neuer_GridUser['UserID'] = $benutzeruuid;
|
||||
$neuer_GridUser['HomeRegionID'] = '00000000-0000-0000-0000-000000000000';
|
||||
$neuer_GridUser['HomePosition'] = '<0,0,0>';
|
||||
$neuer_GridUser['LastRegionID'] = '00000000-0000-0000-0000-000000000000';
|
||||
$neuer_GridUser['LastPosition'] = '<0,0,0>';
|
||||
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO GridUser (UserID, HomeRegionID, HomePosition, LastRegionID, LastPosition) VALUES (:UserID, :HomeRegionID, :HomePosition, :LastRegionID, :LastPosition)");
|
||||
$statement->execute($neuer_GridUser);
|
||||
|
||||
// Inventarverzeichnisse erstellen
|
||||
|
||||
// Ordner Textures
|
||||
$Texturesuuid = generateUUID();
|
||||
|
||||
$verzeichnistextur = array();
|
||||
$verzeichnistextur['folderName'] = 'Textures';
|
||||
$verzeichnistextur['type'] = '0';
|
||||
$verzeichnistextur['version'] = '1';
|
||||
$verzeichnistextur['folderID'] = $Texturesuuid;
|
||||
$verzeichnistextur['agentID'] = $benutzeruuid;
|
||||
$verzeichnistextur['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnistextur);
|
||||
|
||||
// Ordner Sounds
|
||||
$Soundsuuid = generateUUID();
|
||||
|
||||
$verzeichnisSounds = array();
|
||||
$verzeichnisSounds['folderName'] = 'Sounds';
|
||||
$verzeichnisSounds['type'] = '1';
|
||||
$verzeichnisSounds['version'] = '1';
|
||||
$verzeichnisSounds['folderID'] = $Soundsuuid;
|
||||
$verzeichnisSounds['agentID'] = $benutzeruuid;
|
||||
$verzeichnisSounds['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisSounds);
|
||||
|
||||
// Ordner Calling Cards
|
||||
$CallingCardsuuid = generateUUID();
|
||||
|
||||
$verzeichnisCallingCards = array();
|
||||
$verzeichnisCallingCards['folderName'] = 'Calling Cards';
|
||||
$verzeichnisCallingCards['type'] = '2';
|
||||
$verzeichnisCallingCards['version'] = '2';
|
||||
$verzeichnisCallingCards['folderID'] = $CallingCardsuuid;
|
||||
$verzeichnisCallingCards['agentID'] = $benutzeruuid;
|
||||
$verzeichnisCallingCards['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisCallingCards);
|
||||
|
||||
// Ordner Landmarks
|
||||
$Landmarksuuid = generateUUID();
|
||||
|
||||
$verzeichnisLandmarks = array();
|
||||
$verzeichnisLandmarks['folderName'] = 'Landmarks';
|
||||
$verzeichnisLandmarks['type'] = '3';
|
||||
$verzeichnisLandmarks['version'] = '1';
|
||||
$verzeichnisLandmarks['folderID'] = $Landmarksuuid;
|
||||
$verzeichnisLandmarks['agentID'] = $benutzeruuid;
|
||||
$verzeichnisLandmarks['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisLandmarks);
|
||||
|
||||
// Ordner My Inventory
|
||||
$MyInventoryuuid = generateUUID();
|
||||
|
||||
$verzeichnisMyInventory = array();
|
||||
$verzeichnisMyInventory['folderName'] = 'My Inventory';
|
||||
$verzeichnisMyInventory['type'] = '8';
|
||||
$verzeichnisMyInventory['version'] = '17';
|
||||
$verzeichnisMyInventory['folderID'] = $neuHauptFolderID;
|
||||
$verzeichnisMyInventory['agentID'] = $benutzeruuid;
|
||||
$verzeichnisMyInventory['parentFolderID'] = '00000000-0000-0000-0000-000000000000';
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisMyInventory);
|
||||
|
||||
// Ordner Photo Album
|
||||
$PhotoAlbumuuid = generateUUID();
|
||||
|
||||
$verzeichnisPhotoAlbum = array();
|
||||
$verzeichnisPhotoAlbum['folderName'] = 'Photo Album';
|
||||
$verzeichnisPhotoAlbum['type'] = '15';
|
||||
$verzeichnisPhotoAlbum['version'] = '1';
|
||||
$verzeichnisPhotoAlbum['folderID'] = $PhotoAlbumuuid;
|
||||
$verzeichnisPhotoAlbum['agentID'] = $benutzeruuid;
|
||||
$verzeichnisPhotoAlbum['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisPhotoAlbum);
|
||||
|
||||
// Ordner Clothing
|
||||
$Clothinguuid = generateUUID();
|
||||
|
||||
$verzeichnisClothing = array();
|
||||
$verzeichnisClothing['folderName'] = 'Clothing';
|
||||
$verzeichnisClothing['type'] = '5';
|
||||
$verzeichnisClothing['version'] = '3';
|
||||
$verzeichnisClothing['folderID'] = $Clothinguuid;
|
||||
$verzeichnisClothing['agentID'] = $benutzeruuid;
|
||||
$verzeichnisClothing['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisClothing);
|
||||
|
||||
// Ordner Objects
|
||||
$Objectsuuid = generateUUID();
|
||||
|
||||
$verzeichnisObjects = array();
|
||||
$verzeichnisObjects['folderName'] = 'Objects';
|
||||
$verzeichnisObjects['type'] = '6';
|
||||
$verzeichnisObjects['version'] = '1';
|
||||
$verzeichnisObjects['folderID'] = $Objectsuuid;
|
||||
$verzeichnisObjects['agentID'] = $benutzeruuid;
|
||||
$verzeichnisObjects['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisObjects);
|
||||
|
||||
// Ordner Notecards
|
||||
$Notecardsuuid = generateUUID();
|
||||
|
||||
$verzeichnisNotecards = array();
|
||||
$verzeichnisNotecards['folderName'] = 'Notecards';
|
||||
$verzeichnisNotecards['type'] = '7';
|
||||
$verzeichnisNotecards['version'] = '1';
|
||||
$verzeichnisNotecards['folderID'] = $Notecardsuuid;
|
||||
$verzeichnisNotecards['agentID'] = $benutzeruuid;
|
||||
$verzeichnisNotecards['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisNotecards);
|
||||
|
||||
// Ordner Scripts
|
||||
$Scriptsuuid = generateUUID();
|
||||
|
||||
$verzeichnisScripts = array();
|
||||
$verzeichnisScripts['folderName'] = 'Scripts';
|
||||
$verzeichnisScripts['type'] = '10';
|
||||
$verzeichnisScripts['version'] = '1';
|
||||
$verzeichnisScripts['folderID'] = $Scriptsuuid;
|
||||
$verzeichnisScripts['agentID'] = $benutzeruuid;
|
||||
$verzeichnisScripts['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisScripts);
|
||||
|
||||
// Ordner Body Parts
|
||||
$BodyPartsuuid = generateUUID();
|
||||
|
||||
$verzeichnisBodyParts = array();
|
||||
$verzeichnisBodyParts['folderName'] = 'Body Parts';
|
||||
$verzeichnisBodyParts['type'] = '13';
|
||||
$verzeichnisBodyParts['version'] = '5';
|
||||
$verzeichnisBodyParts['folderID'] = $BodyPartsuuid;
|
||||
$verzeichnisBodyParts['agentID'] = $benutzeruuid;
|
||||
$verzeichnisBodyParts['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisBodyParts);
|
||||
|
||||
// Ordner Trash
|
||||
$Trashuuid = generateUUID();
|
||||
|
||||
$verzeichnisTrash = array();
|
||||
$verzeichnisTrash['folderName'] = 'Trash';
|
||||
$verzeichnisTrash['type'] = '14';
|
||||
$verzeichnisTrash['version'] = '1';
|
||||
$verzeichnisTrash['folderID'] = $Trashuuid;
|
||||
$verzeichnisTrash['agentID'] = $benutzeruuid;
|
||||
$verzeichnisTrash['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisTrash);
|
||||
|
||||
// Ordner Lost And Found
|
||||
$LostAndFounduuid = generateUUID();
|
||||
|
||||
$verzeichnisLostAndFound = array();
|
||||
$verzeichnisLostAndFound['folderName'] = 'Lost And Found';
|
||||
$verzeichnisLostAndFound['type'] = '16';
|
||||
$verzeichnisLostAndFound['version'] = '1';
|
||||
$verzeichnisLostAndFound['folderID'] = $LostAndFounduuid;
|
||||
$verzeichnisLostAndFound['agentID'] = $benutzeruuid;
|
||||
$verzeichnisLostAndFound['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisLostAndFound);
|
||||
|
||||
// Ordner Animations
|
||||
$Animationsuuid = generateUUID();
|
||||
|
||||
$verzeichnisAnimations = array();
|
||||
$verzeichnisAnimations['folderName'] = 'Animations';
|
||||
$verzeichnisAnimations['type'] = '20';
|
||||
$verzeichnisAnimations['version'] = '1';
|
||||
$verzeichnisAnimations['folderID'] = $Animationsuuid;
|
||||
$verzeichnisAnimations['agentID'] = $benutzeruuid;
|
||||
$verzeichnisAnimations['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisAnimations);
|
||||
|
||||
// Ordner Gestures
|
||||
$Gesturesuuid = generateUUID();
|
||||
|
||||
$verzeichnisGestures = array();
|
||||
$verzeichnisGestures['folderName'] = 'Gestures';
|
||||
$verzeichnisGestures['type'] = '21';
|
||||
$verzeichnisGestures['version'] = '1';
|
||||
$verzeichnisGestures['folderID'] = $Gesturesuuid;
|
||||
$verzeichnisGestures['agentID'] = $benutzeruuid;
|
||||
$verzeichnisGestures['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisGestures);
|
||||
|
||||
|
||||
// Friends
|
||||
$Friendsuuid = generateUUID();
|
||||
|
||||
$verzeichnisFriends = array();
|
||||
$verzeichnisFriends['folderName'] = 'Friends';
|
||||
$verzeichnisFriends['type'] = '2';
|
||||
$verzeichnisFriends['version'] = '2';
|
||||
$verzeichnisFriends['folderID'] = $Friendsuuid;
|
||||
$verzeichnisFriends['agentID'] = $benutzeruuid;
|
||||
$verzeichnisFriends['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisFriends);
|
||||
|
||||
// Favorites
|
||||
$Favoritesuuid = generateUUID();
|
||||
|
||||
$verzeichnisFavorites = array();
|
||||
$verzeichnisFavorites['folderName'] = 'Favorites';
|
||||
$verzeichnisFavorites['type'] = '23';
|
||||
$verzeichnisFavorites['version'] = '1';
|
||||
$verzeichnisFavorites['folderID'] = $Favoritesuuid;
|
||||
$verzeichnisFavorites['agentID'] = $benutzeruuid;
|
||||
$verzeichnisFavorites['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisFavorites);
|
||||
|
||||
// Current Outfit
|
||||
$CurrentOutfituuid = generateUUID();
|
||||
|
||||
$verzeichnisCurrentOutfit = array();
|
||||
$verzeichnisCurrentOutfit['folderName'] = 'Current Outfit';
|
||||
$verzeichnisCurrentOutfit['type'] = '46';
|
||||
$verzeichnisCurrentOutfit['version'] = '1';
|
||||
$verzeichnisCurrentOutfit['folderID'] = $CurrentOutfituuid;
|
||||
$verzeichnisCurrentOutfit['agentID'] = $benutzeruuid;
|
||||
$verzeichnisCurrentOutfit['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisCurrentOutfit);
|
||||
|
||||
// All
|
||||
$Alluuid = generateUUID();
|
||||
|
||||
$verzeichnisAll = array();
|
||||
$verzeichnisAll['folderName'] = 'All';
|
||||
$verzeichnisAll['type'] = '2';
|
||||
$verzeichnisAll['version'] = '1';
|
||||
$verzeichnisAll['folderID'] = $Alluuid;
|
||||
$verzeichnisAll['agentID'] = $benutzeruuid;
|
||||
$verzeichnisAll['parentFolderID'] = $neuHauptFolderID;
|
||||
|
||||
$statement = $pdo->prepare("INSERT INTO inventoryfolders (folderName, type, version, folderID, agentID, parentFolderID) VALUES (:folderName, :type, :version, :folderID, :agentID, :parentFolderID)");
|
||||
$statement->execute($verzeichnisAll);
|
||||
?>
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"shopping": [
|
||||
{
|
||||
"name": "Brogals Style & Fashion",
|
||||
"url": "hop://brogals-paradies.de:8002/Brogals%20Style%20%26%20Fashion/49/96/22",
|
||||
"image": "destinations/BrogalsStyleFashion.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Zoes Mall",
|
||||
"url": "hop://2.nymphgrid.com:8002/Zoes%20Mall%20Welcome/118/128/23",
|
||||
"image": "destinations/ZoesMall.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Lani Shopping Mall",
|
||||
"url": "hop://hg.osgrid.org:80/Lani/213/144/35",
|
||||
"image": "destinations/Lani.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Moonrose Shopping",
|
||||
"url": "hop://moonrose-grid.de:8002/Moonrose%20Shopping/10/147/29",
|
||||
"image": "destinations/MoonroseShopping.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Klamotto",
|
||||
"url": "hop://otterland.de:8002/Klamotto/71/101/23",
|
||||
"image": "destinations/Klamotto.jpg"
|
||||
},
|
||||
{
|
||||
"name": "FLORA",
|
||||
"url": "hop://alternatemetaverse.com:8002/FLORA/100/137/24",
|
||||
"image": "destinations/FLORA.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Agora",
|
||||
"url": "hop://hg.osgrid.org:80/Agora/429/389/24",
|
||||
"image": "destinations/Agora.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Sciatti Shop Clothes",
|
||||
"url": "secondlifesciattisigrid.it8002SciattiShopClothes10512023",
|
||||
"image": "destinations/SciattiShopClothes.jpg"
|
||||
}
|
||||
],
|
||||
"education": [
|
||||
{
|
||||
"name": "Lbsa Plaza",
|
||||
"url": "hop://hg.osgrid.org:80/Lbsa%20Plaza/170/132/41",
|
||||
"image": "destinations/LbsaPlaza.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Outworldz Virunga",
|
||||
"url": "hop://www.outworldz.com:9000/Outworldz%20Virunga/128/128/23",
|
||||
"image": "destinations/OutworldzVirunga.jpg"
|
||||
}
|
||||
],
|
||||
"art": [
|
||||
{
|
||||
"name": "ArtDestiny",
|
||||
"url": "hop://artdestiny.de:8002/ArtDestinyWelcome/147/153/25",
|
||||
"image": "destinations/ArtDestiny.jpg"
|
||||
}
|
||||
],
|
||||
"event": [
|
||||
{
|
||||
"name": "Tomis-World",
|
||||
"url": "hop://tomis-world.de:8002/Tomis-World/113/106/23",
|
||||
"image": "destinations/Tomis-World.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Event Plaza",
|
||||
"url": "hop://hg.osgrid.org:80/Event%20Plaza/373/381/25",
|
||||
"image": "destinations/EventPlaza.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Alternate Metaverse",
|
||||
"url": "hop://alternatemetaverse.com:8002/Alternate%20Metaverse/304/329/64",
|
||||
"image": "destinations/AlternateMetaverse.jpg"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,331 @@
|
||||
<?php
|
||||
$title = "DMCA";
|
||||
include 'header.php';
|
||||
|
||||
// Sprachauswahl (Standard: Deutsch)
|
||||
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'de';
|
||||
|
||||
// Platzhalter-Werte setzen
|
||||
$variables = [
|
||||
"DEIN GRID-NAME" => "Virtual " . SITE_NAME . " Grid",
|
||||
"DATUM" => date("d.m.Y"),
|
||||
"DEINE EMAIL" => "support@" . SITE_NAME . ".com",
|
||||
"DEINE POSTADRESSE" => "Musterstraße 123, 12345 Musterstadt",
|
||||
"OPTIONAL" => "Discord: GridSupport" . BASE_URL,
|
||||
"DEINE KONTAKT-EMAIL" => "kontakt@" . SITE_NAME . ".com"
|
||||
];
|
||||
?>
|
||||
|
||||
<div class="language-switcher">
|
||||
<a href="?lang=de">Deutsch</a> | <a href="?lang=en">English</a>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
.markdown-content {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
color: rgb(31, 31, 31); /* Korrektur: 'color' statt 'Color' */
|
||||
background-color: rgb(238, 241, 241);
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.language-switcher {
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.language-switcher a {
|
||||
text-decoration: none;
|
||||
color: #007BFF;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.language-switcher a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #f4f4f4;
|
||||
padding: 2px 5px;
|
||||
border-radius: 3px;
|
||||
font-family: monospace;
|
||||
}
|
||||
</style>
|
||||
|
||||
<?php
|
||||
function replacePlaceholders($text, $variables = []) {
|
||||
foreach ($variables as $key => $value) {
|
||||
$text = str_replace("[$key]", $value, $text);
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
function simpleMarkdownToHTML($text) {
|
||||
// Zeilenumbrüche umwandeln
|
||||
$text = nl2br($text);
|
||||
|
||||
// Fettdruck **text** -> <strong>text</strong>
|
||||
$text = preg_replace('/\*\*(.*?)\*\*/', '<strong>$1</strong>', $text);
|
||||
|
||||
// Kursiv *text* -> <em>text</em>
|
||||
$text = preg_replace('/\*(.*?)\*/', '<em>$1</em>', $text);
|
||||
|
||||
// Überschriften # -> <h1>, ## -> <h2> usw.
|
||||
for ($i = 6; $i >= 1; $i--) {
|
||||
$text = preg_replace('/^' . str_repeat('#', $i) . '\s*(.*?)$/m', "<h$i>$1</h$i>", $text);
|
||||
}
|
||||
|
||||
// Links [Text](URL) -> <a href="URL">Text</a>
|
||||
$text = preg_replace('/\[(.*?)\]\((.*?)\)/', '<a href="$2">$1</a>', $text);
|
||||
|
||||
// Inline-Code `text` -> <code>text</code>
|
||||
$text = preg_replace('/`(.*?)`/', '<code>$1</code>', $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
// Deutsche DMCA-Richtlinie
|
||||
$dmcaTextDE = "
|
||||
# **DMCA-Richtlinie für [DEIN GRID-NAME]**
|
||||
**Letzte Aktualisierung:** [DATUM]
|
||||
|
||||
Diese DMCA-Richtlinie beschreibt, wie **[DEIN GRID-NAME]** (nachfolgend „wir“, „uns“, „unser Grid“)
|
||||
auf Beschwerden bezüglich Urheberrechtsverletzungen gemäß dem **Digital Millennium Copyright Act (DMCA)** reagiert.
|
||||
|
||||
Falls du glaubst, dass Inhalte innerhalb unseres OpenSimulator-Grids gegen dein Urheberrecht verstoßen,
|
||||
kannst du eine **DMCA-Beschwerde** einreichen, indem du die unten beschriebenen Schritte befolgst.
|
||||
|
||||
---
|
||||
|
||||
## **1. Einreichen einer DMCA-Beschwerde (Takedown-Anfrage)**
|
||||
Falls du der Meinung bist, dass deine urheberrechtlich geschützten Inhalte ohne Erlaubnis in **[DEIN GRID-NAME]** verwendet wurden,
|
||||
sende bitte eine schriftliche Beschwerde an unseren **DMCA-Agenten** unter:
|
||||
|
||||
📩 **E-Mail:** [DEINE EMAIL]
|
||||
📬 **Postadresse:** [DEINE POSTADRESSE]
|
||||
📞 **Telefon:** [OPTIONAL]
|
||||
|
||||
**Deine DMCA-Beschwerde muss folgende Informationen enthalten:**
|
||||
|
||||
1. **Identifikation des geschützten Werkes:**
|
||||
- Eine detaillierte Beschreibung des urheberrechtlich geschützten Werkes (z. B. ein Screenshot, Link oder Dokumentation).
|
||||
|
||||
2. **Standort des rechtsverletzenden Inhalts:**
|
||||
- Genaue Position des Inhalts in unserem Grid, inklusive:
|
||||
- Name der Region
|
||||
- Koordinaten (falls möglich)
|
||||
- UUID oder Asset-ID des betroffenen Objekts
|
||||
- Screenshot oder Beschreibung
|
||||
|
||||
3. **Kontaktdaten:**
|
||||
- Dein Name, Adresse, E-Mail-Adresse und Telefonnummer.
|
||||
|
||||
4. **Erklärung zur Rechtsverletzung:**
|
||||
- Eine Erklärung, dass du in **gutem Glauben** davon ausgehst, dass die Nutzung nicht vom Urheberrechtsinhaber,
|
||||
seinem Vertreter oder dem Gesetz (z. B. Fair Use) erlaubt ist.
|
||||
|
||||
5. **Eidesstattliche Versicherung:**
|
||||
- Eine Erklärung, dass die Angaben in deiner Beschwerde korrekt sind und du der rechtmäßige Inhaber des Urheberrechts oder ein autorisierter Vertreter bist.
|
||||
|
||||
6. **Digitale oder physische Unterschrift:**
|
||||
- Eine elektronische oder handschriftliche Unterschrift des Urheberrechtsinhabers oder dessen bevollmächtigten Vertreters.
|
||||
|
||||
---
|
||||
|
||||
## **2. Unsere Reaktion auf eine DMCA-Beschwerde**
|
||||
Nach Erhalt einer gültigen DMCA-Anfrage werden wir:
|
||||
|
||||
- Den mutmaßlich rechtsverletzenden Inhalt **vorläufig entfernen oder den Zugriff darauf sperren**.
|
||||
- Den Nutzer, der den Inhalt bereitgestellt hat, über die Beschwerde informieren.
|
||||
- Falls der betroffene Nutzer eine **Gegendarstellung** einreicht (siehe Abschnitt 3), den Urheberrechtsinhaber darüber informieren.
|
||||
|
||||
Falls der Urheberrechtsinhaber innerhalb von **10 Werktagen** nach unserer Benachrichtigung keine rechtlichen Schritte einleitet,
|
||||
können wir den entfernten Inhalt wiederherstellen.
|
||||
|
||||
---
|
||||
|
||||
## **3. Einreichen einer Gegendarstellung (Counter-Notice)**
|
||||
Falls du der Meinung bist, dass der entfernte Inhalt nicht gegen Urheberrechte verstößt oder du eine Erlaubnis zur Nutzung hattest,
|
||||
kannst du eine **Gegendarstellung** einreichen.
|
||||
|
||||
Bitte sende deine Gegendarstellung an **[DEINE EMAIL]** mit folgenden Angaben:
|
||||
|
||||
1. **Identifikation des entfernten Inhalts:**
|
||||
- Die ursprüngliche Position des Inhalts (Region, Koordinaten, UUID, Screenshots).
|
||||
|
||||
2. **Erklärung zur Unrechtmäßigkeit der Beschwerde:**
|
||||
- Eine Erklärung, dass du **in gutem Glauben** der Meinung bist, dass die Entfernung aufgrund eines Fehlers oder falscher Identifizierung erfolgte.
|
||||
|
||||
3. **Zustimmung zur Gerichtsbarkeit:**
|
||||
- Falls du außerhalb der USA lebst, eine Erklärung, dass du die Gerichtsbarkeit der US-amerikanischen Bundesgerichte akzeptierst.
|
||||
|
||||
4. **Eidesstattliche Versicherung:**
|
||||
- Eine Versicherung, dass deine Angaben korrekt sind und du für eventuelle rechtliche Konsequenzen verantwortlich bist.
|
||||
|
||||
5. **Digitale oder physische Unterschrift:**
|
||||
- Deine Unterschrift oder die deines bevollmächtigten Vertreters.
|
||||
|
||||
Nach Erhalt einer gültigen Gegendarstellung kann der entfernte Inhalt innerhalb von **10–14 Tagen** wiederhergestellt werden,
|
||||
sofern der ursprüngliche Beschwerdeführer keine Klage einreicht.
|
||||
|
||||
---
|
||||
|
||||
## **4. Konsequenzen für wiederholte Verstöße**
|
||||
Nutzer, die wiederholt Urheberrechte verletzen, können:
|
||||
- **Verwarnt**,
|
||||
- **Vorübergehend gesperrt**,
|
||||
- Oder **dauerhaft aus dem Grid ausgeschlossen** werden.
|
||||
|
||||
Wir behalten uns das Recht vor, Nutzerkonten ohne vorherige Warnung zu sperren, falls schwere Verstöße vorliegen.
|
||||
|
||||
---
|
||||
|
||||
## **5. Keine Haftung für Nutzerinhalte**
|
||||
Unser Grid stellt eine Plattform für virtuelle Interaktionen bereit und hostet nutzergenerierte Inhalte.
|
||||
Wir übernehmen keine Haftung für urheberrechtlich geschützte Materialien, die von Nutzern hochgeladen wurden.
|
||||
Alle Nutzer sind für ihre hochgeladenen Inhalte selbst verantwortlich.
|
||||
|
||||
Wir arbeiten jedoch aktiv daran, **rechtsverletzende Inhalte zu entfernen**, sobald wir eine **gültige DMCA-Beschwerde** erhalten.
|
||||
|
||||
---
|
||||
|
||||
## **6. Kontakt für weitere Fragen**
|
||||
Falls du Fragen zur DMCA-Richtlinie hast, kannst du uns unter **[DEINE KONTAKT-EMAIL]** erreichen.
|
||||
|
||||
---
|
||||
|
||||
### **Rechtlicher Hinweis:**
|
||||
Diese Vorlage dient nur zu **Informationszwecken** und stellt **keine Rechtsberatung** dar.
|
||||
Falls du eine rechtlich geprüfte DMCA-Richtlinie benötigst, konsultiere bitte einen Anwalt.
|
||||
";
|
||||
|
||||
// Englische DMCA-Richtlinie
|
||||
$dmcaTextEN = "
|
||||
# **DMCA Policy for [DEIN GRID-NAME]**
|
||||
**Last Updated:** [DATUM]
|
||||
|
||||
This DMCA policy describes how **[DEIN GRID-NAME]** (hereinafter „we“, „us“, „our grid“)
|
||||
responds to complaints regarding copyright infringement under the **Digital Millennium Copyright Act (DMCA)**.
|
||||
|
||||
If you believe that content within our OpenSimulator grid violates your copyright,
|
||||
you can file a **DMCA complaint** by following the steps below.
|
||||
|
||||
---
|
||||
|
||||
## **1. Submitting a DMCA Complaint (Takedown Request)**
|
||||
If you believe that your copyrighted material has been used without permission in **[DEIN GRID-NAME]**,
|
||||
please send a written complaint to our **DMCA Agent** at:
|
||||
|
||||
📩 **Email:** [DEINE EMAIL]
|
||||
📬 **Postal Address:** [DEINE POSTADRESSE]
|
||||
📞 **Phone:** [OPTIONAL]
|
||||
|
||||
**Your DMCA complaint must include the following information:**
|
||||
|
||||
1. **Identification of the copyrighted work:**
|
||||
- A detailed description of the copyrighted work (e.g., a screenshot, link, or documentation).
|
||||
|
||||
2. **Location of the infringing content:**
|
||||
- The exact location of the content in our grid, including:
|
||||
- Region name
|
||||
- Coordinates (if possible)
|
||||
- UUID or asset ID of the affected object
|
||||
- Screenshot or description
|
||||
|
||||
3. **Contact information:**
|
||||
- Your name, address, email address, and phone number.
|
||||
|
||||
4. **Statement of infringement:**
|
||||
- A statement that you have a **good faith belief** that the use is not authorized by the copyright owner,
|
||||
their agent, or the law (e.g., fair use).
|
||||
|
||||
5. **Sworn statement:**
|
||||
- A statement that the information in your complaint is accurate and that you are the copyright owner or authorized to act on their behalf.
|
||||
|
||||
6. **Digital or physical signature:**
|
||||
- An electronic or handwritten signature of the copyright owner or their authorized representative.
|
||||
|
||||
---
|
||||
|
||||
## **2. Our Response to a DMCA Complaint**
|
||||
Upon receiving a valid DMCA complaint, we will:
|
||||
|
||||
- **Temporarily remove or disable access** to the allegedly infringing content.
|
||||
- Notify the user who provided the content about the complaint.
|
||||
- If the affected user submits a **counter-notice** (see Section 3), inform the copyright owner.
|
||||
|
||||
If the copyright owner does not take legal action within **10 business days** of our notification,
|
||||
we may restore the removed content.
|
||||
|
||||
---
|
||||
|
||||
## **3. Submitting a Counter-Notice**
|
||||
If you believe that the removed content does not infringe copyright or you had permission to use it,
|
||||
you can submit a **counter-notice**.
|
||||
|
||||
Please send your counter-notice to **[DEINE EMAIL]** with the following information:
|
||||
|
||||
1. **Identification of the removed content:**
|
||||
- The original location of the content (region, coordinates, UUID, screenshots).
|
||||
|
||||
2. **Statement of good faith:**
|
||||
- A statement that you have a **good faith belief** that the removal was due to a mistake or misidentification.
|
||||
|
||||
3. **Consent to jurisdiction:**
|
||||
- If you are outside the USA, a statement that you consent to the jurisdiction of US federal courts.
|
||||
|
||||
4. **Sworn statement:**
|
||||
- A statement that the information in your counter-notice is accurate and that you are responsible for any legal consequences.
|
||||
|
||||
5. **Digital or physical signature:**
|
||||
- Your signature or that of your authorized representative.
|
||||
|
||||
Upon receiving a valid counter-notice, the removed content may be restored within **10–14 days**,
|
||||
unless the original complainant files a lawsuit.
|
||||
|
||||
---
|
||||
|
||||
## **4. Consequences for Repeated Violations**
|
||||
Users who repeatedly infringe copyright may:
|
||||
- Be **warned**,
|
||||
- **Temporarily suspended**,
|
||||
- Or **permanently banned** from the grid.
|
||||
|
||||
We reserve the right to suspend accounts without prior warning in cases of severe violations.
|
||||
|
||||
---
|
||||
|
||||
## **5. No Liability for User-Generated Content**
|
||||
Our grid provides a platform for virtual interactions and hosts user-generated content.
|
||||
We are not liable for copyrighted materials uploaded by users.
|
||||
All users are responsible for the content they upload.
|
||||
|
||||
However, we actively work to **remove infringing content** upon receiving a **valid DMCA complaint**.
|
||||
|
||||
---
|
||||
|
||||
## **6. Contact for Further Questions**
|
||||
If you have questions about this DMCA policy, you can reach us at **[DEINE KONTAKT-EMAIL]**.
|
||||
|
||||
---
|
||||
|
||||
### **Legal Notice:**
|
||||
This template is for **informational purposes only** and does **not constitute legal advice**.
|
||||
If you need a legally reviewed DMCA policy, please consult an attorney.
|
||||
";
|
||||
|
||||
// Wähle den Text basierend auf der Sprache
|
||||
$dmcaText = ($lang == 'de') ? $dmcaTextDE : $dmcaTextEN;
|
||||
|
||||
// 1️⃣ Platzhalter ersetzen
|
||||
$dmcaText = replacePlaceholders($dmcaText, $variables);
|
||||
|
||||
// 2️⃣ Markdown in HTML umwandeln
|
||||
$finalHTML = simpleMarkdownToHTML($dmcaText);
|
||||
|
||||
// 3️⃣ HTML ausgeben
|
||||
echo "<div class='markdown-content'>$finalHTML</div>";
|
||||
?>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
define('DB_SERVER', 'localhost');
|
||||
define('DB_USERNAME', 'your_username');
|
||||
define('DB_PASSWORD', 'your_password');
|
||||
define('DB_NAME', 'your_database');
|
||||
define('DB_ASSET_NAME', 'your_database');
|
||||
|
||||
define('REMOTEADMIN_HTTPAUTHUSERNAME', 'opensim');
|
||||
define('REMOTEADMIN_HTTPAUTHPASSWORD', 'opensim123');
|
||||
?>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
// Database Configuration
|
||||
// Datenbank-Konfiguration
|
||||
define('DB_SERVER', 'localhost');
|
||||
define('DB_USERNAME', 'opensim');
|
||||
define('DB_PASSWORD', 'opensim_password');
|
||||
define('DB_NAME', 'opensim');
|
||||
define('DB_ASSET_NAME', 'opensim');
|
||||
|
||||
// RemoteAdmin Configuration
|
||||
// RemoteAdmin-Konfiguration
|
||||
define('REMOTEADMIN_HTTPAUTHUSERNAME', 'opensim');
|
||||
define('REMOTEADMIN_HTTPAUTHPASSWORD', 'opensim123');
|
||||
|
||||
// Security Notice:
|
||||
// Sicherheitshinweis:
|
||||
// IMPORTANT: Change these default values for production use!
|
||||
// WICHTIG: Ändern Sie diese Standardwerte für den Produktionseinsatz!
|
||||
?>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 116 KiB |
@@ -0,0 +1,94 @@
|
||||
</div> <!-- End main-container -->
|
||||
|
||||
<!-- Footer -->
|
||||
<footer class="footer-modern">
|
||||
<div class="container-fluid">
|
||||
<div class="row align-items-center">
|
||||
<div class="col-md-6">
|
||||
<span class="text-muted">
|
||||
© <?php echo date('Y'); ?> <?php echo SITE_NAME; ?>.
|
||||
Powered by <a href="http://opensimulator.org/" target="_blank" class="text-white-50">OpenSimulator</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="col-md-6 text-md-end">
|
||||
<div class="footer-links">
|
||||
<a href="include/tos.php" class="text-white-50 me-3"><i class="bi bi-file-text"></i> ToS</a>
|
||||
<a href="include/dmca.php" class="text-white-50 me-3"><i class="bi bi-shield"></i> DMCA</a>
|
||||
<a href="gridstatusrss.php" class="text-white-50" target="_blank"><i class="bi bi-rss"></i> RSS</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<!-- Additional JavaScript for enhanced functionality -->
|
||||
<script>
|
||||
// Enhanced form validation
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
// Add Bootstrap validation to all forms
|
||||
const forms = document.querySelectorAll('form.needs-validation');
|
||||
forms.forEach(function(form) {
|
||||
form.addEventListener('submit', function(event) {
|
||||
if (!form.checkValidity()) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
}
|
||||
form.classList.add('was-validated');
|
||||
});
|
||||
});
|
||||
|
||||
// Auto-hide alerts after 5 seconds
|
||||
const alerts = document.querySelectorAll('.alert:not(.alert-permanent)');
|
||||
alerts.forEach(function(alert) {
|
||||
setTimeout(function() {
|
||||
const bsAlert = new bootstrap.Alert(alert);
|
||||
bsAlert.close();
|
||||
}, 5000);
|
||||
});
|
||||
|
||||
// Add smooth scrolling
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
const target = document.querySelector(this.getAttribute('href'));
|
||||
if (target) {
|
||||
target.scrollIntoView({
|
||||
behavior: 'smooth',
|
||||
block: 'start'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Show loading overlay for navigation
|
||||
function showLoading() {
|
||||
const overlay = document.createElement('div');
|
||||
overlay.className = 'loading-overlay';
|
||||
overlay.innerHTML = '<div class="spinner-border text-primary" role="status"><span class="visually-hidden">Loading...</span></div>';
|
||||
overlay.style.cssText = `
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(255,255,255,0.8);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 9999;
|
||||
`;
|
||||
document.body.appendChild(overlay);
|
||||
|
||||
setTimeout(() => {
|
||||
overlay.remove();
|
||||
}, 3000);
|
||||
}
|
||||
|
||||
// Add loading to navigation links
|
||||
document.querySelectorAll('a:not([href^="#"]):not([href^="mailto:"]):not([href^="tel:"]):not([target="_blank"])').forEach(link => {
|
||||
link.addEventListener('click', showLoading);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,293 @@
|
||||
Gridname,Gridlink.com:8002
|
||||
3D Worldz,www.3dWorldz.com:8002
|
||||
3DLES,edugrid.3dles.com:8002
|
||||
4Creative,pangea.myftp.org:8002
|
||||
A Dimension Beyond,grid.adimensionbeyond.net:8002
|
||||
A Virtual World,avirtualworld.org:8002
|
||||
Accueil Dracsoom,dracsoom.ddns.net:8002
|
||||
Admeja,admeja.bounceme.net:8002
|
||||
Adreans-World,adreans-world.from-fl.com:8000
|
||||
Adult Life,adult-life.de:8002
|
||||
Aedynar,aedynar.com:8002
|
||||
AI Grid,ai.let-us.cyou:8002
|
||||
AIRE Mille Flux,grid.aire-mille-flux.org:8002
|
||||
Alecia Grid,alecianagrid.com:8002
|
||||
Alexa World,alexaworld.de:8002
|
||||
Alife Virtual,alifevirtual.com:8002
|
||||
Alternate Metaverse,alternatemetaverse.com:8002
|
||||
Alterworld Grid,hg.alterworld.us:7002
|
||||
AmaziWorld,login.amaziworld.com:8002
|
||||
Angel Souls,angel-souls.de:8002
|
||||
Ankabi,ankabi.de:8002
|
||||
Ansjela Grid,hg.ansjelagrid.com:28002
|
||||
AnSky,login.anskygrid.ca:8002
|
||||
Arcadia Asylum,arcadiaasylum.org:8002
|
||||
Ardalia,ardiva.ddns.net:8002
|
||||
Ardiva,ardiva.ddns.net:8002
|
||||
Ares World,aresworld.outworldz.net:8002
|
||||
Argentoratum,cogito.no-ip.info:8002
|
||||
Argofantasy,argofantasy.com:8002
|
||||
Arielle’s Grid,bound2.ddns.net:8002
|
||||
ArtDestiny,artdestiny.de:8002
|
||||
Assassin Guard,assassinguard.opensim.fun:38002
|
||||
Astralia,astralia.eu:8002
|
||||
Atlantide,real-3d.zapto.org:8002
|
||||
Atlantis,209.126.208.163:9023
|
||||
Atlas Grid,atlasgrid.fr:8002
|
||||
Ausgrid,login.ausgridds.biz:8002
|
||||
Avacon,grid.avacon.org:8002
|
||||
AvatarLand,mikeland.ddns.net:8002
|
||||
AvatarLife,grid.avatarlife.com:8002
|
||||
Avie Realm,logon.avierealm.com:8002
|
||||
AviVerse AlterEgo,aviverse.it:8002
|
||||
AviWorlds,login.aviworlds.com:8002
|
||||
Baller Nation,login.ballernation.us:8002
|
||||
Barefoot Dreamers,login.barefoot-dreamers.com:8002
|
||||
Beta Technologies,opensim.betatechnologies.info:8002
|
||||
Blendioptera Grid,blendioptera2.outworldz.net:8002
|
||||
BloodMoon,bloodmoonpack.com:8002
|
||||
Bridgemere,bridgemere.outworldz.net:8002
|
||||
Bridger,bridger.outworldz.net:8002
|
||||
Caelum Alpha,caelumalpha.outworldz.net:8002
|
||||
Canadian Grid,canadiangrid.ca:8002
|
||||
CandM World,grid.candmworld.com:8002
|
||||
CandorsRPWorld,candorsrpworld.ch:8002
|
||||
Carima Welt,carima-welt.de:8002
|
||||
Casperia Prime,casperia.ddns.net:8002
|
||||
Cat Woman Rose,catwomanrose.de:8002
|
||||
CLC grid,clcgrid.com:8002
|
||||
Clone Fantasy,clonefantasy.ovh:8002
|
||||
Coffee Grid,coffeegrid.net:8002
|
||||
Concadia,gridconcadia.com:8002
|
||||
Conectados Grid,conectados.opensim.fun:8802
|
||||
Cooperation Creative,hg.cc-group.cc:8002
|
||||
Counter Earth,jand.dyndns.biz:7002
|
||||
Cozy Comforts Grid,grid.cozycomforts.net:8002
|
||||
Craft World,craft-world.org:8002
|
||||
CreaNovale Grid,login.creanovale.ca:8052
|
||||
Creo Mundos,grid.CreoMundos.com:8002
|
||||
Czech Welcome Centre,opensim.cz:9000
|
||||
Dajas Grid,Grid.Daja.at:8002
|
||||
Dark Heaven,Dark-Heaven.eu:8002
|
||||
Darkheart’s Playground,playground.darkheartsos.com:8002
|
||||
Decadence,decadence.ddns.net:8002
|
||||
Deep Playa,rajal.org:9000
|
||||
DigiWorldz,login.digiworldz.com:8002
|
||||
Discovery Grid,discoverygrid.net:8002
|
||||
Doghouse,doghouse.outworldz.net:8002
|
||||
Dorena’s World,dorenas-world.de:8002
|
||||
DowGrid,dowgridworld.com.br:8002
|
||||
Dragonz Kin Territories,grid.dragonzkinterritory.org:18002
|
||||
Dynamic Worldz,grid.dynamicworldz2.com:8822
|
||||
Dyvall,dyvall.de:8002
|
||||
E-LIVE Virtual World,world.eliveproject.eu:8002
|
||||
Edge of Reality Grid,theedgeofreality.ddns.net:8882
|
||||
EdMondo,slw.indire.it:8002
|
||||
EducaSim,grid.educasim.es:8002
|
||||
Endivatomic World,endivatomic.eu:8002
|
||||
Equinox Grid,equinoxgrid.com:8002
|
||||
Escape 2 Reality Grid,grid.escape2reality.org:8002
|
||||
EscapeLands,world.escapelands.com:8002
|
||||
Esfera Split,split.esferavirtual.com.br:8002
|
||||
Esfera Virtual,esferavirtual.com.br:8002
|
||||
Eureka World,grid1.eurekaworld.co.il:8002
|
||||
EVA Park,evapark.co.uk:8002
|
||||
Expanse,expanse.outworldz.net:8002
|
||||
Fae Farms,alanna.outworldz.net:8002
|
||||
Fearless Mysteries,www.fearlessmysteries.eu:8002
|
||||
Forgotten Worlds,213.200.254.17:18002
|
||||
France RP,francerpgrid.fr:8002
|
||||
Free Life,freelife.outworldz.net:8002
|
||||
Freedom Grid,freedomgrid.world:8002
|
||||
Fresh MetaVers,abc.outworldz.net:8002
|
||||
Freya’s Shadow World,213.200.254.17:12002
|
||||
Friends Grid,login.friends-grid.com:8002
|
||||
FuoriGrid,fuorigrid.opensim.online:8002
|
||||
Furry World,Furry-World.de:8002
|
||||
Gaming Friends,45.138.48.36:8002
|
||||
GBG World,gbg-world.com:8002
|
||||
Genesis Roleplay Grid,grid.genesis-roleplay.org:8002
|
||||
Gentle Fire Grid,gentlefire.opensim.fun:8002
|
||||
GerGrid,gergrid.de:8002
|
||||
Ghost Area,ghostarea.com:8002
|
||||
Goldor Grid,goldor.outworldz.net:8002
|
||||
Grid Nirvana,grid.gridnirvana.net:4002
|
||||
Grid Racers,GridRacers.com:8002
|
||||
GridExperience,hg.gridexperience.com:8002
|
||||
GridMania,gridmania.outworldz.net:8002
|
||||
Gridworld,gridworld.de:8002
|
||||
Groovy Verse,groovyverse.com:8002
|
||||
Hartland,hartland.ddns.net:8002
|
||||
Here Grid,here-grid.de:8002
|
||||
Herederos Grid,herederos.inworldz.net:8002
|
||||
HG Safari Grid,grid.hgsafari.org:58002
|
||||
Humble Grid,humble1.outworldz.net:9002
|
||||
Hypergrid City,login.hypergridcity.com:8002
|
||||
I Love You Grid,iloveyougrid.net:8002
|
||||
Icelady Grid,iceladygrid.de:8002
|
||||
Ignis Fatuus,ignis-fatuus.no-ip.biz:8002
|
||||
Immersion Tools,grid.suboceana.fr:8002
|
||||
Imperiya Grid,imperiya.sytes.net:8002
|
||||
Infinite Grid,grid.infinitegrid.org:8002
|
||||
Ipsofacto,ipsofacto.ddns.net:8002
|
||||
JamGrid,jamgrid.de:8002
|
||||
Japan Open Grid,jogrid.net:8002
|
||||
Jaytopia,jaytopia.outworldz.net:8002
|
||||
Joe’s Place,joesplace.outworldz.net:8002
|
||||
jOpenSimWorld,grid.jopensim.com:8002
|
||||
Jungle Friends Grid,junglefriends.opensim.fun:8002
|
||||
Kater and Friends,kater-and-friends.ddnss.de:8002
|
||||
Kinky Haven,kinkyhaven.com:8002
|
||||
Kishaki,kishaki.de:8002
|
||||
Kitely,grid.kitely.com:8002
|
||||
Kokomo World,grid.kokomoworld.de:8002
|
||||
KoolPheller Estates,koolpheller.ddns.net:8002
|
||||
Kurtopia,Kurtopia.ddns.net:8002
|
||||
Kyle Archipelago,kylearchipelago.com:8002
|
||||
La Grilla de Don Javi,donjavi.minigrid.xyz:8002
|
||||
Lady’s Dreamworld,ladysdreamworld.opensim.fun:8002
|
||||
Lagniappe Grid,hg.lagniappegrid.com:8402
|
||||
Lanf Of Bree,carlyspencer.ddns.net:9002
|
||||
Langalf’s Demesne,langalfs-demesne.ddns.net:8002
|
||||
LeBourg,lebourg.lcofrance.org:9000
|
||||
Life Grid,lifebr.ddns.net:8002
|
||||
Littlefield,lfgrid.com:8002
|
||||
LoboWorld,vharmonyarts.com:8016
|
||||
Logicamp,logicamp.org:8002
|
||||
Lonetree,centoria.ddns.net:9002
|
||||
Lost World,lostworld-os.com:8002
|
||||
MAGA Grid,magagrid.us:8002
|
||||
Magic Grid,magic-grid.de:8002
|
||||
Majickal Life,majickallife.com:8002
|
||||
Mare Grid,mare-grid.de:8002
|
||||
Maze of The Mind,maze.outworldz.net:8002
|
||||
Medieval Fantasy,medieval-fantasy.de:8002
|
||||
Metaverse Concept,login.metaverseconcept.com:8002
|
||||
Metaverse Dimensions,login.metaversedimensions.com:8002
|
||||
Midway,midway.outworldz.net:8002
|
||||
Migrating Coconuts,migratingcoconuts.net:8002
|
||||
MisFitz Grid,login.misfitzgrid.com:8002
|
||||
Mobius Grid,main.mobiusgrid.us
|
||||
Monarch Gardens,monarchgardens.sanctuarygrid.net:8882
|
||||
Moonlighting Grid,moonlighting.ddns.net:8002
|
||||
Moonrose,moonrose-grid.de:8002
|
||||
Morada Grid,moradagrid.com:8002
|
||||
My Virtual Beach,grid.myvirtualbeach.com:8002
|
||||
My Virtual Community,my-virtualcommunity.com:8002
|
||||
Mysterious Grid 2,js-3d.dyndns-server.com:8100
|
||||
Nabila Grid,nabila-world.de:8002
|
||||
NakedWorldz,login.nakedworldz.com:8002
|
||||
Naras Nook,world.narasnook.com:8900
|
||||
Nemesis 3D,badsworld.com:8002
|
||||
Neverworld,hg.neverworldgrid.com:8002
|
||||
New Genres Grid,hg.ngrid.org:8002
|
||||
New Horizon,newhorizonworld.net:8002
|
||||
New Life Italy,newlifeitaly.com:8002
|
||||
NewWorld,newworld.no-ip.org:8002
|
||||
Next Reality,login.nextreality.uk:8002
|
||||
Nymphgrid 2 Shopping,2.nymphgrid.com:8002
|
||||
Oczko,grid.oczko.eu:9000
|
||||
Offworld,offworld.eu:8002
|
||||
Omnopolis,omnopolis.com:8002
|
||||
Open Mind Grid,open-mind-grid.de:8002
|
||||
Open Virtual Worlds,apollo.cs.st-andrews.ac.uk:8002
|
||||
OpenManniLand,openmanniland.de:8002
|
||||
OpenSim Fest,grid.opensimfest.com:8022
|
||||
OpenSim OCC,cc.opensimulator.org:8002
|
||||
OSgrid,login.osgrid.org
|
||||
Otterland,otterland.de:8002
|
||||
Outworldz,www.outworldz.com:9000
|
||||
Pangea Grid,pangeagrid.de:8002
|
||||
Party Destination Grid,partydestinationgrid.com:8002
|
||||
Perfect Life,grid.perfect-life.ca:8002
|
||||
Phaandoria Grid,phaandoria.de:8002
|
||||
Phillip’s Grid,phillipsworld.outworldz.net:8002
|
||||
Planet 3L,planet3l.com:9100
|
||||
Planet Jikan,planetjikan.com:9000
|
||||
Port Anna,galwendor.ddns.net:8002
|
||||
Power Angels,power-angels.info:8002
|
||||
Rennoc World,rennocworld.outworldz.net:8002
|
||||
Reserected Worlds,reserectedworlds.ddns.net:9000
|
||||
Rocket World Grid,grid.rocketworld.top:8022
|
||||
Sciattisi Grid,sciattisigrid.it:8002
|
||||
Servex Grid,servex-grid.lffl.de:8002
|
||||
SFgrid,sfgrid.ddnss.org:8002
|
||||
Sharing Is Caring Family,sharingiscaring.family:8002
|
||||
Shasiyadynasty,shasiyadynasty.outworldz.net:8002
|
||||
Sheikah,sheikah.org:8002
|
||||
Shoalwater Bay,shoalwaterbay.com:8002
|
||||
SiLi,jadeseas.net:9000
|
||||
Simation Grid,grid.simation.net:8002
|
||||
Six Sides,grid.sixsides.net:8002
|
||||
Solaria,solaria.hopto.org:7002
|
||||
Soul Grid,soul-grid.de:8002
|
||||
South Grid,southgrid.ru:8002
|
||||
Sovaria Estates,connect.sovariaestates.world:8002
|
||||
SpaceGrid,spacegrid.online:6002
|
||||
Sparta II,traregan.outworldz.net:8002
|
||||
SpartaGrid,sparta.outworldz.net:8002
|
||||
Speculoos,speculoos.world:8002
|
||||
Stefanies World,stefaniesworld.de:8002
|
||||
Steg,steg.outworldz.net:9002
|
||||
SV3D,sv3d.fr:8002
|
||||
Sweet Life,sweetlife.myftp.org:8002
|
||||
Swiss Grid,swissgrid.opensim.ch:8002
|
||||
T-Grid,hg.viewtwo.net:8600
|
||||
Tag Grid,login.taggrid.online:8002
|
||||
Tanduria ,hg.tanduria.de:8002
|
||||
Technic World,technic-world.ddnss.de:8002
|
||||
TeCoLa,tecola.eu:8002
|
||||
Tedesco Sim’s,hajos-welt.de:8002
|
||||
Tenth Dimension,grid.tenthdimension.org:26002
|
||||
Terra Nova,terranova.outworldz.net:8002
|
||||
The Devil’s Grid,devilsgrid.jessithecat.eu:9000
|
||||
The E Grid,theegrid.outworldz.net:8002
|
||||
The Haven Grid,thehavengrid.outworldz.net:9002
|
||||
The Hub Grid,hg.thehubgrid.com:28002
|
||||
The Shirls Hypergrid,181.214.240.20:8002
|
||||
The Verse,theverse.ddns.net:8002
|
||||
Three Hills Grid,three.hills.grid.outworldz.net:8002
|
||||
Tlön,albinoni.nexus.it:8002
|
||||
Tomi’s World,tomis-world.de:8002
|
||||
Trianon World,hg.trianon-world.com:18002
|
||||
Tropical Isle,sailonbye.com:9000
|
||||
Twilight,twlght.com:8002
|
||||
Twiztid Timez Grid,hg.twiztidtimezgrid.com:8602
|
||||
UCI Mondego vLab,nile.ics.uci.edu:9000
|
||||
Utopia Skye,utopiaskyegrid.com:8002
|
||||
V.B. Creations,vbcreations.outworldz.net:8002
|
||||
Vela Dreams,vela-dream.ddnss.de:8002
|
||||
Vibel,grid.vibel.eu:8002
|
||||
Vida Dupla,vidadupla.com.br:8002
|
||||
Virlands,virlands.net:8002
|
||||
Virtual Business Grid,login.virtualbusinessgrid.com:8002
|
||||
Virtual Harmony,vharmonyarts.com:9000
|
||||
Virtual Islands,Virtual-Islands.de:8002
|
||||
Virtual Learning Village,virtuallearningvillage.org:8002
|
||||
Virtual Life Brasil,login.virtuallifebrasil.com.br:8002
|
||||
Virtual Marin,grid.virtualmarin.com:8002
|
||||
Virtual Vista Metaverse,virtualvistametaverse.com:8002
|
||||
Virtual World Solutions,vbcreations.outworldz.net:8002/wifi/user/account/
|
||||
Virtual Worlds Grid,vwc.selfip.net:8002
|
||||
Virtual Worlds Zone,grid.virtual-worlds.zone:8002
|
||||
Virtualife,grid.virtualife-grid.it:4577
|
||||
Virtualife,grid.virtualife-grid.it:4577
|
||||
Vivec,opensim.vivec.com:9000
|
||||
Vivo Sim,hg.vivosim.net:8002
|
||||
VR-ESC,vr-esc.com:8002
|
||||
WaterSplash,watersplash.inworldz.net:8002
|
||||
WestWorld Grid,westworldgrid.net:8002
|
||||
Whispering Willows,hg.whisperingwillows.net:8002
|
||||
WKD Bucket Grid,wkdbucket.minigrid.xyz:8822
|
||||
WKDVR,grid.wkdvr.com:8802
|
||||
Wolf Territories Grid,grid.wolfterritories.org:8002
|
||||
Wonder,wonder.outworldz.net:8002
|
||||
Wyldwood Bayou,wyldwoodbayou.com:8002
|
||||
Xenolandia,xenolandia.de:8002
|
||||
Xmir,grid.xmir.org:8002
|
||||
XTalent,209.126.208.161:9023
|
||||
Yippee Ki-Ay Blues Grid,yippee-ki-ay.com:9003
|
||||
ZetaWorlds,login.zetaworlds.com
|
||||
Zirconia,zirconia.ddns.net:8002
|
||||
Zodiack,zodiack.net:8002
|
||||
Zone Nations,login.zonenations.com:8002
|
||||
|
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
// Check if configuration files exist
|
||||
if (!file_exists(__DIR__ . '/config.php')) {
|
||||
// Redirect to setup assistant
|
||||
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
|
||||
$host = $_SERVER['HTTP_HOST'];
|
||||
$path = dirname($_SERVER['REQUEST_URI']);
|
||||
$setupUrl = $protocol . '://' . $host . $path . '/setup.php';
|
||||
|
||||
header("Location: $setupUrl");
|
||||
exit;
|
||||
}
|
||||
|
||||
require_once 'config.php';
|
||||
include HEADER_FILE;
|
||||
?>
|
||||
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<link href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0/css/bootstrap.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0/js/bootstrap.bundle.min.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="bg-primary text-white p-3">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="index.php"><?php echo SITE_NAME; ?></a>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav">
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<li class="nav-item">
|
||||
<button class="btn btn-sm btn-secondary color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="container mt-5">
|
||||
<!-- Inhalt der Seite -->
|
||||
</div>
|
||||
<footer class="bg-dark text-white text-center py-3">
|
||||
© <?php echo date('Y'); ?> <?php echo SITE_NAME; ?>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<div>
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</body>
|
||||
</html>
|
||||
<footer>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,113 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Foundation CSS-Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/foundation-sites@6.6.3/dist/css/foundation.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 60vw;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="grid-container">
|
||||
<header class="grid-x grid-padding-x align-center">
|
||||
<div class="cell small-12 text-center">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</div>
|
||||
</header>
|
||||
<nav class="grid-x grid-padding-x align-center">
|
||||
<div class="cell small-12 text-center">
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
||||
<footer class="grid-x grid-padding-x align-center">
|
||||
<div class="cell small-12 text-center">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.6.3/dist/js/foundation.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Materialize CSS-Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 38%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 75%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="container">
|
||||
<header class="center-align">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="center-align">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button btn" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="center-align">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,372 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo isset($title) ? $title . ' - ' . SITE_NAME : SITE_NAME; ?></title>
|
||||
<link rel="icon" type="image/x-icon" href="<?php echo isset($favicon_path) ? $favicon_path : 'include/favicon.ico'; ?>">
|
||||
|
||||
<!-- Bootstrap 5 CDN -->
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css" rel="stylesheet">
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
:root {
|
||||
--header-color: <?php echo HEADER_COLOR; ?>;
|
||||
--footer-color: <?php echo FOOTER_COLOR; ?>;
|
||||
--secondary-color: <?php echo SECONDARY_COLOR; ?>;
|
||||
--primary-color: <?php echo PRIMARY_COLOR; ?>;
|
||||
--link-color: <?php echo LINK_COLOR; ?>;
|
||||
--link-hover-color: <?php echo LINK_HOVER_COLOR; ?>;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
line-height: 1.6;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding-top: 80px; /* Space for fixed navbar */
|
||||
padding-bottom: 60px; /* Space for footer */
|
||||
min-height: 100vh;
|
||||
<?php if (defined('BACKGROUND_IMAGE') && BACKGROUND_IMAGE !== 'pics/transparent.png'): ?>
|
||||
background-image: url('<?php echo BACKGROUND_IMAGE; ?>');
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-attachment: fixed;
|
||||
<?php endif; ?>
|
||||
}
|
||||
|
||||
/* Modern Navigation */
|
||||
.navbar-modern {
|
||||
background: linear-gradient(135deg, var(--header-color), <?php echo adjustBrightness(HEADER_COLOR, -20); ?>);
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||||
backdrop-filter: blur(10px);
|
||||
border-bottom: 1px solid rgba(255,255,255,0.1);
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
font-weight: 700;
|
||||
font-size: 1.25rem;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.navbar-nav .nav-link {
|
||||
color: rgba(255,255,255,0.9) !important;
|
||||
font-weight: 500;
|
||||
padding: 0.5rem 1rem;
|
||||
border-radius: 6px;
|
||||
transition: all 0.3s ease;
|
||||
margin: 0 0.2rem;
|
||||
}
|
||||
|
||||
.navbar-nav .nav-link:hover,
|
||||
.navbar-nav .nav-link.active {
|
||||
color: white !important;
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
border: none;
|
||||
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
|
||||
border-radius: 8px;
|
||||
background: rgba(255,255,255,0.95);
|
||||
backdrop-filter: blur(10px);
|
||||
}
|
||||
|
||||
/* Main Content */
|
||||
.main-container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
.content-card {
|
||||
background: rgba(255,255,255,0.95);
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,0.1);
|
||||
padding: 2rem;
|
||||
margin-bottom: 2rem;
|
||||
backdrop-filter: blur(10px);
|
||||
border: 1px solid rgba(255,255,255,0.2);
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
.footer-modern {
|
||||
background: linear-gradient(135deg, var(--footer-color), <?php echo adjustBrightness(FOOTER_COLOR, -20); ?>);
|
||||
color: white;
|
||||
padding: 1rem 0;
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
z-index: 1000;
|
||||
backdrop-filter: blur(10px);
|
||||
border-top: 1px solid rgba(255,255,255,0.1);
|
||||
}
|
||||
|
||||
/* Color Theme Selector */
|
||||
.color-theme-selector {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
right: 10px;
|
||||
transform: translateY(-50%);
|
||||
z-index: 1050;
|
||||
background: white;
|
||||
padding: 10px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,0.15);
|
||||
display: none;
|
||||
}
|
||||
|
||||
.color-button {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: 2px solid white;
|
||||
border-radius: 50%;
|
||||
margin: 2px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.2s ease;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.color-button:hover {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
/* Responsive adjustments */
|
||||
@media (max-width: 768px) {
|
||||
body {
|
||||
padding-top: 70px;
|
||||
}
|
||||
|
||||
.content-card {
|
||||
padding: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Loading animation */
|
||||
.loading {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border: 3px solid rgba(255,255,255,.3);
|
||||
border-radius: 50%;
|
||||
border-top-color: #fff;
|
||||
animation: spin 1s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
to { transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
/* Alert improvements */
|
||||
.alert {
|
||||
border-radius: 8px;
|
||||
border: none;
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
/* Button improvements */
|
||||
.btn {
|
||||
border-radius: 6px;
|
||||
font-weight: 500;
|
||||
padding: 0.5rem 1.5rem;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 15px rgba(0,0,0,0.2);
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
// Color scheme management
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
if (colorSchemes[scheme]) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
|
||||
// Save preference
|
||||
localStorage.setItem('selectedColorScheme', scheme);
|
||||
}
|
||||
}
|
||||
|
||||
// Load saved color scheme
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const savedScheme = localStorage.getItem('selectedColorScheme') || '<?php echo INITIAL_COLOR_SCHEME; ?>';
|
||||
setColorScheme(savedScheme);
|
||||
|
||||
// Add click handlers for color buttons
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
|
||||
// Add loading states to forms
|
||||
document.querySelectorAll('form').forEach(function(form) {
|
||||
form.addEventListener('submit', function() {
|
||||
const submitBtn = form.querySelector('input[type="submit"], button[type="submit"]');
|
||||
if (submitBtn) {
|
||||
submitBtn.innerHTML = '<span class="loading"></span> Loading...';
|
||||
submitBtn.disabled = true;
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Toggle color theme selector
|
||||
function toggleColorSelector() {
|
||||
const selector = document.querySelector('.color-theme-selector');
|
||||
selector.style.display = selector.style.display === 'none' ? 'block' : 'none';
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Navigation -->
|
||||
<nav class="navbar navbar-expand-lg navbar-dark navbar-modern fixed-top">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" href="welcomesplashpage.php">
|
||||
<i class="bi bi-globe2"></i> <?php echo SITE_NAME; ?>
|
||||
</a>
|
||||
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav me-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link <?php echo basename($_SERVER['PHP_SELF']) == 'welcomesplashpage.php' ? 'active' : ''; ?>"
|
||||
href="welcomesplashpage.php">
|
||||
<i class="bi bi-house"></i> Home
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
|
||||
<i class="bi bi-map"></i> Grid
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="gridstatus.php"><i class="bi bi-activity"></i> Grid Status</a></li>
|
||||
<li><a class="dropdown-item" href="maptile.php"><i class="bi bi-map"></i> Map Tiles</a></li>
|
||||
<li><a class="dropdown-item" href="gridlist.php"><i class="bi bi-list"></i> Grid List</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><a class="dropdown-item" href="guide.php"><i class="bi bi-compass"></i> Guide</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
|
||||
<i class="bi bi-person"></i> Avatar
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="createavatar.php"><i class="bi bi-person-plus"></i> Create Avatar</a></li>
|
||||
<li><a class="dropdown-item" href="avatarpicker.php"><i class="bi bi-person-gear"></i> Avatar Picker</a></li>
|
||||
<li><a class="dropdown-item" href="passwordreset.php"><i class="bi bi-key"></i> Password Reset</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
|
||||
<i class="bi bi-calendar"></i> Events
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="eventcalendar.php"><i class="bi bi-calendar-event"></i> Event Calendar</a></li>
|
||||
<li><a class="dropdown-item" href="eventcalendar2.php"><i class="bi bi-calendar2"></i> Calendar 2</a></li>
|
||||
<li><a class="dropdown-item" href="eventedit.php"><i class="bi bi-pencil"></i> Edit Events</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
|
||||
<i class="bi bi-search"></i> Search
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a class="dropdown-item" href="searchservice.php"><i class="bi bi-search"></i> Search Service</a></li>
|
||||
<li><a class="dropdown-item" href="ossearch.php"><i class="bi bi-globe"></i> OS Search</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown">
|
||||
<i class="bi bi-info-circle"></i> Info
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end">
|
||||
<li><a class="dropdown-item" href="aboutinformation.php"><i class="bi bi-info"></i> About</a></li>
|
||||
<li><a class="dropdown-item" href="help.php"><i class="bi bi-question-circle"></i> Help</a></li>
|
||||
<li><a class="dropdown-item" href="partner.php"><i class="bi bi-people"></i> Partners</a></li>
|
||||
<li><hr class="dropdown-divider"></li>
|
||||
<li><a class="dropdown-item" href="message.php"><i class="bi bi-envelope"></i> Messages</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="#" onclick="toggleColorSelector(); return false;">
|
||||
<i class="bi bi-palette"></i>
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Color Theme Selector -->
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<div class="color-theme-selector">
|
||||
<div class="text-center mb-2"><small><strong>Themes</strong></small></div>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<div class="color-button"
|
||||
data-scheme="<?php echo $scheme; ?>"
|
||||
style="background: linear-gradient(135deg, <?php echo $colors['header']; ?>, <?php echo $colors['footer']; ?>);"
|
||||
title="<?php echo ucfirst($scheme); ?>">
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- Main Content Container -->
|
||||
<div class="main-container">
|
||||
|
||||
<?php
|
||||
// Helper function to adjust color brightness
|
||||
function adjustBrightness($color, $percent) {
|
||||
$color = str_replace('#', '', $color);
|
||||
$r = hexdec(substr($color, 0, 2));
|
||||
$g = hexdec(substr($color, 2, 2));
|
||||
$b = hexdec(substr($color, 4, 2));
|
||||
|
||||
$r = max(0, min(255, $r + ($r * $percent / 100)));
|
||||
$g = max(0, min(255, $g + ($g * $percent / 100)));
|
||||
$b = max(0, min(255, $b + ($b * $percent / 100)));
|
||||
|
||||
return sprintf("#%02x%02x%02x", $r, $g, $b);
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Primer CSS Design System Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://unpkg.com/@primer/css/dist/primer.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-secondary-color color-primary">
|
||||
<header class="text-center p-3">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="text-center p-3">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button btn m-1" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="text-center p-3">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,112 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav>
|
||||
<div>
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="container">
|
||||
<!-- Inhalt der Seite -->
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<footer>
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Spectre CSS-Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://unpkg.com/spectre.css/dist/spectre.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="navbar">
|
||||
<section class="navbar-section">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</section>
|
||||
</header>
|
||||
<nav class="nav">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="btn btn-primary color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="footer">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Tachyons CSS Toolkit Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://unpkg.com/tachyons@4.12.0/css/tachyons.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-secondary-color primary-color">
|
||||
<header class="pa3 tc">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="pa3 tc">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button pa2" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="pa3 tc">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
// Tailwind CSS Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body class="bg-secondary-color text-primary-color">
|
||||
<header class="bg-header-color p-4 text-center text-white">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="bg-header-color p-4 text-center">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button bg-primary-color text-white m-2 p-2 rounded" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="bg-footer-color p-4 text-center text-white">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
//Tent CSS-Framework
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link href="https://unpkg.com/tent-css@0.5.8/dist/tent.min.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 10px;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="header">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="nav">
|
||||
<div>
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<footer class="footer">
|
||||
<p>© <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
require_once 'config.php';
|
||||
?>
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title><?php echo $title; ?></title>
|
||||
<link rel="icon" type="image/x-icon" href="include/favicon.ico">
|
||||
<link href="https://www.w3schools.com/w3css/4/w3.css" rel="stylesheet">
|
||||
<style>
|
||||
body {
|
||||
font-family: <?php echo FONT_FAMILY; ?>;
|
||||
background-color: var(--secondary-color);
|
||||
color: var(--primary-color);
|
||||
background-image: url(<?php echo BACKGROUND_IMAGE; ?>);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
opacity: <?php echo defined('BACKGROUND_OPACITY') ? BACKGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
header {
|
||||
background-color: var(--header-color);
|
||||
padding: 10px;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
footer {
|
||||
background-color: var(--footer-color);
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
color: white;
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
line-height: 0;
|
||||
}
|
||||
.container {
|
||||
background-image: url(<?php echo FOREGROUND_IMAGE; ?>);
|
||||
background-size: 50%;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
opacity: <?php echo defined('FOREGROUND_OPACITY') ? FOREGROUND_OPACITY : 1; ?>;
|
||||
}
|
||||
.color-button {
|
||||
margin: 1px;
|
||||
padding: 1px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
const colorSchemes = <?php echo json_encode($colorSchemes); ?>;
|
||||
|
||||
function setColorScheme(scheme) {
|
||||
document.documentElement.style.setProperty('--header-color', colorSchemes[scheme].header);
|
||||
document.documentElement.style.setProperty('--footer-color', colorSchemes[scheme].footer);
|
||||
document.documentElement.style.setProperty('--secondary-color', colorSchemes[scheme].secondary);
|
||||
document.documentElement.style.setProperty('--primary-color', colorSchemes[scheme].primary);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.querySelectorAll('.color-button').forEach(function(button) {
|
||||
button.addEventListener('click', function() {
|
||||
setColorScheme(this.dataset.scheme);
|
||||
});
|
||||
});
|
||||
// Set the initial color scheme
|
||||
setColorScheme('<?php echo INITIAL_COLOR_SCHEME; ?>');
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class="w3-container w3-blue w3-center w3-padding-16">
|
||||
<h1>Welcome to <?php echo SITE_NAME; ?></h1>
|
||||
</header>
|
||||
<nav class="w3-bar w3-dark-grey">
|
||||
<a class="w3-bar-item w3-button w3-left" href="index.php"><?php echo SITE_NAME; ?></a>
|
||||
<div class="w3-right">
|
||||
<?php if (SHOW_COLOR_BUTTONS): ?>
|
||||
<?php foreach ($colorSchemes as $scheme => $colors): ?>
|
||||
<button class="w3-button w3-small w3-margin color-button" data-scheme="<?php echo $scheme; ?>" style="background-color: <?php echo $colors['header']; ?>;"><?php echo ucfirst($scheme); ?></button>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</nav>
|
||||
<div class="w3-container w3-card-4 w3-light-grey w3-padding-16">
|
||||
<!-- Inhalt der Seite -->
|
||||
</div>
|
||||
<footer class="w3-container w3-dark-grey w3-center w3-padding-16">
|
||||
© <?php echo date('Y'); ?> <?php echo SITE_NAME; ?>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
// Konfiguration einbinden
|
||||
include_once "include/config.php";
|
||||
|
||||
// Überprüfen, ob der Parameter 'image_url' übergeben wurde
|
||||
$image_url = isset($_GET['image_url']) ? $_GET['image_url'] : '';
|
||||
|
||||
// Sicherstellen, dass eine URL vorhanden ist
|
||||
if (empty($image_url)) {
|
||||
die('Kein Bild-URL angegeben!');
|
||||
}
|
||||
|
||||
// Bild aus der URL holen
|
||||
$image_data = file_get_contents($image_url);
|
||||
|
||||
// Wenn das Bild nicht geladen werden konnte
|
||||
if ($image_data === false) {
|
||||
die('Fehler beim Laden des Bildes!');
|
||||
}
|
||||
|
||||
// Mit Imagick das Bild in das gewünschte Format konvertieren
|
||||
try {
|
||||
$imagick = new Imagick();
|
||||
$imagick->readImageBlob($image_data);
|
||||
|
||||
// Prüfen, ob es ein JP2-Bild ist und konvertiere es zu JPG
|
||||
if ($imagick->getImageFormat() == 'JPEG2000') {
|
||||
$imagick->setImageFormat('jpg'); // Konvertierung zu JPG
|
||||
}
|
||||
|
||||
// Bild an den Browser ausgeben
|
||||
header('Content-Type: image/jpeg'); // JPG-MIME-Typ für JPG-Bilder
|
||||
echo $imagick->getImageBlob();
|
||||
} catch (Exception $e) {
|
||||
die('Fehler beim Konvertieren des Bildes: ' . $e->getMessage());
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,50 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>403 - Forbidden</title>
|
||||
<style>
|
||||
body {
|
||||
background-color: #f8f9fa;
|
||||
color: #343a40;
|
||||
font-family: Arial, sans-serif;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100vh;
|
||||
margin: 0;
|
||||
}
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
.center h1 {
|
||||
font-size: 5rem;
|
||||
color: #dc3545;
|
||||
}
|
||||
.center p {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.center a {
|
||||
display: inline-block;
|
||||
margin-top: 20px;
|
||||
padding: 10px 20px;
|
||||
background-color: #007bff;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
border-radius: 5px;
|
||||
transition: background-color 0.3s;
|
||||
}
|
||||
.center a:hover {
|
||||
background-color: #0056b3;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="center">
|
||||
<h1>403</h1>
|
||||
<p>Nicht öffentlicher Bereich.</p>
|
||||
<a href="/">Zurück zur Startseite</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,626 @@
|
||||
{
|
||||
"Top10": [
|
||||
{
|
||||
"name": "Alternate Metaverse",
|
||||
"url": "hop://alternatemetaverse.com:8002/Alternate%20Metaverse/342/357/64",
|
||||
"image": "osw/Alternate_Metaverse.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Infinity 11",
|
||||
"url": "hop://grid.wolfterritories.org:8002/Infinity%2011/874/298/23",
|
||||
"image": "osw/Infinity_11.jpg"
|
||||
},
|
||||
{
|
||||
"name": "SciattiShopClothes",
|
||||
"url": "hop://sciattisigrid.it:8002/SciattiShopClothes/115/238/23",
|
||||
"image": "osw/SciattiShopClothes.jpg"
|
||||
},
|
||||
{
|
||||
"name": "NakedWorldz Grid",
|
||||
"url": "hop://enter.nakedworldzgrid.com:8002/NakedWorldz%20Grid/70/78/22",
|
||||
"image": "osw/NakedWorldz_Grid.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Serrallo de Mogor",
|
||||
"url": "hop://alternatemetaverse.com:8002/Serrallo%20de%20Mogor/686/680/2005",
|
||||
"image": "osw/Serrallo_de_Mogor.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Trianon Complex",
|
||||
"url": "hop://hg.trianon-world.com:18002/Trianon%20Complex/135/119/23",
|
||||
"image": "osw/Trianon_Complex.jpg"
|
||||
},
|
||||
{
|
||||
"name": "OpenSim Worlds Fair",
|
||||
"url": "hop://grid.wolfterritories.org:8002/OpenSim",
|
||||
"image": "osw/OpenSim_Worlds_Fair.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Ground_Zero",
|
||||
"url": "hop://os-metavers.fresh-projects.top:8002/Ground_Zero_X2000Y2002/123/310/2142",
|
||||
"image": "osw/Ground_Zero_X2000Y2002.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Events Plaza",
|
||||
"url": "hop://hg.sunlight-grid.com:80/Events%20Plaza/379/393/25",
|
||||
"image": "osw/Events_Plaza.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Hypergrid Games",
|
||||
"url": "hop://grid.avatarlife.com:8002/Hypergrid%20Games/3/201/23",
|
||||
"image": "osw/Hypergrid_Games.jpg"
|
||||
}
|
||||
],
|
||||
"Top20": [
|
||||
{
|
||||
"name": "Shopping FUN",
|
||||
"url": "hop://adult-life.de:8002/Shopping%20FUN/91/156/1613",
|
||||
"image": "osw/Shopping_FUN.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Shinobar Annex",
|
||||
"url": "hop://jogrid.net:8002/Shinobar%20Annex/146/118/23",
|
||||
"image": "osw/Shinobar_Annex.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Skinny Dip Beach",
|
||||
"url": "hop://alternatemetaverse.com:8002/Skinny%20Dip%20Beach/214/215/32",
|
||||
"image": "osw/Skinny_Dip_Beach.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Xenotown",
|
||||
"url": "hop://xenolandia.de:8002/Xenotown/541/159/22",
|
||||
"image": "osw/Xenotown.jpg"
|
||||
},
|
||||
{
|
||||
"name": "SciattiShopCenter",
|
||||
"url": "hop://sciattisigrid.it:8002/SciattiShopCenter/150/92/23",
|
||||
"image": "osw/SciattiShopCenter.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Little Big City Shopping Mall",
|
||||
"url": "hop://littlebigcity.outworldz.net:8002/Little%20Big%20City%20Shopping%20Mall/937/435/23",
|
||||
"image": "osw/Little_Big_City_Shopping_Mall.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Welcome",
|
||||
"url": "hop://groovyverse.com:8002/Welcome/122/258/23",
|
||||
"image": "osw/Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Maze Grid Home",
|
||||
"url": "hop://maze.bz:7002/Maze%20Grid%20Home/119/111/23",
|
||||
"image": "osw/Maze_Grid_Home.jpg"
|
||||
},
|
||||
{
|
||||
"name": "China",
|
||||
"url": "hop://xenolandia.de:8002/China/379/682/24",
|
||||
"image": "osw/China.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Tierra De Volcanes",
|
||||
"url": "hop://alternatemetaverse.com:8002/Tierra",
|
||||
"image": "osw/Tierra_De_Volcanes.jpg"
|
||||
}
|
||||
],
|
||||
"Top30": [
|
||||
{
|
||||
"name": "Welcome",
|
||||
"url": "hop://login.digiworldz.com:8002/Welcome/200/55/10",
|
||||
"image": "osw/Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "we want sex club",
|
||||
"url": "hop://5.189.174.147:6002/we%20want%20sex%20club/122/199/23",
|
||||
"image": "osw/we_want_sex_club.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Homestead Riverville 3",
|
||||
"url": "hop://alternatemetaverse.com:8002/Homestead%20Riverville%203/73/100/27",
|
||||
"image": "osw/Homestead_Riverville_3.jpg"
|
||||
},
|
||||
{
|
||||
"name": "ALBA SEX CLUB FNX",
|
||||
"url": "hop://fenice.aduoni.net:8002/ALBA%20SEX%20CLUB%20FNX/661/821/23",
|
||||
"image": "osw/ALBA_SEX_CLUB_FNX.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Gentle Fire Grid",
|
||||
"url": "hop://gentlefire.opensim.fun:8002/Radio%20DJ%20Club/128/128/10",
|
||||
"image": "osw/Gentle_Fire_Grid.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Welcome Area",
|
||||
"url": "hop://gbg-world.com:8002/Welcome%20Area/136/136/23",
|
||||
"image": "osw/Welcome_Area.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Rock City",
|
||||
"url": "hop://login.digiworldz.com:8002/Rock%20City/192/853/24",
|
||||
"image": "osw/Rock_City.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Manderley",
|
||||
"url": "hop://login.digiworldz.com:8002/Manderley/322/220/41",
|
||||
"image": "osw/Manderley.jpg"
|
||||
},
|
||||
{
|
||||
"name": "New Beginnings",
|
||||
"url": "hop://alternatemetaverse.com:8002/New%20Beginnings/212/330/35",
|
||||
"image": "osw/New_Beginnings.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Infinity 11",
|
||||
"url": "hop://grid.wolfterritories.org:8002//307/393/30",
|
||||
"image": "osw/Infinity_11.jpg"
|
||||
}
|
||||
],
|
||||
"Top40": [
|
||||
{
|
||||
"name": "Moonlight",
|
||||
"url": "hop://moonrose-grid.de:8002/Moonlight/133/142/22",
|
||||
"image": "osw/Moonlight.jpg"
|
||||
},
|
||||
{
|
||||
"name": "The Almost Islands",
|
||||
"url": "hop://shipyardsgrid.com:8002/The%20Almost%20Islands/388/367/26",
|
||||
"image": "osw/The_Almost_Islands.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Breedables Market",
|
||||
"url": "hop://grid.avatarlife.com:8002/Breedables%20Market/57/59/24",
|
||||
"image": "osw/Breedables_Market.jpg"
|
||||
},
|
||||
{
|
||||
"name": "The Cedars",
|
||||
"url": "hop://grid.wolfterritories.org:8002/The%20Cedars/506/541/23",
|
||||
"image": "osw/The_Cedars.jpg"
|
||||
},
|
||||
{
|
||||
"name": "The Pier",
|
||||
"url": "hop://gbg-world.com:8002/The%20Pier/183/178/23",
|
||||
"image": "osw/The_Pier.jpg"
|
||||
},
|
||||
{
|
||||
"name": "VALERIA AVATAR",
|
||||
"url": "hop://argoillusion.it:8002/VALERIA%20AVATAR/172/220/24",
|
||||
"image": "osw/VALERIA_AVATAR.jpg"
|
||||
},
|
||||
{
|
||||
"name": "ShoppingDance",
|
||||
"url": "hop://craft-world.org:8002/ShoppingDance/45/124/26",
|
||||
"image": "osw/ShoppingDance.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Denny's Hartland Shopping",
|
||||
"url": "hop://hartland.ddns.net:8002/Denny%27s%20Hartland%20Shopping/53/115/24",
|
||||
"image": "osw/Denny's_Hartland_Shopping.jpg"
|
||||
},
|
||||
{
|
||||
"name": "The Rendezvous",
|
||||
"url": "hop://alternatemetaverse.com:8002/The%20Rendezvous/33/1249/24",
|
||||
"image": "osw/The_Rendezvous.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Sandbox",
|
||||
"url": "hop://alternatemetaverse.com:8002/Sandbox/611/596/26",
|
||||
"image": "osw/Sandbox.jpg"
|
||||
}
|
||||
],
|
||||
"Top50": [
|
||||
{
|
||||
"name": "StarchildShoppe",
|
||||
"url": "hop://sanctumastra.com:8002/StarchildShoppe/171/134/25",
|
||||
"image": "osw/StarchildShoppe.jpg"
|
||||
},
|
||||
{
|
||||
"name": "HIE",
|
||||
"url": "hop://grid.hgsafari.org:58002/HIE/129/121/23",
|
||||
"image": "osw/HIE.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Risa",
|
||||
"url": "hop://hg.zetaworlds.com:80/Risa/1196/463/26",
|
||||
"image": "osw/Risa.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Ruritania",
|
||||
"url": "hop://lfgrid.com:8002/Ruritania/375/318/28",
|
||||
"image": "osw/Ruritania.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Little Big City Kids",
|
||||
"url": "hop://70.68.178.59:8002/Little%20Big%20City%202/533/183/21",
|
||||
"image": "osw/Little_Big_City_Kids.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Rio De Janeiro",
|
||||
"url": "hop://firstlifebrasil3d.ddns.net:8002/Rio%20De%20Janeiro/141/137/102",
|
||||
"image": "osw/Rio_De_Janeiro.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Jungle Welcome",
|
||||
"url": "hop://junglefriends.opensim.fun:8002/Jungle%20Welcome/150/121/30",
|
||||
"image": "osw/Jungle_Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Stark",
|
||||
"url": "hop://hg.zetaworlds.com:80/Stark/139/117/37",
|
||||
"image": "osw/Stark.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Katies Kove",
|
||||
"url": "hop://hg.neverworldgrid.com:8002/Katies%20Kove/163/163/31",
|
||||
"image": "osw/Katies_Kove.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Tosca",
|
||||
"url": "hop://soul-grid.de:8002/Tosca/74/220/23",
|
||||
"image": "osw/Tosca.jpg"
|
||||
}
|
||||
],
|
||||
"Top60": [
|
||||
{
|
||||
"name": "Gaia",
|
||||
"url": "hop://hg.sunlight-grid.com:80/Gaia/109/151/22",
|
||||
"image": "osw/Gaia.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Serendipity Isle",
|
||||
"url": "hop://login.digiworldz.com:8002/Serendipity%20Isle/131/243/22",
|
||||
"image": "osw/Serendipity_Isle.jpg"
|
||||
},
|
||||
{
|
||||
"name": "HeartMusic",
|
||||
"url": "hop://hop:80/HeartMusic/194/107/24",
|
||||
"image": "osw/HeartMusic.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Dream Life Welcome",
|
||||
"url": "hop://dreamlife.opensim.fun:58002/Dream%20Life%20Welcome/130/113/23",
|
||||
"image": "osw/Dream_Life_Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Dreamland Seas",
|
||||
"url": "hop://ladysdreamworld.opensim.fun:8002/Dreamland%20Seas/1433/1414/28",
|
||||
"image": "osw/Dreamland_Seas.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Samsara",
|
||||
"url": "hop://alternatemetaverse.com:8002/Samsara/295/182/28",
|
||||
"image": "osw/Samsara.jpg"
|
||||
},
|
||||
{
|
||||
"name": "NW Welcome",
|
||||
"url": "hop://hg.neverworldgrid.com:8002/NW%20Welcome/134/111/28",
|
||||
"image": "osw/NW_Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "New Hope",
|
||||
"url": "hop://login.newhopegrid.com:8002/New%20Hope/495/198/1023",
|
||||
"image": "osw/New_Hope.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Fabrica dos Sonhos",
|
||||
"url": "hop://vidadupla.com.br:8002/Fabrica%20dos%20Sonhos/109/118/25",
|
||||
"image": "osw/Fabrica_dos_Sonhos.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Homestead Riverville",
|
||||
"url": "hop://alternatemetaverse.com:8002/Homestead%20Riverville/74/101/28",
|
||||
"image": "osw/Homestead_Riverville.jpg"
|
||||
}
|
||||
],
|
||||
"Top70": [
|
||||
{
|
||||
"name": "NewLifeWelcome",
|
||||
"url": "hop://newlifeitaly.com:8002/NewLifeWelcome/297/356/27",
|
||||
"image": "osw/NewLifeWelcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Ogunquit",
|
||||
"url": "hop://groovyverse.com:8002/Ogunquit/164/501/24",
|
||||
"image": "osw/Ogunquit.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Bem Vindo",
|
||||
"url": "hop://login3.virtualrbm.com.br:8002/Bem%20Vindo/126/199/25",
|
||||
"image": "osw/Bem_Vindo.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Moonlight Shadows",
|
||||
"url": "hop://alternatemetaverse.com:8002/Moonlight%20Shadows/196/30/2392",
|
||||
"image": "osw/Moonlight_Shadows.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Mexico Lindo",
|
||||
"url": "hop://lfgrid.com:8002/hop%3A%2F%2Flfgrid.com%3A8002%2Fmexico%2520lindo%2520shopping%2F129%2F128%2F28/197/176/2500",
|
||||
"image": "osw/Mexico_Lindo.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Lockets Dream",
|
||||
"url": "hop://shasiyadynasty.outworldz.net:8002/Lockets%20Dream/56/48/22",
|
||||
"image": "osw/Lockets_Dream.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Nude Beach Playground",
|
||||
"url": "hop://shasiyadynasty.outworldz.net:8002/Nude%20Beach%20Playground/872/1242/29",
|
||||
"image": "osw/Nude_Beach_Playground.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Kitely Welcome Center",
|
||||
"url": "hop://grid.kitely.com:8002/Kitely%20Welcome%20Center/85/164/21",
|
||||
"image": "osw/Kitely_Welcome_Center.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Landing",
|
||||
"url": "hop://dorenas-world.de:8002/Landing/149/128/23",
|
||||
"image": "osw/Landing.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Elysion",
|
||||
"url": "hop://grid.vr-esc.com:8002/Elysion/917/434/24",
|
||||
"image": "osw/Elysion.jpg"
|
||||
}
|
||||
],
|
||||
"Top80": [
|
||||
{
|
||||
"name": "Littlefield Welcome",
|
||||
"url": "hop://lfgrid.com:8002/Littlefield%20Welcome/118/141/23",
|
||||
"image": "osw/Littlefield_Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "CARLITA FNX",
|
||||
"url": "hop://fenice.aduoni.net:8002/CARLITA%20FNX/555/729/67",
|
||||
"image": "osw/CARLITA_FNX.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Mare Welcome",
|
||||
"url": "hop://mare-grid.de:8002/Mare%20Welcome/121/122/23",
|
||||
"image": "osw/Mare_Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Pont Aeri",
|
||||
"url": "hop://www.crytogame.me:8002/Pont%20Aeri/57/40/22",
|
||||
"image": "osw/Pont_Aeri.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Kingman City",
|
||||
"url": "hop://grid.arkhamgrid.org:8002/Kingman%20City/123/207/23",
|
||||
"image": "osw/Kingman_City.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Nautilus Inclusive Keys",
|
||||
"url": "hop://grid.wolfterritories.org:8002/Nautilus%20Inclusive%20Keys/333/254/23",
|
||||
"image": "osw/Nautilus_Inclusive_Keys.jpg"
|
||||
},
|
||||
{
|
||||
"name": "The ValLands",
|
||||
"url": "hop://hg.osgrid.org:80/ValLands/1180/815/52",
|
||||
"image": "osw/The_ValLands.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Freebie Store 2024",
|
||||
"url": "hop://login.aviworlds.com:8002/Freebie%20Store%202024/137/48/36",
|
||||
"image": "osw/Freebie_Store_2024.jpg"
|
||||
},
|
||||
{
|
||||
"name": "CCC Boutique",
|
||||
"url": "hop://enter.nakedworldzgrid.com:8002/CCC%20Boutique/178/186/22",
|
||||
"image": "osw/CCC_Boutique.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Secret Fantasy World Portal",
|
||||
"url": "hop://213.200.254.17:14002/Secret%20Fantasy%20World%20Portal/128/137/22",
|
||||
"image": "osw/Secret_Fantasy_World_Portal.jpg"
|
||||
}
|
||||
],
|
||||
"Top90": [
|
||||
{
|
||||
"name": "Carima",
|
||||
"url": "hop://carima-welt.de:8002/Carima/16/52/33",
|
||||
"image": "osw/Carima.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Bare Island",
|
||||
"url": "hop://alternatemetaverse.com:8002/Bare%20Island/276/285/24",
|
||||
"image": "osw/Bare_Island.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Nefertari Beach Resort",
|
||||
"url": "hop://login.digiworldz.com:8002/Nefertari%20Beach%20Resort/239/376/23",
|
||||
"image": "osw/Nefertari_Beach_Resort.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Magical Fairies Pass",
|
||||
"url": "hop://grid.wolfterritories.org:8002/Magical%20Fairies%20Pass/97/61/24",
|
||||
"image": "osw/Magical_Fairies_Pass.jpg"
|
||||
},
|
||||
{
|
||||
"name": "L&M Shop",
|
||||
"url": "hop://login3.virtualrbm.com.br:8002/L%26M%20Shop/130/140/5003",
|
||||
"image": "osw/L&M_Shop.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Meeting Point",
|
||||
"url": "hop://fenice.aduoni.net:8002/Meeting%20Point/128/189/63",
|
||||
"image": "osw/Meeting_Point.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Unreal World Portal",
|
||||
"url": "hop://yeali.outworldz.net:8002/Free",
|
||||
"image": "osw/Unreal_World_Portal.jpg"
|
||||
},
|
||||
{
|
||||
"name": "NyAlfheim",
|
||||
"url": "hop://grid.wolfterritories.org:8002/NyAlfheim/393/422/30",
|
||||
"image": "osw/NyAlfheim.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Graywolf landing",
|
||||
"url": "hop://alternatemetaverse.com:8002/Graywolf%20landing/813/959/23",
|
||||
"image": "osw/Graywolf_landing.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Edge Harbor",
|
||||
"url": "hop://grid.wolfterritories.org:8002/Edge%20Harbor/426/438/24",
|
||||
"image": "osw/Edge_Harbor.jpg"
|
||||
}
|
||||
],
|
||||
"Top100": [
|
||||
{
|
||||
"name": "Forgotten Worlds Portal",
|
||||
"url": "hop://213.200.254.17:18002/Forgotten%20Worlds%20Portal/126/123/22",
|
||||
"image": "osw/Forgotten_Worlds_Portal.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Free Life Great Gatsby",
|
||||
"url": "hop://freelife.outworldz.net:8002/Free%20Life%20Great%20Gatsby/126/126/23",
|
||||
"image": "osw/Free_Life_Great_Gatsby.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Digital City",
|
||||
"url": "hop://virtual-islands.de:8002/Digital%20City/131/134/23",
|
||||
"image": "osw/Digital_City.jpg"
|
||||
},
|
||||
{
|
||||
"name": "3DLES Education",
|
||||
"url": "hop://edugrid.3dles.com:8002/3DLES%20Education/121/149/23",
|
||||
"image": "osw/3DLES_Education.jpg"
|
||||
},
|
||||
{
|
||||
"name": "The Mall",
|
||||
"url": "hop://gbg-world.com:8002/The%20Mall/199/182/24",
|
||||
"image": "osw/The_Mall.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Bountiful City",
|
||||
"url": "hop://hg.neverworldgrid.com:8002/Bountiful%20City/129/136/51",
|
||||
"image": "osw/Bountiful_City.jpg"
|
||||
},
|
||||
{
|
||||
"name": "VULCANO_STIRPE",
|
||||
"url": "hop://bloodmoonpack.com:8002/VULCANO_STIRPE/306/302/69",
|
||||
"image": "osw/VULCANO_STIRPE.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Lush Isle",
|
||||
"url": "hop://login.exoticrealities.com:8002/Lush",
|
||||
"image": "osw/Lush_Isle.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Soundbox",
|
||||
"url": "hop://hg.soundboxmunich.com:8002/Soundbox/146/109/25",
|
||||
"image": "osw/Soundbox.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Moonrose Club",
|
||||
"url": "hop://moonrose-grid.de:8002/Moonrose%20Club/98/140/24",
|
||||
"image": "osw/Moonrose_Club.jpg"
|
||||
}
|
||||
],
|
||||
"Top110": [
|
||||
{
|
||||
"name": "Store",
|
||||
"url": "hop://gbg-world.com:8002/Store/77/98/24",
|
||||
"image": "osw/Store.jpg"
|
||||
},
|
||||
{
|
||||
"name": "HQ Herederos",
|
||||
"url": "hop://herederos.inworldz.net:8002/HQ%20Herederos/121/169/24",
|
||||
"image": "osw/HQ_Herederos.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Fashion Island",
|
||||
"url": "hop://login.digiworldz.com:8002/Fashion%20Island/142/137/23",
|
||||
"image": "osw/Fashion_Island.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Cosplay Universe",
|
||||
"url": "hop://login.digiworldz.com:8002/Cosplay%20Universe/256/242/23",
|
||||
"image": "osw/Cosplay_Universe.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Homestead Riverville 2",
|
||||
"url": "hop://alternatemetaverse.com:8002/Homestead%20Riverville%202/74/103/28",
|
||||
"image": "osw/Homestead_Riverville_2.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Riderwood",
|
||||
"url": "hop://gentlefire.opensim.fun:8002/Riderwood/143/177/32",
|
||||
"image": "osw/Riderwood.jpg"
|
||||
},
|
||||
{
|
||||
"name": "ILLUSION",
|
||||
"url": "hop://argoillusion.it:8002/ILLUSION/126/110/23",
|
||||
"image": "osw/ILLUSION.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Liverpool City",
|
||||
"url": "hop://grid.wolfterritories.org:8002/Liverpool%20City/163/132/24",
|
||||
"image": "osw/Liverpool_City.jpg"
|
||||
},
|
||||
{
|
||||
"name": "AVW Welcome",
|
||||
"url": "hop://avirtualworld.org:8002/AVW%20Welcome/118/138/23",
|
||||
"image": "osw/AVW_Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Parx Paradise",
|
||||
"url": "hop://alternatemetaverse.com:8002/Parx%20Paradise/101/246/24",
|
||||
"image": "osw/Parx_Paradise.jpg"
|
||||
},
|
||||
{
|
||||
"name": "ModaPlaza",
|
||||
"url": "hop://alternatemetaverse.com:8002/ModaPlaza/123/132/23",
|
||||
"image": "osw/ModaPlaza.jpg"
|
||||
}
|
||||
],
|
||||
"Top120": [
|
||||
{
|
||||
"name": "Island of Dreams",
|
||||
"url": "hop://grid.virtualife-grid.it:4577/VIRTUALIFE/168/186/26",
|
||||
"image": "osw/Island_of_Dreams.jpg"
|
||||
},
|
||||
{
|
||||
"name": "AviWorlds Welcome",
|
||||
"url": "hop://login.aviworlds.com:8002/AviWorlds%20Welcome/126/123/26",
|
||||
"image": "osw/AviWorlds_Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "GypsyCamp",
|
||||
"url": "hop://pangeagrid.de:8002/GypsyCamp/319/385/23",
|
||||
"image": "osw/GypsyCamp.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Chubelz_Welcome",
|
||||
"url": "hop://chubelz.de:8002/Chubelz_Welcome/88/138/29",
|
||||
"image": "osw/Chubelz_Welcome.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Barefoot Dreamers Mall",
|
||||
"url": "hop://login.barefoot-dreamers.com:8002/Barefoot%20Dreamers%20Mall/259/618/23",
|
||||
"image": "osw/Barefoot_Dreamers_Mall.jpg"
|
||||
},
|
||||
{
|
||||
"name": "FINDS Blank",
|
||||
"url": "hop://hg.neverworldgrid.com:8002/FINDS%20Blank/56/76/83",
|
||||
"image": "osw/FINDS_Blank.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Vesti",
|
||||
"url": "hop://hg.trianon-world.com:18002/Vesti/140/111/23",
|
||||
"image": "osw/Vesti.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Laredo",
|
||||
"url": "hop://zodiack.net:8002/Laredo/123/157/24",
|
||||
"image": "osw/Laredo.jpg"
|
||||
},
|
||||
{
|
||||
"name": "Westeros Medieval RP",
|
||||
"url": "hop://grid.wolfterritories.org:8002/Westeros%20Medieval%20RP/131/136/23",
|
||||
"image": "osw/Westeros_Medieval_RP.jpg"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
$title = "Password Service";
|
||||
include_once 'header.php';
|
||||
// Passwortgenerator-Funktion
|
||||
function generatePassword($length = 16) {
|
||||
$characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
|
||||
$charactersLength = strlen($characters);
|
||||
$password = '';
|
||||
for ($i = 0; $i < $length; $i++) {
|
||||
$password .= $characters[random_int(0, $charactersLength - 1)];
|
||||
}
|
||||
return $password;
|
||||
}
|
||||
|
||||
// Generiere Passwörter für das Register-Array
|
||||
$registration_passwords_register = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_reset = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_partner = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_inventory = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_datatable = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_listinventar = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_picreader = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_mutelist = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_avatarpicker = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_economy = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
$registration_passwords_events = [generatePassword(), generatePassword(), generatePassword(), generatePassword(), generatePassword()];
|
||||
?>
|
||||
|
||||
|
||||
<html>
|
||||
<style>
|
||||
.container {
|
||||
max-width: 1000px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
Color:rgb(31, 31, 31);
|
||||
background-color:rgb(238, 241, 241);
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
</style>
|
||||
|
||||
<main class="container">
|
||||
<h1>Generierte Passwörter</h1>
|
||||
<pre>
|
||||
<?php
|
||||
echo '$registration_passwords_register = ["' . implode('", "', $registration_passwords_register) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_reset = ["' . implode('", "', $registration_passwords_reset) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_partner = ["' . implode('", "', $registration_passwords_partner) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_inventory = ["' . implode('", "', $registration_passwords_inventory) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_datatable = ["' . implode('", "', $registration_passwords_datatable) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_listinventar = ["' . implode('", "', $registration_passwords_listinventar) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_picreader = ["' . implode('", "', $registration_passwords_picreader) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_mutelist = ["' . implode('", "', $registration_passwords_mutelist) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_avatarpicker = ["' . implode('", "', $registration_passwords_avatarpicker) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_economy = ["' . implode('", "', $registration_passwords_economy) . '"];' . PHP_EOL;
|
||||
echo '$registration_passwords_events = ["' . implode('", "', $registration_passwords_events) . '"];' . PHP_EOL;
|
||||
?>
|
||||
</pre>
|
||||
</main>
|
||||
</html>
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
include_once "config.php";
|
||||
|
||||
// JSON-Datei einlesen
|
||||
$events = json_decode(file_get_contents('../calendar/events.json'), true);
|
||||
|
||||
// Header setzen, um den Content-Type auf XML zu setzen
|
||||
header("Content-Type: application/rss+xml; charset=UTF-8");
|
||||
|
||||
// Nächsten Termin auswählen
|
||||
$currentDate = date('Y-m-d');
|
||||
$nextEvent = null;
|
||||
|
||||
foreach ($events as $event) {
|
||||
if ($event['date'] >= $currentDate) {
|
||||
$nextEvent = $event;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// RSS-Feed beginnen
|
||||
echo '<?xml version="1.0" encoding="UTF-8"?>';
|
||||
?>
|
||||
<rss version="2.0">
|
||||
<channel>
|
||||
<title><?php echo CALENDAR_TITLE; ?></title>
|
||||
<link><?php echo BASE_URL; ?></link>
|
||||
<description>RSS-Feed mit Kalenderereignissen</description>
|
||||
<language>de-de</language>
|
||||
|
||||
<?php if ($nextEvent): ?>
|
||||
<item>
|
||||
<title>
|
||||
<?php
|
||||
// Überprüfen, ob das 'title'-Feld existiert
|
||||
if (isset($nextEvent['title'])) {
|
||||
echo htmlspecialchars($nextEvent['title']);
|
||||
} else {
|
||||
echo htmlspecialchars($nextEvent['texts'][0]);
|
||||
}
|
||||
?>
|
||||
</title>
|
||||
<link><?php echo htmlspecialchars($nextEvent['link']); ?></link>
|
||||
<description>
|
||||
<?php
|
||||
// Überprüfen, ob das 'description'-Feld existiert
|
||||
if (isset($nextEvent['description'])) {
|
||||
echo htmlspecialchars($nextEvent['description']);
|
||||
} else {
|
||||
echo htmlspecialchars(join(', ', array_slice($nextEvent['texts'], 1)));
|
||||
}
|
||||
?>
|
||||
</description>
|
||||
<pubDate><?php echo date('r', strtotime($nextEvent['date'])); ?></pubDate>
|
||||
<?php if (isset($nextEvent['image'])): ?>
|
||||
<image><?php echo htmlspecialchars(BASE_URL . $nextEvent['image']); ?></image>
|
||||
<?php endif; ?>
|
||||
</item>
|
||||
<?php endif; ?>
|
||||
</channel>
|
||||
</rss>
|
||||
@@ -0,0 +1,359 @@
|
||||
<?php
|
||||
/**
|
||||
* Modern Security and Error Handling Library for OpenSim Webinterface
|
||||
* Version: 1.0.0
|
||||
*/
|
||||
|
||||
class OSWebSecurity {
|
||||
|
||||
/**
|
||||
* Generate CSRF Token
|
||||
*/
|
||||
public static function generateCSRFToken() {
|
||||
if (session_status() === PHP_SESSION_NONE) {
|
||||
session_start();
|
||||
}
|
||||
|
||||
if (!isset($_SESSION['csrf_token'])) {
|
||||
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
|
||||
}
|
||||
|
||||
return $_SESSION['csrf_token'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Verify CSRF Token
|
||||
*/
|
||||
public static function verifyCSRFToken($token) {
|
||||
if (session_status() === PHP_SESSION_NONE) {
|
||||
session_start();
|
||||
}
|
||||
|
||||
return isset($_SESSION['csrf_token']) && hash_equals($_SESSION['csrf_token'], $token);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitize input data
|
||||
*/
|
||||
public static function sanitizeInput($input, $type = 'string') {
|
||||
if (is_array($input)) {
|
||||
return array_map(function($item) use ($type) {
|
||||
return self::sanitizeInput($item, $type);
|
||||
}, $input);
|
||||
}
|
||||
|
||||
$input = trim($input);
|
||||
|
||||
switch ($type) {
|
||||
case 'email':
|
||||
return filter_var($input, FILTER_SANITIZE_EMAIL);
|
||||
|
||||
case 'int':
|
||||
return filter_var($input, FILTER_SANITIZE_NUMBER_INT);
|
||||
|
||||
case 'float':
|
||||
return filter_var($input, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
|
||||
|
||||
case 'url':
|
||||
return filter_var($input, FILTER_SANITIZE_URL);
|
||||
|
||||
case 'string':
|
||||
default:
|
||||
return htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate input data
|
||||
*/
|
||||
public static function validateInput($input, $type, $options = []) {
|
||||
switch ($type) {
|
||||
case 'email':
|
||||
return filter_var($input, FILTER_VALIDATE_EMAIL) !== false;
|
||||
|
||||
case 'int':
|
||||
$min = $options['min'] ?? null;
|
||||
$max = $options['max'] ?? null;
|
||||
$flags = 0;
|
||||
$filter_options = [];
|
||||
|
||||
if ($min !== null || $max !== null) {
|
||||
$filter_options['options'] = [];
|
||||
if ($min !== null) $filter_options['options']['min_range'] = $min;
|
||||
if ($max !== null) $filter_options['options']['max_range'] = $max;
|
||||
}
|
||||
|
||||
return filter_var($input, FILTER_VALIDATE_INT, $filter_options) !== false;
|
||||
|
||||
case 'url':
|
||||
return filter_var($input, FILTER_VALIDATE_URL) !== false;
|
||||
|
||||
case 'uuid':
|
||||
return preg_match('/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i', $input);
|
||||
|
||||
case 'avatar_name':
|
||||
return preg_match('/^[a-zA-Z0-9\s]{2,31}$/', $input);
|
||||
|
||||
case 'required':
|
||||
return !empty($input);
|
||||
|
||||
case 'length':
|
||||
$min = $options['min'] ?? 0;
|
||||
$max = $options['max'] ?? PHP_INT_MAX;
|
||||
$len = strlen($input);
|
||||
return $len >= $min && $len <= $max;
|
||||
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if password meets requirements
|
||||
*/
|
||||
public static function validatePassword($password) {
|
||||
$errors = [];
|
||||
|
||||
if (strlen($password) < 8) {
|
||||
$errors[] = 'Password must be at least 8 characters long';
|
||||
}
|
||||
|
||||
if (!preg_match('/[A-Z]/', $password)) {
|
||||
$errors[] = 'Password must contain at least one uppercase letter';
|
||||
}
|
||||
|
||||
if (!preg_match('/[a-z]/', $password)) {
|
||||
$errors[] = 'Password must contain at least one lowercase letter';
|
||||
}
|
||||
|
||||
if (!preg_match('/[0-9]/', $password)) {
|
||||
$errors[] = 'Password must contain at least one number';
|
||||
}
|
||||
|
||||
return empty($errors) ? true : $errors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rate limiting
|
||||
*/
|
||||
public static function checkRateLimit($identifier, $max_attempts = 5, $time_window = 300) {
|
||||
if (session_status() === PHP_SESSION_NONE) {
|
||||
session_start();
|
||||
}
|
||||
|
||||
$key = 'rate_limit_' . md5($identifier);
|
||||
$now = time();
|
||||
|
||||
if (!isset($_SESSION[$key])) {
|
||||
$_SESSION[$key] = [];
|
||||
}
|
||||
|
||||
// Clean old attempts
|
||||
$_SESSION[$key] = array_filter($_SESSION[$key], function($timestamp) use ($now, $time_window) {
|
||||
return ($now - $timestamp) < $time_window;
|
||||
});
|
||||
|
||||
if (count($_SESSION[$key]) >= $max_attempts) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$_SESSION[$key][] = $now;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Secure session management
|
||||
*/
|
||||
public static function startSecureSession() {
|
||||
if (session_status() === PHP_SESSION_NONE) {
|
||||
// Secure session configuration
|
||||
ini_set('session.cookie_httponly', 1);
|
||||
ini_set('session.cookie_secure', isset($_SERVER['HTTPS']));
|
||||
ini_set('session.use_strict_mode', 1);
|
||||
|
||||
session_start();
|
||||
|
||||
// Regenerate session ID on login
|
||||
if (!isset($_SESSION['initiated'])) {
|
||||
session_regenerate_id(true);
|
||||
$_SESSION['initiated'] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class OSWebErrorHandler {
|
||||
|
||||
/**
|
||||
* Display user-friendly error message
|
||||
*/
|
||||
public static function displayError($message, $type = 'danger') {
|
||||
$icon_map = [
|
||||
'success' => 'check-circle',
|
||||
'info' => 'info-circle',
|
||||
'warning' => 'exclamation-triangle',
|
||||
'danger' => 'x-circle'
|
||||
];
|
||||
|
||||
$icon = $icon_map[$type] ?? 'info-circle';
|
||||
|
||||
return '<div class="alert alert-' . $type . ' alert-dismissible fade show" role="alert">
|
||||
<i class="bi bi-' . $icon . ' me-2"></i>
|
||||
' . htmlspecialchars($message) . '
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert"></button>
|
||||
</div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Log error securely
|
||||
*/
|
||||
public static function logError($message, $context = []) {
|
||||
$log_entry = [
|
||||
'timestamp' => date('Y-m-d H:i:s'),
|
||||
'message' => $message,
|
||||
'context' => $context,
|
||||
'ip' => $_SERVER['REMOTE_ADDR'] ?? 'unknown',
|
||||
'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? 'unknown'
|
||||
];
|
||||
|
||||
error_log('OSWeb Error: ' . json_encode($log_entry));
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle database errors gracefully
|
||||
*/
|
||||
public static function handleDatabaseError($connection, $query = null) {
|
||||
if ($connection && mysqli_errno($connection)) {
|
||||
$error = mysqli_error($connection);
|
||||
self::logError('Database Error', [
|
||||
'error' => $error,
|
||||
'query' => $query,
|
||||
'errno' => mysqli_errno($connection)
|
||||
]);
|
||||
|
||||
return self::displayError('A database error occurred. Please try again later.');
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate form with multiple fields
|
||||
*/
|
||||
public static function validateForm($data, $rules) {
|
||||
$errors = [];
|
||||
|
||||
foreach ($rules as $field => $field_rules) {
|
||||
$value = $data[$field] ?? '';
|
||||
|
||||
foreach ($field_rules as $rule => $options) {
|
||||
if (is_numeric($rule)) {
|
||||
$rule = $options;
|
||||
$options = [];
|
||||
}
|
||||
|
||||
if (!OSWebSecurity::validateInput($value, $rule, $options)) {
|
||||
$field_name = ucfirst(str_replace('_', ' ', $field));
|
||||
|
||||
switch ($rule) {
|
||||
case 'required':
|
||||
$errors[$field] = $field_name . ' is required';
|
||||
break;
|
||||
case 'email':
|
||||
$errors[$field] = $field_name . ' must be a valid email address';
|
||||
break;
|
||||
case 'int':
|
||||
$errors[$field] = $field_name . ' must be a valid number';
|
||||
break;
|
||||
case 'length':
|
||||
$min = $options['min'] ?? 0;
|
||||
$max = $options['max'] ?? 'unlimited';
|
||||
$errors[$field] = $field_name . " must be between {$min} and {$max} characters";
|
||||
break;
|
||||
case 'uuid':
|
||||
$errors[$field] = $field_name . ' must be a valid UUID';
|
||||
break;
|
||||
case 'avatar_name':
|
||||
$errors[$field] = $field_name . ' must be 2-31 characters, letters and numbers only';
|
||||
break;
|
||||
default:
|
||||
$errors[$field] = $field_name . ' is invalid';
|
||||
}
|
||||
break; // Stop at first error for this field
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $errors;
|
||||
}
|
||||
}
|
||||
|
||||
class OSWebDatabase {
|
||||
private $connection;
|
||||
|
||||
public function __construct() {
|
||||
try {
|
||||
$this->connection = new mysqli(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
|
||||
|
||||
if ($this->connection->connect_error) {
|
||||
throw new Exception("Connection failed: " . $this->connection->connect_error);
|
||||
}
|
||||
|
||||
$this->connection->set_charset("utf8");
|
||||
|
||||
} catch (Exception $e) {
|
||||
OSWebErrorHandler::logError('Database connection failed', ['error' => $e->getMessage()]);
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
public function prepare($query) {
|
||||
$stmt = $this->connection->prepare($query);
|
||||
if (!$stmt) {
|
||||
OSWebErrorHandler::logError('Prepare failed', [
|
||||
'query' => $query,
|
||||
'error' => $this->connection->error
|
||||
]);
|
||||
throw new Exception("Prepare failed: " . $this->connection->error);
|
||||
}
|
||||
return $stmt;
|
||||
}
|
||||
|
||||
public function getConnection() {
|
||||
return $this->connection;
|
||||
}
|
||||
|
||||
public function close() {
|
||||
if ($this->connection) {
|
||||
$this->connection->close();
|
||||
}
|
||||
}
|
||||
|
||||
public function __destruct() {
|
||||
$this->close();
|
||||
}
|
||||
}
|
||||
|
||||
// Helper functions for backward compatibility
|
||||
function sanitize_input($input, $type = 'string') {
|
||||
return OSWebSecurity::sanitizeInput($input, $type);
|
||||
}
|
||||
|
||||
function display_error($message, $type = 'danger') {
|
||||
return OSWebErrorHandler::displayError($message, $type);
|
||||
}
|
||||
|
||||
function validate_form($data, $rules) {
|
||||
return OSWebErrorHandler::validateForm($data, $rules);
|
||||
}
|
||||
|
||||
function csrf_token_field() {
|
||||
$token = OSWebSecurity::generateCSRFToken();
|
||||
return '<input type="hidden" name="csrf_token" value="' . $token . '">';
|
||||
}
|
||||
|
||||
function verify_csrf_token() {
|
||||
$token = $_POST['csrf_token'] ?? '';
|
||||
return OSWebSecurity::verifyCSRFToken($token);
|
||||
}
|
||||
?>
|
||||
+322
@@ -0,0 +1,322 @@
|
||||
<?php
|
||||
$title = "TOS";
|
||||
include 'header.php';
|
||||
|
||||
// Sprachauswahl (Standard: Deutsch)
|
||||
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'de';
|
||||
|
||||
// Platzhalter-Werte setzen
|
||||
$variables = [
|
||||
"DEIN GRID-NAME" => "Virtual " . SITE_NAME . " Grid",
|
||||
"DATUM" => date("d.m.Y"),
|
||||
"DEINE EMAIL" => "support@" . SITE_NAME . ".com",
|
||||
"DEINE POSTADRESSE" => "Musterstraße 123, 12345 Musterstadt",
|
||||
"OPTIONAL" => "Discord: GridSupport" . BASE_URL,
|
||||
"DEINE KONTAKT-EMAIL" => "kontakt@" . SITE_NAME . ".com"
|
||||
];
|
||||
?>
|
||||
|
||||
<style>
|
||||
.markdown-content {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 20px;
|
||||
color: rgb(31, 31, 31); /* Korrektur: 'color' statt 'Color' */
|
||||
background-color: rgb(238, 241, 241);
|
||||
border: 1px solid #ddd;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.language-switcher {
|
||||
text-align: right;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.language-switcher a {
|
||||
text-decoration: none;
|
||||
color: #007BFF;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.language-switcher a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
code {
|
||||
background-color: #f4f4f4;
|
||||
padding: 2px 5px;
|
||||
border-radius: 3px;
|
||||
font-family: monospace;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="language-switcher">
|
||||
<a href="?lang=de">Deutsch</a> | <a href="?lang=en">English</a>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
function replacePlaceholders($text, $variables = []) {
|
||||
foreach ($variables as $key => $value) {
|
||||
$text = str_replace("[$key]", $value, $text);
|
||||
}
|
||||
return $text;
|
||||
}
|
||||
|
||||
function simpleMarkdownToHTML($text) {
|
||||
// Zeilenumbrüche umwandeln
|
||||
$text = nl2br($text);
|
||||
|
||||
// Fettdruck **text** -> <strong>text</strong>
|
||||
$text = preg_replace('/\*\*(.*?)\*\*/', '<strong>$1</strong>', $text);
|
||||
|
||||
// Kursiv *text* -> <em>text</em>
|
||||
$text = preg_replace('/\*(.*?)\*/', '<em>$1</em>', $text);
|
||||
|
||||
// Überschriften # -> <h1>, ## -> <h2> usw.
|
||||
for ($i = 6; $i >= 1; $i--) {
|
||||
$text = preg_replace('/^' . str_repeat('#', $i) . '\s*(.*?)$/m', "<h$i>$1</h$i>", $text);
|
||||
}
|
||||
|
||||
// Links [Text](URL) -> <a href="URL">Text</a>
|
||||
$text = preg_replace('/\[(.*?)\]\((.*?)\)/', '<a href="$2">$1</a>', $text);
|
||||
|
||||
// Inline-Code `text` -> <code>text</code>
|
||||
$text = preg_replace('/`(.*?)`/', '<code>$1</code>', $text);
|
||||
|
||||
return $text;
|
||||
}
|
||||
|
||||
// Deutsche TOS
|
||||
$tosTextDE = "
|
||||
# **Terms of Service für [DEIN GRID-NAME]**
|
||||
**(Nutzungsbedingungen)**
|
||||
|
||||
**Letzte Aktualisierung:** [DATUM]
|
||||
|
||||
Willkommen bei **[DEIN GRID-NAME]**! Diese Nutzungsbedingungen regeln deine Nutzung unserer virtuellen Welt,
|
||||
die auf OpenSimulator basiert. Durch die Registrierung und Nutzung unseres Dienstes stimmst du diesen Bedingungen zu.
|
||||
Falls du nicht einverstanden bist, darfst du unser Grid nicht nutzen.
|
||||
|
||||
---
|
||||
|
||||
## **1. Allgemeine Bestimmungen**
|
||||
1.1 **Geltungsbereich:** Diese Bedingungen gelten für alle Nutzer unseres OpenSimulator-Grids, einschließlich Gäste und registrierte Benutzer.
|
||||
1.2 **Änderungen:** Wir behalten uns das Recht vor, diese Bedingungen jederzeit zu ändern. Änderungen treten mit ihrer Veröffentlichung auf unserer Webseite in Kraft.
|
||||
1.3 **Zustimmung:** Mit der Nutzung unseres Grids erklärst du dich mit den aktuellen Nutzungsbedingungen einverstanden.
|
||||
|
||||
---
|
||||
|
||||
## **2. Benutzerkonten und Zugang**
|
||||
2.1 **Registrierung:**
|
||||
- Du musst mindestens **[ALTER, z. B. 16]** Jahre alt sein, um ein Konto zu erstellen.
|
||||
- Die Angabe korrekter und vollständiger Informationen ist erforderlich.
|
||||
- Pro Person ist nur ein Benutzerkonto erlaubt, es sei denn, wir gestatten ausdrücklich mehrere Konten.
|
||||
|
||||
2.2 **Sicherheit deines Kontos:**
|
||||
- Du bist für die Sicherheit deines Kontos und Passworts verantwortlich.
|
||||
- Falls du einen unbefugten Zugriff auf dein Konto vermutest, informiere uns umgehend.
|
||||
|
||||
2.3 **Konto-Sperrung & Löschung:**
|
||||
- Wir behalten uns das Recht vor, dein Konto zu sperren oder zu löschen, wenn du gegen diese TOS verstößt.
|
||||
- Inaktive Konten können nach **[z. B. 6 Monaten]** ohne Vorwarnung gelöscht werden.
|
||||
|
||||
---
|
||||
|
||||
## **3. Virtuelle Inhalte und Wirtschaftssystem**
|
||||
3.1 **Eigentum an Inhalten:**
|
||||
- Inhalte, die du erstellst oder hochlädst, bleiben dein geistiges Eigentum.
|
||||
- Du gewährst uns jedoch das Recht, deine Inhalte innerhalb des Grids zu nutzen, zu hosten und zu verwalten.
|
||||
|
||||
3.2 **Urheberrechte und Lizenzierung:**
|
||||
- Es ist verboten, urheberrechtlich geschützte Inhalte ohne Erlaubnis hochzuladen.
|
||||
- Falls ein Nutzer Urheberrechte verletzt, behalten wir uns vor, den Inhalt zu entfernen und das Konto zu sperren.
|
||||
|
||||
3.3 **Virtuelle Währung & Transaktionen:**
|
||||
- Falls unser Grid eine virtuelle Währung verwendet (**z. B. Gloebits, Podex, OMC**), erkennst du an, dass diese keinen echten Geldwert hat.
|
||||
- Wir übernehmen keine Verantwortung für Verluste oder technische Fehler im Zusammenhang mit virtuellen Währungen oder Transaktionen.
|
||||
|
||||
---
|
||||
|
||||
## **4. Verhaltensregeln**
|
||||
4.1 **Erlaubte und verbotene Inhalte:**
|
||||
- Keine **Belästigung, Hassrede, rassistischen oder sexuell expliziten Inhalte**, die gegen geltendes Recht verstoßen.
|
||||
- Kein **Spam, Betrug oder das Nachahmen anderer Nutzer/Admins**.
|
||||
- Kein **Hacking, Griefing oder das Stören anderer Nutzer** durch Skripte, Exploits oder Angriffe.
|
||||
|
||||
4.2 **Regionale und Parzellenregeln:**
|
||||
- Eigentümer von Regionen/Parzellen dürfen eigene Regeln festlegen, solange sie nicht gegen diese TOS verstoßen.
|
||||
- Admins behalten sich das Recht vor, störende Inhalte oder Regionen zu entfernen.
|
||||
|
||||
---
|
||||
|
||||
## **5. Datenschutz und Datenspeicherung**
|
||||
5.1 **Gespeicherte Daten:**
|
||||
- Wir speichern deine Account-Informationen, IP-Adresse, Avatar-Daten und In-World-Interaktionen für administrative Zwecke.
|
||||
- Persönliche Daten werden nicht an Dritte weitergegeben, es sei denn, es besteht eine gesetzliche Verpflichtung.
|
||||
|
||||
5.2 **Nutzung von Drittanbietern:**
|
||||
- Falls unser Grid externe Dienste wie **Hypergrid-Teleports, Gloebits oder PayPal** verwendet, gelten deren Datenschutzrichtlinien zusätzlich.
|
||||
- Beim Verlassen unseres Grids über Hypergrid-Teleports können deine Daten von anderen Grids verarbeitet werden.
|
||||
|
||||
---
|
||||
|
||||
## **6. DMCA-Richtlinie (Urheberrechtsschutz)**
|
||||
Falls du glaubst, dass Inhalte in unserem Grid gegen dein Urheberrecht verstoßen, kannst du eine **DMCA-Beschwerde** einreichen:
|
||||
|
||||
### **6.1 Wie du eine DMCA-Meldung einreichst:**
|
||||
Sende eine schriftliche Beschwerde an **[DEINE KONTAKT-EMAIL]** mit folgenden Angaben:
|
||||
1. Eine Beschreibung des geschützten Werkes, das verletzt wurde.
|
||||
2. Die genaue Position des beanstandeten Inhalts (Region, Koordinaten, UUID, Screenshots).
|
||||
3. Deine Kontaktdaten (Name, E-Mail, Adresse, Telefonnummer).
|
||||
4. Eine Erklärung, dass du in gutem Glauben handelst und der Inhalt unrechtmäßig verwendet wird.
|
||||
5. Eine eidesstattliche Versicherung, dass deine Angaben korrekt sind.
|
||||
|
||||
### **6.2 Reaktion auf DMCA-Meldungen:**
|
||||
- Wir werden überprüfte Verstöße entfernen.
|
||||
- Falls du fälschlicherweise als Urheberrechtsverletzer gemeldet wurdest, kannst du eine Gegendarstellung einreichen.
|
||||
|
||||
---
|
||||
|
||||
## **7. Haftungsausschluss und Beendigung des Dienstes**
|
||||
7.1 **Haftungsausschluss:**
|
||||
- Unser Grid wird wie besehen zur Verfügung gestellt. Wir garantieren keine **störungsfreie, fehlerfreie oder ununterbrochene Nutzung**.
|
||||
- Wir haften nicht für **Datenverluste, Hacks oder technische Probleme**.
|
||||
|
||||
7.2 **Beendigung des Dienstes:**
|
||||
- Wir behalten uns das Recht vor, das Grid oder Teile davon jederzeit einzustellen.
|
||||
- Bei einer Schließung gibt es keinen Anspruch auf Erstattung virtueller Guthaben oder Inhalte.
|
||||
|
||||
---
|
||||
|
||||
## **8. Kontakt**
|
||||
Falls du Fragen zu diesen Nutzungsbedingungen hast, kannst du uns unter **[DEINE KONTAKT-EMAIL]** erreichen.
|
||||
|
||||
---
|
||||
|
||||
### **Akzeptanz der Nutzungsbedingungen**
|
||||
Mit der Nutzung von **[DEIN GRID-NAME]** erklärst du dich mit diesen Nutzungsbedingungen einverstanden. Falls du nicht einverstanden bist, verlasse das Grid und lösche dein Konto.
|
||||
";
|
||||
|
||||
// Englische TOS (kann später hinzugefügt werden)
|
||||
$tosTextEN = "
|
||||
# **Terms of Service for [DEIN GRID-NAME]**
|
||||
|
||||
**Last Updated:** [DATUM]
|
||||
|
||||
Welcome to **[DEIN GRID-NAME]**! These Terms of Service govern your use of our virtual world,
|
||||
which is based on OpenSimulator. By registering and using our service, you agree to these terms.
|
||||
If you do not agree, you may not use our grid.
|
||||
|
||||
---
|
||||
|
||||
## **1. General Provisions**
|
||||
1.1 **Scope:** These terms apply to all users of our OpenSimulator grid, including guests and registered users.
|
||||
1.2 **Changes:** We reserve the right to change these terms at any time. Changes take effect upon publication on our website.
|
||||
1.3 **Consent:** By using our grid, you agree to the current terms of service.
|
||||
|
||||
---
|
||||
|
||||
## **2. User Accounts and Access**
|
||||
2.1 **Registration:**
|
||||
- You must be at least **[AGE, e.g., 16]** years old to create an account.
|
||||
- Providing accurate and complete information is required.
|
||||
- Only one account per person is allowed unless we explicitly permit multiple accounts.
|
||||
|
||||
2.2 **Account Security:**
|
||||
- You are responsible for the security of your account and password.
|
||||
- If you suspect unauthorized access to your account, notify us immediately.
|
||||
|
||||
2.3 **Account Suspension & Deletion:**
|
||||
- We reserve the right to suspend or delete your account if you violate these TOS.
|
||||
- Inactive accounts may be deleted after **[e.g., 6 months]** without prior notice.
|
||||
|
||||
---
|
||||
|
||||
## **3. Virtual Content and Economy**
|
||||
3.1 **Ownership of Content:**
|
||||
- Content you create or upload remains your intellectual property.
|
||||
- However, you grant us the right to use, host, and manage your content within the grid.
|
||||
|
||||
3.2 **Copyright and Licensing:**
|
||||
- Uploading copyrighted content without permission is prohibited.
|
||||
- If a user violates copyright, we reserve the right to remove the content and suspend the account.
|
||||
|
||||
3.3 **Virtual Currency & Transactions:**
|
||||
- If our grid uses a virtual currency (**e.g., Gloebits, Podex, OMC**), you acknowledge that it has no real monetary value.
|
||||
- We are not responsible for losses or technical issues related to virtual currencies or transactions.
|
||||
|
||||
---
|
||||
|
||||
## **4. Code of Conduct**
|
||||
4.1 **Allowed and Prohibited Content:**
|
||||
- No **harassment, hate speech, racist, or sexually explicit content** that violates applicable law.
|
||||
- No **spam, fraud, or impersonation of other users/admins**.
|
||||
- No **hacking, griefing, or disrupting other users** through scripts, exploits, or attacks.
|
||||
|
||||
4.2 **Regional and Parcel Rules:**
|
||||
- Region/parcel owners may set their own rules as long as they do not violate these TOS.
|
||||
- Admins reserve the right to remove disruptive content or regions.
|
||||
|
||||
---
|
||||
|
||||
## **5. Privacy and Data Storage**
|
||||
5.1 **Stored Data:**
|
||||
- We store your account information, IP address, avatar data, and in-world interactions for administrative purposes.
|
||||
- Personal data will not be shared with third parties unless required by law.
|
||||
|
||||
5.2 **Use of Third Parties:**
|
||||
- If our grid uses external services like **Hypergrid teleports, Gloebits, or PayPal**, their privacy policies apply additionally.
|
||||
- When leaving our grid via Hypergrid teleports, your data may be processed by other grids.
|
||||
|
||||
---
|
||||
|
||||
## **6. DMCA Policy (Copyright Protection)**
|
||||
If you believe that content on our grid violates your copyright, you can file a **DMCA complaint**:
|
||||
|
||||
### **6.1 How to Submit a DMCA Notice:**
|
||||
Send a written complaint to **[DEINE KONTAKT-EMAIL]** with the following information:
|
||||
1. A description of the copyrighted work that has been infringed.
|
||||
2. The exact location of the infringing content (region, coordinates, UUID, screenshots).
|
||||
3. Your contact details (name, email, address, phone number).
|
||||
4. A statement that you are acting in good faith and that the content is being used unlawfully.
|
||||
5. A sworn statement that your information is accurate.
|
||||
|
||||
### **6.2 Response to DMCA Notices:**
|
||||
- We will remove verified violations.
|
||||
- If you have been falsely accused of copyright infringement, you can submit a counter-notice.
|
||||
|
||||
---
|
||||
|
||||
## **7. Disclaimer and Termination of Service**
|
||||
7.1 **Disclaimer:**
|
||||
- Our grid is provided as-is. We do not guarantee **uninterrupted, error-free, or continuous use**.
|
||||
- We are not liable for **data loss, hacks, or technical issues**.
|
||||
|
||||
7.2 **Termination of Service:**
|
||||
- We reserve the right to terminate the grid or parts of it at any time.
|
||||
- In the event of closure, there is no entitlement to refunds of virtual balances or content.
|
||||
|
||||
---
|
||||
|
||||
## **8. Contact**
|
||||
If you have questions about these terms of service, you can reach us at **[DEINE KONTAKT-EMAIL]**.
|
||||
|
||||
---
|
||||
|
||||
### **Acceptance of Terms**
|
||||
By using **[DEIN GRID-NAME]**, you agree to these terms of service. If you do not agree, leave the grid and delete your account.
|
||||
";
|
||||
|
||||
// Wähle den Text basierend auf der Sprache
|
||||
$tosText = ($lang == 'de') ? $tosTextDE : $tosTextEN;
|
||||
|
||||
// 1️⃣ Platzhalter ersetzen
|
||||
$tosText = replacePlaceholders($tosText, $variables);
|
||||
|
||||
// 2️⃣ Markdown in HTML umwandeln
|
||||
$finalHTML = simpleMarkdownToHTML($tosText);
|
||||
|
||||
// 3️⃣ HTML ausgeben
|
||||
echo "<div class='markdown-content'>$finalHTML</div>";
|
||||
?>
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
// include/verification_functions.php
|
||||
|
||||
function generateActivationCode() {
|
||||
return bin2hex(random_bytes(16));
|
||||
}
|
||||
|
||||
function sendVerificationEmail($email, $vorname, $nachname, $activationCode) {
|
||||
$subject = "Ihr Freischaltcode für " . SITE_NAME;
|
||||
$message = "Hallo $vorname $nachname,\n\n";
|
||||
$message .= "Ihr Freischaltcode lautet: $activationCode\n\n";
|
||||
$message .= "Bitte verwenden Sie diesen Code, um Ihre Registrierung abzuschließen.\n\n";
|
||||
$message .= "Mit freundlichen Grüßen,\n";
|
||||
$message .= SITE_NAME;
|
||||
|
||||
$headers = "From: noreply@" . parse_url(BASE_URL, PHP_URL_HOST) . "\r\n";
|
||||
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
|
||||
|
||||
return mail($email, $subject, $message, $headers);
|
||||
}
|
||||
|
||||
function generateUUID() {
|
||||
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0xffff),
|
||||
mt_rand(0, 0x0fff) | 0x4000,
|
||||
mt_rand(0, 0x3fff) | 0x8000,
|
||||
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
|
||||
);
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user