This commit is contained in:
ManfredAabye
2025-10-14 08:55:38 +02:00
committed by GitHub
parent bf85881f77
commit c13e66555a
34 changed files with 4976 additions and 0 deletions
+17
View File
@@ -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

+258
View File
@@ -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',
+202
View File
@@ -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> &nbsp; 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;
?>
+225
View File
@@ -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> &nbsp; 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;
?>
+322
View File
@@ -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);
?>
+80
View File
@@ -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"
}
]
}
+331
View File
@@ -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 **1014 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 **1014 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>";
?>
+10
View File
@@ -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');
?>
+19
View File
@@ -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

+94
View File
@@ -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">
&copy; <?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>
+293
View File
@@ -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
Arielles 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
Darkhearts 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
Dorenas 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
Freyas 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
Joes 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
Ladys Dreamworld,ladysdreamworld.opensim.fun:8002
Lagniappe Grid,hg.lagniappegrid.com:8402
Lanf Of Bree,carlyspencer.ddns.net:9002
Langalfs 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
Phillips 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 Sims,hajos-welt.de:8002
Tenth Dimension,grid.tenthdimension.org:26002
Terra Nova,terranova.outworldz.net:8002
The Devils 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
Tomis 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
1 Gridname Gridlink.com:8002
2 3D Worldz www.3dWorldz.com:8002
3 3DLES edugrid.3dles.com:8002
4 4Creative pangea.myftp.org:8002
5 A Dimension Beyond grid.adimensionbeyond.net:8002
6 A Virtual World avirtualworld.org:8002
7 Accueil Dracsoom dracsoom.ddns.net:8002
8 Admeja admeja.bounceme.net:8002
9 Adreans-World adreans-world.from-fl.com:8000
10 Adult Life adult-life.de:8002
11 Aedynar aedynar.com:8002
12 AI Grid ai.let-us.cyou:8002
13 AIRE Mille Flux grid.aire-mille-flux.org:8002
14 Alecia Grid alecianagrid.com:8002
15 Alexa World alexaworld.de:8002
16 Alife Virtual alifevirtual.com:8002
17 Alternate Metaverse alternatemetaverse.com:8002
18 Alterworld Grid hg.alterworld.us:7002
19 AmaziWorld login.amaziworld.com:8002
20 Angel Souls angel-souls.de:8002
21 Ankabi ankabi.de:8002
22 Ansjela Grid hg.ansjelagrid.com:28002
23 AnSky login.anskygrid.ca:8002
24 Arcadia Asylum arcadiaasylum.org:8002
25 Ardalia ardiva.ddns.net:8002
26 Ardiva ardiva.ddns.net:8002
27 Ares World aresworld.outworldz.net:8002
28 Argentoratum cogito.no-ip.info:8002
29 Argofantasy argofantasy.com:8002
30 Arielle’s Grid bound2.ddns.net:8002
31 ArtDestiny artdestiny.de:8002
32 Assassin Guard assassinguard.opensim.fun:38002
33 Astralia astralia.eu:8002
34 Atlantide real-3d.zapto.org:8002
35 Atlantis 209.126.208.163:9023
36 Atlas Grid atlasgrid.fr:8002
37 Ausgrid login.ausgridds.biz:8002
38 Avacon grid.avacon.org:8002
39 AvatarLand mikeland.ddns.net:8002
40 AvatarLife grid.avatarlife.com:8002
41 Avie Realm logon.avierealm.com:8002
42 AviVerse AlterEgo aviverse.it:8002
43 AviWorlds login.aviworlds.com:8002
44 Baller Nation login.ballernation.us:8002
45 Barefoot Dreamers login.barefoot-dreamers.com:8002
46 Beta Technologies opensim.betatechnologies.info:8002
47 Blendioptera Grid blendioptera2.outworldz.net:8002
48 BloodMoon bloodmoonpack.com:8002
49 Bridgemere bridgemere.outworldz.net:8002
50 Bridger bridger.outworldz.net:8002
51 Caelum Alpha caelumalpha.outworldz.net:8002
52 Canadian Grid canadiangrid.ca:8002
53 CandM World grid.candmworld.com:8002
54 CandorsRPWorld candorsrpworld.ch:8002
55 Carima Welt carima-welt.de:8002
56 Casperia Prime casperia.ddns.net:8002
57 Cat Woman Rose catwomanrose.de:8002
58 CLC grid clcgrid.com:8002
59 Clone Fantasy clonefantasy.ovh:8002
60 Coffee Grid coffeegrid.net:8002
61 Concadia gridconcadia.com:8002
62 Conectados Grid conectados.opensim.fun:8802
63 Cooperation Creative hg.cc-group.cc:8002
64 Counter Earth jand.dyndns.biz:7002
65 Cozy Comforts Grid grid.cozycomforts.net:8002
66 Craft World craft-world.org:8002
67 CreaNovale Grid login.creanovale.ca:8052
68 Creo Mundos grid.CreoMundos.com:8002
69 Czech Welcome Centre opensim.cz:9000
70 Dajas Grid Grid.Daja.at:8002
71 Dark Heaven Dark-Heaven.eu:8002
72 Darkheart’s Playground playground.darkheartsos.com:8002
73 Decadence decadence.ddns.net:8002
74 Deep Playa rajal.org:9000
75 DigiWorldz login.digiworldz.com:8002
76 Discovery Grid discoverygrid.net:8002
77 Doghouse doghouse.outworldz.net:8002
78 Dorena’s World dorenas-world.de:8002
79 DowGrid dowgridworld.com.br:8002
80 Dragonz Kin Territories grid.dragonzkinterritory.org:18002
81 Dynamic Worldz grid.dynamicworldz2.com:8822
82 Dyvall dyvall.de:8002
83 E-LIVE Virtual World world.eliveproject.eu:8002
84 Edge of Reality Grid theedgeofreality.ddns.net:8882
85 EdMondo slw.indire.it:8002
86 EducaSim grid.educasim.es:8002
87 Endivatomic World endivatomic.eu:8002
88 Equinox Grid equinoxgrid.com:8002
89 Escape 2 Reality Grid grid.escape2reality.org:8002
90 EscapeLands world.escapelands.com:8002
91 Esfera Split split.esferavirtual.com.br:8002
92 Esfera Virtual esferavirtual.com.br:8002
93 Eureka World grid1.eurekaworld.co.il:8002
94 EVA Park evapark.co.uk:8002
95 Expanse expanse.outworldz.net:8002
96 Fae Farms alanna.outworldz.net:8002
97 Fearless Mysteries www.fearlessmysteries.eu:8002
98 Forgotten Worlds 213.200.254.17:18002
99 France RP francerpgrid.fr:8002
100 Free Life freelife.outworldz.net:8002
101 Freedom Grid freedomgrid.world:8002
102 Fresh MetaVers abc.outworldz.net:8002
103 Freya’s Shadow World 213.200.254.17:12002
104 Friends Grid login.friends-grid.com:8002
105 FuoriGrid fuorigrid.opensim.online:8002
106 Furry World Furry-World.de:8002
107 Gaming Friends 45.138.48.36:8002
108 GBG World gbg-world.com:8002
109 Genesis Roleplay Grid grid.genesis-roleplay.org:8002
110 Gentle Fire Grid gentlefire.opensim.fun:8002
111 GerGrid gergrid.de:8002
112 Ghost Area ghostarea.com:8002
113 Goldor Grid goldor.outworldz.net:8002
114 Grid Nirvana grid.gridnirvana.net:4002
115 Grid Racers GridRacers.com:8002
116 GridExperience hg.gridexperience.com:8002
117 GridMania gridmania.outworldz.net:8002
118 Gridworld gridworld.de:8002
119 Groovy Verse groovyverse.com:8002
120 Hartland hartland.ddns.net:8002
121 Here Grid here-grid.de:8002
122 Herederos Grid herederos.inworldz.net:8002
123 HG Safari Grid grid.hgsafari.org:58002
124 Humble Grid humble1.outworldz.net:9002
125 Hypergrid City login.hypergridcity.com:8002
126 I Love You Grid iloveyougrid.net:8002
127 Icelady Grid iceladygrid.de:8002
128 Ignis Fatuus ignis-fatuus.no-ip.biz:8002
129 Immersion Tools grid.suboceana.fr:8002
130 Imperiya Grid imperiya.sytes.net:8002
131 Infinite Grid grid.infinitegrid.org:8002
132 Ipsofacto ipsofacto.ddns.net:8002
133 JamGrid jamgrid.de:8002
134 Japan Open Grid jogrid.net:8002
135 Jaytopia jaytopia.outworldz.net:8002
136 Joe’s Place joesplace.outworldz.net:8002
137 jOpenSimWorld grid.jopensim.com:8002
138 Jungle Friends Grid junglefriends.opensim.fun:8002
139 Kater and Friends kater-and-friends.ddnss.de:8002
140 Kinky Haven kinkyhaven.com:8002
141 Kishaki kishaki.de:8002
142 Kitely grid.kitely.com:8002
143 Kokomo World grid.kokomoworld.de:8002
144 KoolPheller Estates koolpheller.ddns.net:8002
145 Kurtopia Kurtopia.ddns.net:8002
146 Kyle Archipelago kylearchipelago.com:8002
147 La Grilla de Don Javi donjavi.minigrid.xyz:8002
148 Lady’s Dreamworld ladysdreamworld.opensim.fun:8002
149 Lagniappe Grid hg.lagniappegrid.com:8402
150 Lanf Of Bree carlyspencer.ddns.net:9002
151 Langalf’s Demesne langalfs-demesne.ddns.net:8002
152 LeBourg lebourg.lcofrance.org:9000
153 Life Grid lifebr.ddns.net:8002
154 Littlefield lfgrid.com:8002
155 LoboWorld vharmonyarts.com:8016
156 Logicamp logicamp.org:8002
157 Lonetree centoria.ddns.net:9002
158 Lost World lostworld-os.com:8002
159 MAGA Grid magagrid.us:8002
160 Magic Grid magic-grid.de:8002
161 Majickal Life majickallife.com:8002
162 Mare Grid mare-grid.de:8002
163 Maze of The Mind maze.outworldz.net:8002
164 Medieval Fantasy medieval-fantasy.de:8002
165 Metaverse Concept login.metaverseconcept.com:8002
166 Metaverse Dimensions login.metaversedimensions.com:8002
167 Midway midway.outworldz.net:8002
168 Migrating Coconuts migratingcoconuts.net:8002
169 MisFitz Grid login.misfitzgrid.com:8002
170 Mobius Grid main.mobiusgrid.us
171 Monarch Gardens monarchgardens.sanctuarygrid.net:8882
172 Moonlighting Grid moonlighting.ddns.net:8002
173 Moonrose moonrose-grid.de:8002
174 Morada Grid moradagrid.com:8002
175 My Virtual Beach grid.myvirtualbeach.com:8002
176 My Virtual Community my-virtualcommunity.com:8002
177 Mysterious Grid 2 js-3d.dyndns-server.com:8100
178 Nabila Grid nabila-world.de:8002
179 NakedWorldz login.nakedworldz.com:8002
180 Naras Nook world.narasnook.com:8900
181 Nemesis 3D badsworld.com:8002
182 Neverworld hg.neverworldgrid.com:8002
183 New Genres Grid hg.ngrid.org:8002
184 New Horizon newhorizonworld.net:8002
185 New Life Italy newlifeitaly.com:8002
186 NewWorld newworld.no-ip.org:8002
187 Next Reality login.nextreality.uk:8002
188 Nymphgrid 2 Shopping 2.nymphgrid.com:8002
189 Oczko grid.oczko.eu:9000
190 Offworld offworld.eu:8002
191 Omnopolis omnopolis.com:8002
192 Open Mind Grid open-mind-grid.de:8002
193 Open Virtual Worlds apollo.cs.st-andrews.ac.uk:8002
194 OpenManniLand openmanniland.de:8002
195 OpenSim Fest grid.opensimfest.com:8022
196 OpenSim OCC cc.opensimulator.org:8002
197 OSgrid login.osgrid.org
198 Otterland otterland.de:8002
199 Outworldz www.outworldz.com:9000
200 Pangea Grid pangeagrid.de:8002
201 Party Destination Grid partydestinationgrid.com:8002
202 Perfect Life grid.perfect-life.ca:8002
203 Phaandoria Grid phaandoria.de:8002
204 Phillip’s Grid phillipsworld.outworldz.net:8002
205 Planet 3L planet3l.com:9100
206 Planet Jikan planetjikan.com:9000
207 Port Anna galwendor.ddns.net:8002
208 Power Angels power-angels.info:8002
209 Rennoc World rennocworld.outworldz.net:8002
210 Reserected Worlds reserectedworlds.ddns.net:9000
211 Rocket World Grid grid.rocketworld.top:8022
212 Sciattisi Grid sciattisigrid.it:8002
213 Servex Grid servex-grid.lffl.de:8002
214 SFgrid sfgrid.ddnss.org:8002
215 Sharing Is Caring Family sharingiscaring.family:8002
216 Shasiyadynasty shasiyadynasty.outworldz.net:8002
217 Sheikah sheikah.org:8002
218 Shoalwater Bay shoalwaterbay.com:8002
219 SiLi jadeseas.net:9000
220 Simation Grid grid.simation.net:8002
221 Six Sides grid.sixsides.net:8002
222 Solaria solaria.hopto.org:7002
223 Soul Grid soul-grid.de:8002
224 South Grid southgrid.ru:8002
225 Sovaria Estates connect.sovariaestates.world:8002
226 SpaceGrid spacegrid.online:6002
227 Sparta II traregan.outworldz.net:8002
228 SpartaGrid sparta.outworldz.net:8002
229 Speculoos speculoos.world:8002
230 Stefanies World stefaniesworld.de:8002
231 Steg steg.outworldz.net:9002
232 SV3D sv3d.fr:8002
233 Sweet Life sweetlife.myftp.org:8002
234 Swiss Grid swissgrid.opensim.ch:8002
235 T-Grid hg.viewtwo.net:8600
236 Tag Grid login.taggrid.online:8002
237 Tanduria hg.tanduria.de:8002
238 Technic World technic-world.ddnss.de:8002
239 TeCoLa tecola.eu:8002
240 Tedesco Sim’s hajos-welt.de:8002
241 Tenth Dimension grid.tenthdimension.org:26002
242 Terra Nova terranova.outworldz.net:8002
243 The Devil’s Grid devilsgrid.jessithecat.eu:9000
244 The E Grid theegrid.outworldz.net:8002
245 The Haven Grid thehavengrid.outworldz.net:9002
246 The Hub Grid hg.thehubgrid.com:28002
247 The Shirls Hypergrid 181.214.240.20:8002
248 The Verse theverse.ddns.net:8002
249 Three Hills Grid three.hills.grid.outworldz.net:8002
250 Tlön albinoni.nexus.it:8002
251 Tomi’s World tomis-world.de:8002
252 Trianon World hg.trianon-world.com:18002
253 Tropical Isle sailonbye.com:9000
254 Twilight twlght.com:8002
255 Twiztid Timez Grid hg.twiztidtimezgrid.com:8602
256 UCI Mondego vLab nile.ics.uci.edu:9000
257 Utopia Skye utopiaskyegrid.com:8002
258 V.B. Creations vbcreations.outworldz.net:8002
259 Vela Dreams vela-dream.ddnss.de:8002
260 Vibel grid.vibel.eu:8002
261 Vida Dupla vidadupla.com.br:8002
262 Virlands virlands.net:8002
263 Virtual Business Grid login.virtualbusinessgrid.com:8002
264 Virtual Harmony vharmonyarts.com:9000
265 Virtual Islands Virtual-Islands.de:8002
266 Virtual Learning Village virtuallearningvillage.org:8002
267 Virtual Life Brasil login.virtuallifebrasil.com.br:8002
268 Virtual Marin grid.virtualmarin.com:8002
269 Virtual Vista Metaverse virtualvistametaverse.com:8002
270 Virtual World Solutions vbcreations.outworldz.net:8002/wifi/user/account/
271 Virtual Worlds Grid vwc.selfip.net:8002
272 Virtual Worlds Zone grid.virtual-worlds.zone:8002
273 Virtualife grid.virtualife-grid.it:4577
274 Virtualife grid.virtualife-grid.it:4577
275 Vivec opensim.vivec.com:9000
276 Vivo Sim hg.vivosim.net:8002
277 VR-ESC vr-esc.com:8002
278 WaterSplash watersplash.inworldz.net:8002
279 WestWorld Grid westworldgrid.net:8002
280 Whispering Willows hg.whisperingwillows.net:8002
281 WKD Bucket Grid wkdbucket.minigrid.xyz:8822
282 WKDVR grid.wkdvr.com:8802
283 Wolf Territories Grid grid.wolfterritories.org:8002
284 Wonder wonder.outworldz.net:8002
285 Wyldwood Bayou wyldwoodbayou.com:8002
286 Xenolandia xenolandia.de:8002
287 Xmir grid.xmir.org:8002
288 XTalent 209.126.208.161:9023
289 Yippee Ki-Ay Blues Grid yippee-ki-ay.com:9003
290 ZetaWorlds login.zetaworlds.com
291 Zirconia zirconia.ddns.net:8002
292 Zodiack zodiack.net:8002
293 Zone Nations login.zonenations.com:8002
+16
View File
@@ -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;
?>
+111
View 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">
&copy; <?php echo date('Y'); ?> <?php echo SITE_NAME; ?>
</footer>
</body>
</html>
+104
View File
@@ -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>
+113
View File
@@ -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>&copy; <?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>
+107
View File
@@ -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>&copy; <?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>
+372
View File
@@ -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);
}
?>
+107
View File
@@ -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>&copy; <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
</footer>
</body>
</html>
+112
View File
@@ -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>&copy; <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
</footer>
</body>
</html>
+109
View File
@@ -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>&copy; <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
</footer>
</body>
</html>
+107
View File
@@ -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>&copy; <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
</footer>
</body>
</html>
+107
View File
@@ -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>&copy; <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
</footer>
</body>
</html>
+107
View File
@@ -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>&copy; <?php echo date("Y"); ?> <?php echo SITE_NAME; ?>. Alle Rechte vorbehalten.</p>
</footer>
</body>
</html>
+104
View File
@@ -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">
&copy; <?php echo date('Y'); ?> <?php echo SITE_NAME; ?>
</footer>
</body>
</html>
+37
View File
@@ -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());
}
?>
+50
View File
@@ -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>
+626
View File
@@ -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"
}
]
}
+63
View File
@@ -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>
+61
View File
@@ -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>
+359
View File
@@ -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
View File
@@ -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>";
?>
+31
View File
@@ -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)
);
}
?>