From c13e66555ad53d470f76051a1f62f6e514f5c646 Mon Sep 17 00:00:00 2001 From: ManfredAabye Date: Tue, 14 Oct 2025 08:55:38 +0200 Subject: [PATCH] 14102025 --- include/RobustConfig.txt | 17 + include/Unknown_person.jpg | Bin 0 -> 37526 bytes include/Wegwerf_E-Mail.txt | 258 ++++++++++++ include/config.example.php | 202 ++++++++++ include/config.php | 225 +++++++++++ include/createavatarfunc.php | 322 +++++++++++++++ include/destinations.json | 80 ++++ include/dmca.php | 331 +++++++++++++++ include/env.example.php | 10 + include/env.php | 19 + include/favicon.ico | Bin 0 -> 118854 bytes include/footerModern.php | 94 +++++ include/gridlist.csv | 293 ++++++++++++++ include/header.php | 16 + include/headerBT5.php | 111 +++++ include/headerBlanc.php | 104 +++++ include/headerFoundation.php | 113 ++++++ include/headerMaterialize.php | 107 +++++ include/headerModern.php | 372 +++++++++++++++++ include/headerPrimer.php | 107 +++++ include/headerST.php | 112 ++++++ include/headerSpectre.php | 109 +++++ include/headerTachyons.php | 107 +++++ include/headerTailwind.php | 107 +++++ include/headerTent.php | 107 +++++ include/headerW3.php | 104 +++++ include/image.php | 37 ++ include/index.html | 50 +++ include/oswdestinations.json | 626 +++++++++++++++++++++++++++++ include/paswd_generator.php | 63 +++ include/rss-feed.php | 61 +++ include/security.php | 359 +++++++++++++++++ include/tos.php | 322 +++++++++++++++ include/verification_functions.php | 31 ++ 34 files changed, 4976 insertions(+) create mode 100644 include/RobustConfig.txt create mode 100644 include/Unknown_person.jpg create mode 100644 include/Wegwerf_E-Mail.txt create mode 100644 include/config.example.php create mode 100644 include/config.php create mode 100644 include/createavatarfunc.php create mode 100644 include/destinations.json create mode 100644 include/dmca.php create mode 100644 include/env.example.php create mode 100644 include/env.php create mode 100644 include/favicon.ico create mode 100644 include/footerModern.php create mode 100644 include/gridlist.csv create mode 100644 include/header.php create mode 100644 include/headerBT5.php create mode 100644 include/headerBlanc.php create mode 100644 include/headerFoundation.php create mode 100644 include/headerMaterialize.php create mode 100644 include/headerModern.php create mode 100644 include/headerPrimer.php create mode 100644 include/headerST.php create mode 100644 include/headerSpectre.php create mode 100644 include/headerTachyons.php create mode 100644 include/headerTailwind.php create mode 100644 include/headerTent.php create mode 100644 include/headerW3.php create mode 100644 include/image.php create mode 100644 include/index.html create mode 100644 include/oswdestinations.json create mode 100644 include/paswd_generator.php create mode 100644 include/rss-feed.php create mode 100644 include/security.php create mode 100644 include/tos.php create mode 100644 include/verification_functions.php diff --git a/include/RobustConfig.txt b/include/RobustConfig.txt new file mode 100644 index 0000000..f1be526 --- /dev/null +++ b/include/RobustConfig.txt @@ -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 diff --git a/include/Unknown_person.jpg b/include/Unknown_person.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4666351757e3af5bf090ef57e2b148613d954791 GIT binary patch literal 37526 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 literal 0 HcmV?d00001 diff --git a/include/Wegwerf_E-Mail.txt b/include/Wegwerf_E-Mail.txt new file mode 100644 index 0000000..1cc2fce --- /dev/null +++ b/include/Wegwerf_E-Mail.txt @@ -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', \ No newline at end of file diff --git a/include/config.example.php b/include/config.example.php new file mode 100644 index 0000000..067c507 --- /dev/null +++ b/include/config.example.php @@ -0,0 +1,202 @@ + 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', '

  Willkommen im ' . SITE_NAME . '

'); // 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; +?> diff --git a/include/config.php b/include/config.php new file mode 100644 index 0000000..15698a8 --- /dev/null +++ b/include/config.php @@ -0,0 +1,225 @@ + +

⚠️ Configuration Required

+

The environment configuration file is missing!

+

Please follow these steps to complete the setup:

+
    +
  1. Copy include/env.example.php to include/env.php
  2. +
  3. Edit include/env.php with your database credentials
  4. +
  5. Copy include/config.example.php to include/config.php
  6. +
  7. Edit include/config.php to match your OpenSimulator setup
  8. +
+

Example database settings for env.php:

+
+define(\'DB_SERVER\', \'localhost\');
+define(\'DB_USERNAME\', \'opensim\');
+define(\'DB_PASSWORD\', \'your_password\');
+define(\'DB_NAME\', \'opensim\');
+        
+

Refresh this page after creating the configuration files.

+ + '); +} + +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', '

  Welcome to ' . SITE_NAME . '

'); // 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; +?> \ No newline at end of file diff --git a/include/createavatarfunc.php b/include/createavatarfunc.php new file mode 100644 index 0000000..c8b9e6b --- /dev/null +++ b/include/createavatarfunc.php @@ -0,0 +1,322 @@ +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); +?> diff --git a/include/destinations.json b/include/destinations.json new file mode 100644 index 0000000..848de96 --- /dev/null +++ b/include/destinations.json @@ -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" + } + ] +} diff --git a/include/dmca.php b/include/dmca.php new file mode 100644 index 0000000..035ca9b --- /dev/null +++ b/include/dmca.php @@ -0,0 +1,331 @@ + "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" +]; +?> + + + + + + $value) { + $text = str_replace("[$key]", $value, $text); + } + return $text; +} + +function simpleMarkdownToHTML($text) { + // Zeilenumbrüche umwandeln + $text = nl2br($text); + + // Fettdruck **text** -> text + $text = preg_replace('/\*\*(.*?)\*\*/', '$1', $text); + + // Kursiv *text* -> text + $text = preg_replace('/\*(.*?)\*/', '$1', $text); + + // Überschriften # ->

, ## ->

usw. + for ($i = 6; $i >= 1; $i--) { + $text = preg_replace('/^' . str_repeat('#', $i) . '\s*(.*?)$/m', "$1", $text); + } + + // Links [Text](URL) -> Text + $text = preg_replace('/\[(.*?)\]\((.*?)\)/', '$1', $text); + + // Inline-Code `text` -> text + $text = preg_replace('/`(.*?)`/', '$1', $text); + + return $text; +} + +// Deutsche DMCA-Richtlinie +$dmcaTextDE = " +# **DMCA-Richtlinie für [DEIN GRID-NAME]** +**Letzte Aktualisierung:** [DATUM] + +Diese DMCA-Richtlinie beschreibt, wie **[DEIN GRID-NAME]** (nachfolgend „wir“, „uns“, „unser Grid“) +auf Beschwerden bezüglich Urheberrechtsverletzungen gemäß dem **Digital Millennium Copyright Act (DMCA)** reagiert. + +Falls du glaubst, dass Inhalte innerhalb unseres OpenSimulator-Grids gegen dein Urheberrecht verstoßen, +kannst du eine **DMCA-Beschwerde** einreichen, indem du die unten beschriebenen Schritte befolgst. + +--- + +## **1. Einreichen einer DMCA-Beschwerde (Takedown-Anfrage)** +Falls du der Meinung bist, dass deine urheberrechtlich geschützten Inhalte ohne Erlaubnis in **[DEIN GRID-NAME]** verwendet wurden, +sende bitte eine schriftliche Beschwerde an unseren **DMCA-Agenten** unter: + +📩 **E-Mail:** [DEINE EMAIL] +📬 **Postadresse:** [DEINE POSTADRESSE] +📞 **Telefon:** [OPTIONAL] + +**Deine DMCA-Beschwerde muss folgende Informationen enthalten:** + +1. **Identifikation des geschützten Werkes:** + - Eine detaillierte Beschreibung des urheberrechtlich geschützten Werkes (z. B. ein Screenshot, Link oder Dokumentation). + +2. **Standort des rechtsverletzenden Inhalts:** + - Genaue Position des Inhalts in unserem Grid, inklusive: + - Name der Region + - Koordinaten (falls möglich) + - UUID oder Asset-ID des betroffenen Objekts + - Screenshot oder Beschreibung + +3. **Kontaktdaten:** + - Dein Name, Adresse, E-Mail-Adresse und Telefonnummer. + +4. **Erklärung zur Rechtsverletzung:** + - Eine Erklärung, dass du in **gutem Glauben** davon ausgehst, dass die Nutzung nicht vom Urheberrechtsinhaber, + seinem Vertreter oder dem Gesetz (z. B. Fair Use) erlaubt ist. + +5. **Eidesstattliche Versicherung:** + - Eine Erklärung, dass die Angaben in deiner Beschwerde korrekt sind und du der rechtmäßige Inhaber des Urheberrechts oder ein autorisierter Vertreter bist. + +6. **Digitale oder physische Unterschrift:** + - Eine elektronische oder handschriftliche Unterschrift des Urheberrechtsinhabers oder dessen bevollmächtigten Vertreters. + +--- + +## **2. Unsere Reaktion auf eine DMCA-Beschwerde** +Nach Erhalt einer gültigen DMCA-Anfrage werden wir: + +- Den mutmaßlich rechtsverletzenden Inhalt **vorläufig entfernen oder den Zugriff darauf sperren**. +- Den Nutzer, der den Inhalt bereitgestellt hat, über die Beschwerde informieren. +- Falls der betroffene Nutzer eine **Gegendarstellung** einreicht (siehe Abschnitt 3), den Urheberrechtsinhaber darüber informieren. + +Falls der Urheberrechtsinhaber innerhalb von **10 Werktagen** nach unserer Benachrichtigung keine rechtlichen Schritte einleitet, +können wir den entfernten Inhalt wiederherstellen. + +--- + +## **3. Einreichen einer Gegendarstellung (Counter-Notice)** +Falls du der Meinung bist, dass der entfernte Inhalt nicht gegen Urheberrechte verstößt oder du eine Erlaubnis zur Nutzung hattest, +kannst du eine **Gegendarstellung** einreichen. + +Bitte sende deine Gegendarstellung an **[DEINE EMAIL]** mit folgenden Angaben: + +1. **Identifikation des entfernten Inhalts:** + - Die ursprüngliche Position des Inhalts (Region, Koordinaten, UUID, Screenshots). + +2. **Erklärung zur Unrechtmäßigkeit der Beschwerde:** + - Eine Erklärung, dass du **in gutem Glauben** der Meinung bist, dass die Entfernung aufgrund eines Fehlers oder falscher Identifizierung erfolgte. + +3. **Zustimmung zur Gerichtsbarkeit:** + - Falls du außerhalb der USA lebst, eine Erklärung, dass du die Gerichtsbarkeit der US-amerikanischen Bundesgerichte akzeptierst. + +4. **Eidesstattliche Versicherung:** + - Eine Versicherung, dass deine Angaben korrekt sind und du für eventuelle rechtliche Konsequenzen verantwortlich bist. + +5. **Digitale oder physische Unterschrift:** + - Deine Unterschrift oder die deines bevollmächtigten Vertreters. + +Nach Erhalt einer gültigen Gegendarstellung kann der entfernte Inhalt innerhalb von **10–14 Tagen** wiederhergestellt werden, +sofern der ursprüngliche Beschwerdeführer keine Klage einreicht. + +--- + +## **4. Konsequenzen für wiederholte Verstöße** +Nutzer, die wiederholt Urheberrechte verletzen, können: +- **Verwarnt**, +- **Vorübergehend gesperrt**, +- Oder **dauerhaft aus dem Grid ausgeschlossen** werden. + +Wir behalten uns das Recht vor, Nutzerkonten ohne vorherige Warnung zu sperren, falls schwere Verstöße vorliegen. + +--- + +## **5. Keine Haftung für Nutzerinhalte** +Unser Grid stellt eine Plattform für virtuelle Interaktionen bereit und hostet nutzergenerierte Inhalte. +Wir übernehmen keine Haftung für urheberrechtlich geschützte Materialien, die von Nutzern hochgeladen wurden. +Alle Nutzer sind für ihre hochgeladenen Inhalte selbst verantwortlich. + +Wir arbeiten jedoch aktiv daran, **rechtsverletzende Inhalte zu entfernen**, sobald wir eine **gültige DMCA-Beschwerde** erhalten. + +--- + +## **6. Kontakt für weitere Fragen** +Falls du Fragen zur DMCA-Richtlinie hast, kannst du uns unter **[DEINE KONTAKT-EMAIL]** erreichen. + +--- + +### **Rechtlicher Hinweis:** +Diese Vorlage dient nur zu **Informationszwecken** und stellt **keine Rechtsberatung** dar. +Falls du eine rechtlich geprüfte DMCA-Richtlinie benötigst, konsultiere bitte einen Anwalt. +"; + +// Englische DMCA-Richtlinie +$dmcaTextEN = " +# **DMCA Policy for [DEIN GRID-NAME]** +**Last Updated:** [DATUM] + +This DMCA policy describes how **[DEIN GRID-NAME]** (hereinafter „we“, „us“, „our grid“) +responds to complaints regarding copyright infringement under the **Digital Millennium Copyright Act (DMCA)**. + +If you believe that content within our OpenSimulator grid violates your copyright, +you can file a **DMCA complaint** by following the steps below. + +--- + +## **1. Submitting a DMCA Complaint (Takedown Request)** +If you believe that your copyrighted material has been used without permission in **[DEIN GRID-NAME]**, +please send a written complaint to our **DMCA Agent** at: + +📩 **Email:** [DEINE EMAIL] +📬 **Postal Address:** [DEINE POSTADRESSE] +📞 **Phone:** [OPTIONAL] + +**Your DMCA complaint must include the following information:** + +1. **Identification of the copyrighted work:** + - A detailed description of the copyrighted work (e.g., a screenshot, link, or documentation). + +2. **Location of the infringing content:** + - The exact location of the content in our grid, including: + - Region name + - Coordinates (if possible) + - UUID or asset ID of the affected object + - Screenshot or description + +3. **Contact information:** + - Your name, address, email address, and phone number. + +4. **Statement of infringement:** + - A statement that you have a **good faith belief** that the use is not authorized by the copyright owner, + their agent, or the law (e.g., fair use). + +5. **Sworn statement:** + - A statement that the information in your complaint is accurate and that you are the copyright owner or authorized to act on their behalf. + +6. **Digital or physical signature:** + - An electronic or handwritten signature of the copyright owner or their authorized representative. + +--- + +## **2. Our Response to a DMCA Complaint** +Upon receiving a valid DMCA complaint, we will: + +- **Temporarily remove or disable access** to the allegedly infringing content. +- Notify the user who provided the content about the complaint. +- If the affected user submits a **counter-notice** (see Section 3), inform the copyright owner. + +If the copyright owner does not take legal action within **10 business days** of our notification, +we may restore the removed content. + +--- + +## **3. Submitting a Counter-Notice** +If you believe that the removed content does not infringe copyright or you had permission to use it, +you can submit a **counter-notice**. + +Please send your counter-notice to **[DEINE EMAIL]** with the following information: + +1. **Identification of the removed content:** + - The original location of the content (region, coordinates, UUID, screenshots). + +2. **Statement of good faith:** + - A statement that you have a **good faith belief** that the removal was due to a mistake or misidentification. + +3. **Consent to jurisdiction:** + - If you are outside the USA, a statement that you consent to the jurisdiction of US federal courts. + +4. **Sworn statement:** + - A statement that the information in your counter-notice is accurate and that you are responsible for any legal consequences. + +5. **Digital or physical signature:** + - Your signature or that of your authorized representative. + +Upon receiving a valid counter-notice, the removed content may be restored within **10–14 days**, +unless the original complainant files a lawsuit. + +--- + +## **4. Consequences for Repeated Violations** +Users who repeatedly infringe copyright may: +- Be **warned**, +- **Temporarily suspended**, +- Or **permanently banned** from the grid. + +We reserve the right to suspend accounts without prior warning in cases of severe violations. + +--- + +## **5. No Liability for User-Generated Content** +Our grid provides a platform for virtual interactions and hosts user-generated content. +We are not liable for copyrighted materials uploaded by users. +All users are responsible for the content they upload. + +However, we actively work to **remove infringing content** upon receiving a **valid DMCA complaint**. + +--- + +## **6. Contact for Further Questions** +If you have questions about this DMCA policy, you can reach us at **[DEINE KONTAKT-EMAIL]**. + +--- + +### **Legal Notice:** +This template is for **informational purposes only** and does **not constitute legal advice**. +If you need a legally reviewed DMCA policy, please consult an attorney. +"; + +// Wähle den Text basierend auf der Sprache +$dmcaText = ($lang == 'de') ? $dmcaTextDE : $dmcaTextEN; + +// 1️⃣ Platzhalter ersetzen +$dmcaText = replacePlaceholders($dmcaText, $variables); + +// 2️⃣ Markdown in HTML umwandeln +$finalHTML = simpleMarkdownToHTML($dmcaText); + +// 3️⃣ HTML ausgeben +echo "
$finalHTML
"; +?> diff --git a/include/env.example.php b/include/env.example.php new file mode 100644 index 0000000..6c1f54c --- /dev/null +++ b/include/env.example.php @@ -0,0 +1,10 @@ + \ No newline at end of file diff --git a/include/env.php b/include/env.php new file mode 100644 index 0000000..b050a49 --- /dev/null +++ b/include/env.php @@ -0,0 +1,19 @@ + \ No newline at end of file diff --git a/include/favicon.ico b/include/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8369340ab8d996934e06a03dbd469c4c34280a65 GIT binary patch literal 118854 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 literal 0 HcmV?d00001 diff --git a/include/footerModern.php b/include/footerModern.php new file mode 100644 index 0000000..b3bb494 --- /dev/null +++ b/include/footerModern.php @@ -0,0 +1,94 @@ + + + + + + + + + \ No newline at end of file diff --git a/include/gridlist.csv b/include/gridlist.csv new file mode 100644 index 0000000..005d117 --- /dev/null +++ b/include/gridlist.csv @@ -0,0 +1,293 @@ +Gridname,Gridlink.com:8002 +3D Worldz,www.3dWorldz.com:8002 +3DLES,edugrid.3dles.com:8002 +4Creative,pangea.myftp.org:8002 +A Dimension Beyond,grid.adimensionbeyond.net:8002 +A Virtual World,avirtualworld.org:8002 +Accueil Dracsoom,dracsoom.ddns.net:8002 +Admeja,admeja.bounceme.net:8002 +Adreans-World,adreans-world.from-fl.com:8000 +Adult Life,adult-life.de:8002 +Aedynar,aedynar.com:8002 +AI Grid,ai.let-us.cyou:8002 +AIRE Mille Flux,grid.aire-mille-flux.org:8002 +Alecia Grid,alecianagrid.com:8002 +Alexa World,alexaworld.de:8002 +Alife Virtual,alifevirtual.com:8002 +Alternate Metaverse,alternatemetaverse.com:8002 +Alterworld Grid,hg.alterworld.us:7002 +AmaziWorld,login.amaziworld.com:8002 +Angel Souls,angel-souls.de:8002 +Ankabi,ankabi.de:8002 +Ansjela Grid,hg.ansjelagrid.com:28002 +AnSky,login.anskygrid.ca:8002 +Arcadia Asylum,arcadiaasylum.org:8002 +Ardalia,ardiva.ddns.net:8002 +Ardiva,ardiva.ddns.net:8002 +Ares World,aresworld.outworldz.net:8002 +Argentoratum,cogito.no-ip.info:8002 +Argofantasy,argofantasy.com:8002 +Arielle’s Grid,bound2.ddns.net:8002 +ArtDestiny,artdestiny.de:8002 +Assassin Guard,assassinguard.opensim.fun:38002 +Astralia,astralia.eu:8002 +Atlantide,real-3d.zapto.org:8002 +Atlantis,209.126.208.163:9023 +Atlas Grid,atlasgrid.fr:8002 +Ausgrid,login.ausgridds.biz:8002 +Avacon,grid.avacon.org:8002 +AvatarLand,mikeland.ddns.net:8002 +AvatarLife,grid.avatarlife.com:8002 +Avie Realm,logon.avierealm.com:8002 +AviVerse AlterEgo,aviverse.it:8002 +AviWorlds,login.aviworlds.com:8002 +Baller Nation,login.ballernation.us:8002 +Barefoot Dreamers,login.barefoot-dreamers.com:8002 +Beta Technologies,opensim.betatechnologies.info:8002 +Blendioptera Grid,blendioptera2.outworldz.net:8002 +BloodMoon,bloodmoonpack.com:8002 +Bridgemere,bridgemere.outworldz.net:8002 +Bridger,bridger.outworldz.net:8002 +Caelum Alpha,caelumalpha.outworldz.net:8002 +Canadian Grid,canadiangrid.ca:8002 +CandM World,grid.candmworld.com:8002 +CandorsRPWorld,candorsrpworld.ch:8002 +Carima Welt,carima-welt.de:8002 +Casperia Prime,casperia.ddns.net:8002 +Cat Woman Rose,catwomanrose.de:8002 +CLC grid,clcgrid.com:8002 +Clone Fantasy,clonefantasy.ovh:8002 +Coffee Grid,coffeegrid.net:8002 +Concadia,gridconcadia.com:8002 +Conectados Grid,conectados.opensim.fun:8802 +Cooperation Creative,hg.cc-group.cc:8002 +Counter Earth,jand.dyndns.biz:7002 +Cozy Comforts Grid,grid.cozycomforts.net:8002 +Craft World,craft-world.org:8002 +CreaNovale Grid,login.creanovale.ca:8052 +Creo Mundos,grid.CreoMundos.com:8002 +Czech Welcome Centre,opensim.cz:9000 +Dajas Grid,Grid.Daja.at:8002 +Dark Heaven,Dark-Heaven.eu:8002 +Darkheart’s Playground,playground.darkheartsos.com:8002 +Decadence,decadence.ddns.net:8002 +Deep Playa,rajal.org:9000 +DigiWorldz,login.digiworldz.com:8002 +Discovery Grid,discoverygrid.net:8002 +Doghouse,doghouse.outworldz.net:8002 +Dorena’s World,dorenas-world.de:8002 +DowGrid,dowgridworld.com.br:8002 +Dragonz Kin Territories,grid.dragonzkinterritory.org:18002 +Dynamic Worldz,grid.dynamicworldz2.com:8822 +Dyvall,dyvall.de:8002 +E-LIVE Virtual World,world.eliveproject.eu:8002 +Edge of Reality Grid,theedgeofreality.ddns.net:8882 +EdMondo,slw.indire.it:8002 +EducaSim,grid.educasim.es:8002 +Endivatomic World,endivatomic.eu:8002 +Equinox Grid,equinoxgrid.com:8002 +Escape 2 Reality Grid,grid.escape2reality.org:8002 +EscapeLands,world.escapelands.com:8002 +Esfera Split,split.esferavirtual.com.br:8002 +Esfera Virtual,esferavirtual.com.br:8002 +Eureka World,grid1.eurekaworld.co.il:8002 +EVA Park,evapark.co.uk:8002 +Expanse,expanse.outworldz.net:8002 +Fae Farms,alanna.outworldz.net:8002 +Fearless Mysteries,www.fearlessmysteries.eu:8002 +Forgotten Worlds,213.200.254.17:18002 +France RP,francerpgrid.fr:8002 +Free Life,freelife.outworldz.net:8002 +Freedom Grid,freedomgrid.world:8002 +Fresh MetaVers,abc.outworldz.net:8002 +Freya’s Shadow World,213.200.254.17:12002 +Friends Grid,login.friends-grid.com:8002 +FuoriGrid,fuorigrid.opensim.online:8002 +Furry World,Furry-World.de:8002 +Gaming Friends,45.138.48.36:8002 +GBG World,gbg-world.com:8002 +Genesis Roleplay Grid,grid.genesis-roleplay.org:8002 +Gentle Fire Grid,gentlefire.opensim.fun:8002 +GerGrid,gergrid.de:8002 +Ghost Area,ghostarea.com:8002 +Goldor Grid,goldor.outworldz.net:8002 +Grid Nirvana,grid.gridnirvana.net:4002 +Grid Racers,GridRacers.com:8002 +GridExperience,hg.gridexperience.com:8002 +GridMania,gridmania.outworldz.net:8002 +Gridworld,gridworld.de:8002 +Groovy Verse,groovyverse.com:8002 +Hartland,hartland.ddns.net:8002 +Here Grid,here-grid.de:8002 +Herederos Grid,herederos.inworldz.net:8002 +HG Safari Grid,grid.hgsafari.org:58002 +Humble Grid,humble1.outworldz.net:9002 +Hypergrid City,login.hypergridcity.com:8002 +I Love You Grid,iloveyougrid.net:8002 +Icelady Grid,iceladygrid.de:8002 +Ignis Fatuus,ignis-fatuus.no-ip.biz:8002 +Immersion Tools,grid.suboceana.fr:8002 +Imperiya Grid,imperiya.sytes.net:8002 +Infinite Grid,grid.infinitegrid.org:8002 +Ipsofacto,ipsofacto.ddns.net:8002 +JamGrid,jamgrid.de:8002 +Japan Open Grid,jogrid.net:8002 +Jaytopia,jaytopia.outworldz.net:8002 +Joe’s Place,joesplace.outworldz.net:8002 +jOpenSimWorld,grid.jopensim.com:8002 +Jungle Friends Grid,junglefriends.opensim.fun:8002 +Kater and Friends,kater-and-friends.ddnss.de:8002 +Kinky Haven,kinkyhaven.com:8002 +Kishaki,kishaki.de:8002 +Kitely,grid.kitely.com:8002 +Kokomo World,grid.kokomoworld.de:8002 +KoolPheller Estates,koolpheller.ddns.net:8002 +Kurtopia,Kurtopia.ddns.net:8002 +Kyle Archipelago,kylearchipelago.com:8002 +La Grilla de Don Javi,donjavi.minigrid.xyz:8002 +Lady’s Dreamworld,ladysdreamworld.opensim.fun:8002 +Lagniappe Grid,hg.lagniappegrid.com:8402 +Lanf Of Bree,carlyspencer.ddns.net:9002 +Langalf’s Demesne,langalfs-demesne.ddns.net:8002 +LeBourg,lebourg.lcofrance.org:9000 +Life Grid,lifebr.ddns.net:8002 +Littlefield,lfgrid.com:8002 +LoboWorld,vharmonyarts.com:8016 +Logicamp,logicamp.org:8002 +Lonetree,centoria.ddns.net:9002 +Lost World,lostworld-os.com:8002 +MAGA Grid,magagrid.us:8002 +Magic Grid,magic-grid.de:8002 +Majickal Life,majickallife.com:8002 +Mare Grid,mare-grid.de:8002 +Maze of The Mind,maze.outworldz.net:8002 +Medieval Fantasy,medieval-fantasy.de:8002 +Metaverse Concept,login.metaverseconcept.com:8002 +Metaverse Dimensions,login.metaversedimensions.com:8002 +Midway,midway.outworldz.net:8002 +Migrating Coconuts,migratingcoconuts.net:8002 +MisFitz Grid,login.misfitzgrid.com:8002 +Mobius Grid,main.mobiusgrid.us +Monarch Gardens,monarchgardens.sanctuarygrid.net:8882 +Moonlighting Grid,moonlighting.ddns.net:8002 +Moonrose,moonrose-grid.de:8002 +Morada Grid,moradagrid.com:8002 +My Virtual Beach,grid.myvirtualbeach.com:8002 +My Virtual Community,my-virtualcommunity.com:8002 +Mysterious Grid 2,js-3d.dyndns-server.com:8100 +Nabila Grid,nabila-world.de:8002 +NakedWorldz,login.nakedworldz.com:8002 +Naras Nook,world.narasnook.com:8900 +Nemesis 3D,badsworld.com:8002 +Neverworld,hg.neverworldgrid.com:8002 +New Genres Grid,hg.ngrid.org:8002 +New Horizon,newhorizonworld.net:8002 +New Life Italy,newlifeitaly.com:8002 +NewWorld,newworld.no-ip.org:8002 +Next Reality,login.nextreality.uk:8002 +Nymphgrid 2 Shopping,2.nymphgrid.com:8002 +Oczko,grid.oczko.eu:9000 +Offworld,offworld.eu:8002 +Omnopolis,omnopolis.com:8002 +Open Mind Grid,open-mind-grid.de:8002 +Open Virtual Worlds,apollo.cs.st-andrews.ac.uk:8002 +OpenManniLand,openmanniland.de:8002 +OpenSim Fest,grid.opensimfest.com:8022 +OpenSim OCC,cc.opensimulator.org:8002 +OSgrid,login.osgrid.org +Otterland,otterland.de:8002 +Outworldz,www.outworldz.com:9000 +Pangea Grid,pangeagrid.de:8002 +Party Destination Grid,partydestinationgrid.com:8002 +Perfect Life,grid.perfect-life.ca:8002 +Phaandoria Grid,phaandoria.de:8002 +Phillip’s Grid,phillipsworld.outworldz.net:8002 +Planet 3L,planet3l.com:9100 +Planet Jikan,planetjikan.com:9000 +Port Anna,galwendor.ddns.net:8002 +Power Angels,power-angels.info:8002 +Rennoc World,rennocworld.outworldz.net:8002 +Reserected Worlds,reserectedworlds.ddns.net:9000 +Rocket World Grid,grid.rocketworld.top:8022 +Sciattisi Grid,sciattisigrid.it:8002 +Servex Grid,servex-grid.lffl.de:8002 +SFgrid,sfgrid.ddnss.org:8002 +Sharing Is Caring Family,sharingiscaring.family:8002 +Shasiyadynasty,shasiyadynasty.outworldz.net:8002 +Sheikah,sheikah.org:8002 +Shoalwater Bay,shoalwaterbay.com:8002 +SiLi,jadeseas.net:9000 +Simation Grid,grid.simation.net:8002 +Six Sides,grid.sixsides.net:8002 +Solaria,solaria.hopto.org:7002 +Soul Grid,soul-grid.de:8002 +South Grid,southgrid.ru:8002 +Sovaria Estates,connect.sovariaestates.world:8002 +SpaceGrid,spacegrid.online:6002 +Sparta II,traregan.outworldz.net:8002 +SpartaGrid,sparta.outworldz.net:8002 +Speculoos,speculoos.world:8002 +Stefanies World,stefaniesworld.de:8002 +Steg,steg.outworldz.net:9002 +SV3D,sv3d.fr:8002 +Sweet Life,sweetlife.myftp.org:8002 +Swiss Grid,swissgrid.opensim.ch:8002 +T-Grid,hg.viewtwo.net:8600 +Tag Grid,login.taggrid.online:8002 +Tanduria ,hg.tanduria.de:8002 +Technic World,technic-world.ddnss.de:8002 +TeCoLa,tecola.eu:8002 +Tedesco Sim’s,hajos-welt.de:8002 +Tenth Dimension,grid.tenthdimension.org:26002 +Terra Nova,terranova.outworldz.net:8002 +The Devil’s Grid,devilsgrid.jessithecat.eu:9000 +The E Grid,theegrid.outworldz.net:8002 +The Haven Grid,thehavengrid.outworldz.net:9002 +The Hub Grid,hg.thehubgrid.com:28002 +The Shirls Hypergrid,181.214.240.20:8002 +The Verse,theverse.ddns.net:8002 +Three Hills Grid,three.hills.grid.outworldz.net:8002 +Tlön,albinoni.nexus.it:8002 +Tomi’s World,tomis-world.de:8002 +Trianon World,hg.trianon-world.com:18002 +Tropical Isle,sailonbye.com:9000 +Twilight,twlght.com:8002 +Twiztid Timez Grid,hg.twiztidtimezgrid.com:8602 +UCI Mondego vLab,nile.ics.uci.edu:9000 +Utopia Skye,utopiaskyegrid.com:8002 +V.B. Creations,vbcreations.outworldz.net:8002 +Vela Dreams,vela-dream.ddnss.de:8002 +Vibel,grid.vibel.eu:8002 +Vida Dupla,vidadupla.com.br:8002 +Virlands,virlands.net:8002 +Virtual Business Grid,login.virtualbusinessgrid.com:8002 +Virtual Harmony,vharmonyarts.com:9000 +Virtual Islands,Virtual-Islands.de:8002 +Virtual Learning Village,virtuallearningvillage.org:8002 +Virtual Life Brasil,login.virtuallifebrasil.com.br:8002 +Virtual Marin,grid.virtualmarin.com:8002 +Virtual Vista Metaverse,virtualvistametaverse.com:8002 +Virtual World Solutions,vbcreations.outworldz.net:8002/wifi/user/account/ +Virtual Worlds Grid,vwc.selfip.net:8002 +Virtual Worlds Zone,grid.virtual-worlds.zone:8002 +Virtualife,grid.virtualife-grid.it:4577 +Virtualife,grid.virtualife-grid.it:4577 +Vivec,opensim.vivec.com:9000 +Vivo Sim,hg.vivosim.net:8002 +VR-ESC,vr-esc.com:8002 +WaterSplash,watersplash.inworldz.net:8002 +WestWorld Grid,westworldgrid.net:8002 +Whispering Willows,hg.whisperingwillows.net:8002 +WKD Bucket Grid,wkdbucket.minigrid.xyz:8822 +WKDVR,grid.wkdvr.com:8802 +Wolf Territories Grid,grid.wolfterritories.org:8002 +Wonder,wonder.outworldz.net:8002 +Wyldwood Bayou,wyldwoodbayou.com:8002 +Xenolandia,xenolandia.de:8002 +Xmir,grid.xmir.org:8002 +XTalent,209.126.208.161:9023 +Yippee Ki-Ay Blues Grid,yippee-ki-ay.com:9003 +ZetaWorlds,login.zetaworlds.com +Zirconia,zirconia.ddns.net:8002 +Zodiack,zodiack.net:8002 +Zone Nations,login.zonenations.com:8002 diff --git a/include/header.php b/include/header.php new file mode 100644 index 0000000..46696da --- /dev/null +++ b/include/header.php @@ -0,0 +1,16 @@ + diff --git a/include/headerBT5.php b/include/headerBT5.php new file mode 100644 index 0000000..2efad31 --- /dev/null +++ b/include/headerBT5.php @@ -0,0 +1,111 @@ + + + + + + + + <?php echo $title; ?> + + + + + + + +
+

Welcome to

+
+ +
+ +
+
+ © +
+ + diff --git a/include/headerBlanc.php b/include/headerBlanc.php new file mode 100644 index 0000000..3022ef6 --- /dev/null +++ b/include/headerBlanc.php @@ -0,0 +1,104 @@ + + + + + + + + + <?php echo $title; ?> + + + + + + + +
+
+ + \ No newline at end of file diff --git a/include/headerFoundation.php b/include/headerFoundation.php new file mode 100644 index 0000000..6d03a8a --- /dev/null +++ b/include/headerFoundation.php @@ -0,0 +1,113 @@ + + + + + + + + + <?php echo $title; ?> + + + + + +
+
+

Welcome to

+
+
+ + + +
+
+

© . Alle Rechte vorbehalten.

+
+
+ + + diff --git a/include/headerMaterialize.php b/include/headerMaterialize.php new file mode 100644 index 0000000..d9d051e --- /dev/null +++ b/include/headerMaterialize.php @@ -0,0 +1,107 @@ + + + + + + + + + <?php echo $title; ?> + + + + + +
+

Welcome to

+
+ + +
+

© . Alle Rechte vorbehalten.

+
+ + + diff --git a/include/headerModern.php b/include/headerModern.php new file mode 100644 index 0000000..ff5dca9 --- /dev/null +++ b/include/headerModern.php @@ -0,0 +1,372 @@ + + + + + + + + <?php echo isset($title) ? $title . ' - ' . SITE_NAME : SITE_NAME; ?> + + + + + + + + + + + + + + + + + + + + + + +
+
Themes
+ $colors): ?> +
+
+ +
+ + + +
+ + \ No newline at end of file diff --git a/include/headerPrimer.php b/include/headerPrimer.php new file mode 100644 index 0000000..cfb5827 --- /dev/null +++ b/include/headerPrimer.php @@ -0,0 +1,107 @@ + + + + + + + + + <?php echo $title; ?> + + + + + +
+

Welcome to

+
+ + +
+

© . Alle Rechte vorbehalten.

+
+ + diff --git a/include/headerST.php b/include/headerST.php new file mode 100644 index 0000000..6870d86 --- /dev/null +++ b/include/headerST.php @@ -0,0 +1,112 @@ + + + + + + + + + <?php echo $title; ?> + + + + +
+

Welcome to

+
+ +
+ +
+ + + +
+

© . Alle Rechte vorbehalten.

+
+ + \ No newline at end of file diff --git a/include/headerSpectre.php b/include/headerSpectre.php new file mode 100644 index 0000000..0bc68c8 --- /dev/null +++ b/include/headerSpectre.php @@ -0,0 +1,109 @@ + + + + + + + + + <?php echo $title; ?> + + + + + + + + +
+

© . Alle Rechte vorbehalten.

+
+ + diff --git a/include/headerTachyons.php b/include/headerTachyons.php new file mode 100644 index 0000000..0b04653 --- /dev/null +++ b/include/headerTachyons.php @@ -0,0 +1,107 @@ + + + + + + + + + <?php echo $title; ?> + + + + + +
+

Welcome to

+
+ + +
+

© . Alle Rechte vorbehalten.

+
+ + diff --git a/include/headerTailwind.php b/include/headerTailwind.php new file mode 100644 index 0000000..7c30614 --- /dev/null +++ b/include/headerTailwind.php @@ -0,0 +1,107 @@ + + + + + + + + + <?php echo $title; ?> + + + + + +
+

Welcome to

+
+ + +
+

© . Alle Rechte vorbehalten.

+
+ + diff --git a/include/headerTent.php b/include/headerTent.php new file mode 100644 index 0000000..a09309b --- /dev/null +++ b/include/headerTent.php @@ -0,0 +1,107 @@ + + + + + + + + + <?php echo $title; ?> + + + + + +
+

Welcome to

+
+ + +
+

© . Alle Rechte vorbehalten.

+
+ + diff --git a/include/headerW3.php b/include/headerW3.php new file mode 100644 index 0000000..33ed177 --- /dev/null +++ b/include/headerW3.php @@ -0,0 +1,104 @@ + + + + + + + + <?php echo $title; ?> + + + + + + +
+

Welcome to

+
+ +
+ +
+
+ © +
+ + diff --git a/include/image.php b/include/image.php new file mode 100644 index 0000000..3953148 --- /dev/null +++ b/include/image.php @@ -0,0 +1,37 @@ +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()); +} +?> diff --git a/include/index.html b/include/index.html new file mode 100644 index 0000000..249cf0a --- /dev/null +++ b/include/index.html @@ -0,0 +1,50 @@ + + + + + + 403 - Forbidden + + + +
+

403

+

Nicht öffentlicher Bereich.

+ Zurück zur Startseite +
+ + diff --git a/include/oswdestinations.json b/include/oswdestinations.json new file mode 100644 index 0000000..24b3507 --- /dev/null +++ b/include/oswdestinations.json @@ -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" + } + ] +} \ No newline at end of file diff --git a/include/paswd_generator.php b/include/paswd_generator.php new file mode 100644 index 0000000..eb2a85e --- /dev/null +++ b/include/paswd_generator.php @@ -0,0 +1,63 @@ + + + + + + +
+

Generierte Passwörter

+
+
+    
+
+ + diff --git a/include/rss-feed.php b/include/rss-feed.php new file mode 100644 index 0000000..d94eb4b --- /dev/null +++ b/include/rss-feed.php @@ -0,0 +1,61 @@ += $currentDate) { + $nextEvent = $event; + break; + } +} + +// RSS-Feed beginnen +echo ''; +?> + + + <?php echo CALENDAR_TITLE; ?> + + RSS-Feed mit Kalenderereignissen + de-de + + + + + <?php + // Überprüfen, ob das 'title'-Feld existiert + if (isset($nextEvent['title'])) { + echo htmlspecialchars($nextEvent['title']); + } else { + echo htmlspecialchars($nextEvent['texts'][0]); + } + ?> + + + + + + + + + + + + + diff --git a/include/security.php b/include/security.php new file mode 100644 index 0000000..7524de8 --- /dev/null +++ b/include/security.php @@ -0,0 +1,359 @@ += $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 ''; + } + + /** + * 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 ''; +} + +function verify_csrf_token() { + $token = $_POST['csrf_token'] ?? ''; + return OSWebSecurity::verifyCSRFToken($token); +} +?> \ No newline at end of file diff --git a/include/tos.php b/include/tos.php new file mode 100644 index 0000000..ce29428 --- /dev/null +++ b/include/tos.php @@ -0,0 +1,322 @@ + "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" +]; +?> + + + + + + $value) { + $text = str_replace("[$key]", $value, $text); + } + return $text; +} + +function simpleMarkdownToHTML($text) { + // Zeilenumbrüche umwandeln + $text = nl2br($text); + + // Fettdruck **text** -> text + $text = preg_replace('/\*\*(.*?)\*\*/', '$1', $text); + + // Kursiv *text* -> text + $text = preg_replace('/\*(.*?)\*/', '$1', $text); + + // Überschriften # ->

, ## ->

usw. + for ($i = 6; $i >= 1; $i--) { + $text = preg_replace('/^' . str_repeat('#', $i) . '\s*(.*?)$/m', "$1", $text); + } + + // Links [Text](URL) -> Text + $text = preg_replace('/\[(.*?)\]\((.*?)\)/', '$1', $text); + + // Inline-Code `text` -> text + $text = preg_replace('/`(.*?)`/', '$1', $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 "
$finalHTML
"; +?> diff --git a/include/verification_functions.php b/include/verification_functions.php new file mode 100644 index 0000000..40d76e4 --- /dev/null +++ b/include/verification_functions.php @@ -0,0 +1,31 @@ +