add main-site

This commit is contained in:
GZod01 2023-03-25 10:29:34 +01:00
parent 0bcf58c844
commit 0a3a77a9ff
52 changed files with 11206 additions and 0 deletions

View file

@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>CyberTermHack</title>
<meta charset="UTF-8">
<style>
:root{
--bg-color: black;
--txt-color: white;
}
html, body{
background-color:var(--bg-color);
color: var(--txt-color);
margin:0;
height:100%;
min-height:100vh;
display:flex;
flex-direction:column;
word-wrap: break-word;
word-break: break-all;
z-index:2
}
.second {
flex-grow: 1;
}
#termcontent{
display: fixed;
left:0;
top:0;
height:95%;
width:100%;
overflow: auto
}
#divinput{
display:flex;
left:0;
bottom:0;
height:5%;
width:100%
}
#terminpt{
border: 0px solid !important;
background-color: var(--bg-color);
color:var(--txt-color);
width:95%
}
/*#terminptdiv{
float: none
}*/
*:focus {
outline: none;
}
/*#divofinfos{
float:left
}*/
#matrixcanvas{
width:100%;
height:100%;
position:fixed;
z-index:-1
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!--username and ip: green, $ or %: white, commands: white-->
<div id="termcontent">
</div>
<div id="divinput">
<span id=spanofinfos><span id="inptindic"></span><span id="inptname"></span></span><span class=second><input id=terminpt type="text"/></span>
</div>
<canvas id=matrixcanvas style='width:100%; height: 100%'>
</canvas>
<script src="//api.gzod01.fr/termapi.js"></script>
<script src="console.js"></script>
</body>
</html>

View file

@ -0,0 +1,10 @@
function consoleloop(){
let x= terminput('')
termshow('executing : '+x+' ...')
try{
let nfunc = new Function(x)
termshow(nfunc())
}catch(e){
termshow('error: '+e)
}
}

View file

@ -0,0 +1,479 @@
// TERM API BY GZOD01 (FROM CYBERTERMHACK BY GZOD01)
// the variable to check if the input is complete (if the user press enter)
var inputcomplete = false
// function to choose a random int (random.randint() in python)
function randint(min, max){
return Math.floor(Math.random() * (max - min + 1) ) + min;
}
// START OF MATRIX CODE
// function to stop the matrix (delete the canvas and recreate it)
function stopmatrix(){
document.getElementById('matrixcanvas').remove()
let nc = document.createElement('canvas')
nc.setAttribute('id','matrixcanvas')
nc.style.width = '100%'
nc.style.height ='0%'
document.body.appendChild(nc)
}
//function to start the matrix (start the dropdown of letters etc.)
function matrix(color){
let tcolor = ''
if(color==='cyan'){
tcolor ='#0ff'
}
else if(color==='blue'){
tcolor='#00f'
}
else if(color==='magenta'){
tcolor='#f0f'
}
else if(color==='red'){
tcolor='#f00'
}
else if(color==='green'){
tcolor='#0f0'
}
else if(color==='yellow'){
tcolor='#ff0'
}
else if(color==='white'){
tcolor='#fff'
}
else if(color==='purple'){
tcolor='#303'
}
else{
tcolor= '#0f0'
}
var canvas = document.getElementById('matrixcanvas'),
ctx = canvas.getContext('2d');
canvas.style.height = '100%'
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890&éèçà@æ€ŧøþ@ßðđŋłĸħłµł»¢µ$£ù%^¨';
letters = letters.split('');
var fontSize = 10,
columns = canvas.width / fontSize;
var drops = [];
for (var i = 0; i < columns; i++) {
drops[i] = 1;
}
function draw() {
ctx.fillStyle = 'rgba(0, 0, 0, .1)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
for (var i = 0; i < drops.length; i++) {
var text = letters[Math.floor(Math.random() * letters.length)];
ctx.fillStyle = tcolor;
ctx.fillText(text, i * fontSize, drops[i] * fontSize);
drops[i]++;
if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
drops[i] = 0;
}
}
}
setInterval(draw, 33);
}
// END OF MATRIX CODE
// function like the time.sleep in python
function sleep(s) {
let ms = s*1000
return new Promise(resolve => setTimeout(resolve, ms));
}
// function like random.choice() in python
function randchoice(list){
console.log(list[randint(0,list.length-1)])
return list[randint(0,list.length-1)]
}
// TODO : var historic = []
// lastx = the last input do (the input you get when you press up arrow) to replace with an historic
var lastx = ""
// the function to execute when up arrow pressed
function historic(){
// TODO : terminpt.value=historic[historic.lengh-1-index]
document.getElementById('terminpt').value = lastx // to replace with an historic (line above) , set the input value (content) to the last input executed
}
// when a key is down
onkeydown = function(e){
// if the key is the tab key (keyCode 9)
if(e.keyCode==9){
// execute the autocomplete function
autocomplete()
}
}
// when a key is up
onkeyup = function(e){
// if the key is enter key (keyCode 13)
if(e.keyCode==13){
// set the inputcomplete variable to true to inform the terminput function that the user press enter
inputcomplete = true
}
// if the input is up arrow key (keyCode 38)
else if(e.keyCode == 38){
// execute the historic function
historic()
}
}
// function like the print() function in python, add the text to the #termcontent div
function termshow(str){
let tc = document.getElementById('termcontent')
let nchild = document.createElement('div')
str = str.replace('<','&lt')
str= str.replace('>','&gt')
str= str.replace('&infg&','<')
str = str.replace('&supd&','>')
nchild.innerHTML = str.replace('\n','<br>')
tc.appendChild(nchild)
document.getElementById('termcontent').scrollTo(0,document.getElementById('termcontent').scrollHeight)
}
// the input() function of python, check if the input is complete (see the inputcomplete variable and the onkeyup (e.keyCode == 13) execution
function terminput(str){
let tiname = document.getElementById('inptname')
tiname.innerHTML = str
let inpt = document.getElementById('terminpt')
if(inputcomplete){
console.log(inpt.value)
inputcomplete=false
let resultat = inpt.value
inpt.value = ''
return resultat
}
else{
//return 'ERR' if the input isn't complete
return 'ERR'
}
}
// replace this list with the list of your commands
var list_of_command = ['ls','ssh','pbk','exit','theme','matrix','hack','attack','save','import','help','exit']
// autocomplete when tab press show all the command starting with the value in your input
function autocomplete(){
let inptval = document.getElementById('terminpt').value
termshow('List of available commands starting with " '+inptval+' " :')
for(let i = 0; i<list_of_command.length; i++){
if(list_of_command[i].startsWith(inptval)){
termshow('- '+list_of_command[i])
}
}
}
// x= the current input
var x = ""
// START OF FUNCTIONS TO USE WITHOUT INTERACT WITH THE INTERFACE
// Send the current input (function to set the inputcomplete as true)
function sendinput(){inputcomplete=true}
// setinput(str) function to set the value of the input from function
function setinput(str){document.getElementById('terminpt').value=str}
// execcommand(str) set input and send input
function execcommand(str){setinput(str); sendinput()}
// last() historic and sendinput
function last(){historic(); sendinput()}
// autoc setinput, autocomplete
function autoc(str){setinput(str); autocomplete();}
// END OF FUNCTIONS TO USE WITHOUT INTERACT WITH THE INTERFACE
// END OF THE API CODE
// START OF CYBERTERMHACK CODE
function splitaddr(complete, cmd){
try{
let c = complete.substring(cmd.length)
let u = c.split('@')[0]
let a = c.split('@')[1]
if (a==undefined){
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
else{
return [u, a]
}
}
catch(e){
console.error(e)
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
}
function infos(){
termshow('01010101010101010<br>1.CyberTermGame.1<br>0.....By GZod01.....0<br>10101010101010101<br>Infos on the game : Hello my name is GZod01 and i make this game in javascript (base game in python) "for fun", I know this game is not reflecting the reality of the command on linux or windows machines but... it is a game...<br>Sorry if the english is not very good i speak french...')
}
stopmatrix()
var passwordlist = ["my_password","helloworld","ultra_secure_password","my_birthday"]
var filelist = ['picture.png','personnal_datas.csv', 'helloworld.py','i_hate_hackers.txt','speech_for_tomorrow.md', '.ha_ha_this_is_super_secret_file.txt','mydirectory/']
var connected = false
var datased = false
var STOP = false
infos()
var user = ""
var ip = ""
var password = ""
var destroyedip = []
var codeline = ["fn destroy(oiaf){executeshellcomand('destroy oiaf')}","hack-server()","destroy()","fn hack-server(files){for(var i = 0, i<len(files)){if (type_of_file(files[i])==='password_files_and_datas_files'){execcommand('copyfile_to_my_computer'); destroy(files)};", "print(01020003957058098409438409340&àà_09232983983983923999832983928398329389238938923892382938923899201809381093809é'802984029804802948049820840938éàç8309é_à'ç_éà'_09790872çà'àç_éè409724097240942èàçé'8è290479024798047298047904èé4908éè4) in serverdatas"]
termshow('starting session ...')
var me = ''
named = false
// example of serversdatas: "ip":{"destroyed":true (or false), "files":listoffiles, "password":"password"}
var gamedatas = {
"serversdatas":{},
"username": me,
'colorscheme': 'default' //it can be green / red / blue / yellow
}
function gettheme(){
let r = document.querySelector(':root')
if (gamedatas.colorscheme ==='default'){
r.style.setProperty('--txt-color','white')
}
else if (gamedatas.colorscheme === 'green'){
r.style.setProperty('--txt-color','green')
}
else if (gamedatas.colorscheme === 'red'){
r.style.setProperty('--txt-color','red')
}
else if (gamedatas.colorscheme === 'blue'){
r.style.setProperty('--txt-color','blue')
}
else if (gamedatas.colorscheme === 'yellow'){
r.style.setProperty('--txt-color','yellow')
}
}
var ipdatas = {}
document.getElementById('terminpt').focus()
async function loop(){
gamedatas.serversdatas = ipdatas
if(named){
if(connected){
x = terminput(`${user}@${ip} $ `)
}
else{
x = terminput(`${me}@MYCOMPUTER # `)
}
if(x==='ERR'){}
else{
//historic.push(x)
lastx = x
let lowx = x.toLowerCase()
if(connected){
termshow(`${user}@${ip} $ ${x}`)
}
else{
termshow(`${me}@MYCOMPUTER # ${x}`)
}
if (lowx.startsWith('ssh')){
if (connected){
termshow('error you already are in distant server')
}
else{
if (splitaddr(x, 'ssh') === 'ERROR'){
}
else{
user = splitaddr(x, 'ssh')[0]
ip = splitaddr(x, 'ssh')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('connect to the computer with the ip '+ip+' from the user '+user+' ...')
if (ipdatas[ip]['destroyed']){
termshow('error this server is destroyed')
}
else{
if(ipdatas[ip]['password']==undefined){
termshow('you don\'t have the password of this server')
}
else{
await sleep(1)
termshow('Password: AUTOMATIC_PASSWORD_SYSTEM')
// while(temppass != ipdatas[ip]['password']){
// temppass = terminput('Password: ')
// }
await sleep(1)
termshow('connected')
connected=true
}
}
}
}
}
else if (lowx.startsWith('pbk')){
if (connected){
termshow('error you are on a distant server')
}
else{
if (splitaddr(x,'pbk')==='ERROR'){
splitaddr(x,'pbk')
}
else{
user=splitaddr(x, 'pbk')[0]
ip = splitaddr(x, 'pbk')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('Breaking the password of the user '+user+' to the computer with the ip '+ip+' ...')
password= randchoice(passwordlist)
ipdatas[ip]['password']=password
termshow('The password is : '+ password)
}
}
}
else if (lowx.startsWith('theme')){
if(lowx==='theme'||lowx==='theme '){
termshow('Switch the theme with this command,<br> the available colors are : default , yellow , red , blue , green . <br> execute the command like this: theme default or theme yellow , etc.')
}
else{
let nx = x.substring('theme '.length)
if(nx==='yellow' || nx ==='blue' || nx==='default' || nx ==='red' || nx === 'green'){
gamedatas.colorscheme = nx
gettheme()
}
else{
termshow('Switch the theme with this command,<br> the available colors are : default , yellow , red , blue , green . <br> execute the command like this: theme default or theme yellow , etc.')
}
}
}
else if (lowx.startsWith('matrix')){
if(lowx==='matrix'||lowx==='matrix '){
matrix(gamedatas.colorscheme)
}
else{
let nx = x.substring('matrix '.length)
if(nx==='yellow' || nx ==='blue' || nx==='white' || nx ==='red' || nx === 'green'||nx=='purple'|| nx=='cyan' || nx=='magenta'){
matrix(nx)
}
else if(nx==='stop'){
stopmatrix()
}
else{
termshow('Switch the theme with this command,<br> the available colors are : default , yellow , red , blue , green . <br> execute the command like this: theme default or theme yellow , etc.')
}
}
}
else if(lowx==='save'){
localStorage.setItem('hackergamedatas',JSON.stringify(gamedatas))
termshow('Data saved')
termshow(localStorage.getItem('hackergamedatas'))
}
else if(lowx==='import'){
let tmpdatas = localStorage.getItem('hackergamedatas')
if (tmpdatas == undefined){
termshow('you don\'t have any data saved, please execute the save command before to import')
}
else{
gamedatas = JSON.parse(tmpdatas)
}
}
else if (lowx=='ls'){
if (connected){
if (ipdatas[ip]['files'] == undefined){
termshow('This is the file on the distant machine')
let fileiplist = []
for(let i=0; i < parseInt(randint(1,10)); i++){
let currentchoicefile = randchoice(filelist)
termshow('-'+currentchoicefile)
fileiplist.push(currentchoicefile)
}
ipdatas[ip]['files'] = fileiplist
}
else{
termshow('This is the file on the distant machine')
for(let i = 0; i<ipdatas[ip]['files'].length; i++){
termshow('-'+ ipdatas[ip]['files'][i])
}
}
}
else{
if (datased){
termshow('This is the file on your computer: <br>- my_datas.zip <br>- servers_data.zip')
}
else{
termshow('This is the file on your computer: <br>- my_datas.zip')
}
}
}
else if (lowx=='attack'){
if( connected){
termshow('the attack start... <br> copying all the data in this server to your servers_data.zip file in your computer (it include all the file, folder etc.)...<br>breaking the server...<br>Disconnected: The server is destroy')
connected = false
datased = true
ipdatas[ip]['destroyed'] = true
}
else{
termshow('error you are not connected, please connect to a distant server before executing this command')
}
}
else if( x==='help'){
termshow('The available commands: <br>- help : print this message<br>- ls : list the files and folders<br>- pbk (only in your computer) : Get the password of an user from an ip address<br>- ssh (only in your computer) : conect to a distant server with an user and an ip address (you have to use pbk to get the password)<br>- attack (only in ssh servers) : start an attack that will add all the datas on the server in your servers_data.zip file and will destroy the server (warning this will no destroy only the server from the user it will destroy ALL the server (the address))<br>- theme : switch the theme of the game\n- save : save the game in your localStorage (alternative to cookies)\n- import : import the game from your localStorage\n- matrix : start or stop a matrix rain animation (just for fun...)\n- exit : if you are connected to distant server (ssh) it deconnect you, if you are not connected it exit this game<br>- infos : display infos on this game')
}
else if (lowx==='exit'){
if (connected){
termshow('disconnecting...')
connected=false
}
else{
termshow('Exiting the session...')
termshow('Exiting the game, thank to play to this game, don\'t hesitate to help me or to give me your feedback')
STOP = true
location = '/'
}
}
else if (lowx==='hack'){
if (connected){
termshow('--Start-of-the-hacking-program--')
for(let i = 0; i<randint(0,50);i++){
termshow(randchoice(codeline))
}
}
else{
termshow('you have to be connected')
}
}
else if (lowx=='infos'){
infos()
}
else if(x.startsWith('$$$')){
if(x === '$$$' || x === '$$$ '){
termshow('this command is for execute js code enter your js code after the $$$')
}
else{
try{
let tempcode = x.substring('$$$ '.length)
let newfunc = new Function (tempcode)
newfunc()
}
catch(e){
termshow('Il y a eu une erreur : '+e)
}
}
}
}
}
else{
let temp = terminput('your name: ')
if(temp.length<4){
document.getElementById('inptindic').innerHTML ='your name must have more than 4 characters '
}
else{
me = temp
named = true
document.getElementById('inptindic').innerHTML=''
}
}
window.requestAnimationFrame(loop)
}
loop()
// END OF CYBERTERMHACK CODE

View file

@ -0,0 +1,499 @@
// TERM API BY GZOD01 (FROM CYBERTERMHACK BY GZOD01)
// the variable to check if the input is complete (if the user press enter)
var inputcomplete = false
// function to choose a random int (random.randint() in python)
function randint(min, max){
return Math.floor(Math.random() * (max - min + 1) ) + min;
}
// START OF MATRIX CODE
// function to stop the matrix (delete the canvas and recreate it)
function stopmatrix(){
document.getElementById('matrixcanvas').remove()
let nc = document.createElement('canvas')
nc.setAttribute('id','matrixcanvas')
nc.style.width = '100%'
nc.style.height ='0%'
document.body.appendChild(nc)
}
//function to start the matrix (start the dropdown of letters etc.)
function matrix(color){
let tcolor = ''
if(color==='cyan'){
tcolor ='#0ff'
}
else if(color==='blue'){
tcolor='#00f'
}
else if(color==='magenta'){
tcolor='#f0f'
}
else if(color==='red'){
tcolor='#f00'
}
else if(color==='green'){
tcolor='#0f0'
}
else if(color==='yellow'){
tcolor='#ff0'
}
else if(color==='white'){
tcolor='#fff'
}
else if(color==='purple'){
tcolor='#303'
}
else{
tcolor= '#0f0'
}
var canvas = document.getElementById('matrixcanvas'),
ctx = canvas.getContext('2d');
canvas.style.height = '100%'
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890&éèçà@æ€ŧøþ@ßðđŋłĸħłµł»¢µ$£ù%^¨';
letters = letters.split('');
var fontSize = 10,
columns = canvas.width / fontSize;
var drops = [];
for (var i = 0; i < columns; i++) {
drops[i] = 1;
}
function draw() {
ctx.fillStyle = 'rgba(0, 0, 0, .1)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
for (var i = 0; i < drops.length; i++) {
var text = letters[Math.floor(Math.random() * letters.length)];
ctx.fillStyle = tcolor;
ctx.fillText(text, i * fontSize, drops[i] * fontSize);
drops[i]++;
if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
drops[i] = 0;
}
}
}
setInterval(draw, 33);
}
// END OF MATRIX CODE
// function like the time.sleep in python
function sleep(s) {
let ms = s*1000
return new Promise(resolve => setTimeout(resolve, ms));
}
// function like random.choice() in python
function randchoice(list){
console.log(list[randint(0,list.length-1)])
return list[randint(0,list.length-1)]
}
// TODO : var historic = []
// lastx = the last input do (the input you get when you press up arrow) to replace with an historic
var lastx = ""
// the function to execute when up arrow pressed
function historic(){
// TODO : terminpt.value=historic[historic.lengh-1-index]
document.getElementById('terminpt').value = lastx // to replace with an historic (line above) , set the input value (content) to the last input executed
}
// when a key is down
onkeydown = function(e){
// if the key is the tab key (keyCode 9)
if(e.keyCode==9){
// execute the autocomplete function
autocomplete()
}
}
// when a key is up
onkeyup = function(e){
// if the key is enter key (keyCode 13)
if(e.keyCode==13){
// set the inputcomplete variable to true to inform the terminput function that the user press enter
inputcomplete = true
}
// if the input is up arrow key (keyCode 38)
else if(e.keyCode == 38){
// execute the historic function
historic()
}
}
// function like the print() function in python, add the text to the #termcontent div
function termshow(str){
let tc = document.getElementById('termcontent')
let nchild = document.createElement('div')
str = str.replace('<','&lt')
str= str.replace('>','&gt')
str= str.replace('&infg&','<')
str = str.replace('&supd&','>')
nchild.innerHTML = str.replace('\n','<br>')
tc.appendChild(nchild)
document.getElementById('termcontent').scrollTo(0,document.getElementById('termcontent').scrollHeight)
}
// the input() function of python, check if the input is complete (see the inputcomplete variable and the onkeyup (e.keyCode == 13) execution
function terminput(str){
let tiname = document.getElementById('inptname')
tiname.innerHTML = str
let inpt = document.getElementById('terminpt')
if(inputcomplete){
console.log(inpt.value)
inputcomplete=false
let resultat = inpt.value
inpt.value = ''
return resultat
}
else{
//return 'ERR' if the input isn't complete
return 'ERR'
}
}
// replace this list with the list of your commands
var list_of_command = ['ls','ssh','pbk','exit','theme','matrix','hack','attack','save','import','help','exit']
// autocomplete when tab press show all the command starting with the value in your input
function autocomplete(){
let inptval = document.getElementById('terminpt').value
termshow('List of available commands starting with " '+inptval+' " :')
for(let i = 0; i<list_of_command.length; i++){
if(list_of_command[i].startsWith(inptval)){
termshow('- '+list_of_command[i])
}
}
}
// x= the current input
var x = ""
// START OF FUNCTIONS TO USE WITHOUT INTERACT WITH THE INTERFACE
// Send the current input (function to set the inputcomplete as true)
function sendinput(){inputcomplete=true}
// setinput(str) function to set the value of the input from function
function setinput(str){document.getElementById('terminpt').value=str}
// execcommand(str) set input and send input
function execcommand(str){setinput(str); sendinput()}
// last() historic and sendinput
function last(){historic(); sendinput()}
// autoc setinput, autocomplete
function autoc(str){setinput(str); autocomplete();}
// END OF FUNCTIONS TO USE WITHOUT INTERACT WITH THE INTERFACE
// END OF THE API CODE
/TODO:*
// START OF CYBERTERMHACK CODE
// You can keep this function if you want to split an address
function splitaddr(complete, cmd){
try{
let c = complete.substring(cmd.length)
let u = c.split('@')[0]
let a = c.split('@')[1]
if (a==undefined){
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
else{
return [u, a]
}
}
catch(e){
console.error(e)
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
}
function infos(){
termshow(YOUR_INFOS_HERE)
}
stopmatrix()
// these three list (password, files and codeline are sample of if you want to use randchoice
var passwordlist = ["my_password","helloworld","ultra_secure_password","my_birthday"]
var filelist = ['picture.png','personnal_datas.csv', 'helloworld.py','i_hate_hackers.txt','speech_for_tomorrow.md', '.ha_ha_this_is_super_secret_file.txt','mydirectory/']
var codeline = ["fn destroy(oiaf){executeshellcomand('destroy oiaf')}","hack-server()","destroy()","fn hack-server(files){for(var i = 0, i<len(files)){if (type_of_file(files[i])==='password_files_and_datas_files'){execcommand('copyfile_to_my_computer'); destroy(files)};", "print(01020003957058098409438409340&àà_09232983983983923999832983928398329389238938923892382938923899201809381093809é'802984029804802948049820840938éàç8309é_à'ç_éà'_09790872çà'àç_éè409724097240942èàçé'8è290479024798047298047904èé4908éè4) in serverdatas"]
// variable to check if the user is connected
var connected = false
// variable to check if the player got file from server
var datased = false
//var STOP = false NON USED
// display the infos
infos()
// the name of the user hacked
var user = ""
// the ip of the server hacked
var ip = ""
// the password (non really used)
var password = ""
// the list of the ip destroyed (replaced with serversdatas['password'}
var destroyedip = []
// show starting session
termshow('starting session ...')
// name of user
var me = ''
// variable to check if the user enter his name
named = false
// example of serversdatas: "ip":{"destroyed":true (or false), "files":listoffiles, "password":"password"}
var gamedatas = {
"serversdatas":{},
"username": me,
'colorscheme': 'default' //it can be green / red / blue / yellow
}
// change the theme of page (with gamedatas.colorscheme)
function gettheme(){
let r = document.querySelector(':root')
if (gamedatas.colorscheme ==='default'){
r.style.setProperty('--txt-color','white')
}
else if (gamedatas.colorscheme === 'green'){
r.style.setProperty('--txt-color','green')
}
else if (gamedatas.colorscheme === 'red'){
r.style.setProperty('--txt-color','red')
}
else if (gamedatas.colorscheme === 'blue'){
r.style.setProperty('--txt-color','blue')
}
else if (gamedatas.colorscheme === 'yellow'){
r.style.setProperty('--txt-color','yellow')
}
}
// ipdatas (it will be an easy 'shortcut' to gamedatas.serversdatas)
var ipdatas = {}
// focus the terminput
document.getElementById('terminpt').focus()
// THE MAIN FUNCTION (LOOP) THAT WILL BE EXECUTE
async function loop(){
gamedatas.serversdatas = ipdatas
if(named){
if(connected){
x = terminput(`${user}@${ip} $ `)
}
else{
x = terminput(`${me}@MYCOMPUTER # `)
}
if(x==='ERR'){}
else{
//historic.push(x)
lastx = x
let lowx = x.toLowerCase()
if(connected){
termshow(`${user}@${ip} $ ${x}`)
}
else{
termshow(`${me}@MYCOMPUTER # ${x}`)
}
if (lowx.startsWith('ssh')){
if (connected){
termshow('error you already are in distant server')
}
else{
if (splitaddr(x, 'ssh') === 'ERROR'){
}
else{
user = splitaddr(x, 'ssh')[0]
ip = splitaddr(x, 'ssh')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('connect to the computer with the ip '+ip+' from the user '+user+' ...')
if (ipdatas[ip]['destroyed']){
termshow('error this server is destroyed')
}
else{
if(ipdatas[ip]['password']==undefined){
termshow('you don\'t have the password of this server')
}
else{
await sleep(1)
termshow('Password: AUTOMATIC_PASSWORD_SYSTEM')
// while(temppass != ipdatas[ip]['password']){
// temppass = terminput('Password: ')
// }
await sleep(1)
termshow('connected')
connected=true
}
}
}
}
}
else if (lowx.startsWith('pbk')){
if (connected){
termshow('error you are on a distant server')
}
else{
if (splitaddr(x,'pbk')==='ERROR'){
splitaddr(x,'pbk')
}
else{
user=splitaddr(x, 'pbk')[0]
ip = splitaddr(x, 'pbk')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('Breaking the password of the user '+user+' to the computer with the ip '+ip+' ...')
password= randchoice(passwordlist)
ipdatas[ip]['password']=password
termshow('The password is : '+ password)
}
}
}
else if (lowx.startsWith('theme')){
if(lowx==='theme'||lowx==='theme '){
termshow('Switch the theme with this command,<br> the available colors are : default , yellow , red , blue , green . <br> execute the command like this: theme default or theme yellow , etc.')
}
else{
let nx = x.substring('theme '.length)
if(nx==='yellow' || nx ==='blue' || nx==='default' || nx ==='red' || nx === 'green'){
gamedatas.colorscheme = nx
gettheme()
}
else{
termshow('Switch the theme with this command,<br> the available colors are : default , yellow , red , blue , green . <br> execute the command like this: theme default or theme yellow , etc.')
}
}
}
else if (lowx.startsWith('matrix')){
if(lowx==='matrix'||lowx==='matrix '){
matrix(gamedatas.colorscheme)
}
else{
let nx = x.substring('matrix '.length)
if(nx==='yellow' || nx ==='blue' || nx==='white' || nx ==='red' || nx === 'green'||nx=='purple'|| nx=='cyan' || nx=='magenta'){
matrix(nx)
}
else if(nx==='stop'){
stopmatrix()
}
else{
termshow('Switch the theme with this command,<br> the available colors are : default , yellow , red , blue , green . <br> execute the command like this: theme default or theme yellow , etc.')
}
}
}
else if(lowx==='save'){
localStorage.setItem('hackergamedatas',JSON.stringify(gamedatas))
termshow('Data saved')
termshow(localStorage.getItem('hackergamedatas'))
}
else if(lowx==='import'){
let tmpdatas = localStorage.getItem('hackergamedatas')
if (tmpdatas == undefined){
termshow('you don\'t have any data saved, please execute the save command before to import')
}
else{
gamedatas = JSON.parse(tmpdatas)
}
}
else if (lowx=='ls'){
if (connected){
if (ipdatas[ip]['files'] == undefined){
termshow('This is the file on the distant machine')
let fileiplist = []
for(let i=0; i < parseInt(randint(1,10)); i++){
let currentchoicefile = randchoice(filelist)
termshow('-'+currentchoicefile)
fileiplist.push(currentchoicefile)
}
ipdatas[ip]['files'] = fileiplist
}
else{
termshow('This is the file on the distant machine')
for(let i = 0; i<ipdatas[ip]['files'].length; i++){
termshow('-'+ ipdatas[ip]['files'][i])
}
}
}
else{
if (datased){
termshow('This is the file on your computer: <br>- my_datas.zip <br>- servers_data.zip')
}
else{
termshow('This is the file on your computer: <br>- my_datas.zip')
}
}
}
else if (lowx=='attack'){
if( connected){
termshow('the attack start... <br> copying all the data in this server to your servers_data.zip file in your computer (it include all the file, folder etc.)...<br>breaking the server...<br>Disconnected: The server is destroy')
connected = false
datased = true
ipdatas[ip]['destroyed'] = true
}
else{
termshow('error you are not connected, please connect to a distant server before executing this command')
}
}
else if( x==='help'){
termshow('The available commands: <br>- help : print this message<br>- ls : list the files and folders<br>- pbk (only in your computer) : Get the password of an user from an ip address<br>- ssh (only in your computer) : conect to a distant server with an user and an ip address (you have to use pbk to get the password)<br>- attack (only in ssh servers) : start an attack that will add all the datas on the server in your servers_data.zip file and will destroy the server (warning this will no destroy only the server from the user it will destroy ALL the server (the address))<br>- theme : switch the theme of the game\n- save : save the game in your localStorage (alternative to cookies)\n- import : import the game from your localStorage\n- matrix : start or stop a matrix rain animation (just for fun...)\n- exit : if you are connected to distant server (ssh) it deconnect you, if you are not connected it exit this game<br>- infos : display infos on this game')
}
else if (lowx==='exit'){
if (connected){
termshow('disconnecting...')
connected=false
}
else{
termshow('Exiting the session...')
termshow('Exiting the game, thank to play to this game, don\'t hesitate to help me or to give me your feedback')
STOP = true
location = '/'
}
}
else if (lowx==='hack'){
if (connected){
termshow('--Start-of-the-hacking-program--')
for(let i = 0; i<randint(0,50);i++){
termshow(randchoice(codeline))
}
}
else{
termshow('you have to be connected')
}
}
else if (lowx=='infos'){
infos()
}
else if(x.startsWith('$$$')){
if(x === '$$$' || x === '$$$ '){
termshow('this command is for execute js code enter your js code after the $$$')
}
else{
try{
let tempcode = x.substring('$$$ '.length)
let newfunc = new Function (tempcode)
newfunc()
}
catch(e){
termshow('Il y a eu une erreur : '+e)
}
}
}
}
}
else{
let temp = terminput('your name: ')
if(temp.length<4){
document.getElementById('inptindic').innerHTML ='your name must have more than 4 characters '
}
else{
me = temp
named = true
document.getElementById('inptindic').innerHTML=''
}
}
window.requestAnimationFrame(loop)
}
loop()
// END OF CYBERTERMHACK CODE

View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>CyberTermHack</title>
<meta charset="UTF-8">
<style>
:root{
--bg-color: black;
--txt-color: white;
}
html, body{
background-color:var(--bg-color);
color: var(--txt-color);
margin:0;
height:100%;
min-height:100vh;
display:flex;
flex-direction:column;
word-wrap: break-word;
word-break: break-all;
z-index:2
}
.second {
flex-grow: 1;
}
#termcontent{
display: fixed;
left:0;
top:0;
height:95%;
width:100%;
overflow: auto
}
#divinput{
display:flex;
left:0;
bottom:0;
height:5%;
width:100%
}
#terminpt{
border: 0px solid !important;
background-color: var(--bg-color);
color:var(--txt-color);
width:95%
}
/*#terminptdiv{
float: none
}*/
*:focus {
outline: none;
}
/*#divofinfos{
float:left
}*/
#matrixcanvas{
width:100%;
height:100%;
position:fixed;
z-index:-1
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!--username and ip: green, $ or %: white, commands: white-->
<div id="termcontent">
<!-- oldcommands and outputs -->
</div>
<div id="divinput">
<span id=spanofinfos><span id="inptindic"></span><span id="inptname"></span></span><span class=second><input id=terminpt type="text"/></span>
<!-- actual command with username and ip, $ or %, input for command, enter to send command -->
</div>
<canvas id=matrixcanvas style='width:100%; height: 100%'>
</canvas>
<script src=//api.gzod01.fr/scripts/termapi.js></script>
<script src="maincode.js"></script>
</body>
</html>

View file

@ -0,0 +1,302 @@
var x = ""
function splitaddr(complete, cmd){
try{
let c = complete.substring(cmd.length)
let u = c.split('@')[0]
let a = c.split('@')[1]
if (a==undefined){
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
else{
return [u, a]
}
}
catch(e){
console.error(e)
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
}
function infos(){
termshow('01010101010101010\n1.CyberTermGame.1\n0.....By GZod01.....0\n10101010101010101\nInfos on the game : Hello my name is GZod01 and i make this game in javascript (base game in python) "for fun", I know this game is not reflecting the reality of the command on linux or windows machines but... it is a game...\nSorry if the english is not very good i speak french...')
}
stopmatrix()
var passwordlist = ["my_password","helloworld","ultra_secure_password","my_birthday"]
var filelist = ['picture.png','personnal_datas.csv', 'helloworld.py','i_hate_hackers.txt','speech_for_tomorrow.md', '.ha_ha_this_is_super_secret_file.txt','mydirectory/']
var connected = false
var datased = false
var STOP = false
infos()
var user = ""
var ip = ""
var password = ""
var destroyedip = []
var codeline = ["fn destroy(oiaf){executeshellcomand('destroy oiaf')}","hack-server()","destroy()","fn hack-server(files){for(var i = 0, i<len(files)){if (type_of_file(files[i])==='password_files_and_datas_files'){execcommand('copyfile_to_my_computer'); destroy(files)};", "print(01020003957058098409438409340&àà_09232983983983923999832983928398329389238938923892382938923899201809381093809é'802984029804802948049820840938éàç8309é_à'ç_éà'_09790872çà'àç_éè409724097240942èàçé'8è290479024798047298047904èé4908éè4) in serverdatas"]
termshow('starting session ...')
var me = ''
var list_of_command = ['ls','ssh','pbk','exit','theme','matrix','hack','attack','save','import','help','exit']
function autocomplete(){
let inptval = document.getElementById('terminpt').value
termshow('List of available commands starting with " '+inptval+' " :')
for(let i = 0; i<list_of_command.length; i++){
if(list_of_command[i].startsWith(inptval)){
termshow('- '+list_of_command[i])
}
}
}
named = false
// example of serversdatas: "ip":{"destroyed":true (or false), "files":listoffiles, "password":"password"}
var gamedatas = {
"serversdatas":{},
"username": me,
'colorscheme': 'default' //it can be green / red / blue / yellow
}
// START OF MAIN-MODE CODE
function gettheme(){
let r = document.querySelector(':root')
if (gamedatas.colorscheme ==='default'){
r.style.setProperty('--txt-color','white')
}
else if (gamedatas.colorscheme === 'green'){
r.style.setProperty('--txt-color','green')
}
else if (gamedatas.colorscheme === 'red'){
r.style.setProperty('--txt-color','red')
}
else if (gamedatas.colorscheme === 'blue'){
r.style.setProperty('--txt-color','blue')
}
else if (gamedatas.colorscheme === 'yellow'){
r.style.setProperty('--txt-color','yellow')
}
}
var ipdatas = {}
document.getElementById('terminpt').focus()
async function loop(){
gamedatas.serversdatas = ipdatas
if(named){
if(connected){
x = terminput(`${user}@${ip} $ `)
}
else{
x = terminput(`${me}@MYCOMPUTER # `)
}
if(x==='ERR'){}
else{
//historic.push(x)
lastx = x
let lowx = x.toLowerCase()
if(connected){
termshow(`${user}@${ip} $ ${x}`)
}
else{
termshow(`${me}@MYCOMPUTER # ${x}`)
}
if (lowx.startsWith('ssh')){
if (connected){
termshow('error you already are in distant server')
}
else{
if (splitaddr(x, 'ssh') === 'ERROR'){
}
else{
user = splitaddr(x, 'ssh')[0]
ip = splitaddr(x, 'ssh')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('connect to the computer with the ip '+ip+' from the user '+user+' ...')
if (ipdatas[ip]['destroyed']){
termshow('error this server is destroyed')
}
else{
if(ipdatas[ip]['password']==undefined){
termshow('you don\'t have the password of this server')
}
else{
await sleep(1)
termshow('Password: AUTOMATIC_PASSWORD_SYSTEM')
// while(temppass != ipdatas[ip]['password']){
// temppass = terminput('Password: ')
// }
await sleep(1)
termshow('connected')
connected=true
}
}
}
}
}
else if (lowx.startsWith('pbk')){
if (connected){
termshow('error you are on a distant server')
}
else{
if (splitaddr(x,'pbk')==='ERROR'){
splitaddr(x,'pbk')
}
else{
user=splitaddr(x, 'pbk')[0]
ip = splitaddr(x, 'pbk')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('Breaking the password of the user '+user+' to the computer with the ip '+ip+' ...')
password= randchoice(passwordlist)
ipdatas[ip]['password']=password
termshow('The password is : '+ password)
}
}
}
else if (lowx.startsWith('theme')){
if(lowx==='theme'||lowx==='theme '){
termshow('Switch the theme with this command,\n the available colors are : default , yellow , red , blue , green . \n execute the command like this: theme default or theme yellow , etc.')
}
else{
let nx = x.substring('theme '.length)
if(nx==='yellow' || nx ==='blue' || nx==='default' || nx ==='red' || nx === 'green'){
gamedatas.colorscheme = nx
gettheme()
}
else{
termshow('Switch the theme with this command,\n the available colors are : default , yellow , red , blue , green . \n execute the command like this: theme default or theme yellow , etc.')
}
}
}
else if (lowx.startsWith('matrix')){
if(lowx==='matrix'||lowx==='matrix '){
matrix(gamedatas.colorscheme)
}
else{
let nx = x.substring('matrix '.length)
if(nx==='yellow' || nx ==='blue' || nx==='white' || nx ==='red' || nx === 'green'||nx=='purple'|| nx=='cyan' || nx=='magenta'){
matrix(nx)
}
else if(nx==='stop'){
stopmatrix()
}
else{
termshow('Switch the theme with this command,\n the available colors are : default , yellow , red , blue , green . \n execute the command like this: theme default or theme yellow , etc.')
}
}
}
else if(lowx==='save'){
localStorage.setItem('hackergamedatas',JSON.stringify(gamedatas))
termshow('Data saved')
termshow(localStorage.getItem('hackergamedatas'))
}
else if(lowx==='import'){
let tmpdatas = localStorage.getItem('hackergamedatas')
if (tmpdatas == undefined){
termshow('you don\'t have any data saved, please execute the save command before to import')
}
else{
gamedatas = JSON.parse(tmpdatas)
}
}
else if (lowx=='ls'){
if (connected){
if (ipdatas[ip]['files'] == undefined){
termshow('This is the file on the distant machine')
let fileiplist = []
for(let i=0; i < parseInt(randint(1,10)); i++){
let currentchoicefile = randchoice(filelist)
termshow('-'+currentchoicefile)
fileiplist.push(currentchoicefile)
}
ipdatas[ip]['files'] = fileiplist
}
else{
termshow('This is the file on the distant machine')
for(let i = 0; i<ipdatas[ip]['files'].length; i++){
termshow('-'+ ipdatas[ip]['files'][i])
}
}
}
else{
if (datased){
termshow('This is the file on your computer: \n- my_datas.zip \n- servers_data.zip')
}
else{
termshow('This is the file on your computer: \n- my_datas.zip')
}
}
}
else if (lowx=='attack'){
if( connected){
termshow('the attack start... \n copying all the data in this server to your servers_data.zip file in your computer (it include all the file, folder etc.)...\nbreaking the server...\nDisconnected: The server is destroy')
connected = false
datased = true
ipdatas[ip]['destroyed'] = true
}
else{
termshow('error you are not connected, please connect to a distant server before executing this command')
}
}
else if( x==='help'){
termshow('The available commands: \n- help : print this message\n- ls : list the files and folders\n- pbk (only in your computer) : Get the password of an user from an ip address\n- ssh (only in your computer) : conect to a distant server with an user and an ip address (you have to use pbk to get the password)\n- attack (only in ssh servers) : start an attack that will add all the datas on the server in your servers_data.zip file and will destroy the server (warning this will no destroy only the server from the user it will destroy ALL the server (the address))\n- theme : switch the theme of the game\n- save : save the game in your localStorage (alternative to cookies)\n- import : import the game from your localStorage\n- matrix : start or stop a matrix rain animation (just for fun...)\n- exit : if you are connected to distant server (ssh) it deconnect you, if you are not connected it exit this game\n- infos : display infos on this game')
}
else if (lowx==='exit'){
if (connected){
termshow('disconnecting...')
connected=false
}
else{
termshow('Exiting the session...')
termshow('Exiting the game, thank to play to this game, don\'t hesitate to help me or to give me your feedback')
STOP = true
location = '/'
}
}
else if (lowx==='hack'){
if (connected){
termshow('--Start-of-the-hacking-program--')
for(let i = 0; i<randint(0,50);i++){
termshow(randchoice(codeline))
}
}
else{
termshow('you have to be connected')
}
}
else if (lowx=='infos'){
infos()
}
else if(x.startsWith('$$$')){
if(x === '$$$' || x === '$$$ '){
termshow('this command is for execute js code enter your js code after the $$$')
}
else{
try{
let tempcode = x.substring('$$$ '.length)
let newfunc = new Function (tempcode)
newfunc()
}
catch(e){
termshow('Il y a eu une erreur : '+e)
}
}
}
}
}
else{
let temp = terminput('your name: ')
if(temp.length<4){
document.getElementById('inptindic').innerHTML ='your name must have more than 4 characters '
}
else{
me = temp
named = true
document.getElementById('inptindic').innerHTML=''
}
}
window.requestAnimationFrame(loop)
}
loop()
//END OF MAIN-MODE CODE
//START OF STORY MODE CODE
// END OF STORY MODE CODE

View file

@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>CyberTermHack</title>
<meta charset="UTF-8">
<style>
:root{
--bg-color: black;
--txt-color: white;
}
html, body{
background-color:var(--bg-color);
color: var(--txt-color);
margin:0;
height:100%;
min-height:100vh;
display:flex;
flex-direction:column;
word-wrap: break-word;
word-break: break-all;
z-index:2
}
.second {
flex-grow: 1;
}
#termcontent{
display: fixed;
left:0;
top:0;
height:95%;
width:100%;
overflow: auto
}
#divinput{
display:flex;
left:0;
bottom:0;
height:5%;
width:100%
}
#terminpt{
border: 0px solid !important;
background-color: var(--bg-color);
color:var(--txt-color);
width:95%
}
/*#terminptdiv{
float: none
}*/
*:focus {
outline: none;
}
/*#divofinfos{
float:left
}*/
#matrixcanvas{
width:100%;
height:100%;
position:fixed;
z-index:-1
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!--username and ip: green, $ or %: white, commands: white-->
<div id="termcontent">
<!-- oldcommands and outputs -->
</div>
<div id="divinput">
<span id=spanofinfos><span id="inptindic"></span><span id="inptname"></span></span><span class=second><input id=terminpt type="text"/></span>
<!-- actual command with username and ip, $ or %, input for command, enter to send command -->
</div>
<canvas id=matrixcanvas style='width:100%; height: 100%'>
</canvas>
<script src="jsversion.js"></script>
</body>
</html>

View file

@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>CyberTermHack</title>
<meta charset="UTF-8">
<style>
:root{
--bg-color: black;
--txt-color: white;
}
html, body{
background-color:var(--bg-color);
color: var(--txt-color);
margin:0;
height:100%;
min-height:100vh;
display:flex;
flex-direction:column;
word-wrap: break-word;
word-break: break-all;
z-index:2
}
.second {
flex-grow: 1;
}
#termcontent{
display: fixed;
left:0;
top:0;
height:95%;
width:100%;
overflow: auto
}
#divinput{
display:flex;
left:0;
bottom:0;
height:5%;
width:100%
}
#terminpt{
border: 0px solid !important;
background-color: var(--bg-color);
color:var(--txt-color);
width:95%
}
/*#terminptdiv{
float: none
}*/
*:focus {
outline: none;
}
/*#divofinfos{
float:left
}*/
#matrixcanvas{
width:100%;
height:100%;
position:fixed;
z-index:-1
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!--username and ip: green, $ or %: white, commands: white-->
<div id="termcontent">
<!-- oldcommands and outputs -->
</div>
<div id="divinput">
<span id=spanofinfos><span id="inptindic"></span><span id="inptname"></span></span><span class=second><input id=terminpt type="text"/></span>
<!-- actual command with username and ip, $ or %, input for command, enter to send command -->
</div>
<canvas id=matrixcanvas style='width:100%; height: 100%'>
</canvas>
<script src="jsversion.js"></script>
</body>
</html>

View file

@ -0,0 +1,440 @@
// CYBERTERMHACK BY GZOD01
//START OF CYBERTERMHACK CODE
var inputcomplete = false
function randint(min, max){
return Math.floor(Math.random() * (max - min + 1) ) + min;
}
function stopmatrix(){
document.getElementById('matrixcanvas').remove()
let nc = document.createElement('canvas')
nc.setAttribute('id','matrixcanvas')
nc.style.width = '100%'
nc.style.height ='0%'
document.body.appendChild(nc)
}
function matrix(color){
let tcolor = ''
if(color==='cyan'){
tcolor ='#0ff'
}
else if(color==='blue'){
tcolor='#00f'
}
else if(color==='magenta'){
tcolor='#f0f'
}
else if(color==='red'){
tcolor='#f00'
}
else if(color==='green'){
tcolor='#0f0'
}
else if(color==='yellow'){
tcolor='#ff0'
}
else if(color==='white'){
tcolor='#fff'
}
else if(color==='purple'){
tcolor='#303'
}
var canvas = document.getElementById('matrixcanvas'),
ctx = canvas.getContext('2d');
canvas.style.height = '100%'
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
var letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890&éèçà@æ€ŧøþ@ßðđŋłĸħłµł»¢µ$£ù%^¨';
letters = letters.split('');
var fontSize = 10,
columns = canvas.width / fontSize;
var drops = [];
for (var i = 0; i < columns; i++) {
drops[i] = 1;
}
function draw() {
ctx.fillStyle = 'rgba(0, 0, 0, .1)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
for (var i = 0; i < drops.length; i++) {
var text = letters[Math.floor(Math.random() * letters.length)];
ctx.fillStyle = tcolor;
ctx.fillText(text, i * fontSize, drops[i] * fontSize);
drops[i]++;
if (drops[i] * fontSize > canvas.height && Math.random() > .95) {
drops[i] = 0;
}
}
}
setInterval(draw, 33);
}
function sleep(s) {
let ms = s*1000
return new Promise(resolve => setTimeout(resolve, ms));
}
function randchoice(list){
console.log(list[randint(0,list.length-1)])
return list[randint(0,list.length-1)]
}
//var historic = []
var lastx = ""
function historic(){
// terminpt.value=historic[historic.lengh-1-index]
document.getElementById('terminpt').value = lastx
}
onkeydown = function(e){
if(e.keyCode==9){
autocomplete()
}
}
onkeyup = function(e){
if(e.keyCode==13){
inputcomplete = true
}
else if(e.keyCode == 38){
historic()
}
}
function termshow(str){
let tc = document.getElementById('termcontent')
let nchild = document.createElement('div')
nchild.innerHTML = str.replace('\n','<br>')
tc.appendChild(nchild)
document.getElementById('termcontent').scrollTo(0,document.getElementById('termcontent').scrollHeight)
}
function terminput(str){
let tiname = document.getElementById('inptname')
tiname.innerHTML = str
let inpt = document.getElementById('terminpt')
if(inputcomplete){
console.log(inpt.value)
inputcomplete=false
let resultat = inpt.value
inpt.value = ''
return resultat
}
else{
return 'ERR'
}
}
var x = ""
function splitaddr(complete, cmd){
try{
let c = complete.substring(cmd.length)
let u = c.split('@')[0]
let a = c.split('@')[1]
if (a==undefined){
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
else{
return [u, a]
}
}
catch(e){
console.error(e)
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
}
function infos(){
termshow('01010101010101010<br>1.CyberTermGame.1<br>0.....By GZod01.....0<br>10101010101010101<br>Infos on the game : Hello my name is GZod01 and i make this game in javascript (base game in python) "for fun", I know this game is not reflecting the reality of the command on linux or windows machines but... it is a game...<br>Sorry if the english is not very good i speak french...')
}
stopmatrix()
var passwordlist = ["my_password","helloworld","ultra_secure_password","my_birthday"]
var filelist = ['picture.png','personnal_datas.csv', 'helloworld.py','i_hate_hackers.txt','speech_for_tomorrow.md', '.ha_ha_this_is_super_secret_file.txt','mydirectory/']
var connected = false
var datased = false
var STOP = false
infos()
var user = ""
var ip = ""
var password = ""
var destroyedip = []
var codeline = ["fn destroy(oiaf){executeshellcomand('destroy oiaf')}","hack-server()","destroy()","fn hack-server(files){for(var i = 0, i<len(files)){if (type_of_file(files[i])==='password_files_and_datas_files'){execcommand('copyfile_to_my_computer'); destroy(files)};", "print(01020003957058098409438409340&àà_09232983983983923999832983928398329389238938923892382938923899201809381093809é'802984029804802948049820840938éàç8309é_à'ç_éà'_09790872çà'àç_éè409724097240942èàçé'8è290479024798047298047904èé4908éè4) in serverdatas"]
termshow('starting session ...')
var me = ''
var list_of_command = ['ls','ssh','pbk','exit','theme','matrix','hack','attack','save','import','help','exit']
function autocomplete(){
let inptval = document.getElementById('terminpt').value
termshow('List of available commands starting with " '+inptval+' " :')
for(let i = 0; i<list_of_command.length; i++){
if(list_of_command[i].startsWith(inptval)){
termshow('- '+list_of_command[i])
}
}
}
named = false
// example of serversdatas: "ip":{"destroyed":true (or false), "files":listoffiles, "password":"password"}
var gamedatas = {
"serversdatas":{},
"username": me,
'colorscheme': 'default' //it can be green / red / blue / yellow
}
//END OF CYBERTERMHACK CODE
// START OF MAIN-MODE CODE
function gettheme(){
let r = document.querySelector(':root')
if (gamedatas.colorscheme ==='default'){
r.style.setProperty('--txt-color','white')
}
else if (gamedatas.colorscheme === 'green'){
r.style.setProperty('--txt-color','green')
}
else if (gamedatas.colorscheme === 'red'){
r.style.setProperty('--txt-color','red')
}
else if (gamedatas.colorscheme === 'blue'){
r.style.setProperty('--txt-color','blue')
}
else if (gamedatas.colorscheme === 'yellow'){
r.style.setProperty('--txt-color','yellow')
}
}
var ipdatas = {}
document.getElementById('terminpt').focus()
async function loop(){
gamedatas.serversdatas = ipdatas
if(named){
if(connected){
x = terminput(`${user}@${ip} $ `)
}
else{
x = terminput(`${me}@MYCOMPUTER # `)
}
if(x==='ERR'){}
else{
//historic.push(x)
lastx = x
let lowx = x.toLowerCase()
if(connected){
termshow(`${user}@${ip} $ ${x}`)
}
else{
termshow(`${me}@MYCOMPUTER # ${x}`)
}
if (lowx.startsWith('ssh')){
if (connected){
termshow('error you already are in distant server')
}
else{
if (splitaddr(x, 'ssh') === 'ERROR'){
}
else{
user = splitaddr(x, 'ssh')[0]
ip = splitaddr(x, 'ssh')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('connect to the computer with the ip '+ip+' from the user '+user+' ...')
if (ipdatas[ip]['destroyed']){
termshow('error this server is destroyed')
}
else{
if(ipdatas[ip]['password']==undefined){
termshow('you don\'t have the password of this server')
}
else{
await sleep(1)
termshow('Password: AUTOMATIC_PASSWORD_SYSTEM')
// while(temppass != ipdatas[ip]['password']){
// temppass = terminput('Password: ')
// }
await sleep(1)
termshow('connected')
connected=true
}
}
}
}
}
else if (lowx.startsWith('pbk')){
if (connected){
termshow('error you are on a distant server')
}
else{
if (splitaddr(x,'pbk')==='ERROR'){
splitaddr(x,'pbk')
}
else{
user=splitaddr(x, 'pbk')[0]
ip = splitaddr(x, 'pbk')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('Breaking the password of the user '+user+' to the computer with the ip '+ip+' ...')
password= randchoice(passwordlist)
ipdatas[ip]['password']=password
termshow('The password is : '+ password)
}
}
}
else if (lowx.startsWith('theme')){
if(lowx==='theme'||lowx==='theme '){
termshow('Switch the theme with this command,<br> the available colors are : default , yellow , red , blue , green . <br> execute the command like this: theme default or theme yellow , etc.')
}
else{
let nx = x.substring('theme '.length)
if(nx==='yellow' || nx ==='blue' || nx==='default' || nx ==='red' || nx === 'green'){
gamedatas.colorscheme = nx
gettheme()
}
else{
termshow('Switch the theme with this command,<br> the available colors are : default , yellow , red , blue , green . <br> execute the command like this: theme default or theme yellow , etc.')
}
}
}
else if (lowx.startsWith('matrix')){
if(lowx==='matrix'||lowx==='matrix '){
matrix(gamedatas.colorscheme)
}
else{
let nx = x.substring('matrix '.length)
if(nx==='yellow' || nx ==='blue' || nx==='white' || nx ==='red' || nx === 'green'||nx=='purple'|| nx=='cyan' || nx=='magenta'){
matrix(nx)
}
else if(nx==='stop'){
stopmatrix()
}
else{
termshow('Switch the theme with this command,<br> the available colors are : default , yellow , red , blue , green . <br> execute the command like this: theme default or theme yellow , etc.')
}
}
}
else if(lowx==='save'){
localStorage.setItem('hackergamedatas',JSON.stringify(gamedatas))
termshow('Data saved')
termshow(localStorage.getItem('hackergamedatas'))
}
else if(lowx==='import'){
let tmpdatas = localStorage.getItem('hackergamedatas')
if (tmpdatas == undefined){
termshow('you don\'t have any data saved, please execute the save command before to import')
}
else{
gamedatas = JSON.parse(tmpdatas)
}
}
else if (lowx=='ls'){
if (connected){
if (ipdatas[ip]['files'] == undefined){
termshow('This is the file on the distant machine')
let fileiplist = []
for(let i=0; i < parseInt(randint(1,10)); i++){
let currentchoicefile = randchoice(filelist)
termshow('-'+currentchoicefile)
fileiplist.push(currentchoicefile)
}
ipdatas[ip]['files'] = fileiplist
}
else{
termshow('This is the file on the distant machine')
for(let i = 0; i<ipdatas[ip]['files'].length; i++){
termshow('-'+ ipdatas[ip]['files'][i])
}
}
}
else{
if (datased){
termshow('This is the file on your computer: <br>- my_datas.zip <br>- servers_data.zip')
}
else{
termshow('This is the file on your computer: <br>- my_datas.zip')
}
}
}
else if (lowx=='attack'){
if( connected){
termshow('the attack start... <br> copying all the data in this server to your servers_data.zip file in your computer (it include all the file, folder etc.)...<br>breaking the server...<br>Disconnected: The server is destroy')
connected = false
datased = true
ipdatas[ip]['destroyed'] = true
}
else{
termshow('error you are not connected, please connect to a distant server before executing this command')
}
}
else if( x==='help'){
termshow('The available commands: <br>- help : print this message<br>- ls : list the files and folders<br>- pbk (only in your computer) : Get the password of an user from an ip address<br>- ssh (only in your computer) : conect to a distant server with an user and an ip address (you have to use pbk to get the password)<br>- attack (only in ssh servers) : start an attack that will add all the datas on the server in your servers_data.zip file and will destroy the server (warning this will no destroy only the server from the user it will destroy ALL the server (the address))<br>- theme : switch the theme of the game\n- save : save the game in your localStorage (alternative to cookies)\n- import : import the game from your localStorage\n- matrix : start or stop a matrix rain animation (just for fun...)\n- exit : if you are connected to distant server (ssh) it deconnect you, if you are not connected it exit this game<br>- infos : display infos on this game')
}
else if (lowx==='exit'){
if (connected){
termshow('disconnecting...')
connected=false
}
else{
termshow('Exiting the session...')
termshow('Exiting the game, thank to play to this game, don\'t hesitate to help me or to give me your feedback')
STOP = true
location = '/'
}
}
else if (lowx==='hack'){
if (connected){
termshow('--Start-of-the-hacking-program--')
for(let i = 0; i<randint(0,50);i++){
termshow(randchoice(codeline))
}
}
else{
termshow('you have to be connected')
}
}
else if (lowx=='infos'){
infos()
}
else if(x.startsWith('$$$')){
if(x === '$$$' || x === '$$$ '){
termshow('this command is for execute js code enter your js code after the $$$')
}
else{
try{
let tempcode = x.substring('$$$ '.length)
let newfunc = new Function (tempcode)
newfunc()
}
catch(e){
termshow('Il y a eu une erreur : '+e)
}
}
}
}
}
else{
let temp = terminput('your name: ')
if(temp.length<4){
document.getElementById('inptindic').innerHTML ='your name must have more than 4 characters '
}
else{
me = temp
named = true
document.getElementById('inptindic').innerHTML=''
}
}
window.requestAnimationFrame(loop)
}
loop()
//END OF MAIN-MODE CODE
//START OF STORY MODE CODE
// END OF STORY MODE CODE
// START OF DEV HELP API:
function sendinput(){inputcomplete=true}
function setinput(str){document.getElementById('terminpt').value=str}
function execcommand(str){setinput(str); sendinput()}
function last(){historic(); sendinput()}
function autoc(str){setinput(str); autocomplete(); sendinput()}
//END OF DEV HELP API

View file

@ -0,0 +1,118 @@
var x=""
function splitaddr(complete,cmd){
try{
let c= complete.substring(cmd.length())
let u = c.split('@')[0]
let a = c.split('@')[1]
return [u,a]
}
catch(e){
termshow('Please complete the command like this: '+cmd+'user@address')
return 'ERROR'
}
}
function infos(){
termshow('01010101010101010\n1 CyberTermGame 1\n0 By GZod01 0\n10101010101010101\nInfos on the game : Hello my name is GZod01 and i make this game in python "for fun", I know this game is not reflecting the reality of the command on linux or windows machines but... it is a game...\nSorry if the english is not very good i speak french...')
}
var passwordlist = [listofpassword]
var filelist = [listoffile]
var connected = false
var datased = false
infos()
var user=""
var ip=""
var password=""
var destroyedip=[temporar, i, will, move, to, serverdatas]
var codeline = [fake hack codelines]
termshow('startingsession...')
var me = terminput('your name: ')
// example of serversdatas: "user@ip":{"destroyed":True (or False), "files":listoffiles, "password":"password"}
var gamedatas = {
"serverdatas":{},
"username":me
}
function loop(){
if(connected){
x = terminput(`[${user}@${ip}] $ `)
}
else{
x = terminput(`[ ${me}@MYCOMPUTER ] %`)
}
if(x.startswith('ssh')){
if(connected){
termshow('error, you are already in a distant server')
}
else{
if(splitaddr(x,'ssh')=='ERROR'){
}
else{
user=splitaddr(x, 'ssh')[0]
ip = splitaddr(x, 'ssh')[1]
termshow('connect to the computer with the ip '+ip+' from the user '+user+' ...')
if(ip in destroyedip){
termshow('error this server is destroyed')
}
else{
sleep(1)
terminput('Password: ')
sleep(0.5)
termshow('connected')
connected = true
}
}
}
}
else if (x.startswith('pbk')){
if(connected){
termshow('error you are on a distant server')
}
else{
//TO CONTINUE
}
}
}
/*
else:
if splitaddr(x,'pbk')=='ERROR':
splitaddr(x,'pbk')
else:
user=splitaddr(x, 'pbk')[0]
ip = splitaddr(x, 'pbk')[1]
print('Breaking the password of the user '+user+' to the computer with the ip '+ip+' ...')
password= random.choice(passwordlist)
print('The password is : '+ password)
elif x=='ls':
if connected:
print('This is the file on the distant machine')
for i in range(random.randint(1,10)):
print('-'+random.choice(filelist))
else:
if datased:
print('This is the file on your computer: \n- my_datas.zip \n- servers_data.zip')
else:
print('This is the file on your computer: \n- my_datas.zip')
elif x=='attack':
if connected:
print('the attack start... \n copying all the data in this server to your servers_data.zip file in your computer (it include all the file, folder etc.)...\nbreaking the server...\nDisconnected: The server is destroy')
connected = False
datased = True
destroyedip.append(ip)
else:
print('error you are not connected, please connect to a distant server before executing this command')
elif x=='help':
print('The available commands: \n- help : print this message\n- ls : list the files and folders\n- pbk (only in your computer) : Get the password of an user from an ip address\n- ssh (only in your computer) : conect to a distant server with an user and an ip address (you have to use pbk to get the password)\n- attack (only in ssh servers) : start an attack that will add all the datas on the server in your servers_data.zip file and will destroy the server\n- exit : if you are connected to distant server (ssh) it deconnect you, if you are not connected it exit this game\n- infos : display infos on this game')
elif x=='exit':
if connected:
print('disconnecting...')
connected=False
else:
print('Exiting the session...')
print('Exiting the game, thank to play to this game, don\'t hesitate to help me or to give me your feedback')
break
elif x=='hack':
if connected:
print('--Start-of-the-hacking-program--')
for i in range(random.randint(0,50)):
print(random.choice(codeline))
else:
print('you have to be connected')*/

View file

@ -0,0 +1,105 @@
import time
import random
import curses
x = ""
def splitaddr(complete, cmd):
try:
c = complete[len(cmd):]
u = c.split('@')[0]
a = c.split('@')[1]
return [u, a]
except IndexError:
print('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
def infos():
print('01010101010101010\n1 CyberTermGame 1\n0 By GZod01 0\n10101010101010101\nInfos on the game : Hello my name is GZod01 and i make this game in python "for fun", I know this game is not reflecting the reality of the command on linux or windows machines but... it is a game...\nSorry if the english is not very good i speak french...')
passwordlist = ["my_password","helloworld","ultra_secure_password","my_birthday"]
filelist = ['picture.png','personnal_datas.csv', 'helloworld.py','i_hate_hackers.txt','speech_for_tomorrow.md', '.ha_ha_this_is_super_secret_file.txt','mydirectory/']
connected = False
datased = False
infos()
user = ""
ip = ""
password = ""
destroyedip = []
codeline = ["fn destroy(oiaf){executeshellcomand('destroy oiaf')}","hack-server()","destroy()","fn hack-server(files){for(var i = 0, i<len(files)){if (type_of_file(files[i])==='password_files_and_datas_files'){execcommand('copyfile_to_my_computer'); destroy(files)};", "print(01020003957058098409438409340&àà_09232983983983923999832983928398329389238938923892382938923899201809381093809é'802984029804802948049820840938éàç8309é_à'ç_éà'_09790872çà'àç_éè409724097240942èàçé'8è290479024798047298047904èé4908éè4) in serverdatas"]
print('starting session ...')
me = input('your name: ')
# example of serversdatas: "user@ip":{"destroyed":True (or False), "files":listoffiles, "password":"password"}
gamedatas = {
"serversdatas":{},
"username": me
}
def app():
while True:
if connected:
x = input(f'[{user}@{ip}] $ ')
else:
x = input(f'[{me}@MYCOMPUTER] % ')
if x.startswith('ssh'):
if connected:
print('error you already are in distant server')
else:
if splitaddr(x, 'ssh') == 'ERROR':
splitaddr(x, 'ssh')
else:
user = splitaddr(x, 'ssh')[0]
ip = splitaddr(x, 'ssh')[1]
print('connect to the computer with the ip '+ip+' from the user '+user+' ...')
if ip in destroyedip:
print('error this server is destroyed')
else:
time.sleep(1)
input('Password: ')
time.sleep(0.5)
print('connected')
connected=True
elif x.startswith('pbk'):
if connected:
print('error you are on a distant server')
else:
if splitaddr(x,'pbk')=='ERROR':
splitaddr(x,'pbk')
else:
user=splitaddr(x, 'pbk')[0]
ip = splitaddr(x, 'pbk')[1]
print('Breaking the password of the user '+user+' to the computer with the ip '+ip+' ...')
password= random.choice(passwordlist)
print('The password is : '+ password)
elif x=='ls':
if connected:
print('This is the file on the distant machine')
for i in range(random.randint(1,10)):
print('-'+random.choice(filelist))
else:
if datased:
print('This is the file on your computer: \n- my_datas.zip \n- servers_data.zip')
else:
print('This is the file on your computer: \n- my_datas.zip')
elif x=='attack':
if connected:
print('the attack start... \n copying all the data in this server to your servers_data.zip file in your computer (it include all the file, folder etc.)...\nbreaking the server...\nDisconnected: The server is destroy')
connected = False
datased = True
destroyedip.append(ip)
else:
print('error you are not connected, please connect to a distant server before executing this command')
elif x=='help':
print('The available commands: \n- help : print this message\n- ls : list the files and folders\n- pbk (only in your computer) : Get the password of an user from an ip address\n- ssh (only in your computer) : conect to a distant server with an user and an ip address (you have to use pbk to get the password)\n- attack (only in ssh servers) : start an attack that will add all the datas on the server in your servers_data.zip file and will destroy the server\n- exit : if you are connected to distant server (ssh) it deconnect you, if you are not connected it exit this game\n- infos : display infos on this game')
elif x=='exit':
if connected:
print('disconnecting...')
connected=False
else:
print('Exiting the session...')
print('Exiting the game, thank to play to this game, don\'t hesitate to help me or to give me your feedback')
break
elif x=='hack':
if connected:
print('--Start-of-the-hacking-program--')
for i in range(random.randint(0,50)):
print(random.choice(codeline))
else:
print('you have to be connected')
curses.wrapper(app)

View file

@ -0,0 +1,124 @@
import time
import random
x = ""
def splitaddr(complete, cmd):
try:
c = complete[len(cmd):]
u = c.split('@')[0]
a = c.split('@')[1]
return [u, a]
except IndexError:
print('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
def infos():
print('01010101010101010\n1 CyberTermGame 1\n0 By GZod01 0\n10101010101010101\nInfos on the game : Hello my name is GZod01 and i make this game in python "for fun", I know this game is not reflecting the reality of the command on linux or windows machines but... it is a game...\nSorry if the english is not very good i speak french...')
passwordlist = ["my_password","helloworld","ultra_secure_password","my_birthday"]
filelist = ['picture.png','personnal_datas.csv', 'helloworld.py','i_hate_hackers.txt','speech_for_tomorrow.md', '.ha_ha_this_is_super_secret_file.txt','mydirectory/']
connected = False
datased = False
infos()
user = ""
ip = ""
password = ""
destroyedip = []
codeline = ["fn destroy(oiaf){executeshellcomand('destroy oiaf')}","hack-server()","destroy()","fn hack-server(files){for(var i = 0, i<len(files)){if (type_of_file(files[i])==='password_files_and_datas_files'){execcommand('copyfile_to_my_computer'); destroy(files)};", "print(01020003957058098409438409340&àà_09232983983983923999832983928398329389238938923892382938923899201809381093809é'802984029804802948049820840938éàç8309é_à'ç_éà'_09790872çà'àç_éè409724097240942èàçé'8è290479024798047298047904èé4908éè4) in serverdatas"]
print('starting session ...')
me = input('your name: ')
# example of serversdatas: "user@ip":{"destroyed":True (or False), "files":listoffiles, "password":"password"}
gamedatas = {
"serversdatas":{},
"username": me
}
while True:
if connected:
x = input(f'{user}@{ip} $ ')
else:
x = input(f'{me}@MYCOMPUTER # ')
if x.startswith('ssh'):
if connected:
print('error you already are in distant server')
else:
if splitaddr(x, 'ssh') == 'ERROR':
splitaddr(x, 'ssh')
else:
user = splitaddr(x, 'ssh')[0]
ip = splitaddr(x, 'ssh')[1]
print('connect to the computer with the ip '+ip+' from the user '+user+' ...')
if ip in destroyedip:
print('error this server is destroyed')
else:
time.sleep(1)
input('Password: ')
time.sleep(0.5)
print('connected')
connected=True
elif x.startswith('pbk'):
if connected:
print('error you are on a distant server')
else:
if splitaddr(x,'pbk')=='ERROR':
splitaddr(x,'pbk')
else:
user=splitaddr(x, 'pbk')[0]
ip = splitaddr(x, 'pbk')[1]
print('Breaking the password of the user '+user+' to the computer with the ip '+ip+' ...')
password= random.choice(passwordlist)
print('The password is : '+ password)
elif x=='ls':
if connected:
print('This is the file on the distant machine')
for i in range(random.randint(1,10)):
print('-'+random.choice(filelist))
else:
if datased:
print('This is the file on your computer: \n- my_datas.zip \n- servers_data.zip')
else:
print('This is the file on your computer: \n- my_datas.zip')
elif x=='attack':
if connected:
print('the attack start... \n copying all the data in this server to your servers_data.zip file in your computer (it include all the file, folder etc.)...\nbreaking the server...\nDisconnected: The server is destroy')
connected = False
datased = True
destroyedip.append(ip)
else:
print('error you are not connected, please connect to a distant server before executing this command')
elif x=='help':
print('The available commands: \n- help : print this message\n- ls : list the files and folders\n- pbk (only in your computer) : Get the password of an user from an ip address\n- ssh (only in your computer) : conect to a distant server with an user and an ip address (you have to use pbk to get the password)\n- attack (only in ssh servers) : start an attack that will add all the datas on the server in your servers_data.zip file and will destroy the server\n- exit : if you are connected to distant server (ssh) it deconnect you, if you are not connected it exit this game\n- infos : display infos on this game')
elif x=='exit':
if connected:
print('disconnecting...')
connected=False
else:
print('Exiting the session...')
print('Exiting the game, thank to play to this game, don\'t hesitate to help me or to give me your feedback')
break
elif x=='hack':
if connected:
print('--Start-of-the-hacking-program--')
for i in range(random.randint(0,50)):
print(random.choice(codeline))
else:
print('you have to be connected')
elif x=='infos':
infos()
elif x=='$$$':
pcode=''
ccode=''
tocancel=False
while True:
pcode = input()
if pcode=='$$$':
break
elif pcode=='$HELP$':
print('type $$$ to exit the python code')
elif pcode=='$CANCEL':
tocancel=True
else:
ccode = ccode+pcode+'\n'
if tocancel:
pass
else:
exec(ccode)

View file

@ -0,0 +1 @@
storymode and custom real program

View file

@ -0,0 +1,79 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<title>CyberTermHack</title>
<meta charset="UTF-8">
<style>
:root{
--bg-color: black;
--txt-color: white;
}
html, body{
background-color:var(--bg-color);
color: var(--txt-color);
margin:0;
height:100%;
min-height:100vh;
display:flex;
flex-direction:column;
word-wrap: break-word;
word-break: break-all;
z-index:2
}
.second {
flex-grow: 1;
}
#termcontent{
display: fixed;
left:0;
top:0;
height:95%;
width:100%;
overflow: auto
}
#divinput{
display:flex;
left:0;
bottom:0;
height:5%;
width:100%
}
#terminpt{
border: 0px solid !important;
background-color: var(--bg-color);
color:var(--txt-color);
width:95%
}
/*#terminptdiv{
float: none
}*/
*:focus {
outline: none;
}
/*#divofinfos{
float:left
}*/
#matrixcanvas{
width:100%;
height:100%;
position:fixed;
z-index:-1
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!--username and ip: green, $ or %: white, commands: white-->
<div id="termcontent">
<!-- oldcommands and outputs -->
</div>
<div id="divinput">
<span id=spanofinfos><span id="inptindic"></span><span id="inptname"></span></span><span class=second><input id=terminpt type="text"/></span>
<!-- actual command with username and ip, $ or %, input for command, enter to send command -->
</div>
<canvas id=matrixcanvas style='width:100%; height: 100%'>
</canvas>
<script src=//api.gzod01.fr/scripts/termapi.js></script>
<script src="maincode.js"></script>
</body>
</html>

View file

@ -0,0 +1,426 @@
var x = ""
function splitaddr(complete, cmd){
try{
let c = complete.substring(cmd.length)
let u = c.split('@')[0]
let a = c.split('@')[1]
if (a==undefined){
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
else{
return [u, a]
}
}
catch(e){
console.error(e)
termshow('Please complete the command like this: '+cmd+' user@address')
return 'ERROR'
}
}
function infos(){
termshow('01010101010101010\n1.CyberTermGame.1\n0.....By GZod01.....0\n10101010101010101\nInfos on the game : Hello my name is GZod01 and i make this game in javascript (base game in python) "for fun", I know this game is not reflecting the reality of the command on linux or windows machines but... it is a game...\nSorry if the english is not very good i speak french...')
}
stopmatrix()
var passwordlist = ["my_password","helloworld","ultra_secure_password","my_birthday"]
var filelist = ['picture.png','personnal_datas.csv', 'helloworld.py','i_hate_hackers.txt','speech_for_tomorrow.md', '.ha_ha_this_is_super_secret_file.txt','mydirectory/']
var connected = false
var datased = false
var STOP = false
infos()
var user = ""
var ip = ""
var password = ""
var destroyedip = []
var codeline = ["fn destroy(oiaf){executeshellcomand('destroy oiaf')}","hack-server()","destroy()","fn hack-server(files){for(var i = 0, i<len(files)){if (type_of_file(files[i])==='password_files_and_datas_files'){execcommand('copyfile_to_my_computer'); destroy(files)};", "print(01020003957058098409438409340&àà_09232983983983923999832983928398329389238938923892382938923899201809381093809é'802984029804802948049820840938éàç8309é_à'ç_éà'_09790872çà'àç_éè409724097240942èàçé'8è290479024798047298047904èé4908éè4) in serverdatas"]
termshow('starting session ...')
var me = ''
var list_of_command = ['ls','ssh','pbk','exit','theme','matrix','hack','attack','save','import','help','exit']
function autocomplete(){
let inptval = document.getElementById('terminpt').value
termshow('List of available commands starting with " '+inptval+' " :')
for(let i = 0; i<list_of_command.length; i++){
if(list_of_command[i].startsWith(inptval)){
termshow('- '+list_of_command[i])
}
}
}
named = false
// example of serversdatas: "ip":{"destroyed":true (or false), "files":listoffiles, "password":"password"}
var gamedatas = {
"serversdatas":{},
"username": me,
'colorscheme': 'default' //it can be green / red / blue / yellow
}
// START OF MAIN-MODE CODE
function gettheme(){
let r = document.querySelector(':root')
if (gamedatas.colorscheme ==='default'){
r.style.setProperty('--txt-color','white')
}
else if (gamedatas.colorscheme === 'green'){
r.style.setProperty('--txt-color','green')
}
else if (gamedatas.colorscheme === 'red'){
r.style.setProperty('--txt-color','red')
}
else if (gamedatas.colorscheme === 'blue'){
r.style.setProperty('--txt-color','blue')
}
else if (gamedatas.colorscheme === 'yellow'){
r.style.setProperty('--txt-color','yellow')
}
}
var ipdatas = {}
document.getElementById('terminpt').focus()
async function loop(){
gamedatas.serversdatas = ipdatas
if(named){
if(connected){
x = terminput(`${user}@${ip} $ `)
}
else{
x = terminput(`${me}@MYCOMPUTER # `)
}
if(x==='ERR'){}
else{
//historic.push(x)
lastx = x
let lowx = x.toLowerCase()
if(connected){
termshow(`${user}@${ip} $ ${x}`)
}
else{
termshow(`${me}@MYCOMPUTER # ${x}`)
}
if (lowx.startsWith('ssh')){
hackssh(x)
}
else if (lowx.startsWith('pbk')){
hackpbk(x)
}
else if (lowx.startsWith('theme')){
hacktheme(x)
}
else if (lowx.startsWith('matrix')){
hackmatrix(x)
}
else if(lowx==='save'){
hacksave()
}
else if(lowx==='import'){
hackimport()
}
else if (lowx=='ls'){
hackls()
}
else if (lowx=='attack'){
hackattack()
}
else if( x==='help'){
hackhelp()
}
else if (lowx==='exit'){
hackexit()
}
else if (lowx==='hack'){
hackhack()
}
else if (lowx=='infos'){
infos()
}
else if(x.startsWith('$$$')){
execjscode(x)
}
}
}
else{
let temp = terminput('your name: ')
if(temp.length<4){
document.getElementById('inptindic').innerHTML ='your name must have more than 4 characters '
}
else{
me = temp
named = true
document.getElementById('inptindic').innerHTML=''
}
}
window.requestAnimationFrame(loop)
}
loop()
//----------------------------------------------------------------------------------------------
//END OF MAIN-MODE CODE
// START OF COMMAND FUNCTIONS
async function execjscode(cx){
if(cx === '$$$' || cx === '$$$ '){
termshow('this command is for execute js code enter your js code after the $$$')
}
else{
try{
let tempcode = cx.substring('$$$ '.length)
let newfunc = new Function (tempcode)
newfunc()
}
catch(e){
termshow('Il y a eu une erreur : '+e)
}
}
}
async function hackhack(){
if (connected){
termshow('--Start-of-the-hacking-program--')
for(let i = 0; i<randint(0,50);i++){
termshow(randchoice(codeline))
}
}
else{
termshow('you have to be connected')
}
}
async function hackexit(){
if (connected){
termshow('disconnecting...')
connected=false
}
else{
termshow('Exiting the session...')
termshow('Exiting the game, thank to play to this game, don\'t hesitate to help me or to give me your feedback')
STOP = true
location = '/'
}
}
function hackhelp(){
termshow('The available commands: \n- help : print this message\n- ls : list the files and folders\n- pbk (only in your computer) : Get the password of an user from an ip address\n- ssh (only in your computer) : conect to a distant server with an user and an ip address (you have to use pbk to get the password)\n- attack (only in ssh servers) : start an attack that will add all the datas on the server in your servers_data.zip file and will destroy the server (warning this will no destroy only the server from the user it will destroy ALL the server (the address))\n- theme : switch the theme of the game\n- save : save the game in your localStorage (alternative to cookies)\n- import : import the game from your localStorage\n- matrix : start or stop a matrix rain animation (just for fun...)\n- exit : if you are connected to distant server (ssh) it deconnect you, if you are not connected it exit this game\n- infos : display infos on this game')
}
async function hackattack(){
if( connected){
termshow('the attack start... \n copying all the data in this server to your servers_data.zip file in your computer (it include all the file, folder etc.)...\nbreaking the server...\nDisconnected: The server is destroy')
connected = false
datased = true
ipdatas[ip]['destroyed'] = true
}
else{
termshow('error you are not connected, please connect to a distant server before executing this command')
}
}
async function hackls(){
if (connected){
if (ipdatas[ip]['files'] == undefined){
termshow('This is the file on the distant machine')
let fileiplist = []
for(let i=0; i < parseInt(randint(1,10)); i++){
let currentchoicefile = randchoice(filelist)
termshow('-'+currentchoicefile)
fileiplist.push(currentchoicefile)
}
ipdatas[ip]['files'] = fileiplist
}
else{
termshow('This is the file on the distant machine')
for(let i = 0; i<ipdatas[ip]['files'].length; i++){
termshow('-'+ ipdatas[ip]['files'][i])
}
}
}
else{
if (datased){
termshow('This is the file on your computer: \n- my_datas.zip \n- servers_data.zip')
}
else{
termshow('This is the file on your computer: \n- my_datas.zip')
}
}
}
async function hackimport(){
let tmpdatas = localStorage.getItem('hackergamedatas')
if (tmpdatas == undefined){
termshow('you don\'t have any data saved, please execute the save command before to import')
}
else{
gamedatas = JSON.parse(tmpdatas)
}
}
function hacksave(){
localStorage.setItem('hackergamedatas',JSON.stringify(gamedatas))
termshow('Data saved')
termshow(localStorage.getItem('hackergamedatas'))
}
function hackmatrix(lowx){
if(lowx==='matrix'||lowx==='matrix '){
matrix(gamedatas.colorscheme)
}
else{
let nx = x.substring('matrix '.length)
if(nx==='yellow' || nx ==='blue' || nx==='white' || nx ==='red' || nx === 'green'||nx=='purple'|| nx=='cyan' || nx=='magenta'){
matrix(nx)
}
else if(nx==='stop'){
stopmatrix()
}
else{
termshow('Switch the theme with this command,\n the available colors are : default , yellow , red , blue , green . \n execute the command like this: theme default or theme yellow , etc.')
}
}
}
function hacktheme(lowx){
if(lowx==='theme'||lowx==='theme '){
termshow('Switch the theme with this command,\n the available colors are : default , yellow , red , blue , green . \n execute the command like this: theme default or theme yellow , etc.')
}
else{
let nx = x.substring('theme '.length)
if(nx==='yellow' || nx ==='blue' || nx==='default' || nx ==='red' || nx === 'green'){
gamedatas.colorscheme = nx
gettheme()
}
else{
termshow('Switch the theme with this command,\n the available colors are : default , yellow , red , blue , green . \n execute the command like this: theme default or theme yellow , etc.')
}
}
}
async function hackpbk(x){
if (connected){
termshow('error you are on a distant server')
}
else{
if (splitaddr(x,'pbk')==='ERROR'){
splitaddr(x,'pbk')
}
else{
user=splitaddr(x, 'pbk')[0]
ip = splitaddr(x, 'pbk')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('Breaking the password of the user '+user+' to the computer with the ip '+ip+' ...')
password= randchoice(passwordlist)
ipdatas[ip]['password']=password
termshow('The password is : '+ password)
}
}
}
async function hackssh(x){
if (connected){
termshow('error you already are in distant server')
}
else{
if (splitaddr(x, 'ssh') === 'ERROR'){
}
else{
user = splitaddr(x, 'ssh')[0]
ip = splitaddr(x, 'ssh')[1]
if(ipdatas[ip]==undefined){
ipdatas[ip]={}
}
termshow('connect to the computer with the ip '+ip+' from the user '+user+' ...')
if (ipdatas[ip]['destroyed']){
termshow('error this server is destroyed')
}
else{
if(ipdatas[ip]['password']==undefined){
termshow('you don\'t have the password of this server')
}
else{
await sleep(1)
termshow('Password: AUTOMATIC_PASSWORD_SYSTEM')
// while(temppass != ipdatas[ip]['password']){
// temppass = terminput('Password: ')
// }
await sleep(1)
termshow('connected')
connected=true
}
}
}
}
}
//----------------------------------------------------------------------------------------------------------------
// END OF COMMAND FUNCTIONS
if(true){}
else{
//START OF INGAME PROGRAM CODES
//sorry it is too difficult to create
//t and x for transform and execute
function tandx(code, originactions={'ALERTME':'','ADD':''}){
let lcode = code.split('\n')
for(let i =0; i<lcode.length; i++){
if(lcode==='ALERTME'){
termshow('ALERT : '+originactions['ALERTME'])
}
else if(lcode==='ADD'){
try{
new Function(originactions['ADD'])()
}
catch(e){cwarn('ERREUR DANS LE CODE SOURCE: '+e)}
}
}
}
var listofconnected = []
var connectedevent = {
'name':'',
'ip':''
}
function on_connected_to_me(code){
let actions={
'ALERTME': 'ALERT SOMEONE CONNECT TO YOU',
'ADD':'listofconnected.push(connectedevent.name+";"+connectedevent.ip")'
}
tandx(code, actions)
}
// END OF REAL PROGRAM CODES
// sorry it's very difficult
//START OF STORY MODE CODE
var lifes = 3
function storyloop(condition, toexecute, quantity_of_try=3){
x = terminput(me+'@'+'storymode')
let trys=0
if(x==='ERR'){}
else{
if(condition){
toexecute()
}
else{
quantity
}
}
}
async function chap1m1(){
termshow('WELCOME TO THE STORY MODE')
await sleep(2)
termshow('NOW YOU WILL HAVE TO HACK A SERVER')
await sleep(2)
termshow('SORRY YOU DON\'T KNOW WHO I AM')
await sleep(0.5)
termshow('MY NAME IS HACKIA AND I\'M AN IA CREATED TO HELP THE HACKER BEGINNER')
termshow('NOW SSH TO THE SERVER AT THE IP 1234.5678.9012 FROM THE USER ROBERT (type ssh name_of_user@ip_of_server)')
}
// END OF STORY MODE CODE
}

View file

@ -0,0 +1,81 @@
<!--YOUR PAGE HAVE TO CONTAIN THESE ELEMENT FOR THE API TO WORK:-->
<script>
document.body.innerText = `
YOUR PAGE HAVE TO CONTAIN THESE ELEMENT FOR THE API TO WORK:
<!DOCTYPE html>
<html lang="fr">
<head>
<title>TO REPLACE WITH YOUR TITLE</title>
<meta charset="UTF-8">
<style>
:root{
--bg-color: black;
--txt-color: white;
}
html, body{
background-color:var(--bg-color);
color: var(--txt-color);
margin:0;
height:100%;
min-height:100vh;
display:flex;
flex-direction:column;
word-wrap: break-word;
word-break: break-all;
z-index:2
}
.second {
flex-grow: 1;
}
#termcontent{
display: fixed;
left:0;
top:0;
height:95%;
width:100%;
overflow: auto
}
#divinput{
display:flex;
left:0;
bottom:0;
height:5%;
width:100%
}
#terminpt{
border: 0px solid !important;
background-color: var(--bg-color);
color:var(--txt-color);
width:95%
}
/*#terminptdiv{
float: none
}*/
*:focus {
outline: none;
}
/*#divofinfos{
float:left
}*/
#matrixcanvas{
width:100%;
height:100%;
position:fixed;
z-index:-1
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<!--username and ip: green, $ or %: white, commands: white-->
<div id="termcontent">
</div>
<div id="divinput">
<span id=spanofinfos><span id="inptindic"></span><span id="inptname"></span></span><span class=second><input id=terminpt type="text"/></span>
</div>
<canvas id=matrixcanvas style='width:100%; height: 100%'>
</canvas>
<script src="//api.gzod01.fr/scripts/termapi.js">&lt/script>
</body>
</html>`</script>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>index.html</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<ul><h1>Liste des versions</h1><li-a ref="V0.1/">Version 0.1</li-a><li-a ref="./V0.1.2:OPTIMIZED/">Version O.1.2 OPTIMISEE</li-a><li-a ref="V0.2/">Version 0.2 <span style="color:white; background-color:red">NEWEST</span></li-a></ul>
<script>
class ListAnchor extends HTMLElement { // (1)
connectedCallback() {
let t_li = document.createElement('li')
let t_a = document.createElement('a')
t_a.href= this.getAttribute('ref')
t_a.innerHTML = this.innerHTML
t_li.appendChild(t_a)
this.replaceWith(t_li)
}
}
customElements.define("li-a", ListAnchor);
</script>
</div>
<div id="footer"></div>
</body>
</html>

34
main-site/about.html Normal file
View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>A Propos</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<p>Ceci est le site de GZod01 sur ce site vous pouvez trouver les <a href="/games">Jeux</a> que j'ai créé (sauf exceptions), les <a href="/services">Services</a> que je propose, mes <a href="/projects">Projets</a> et autres.</p>
<p>Si vous voulez me contacter pour me demander des infos, me suggèrer quelque chose, me rejoindre, me proposer un projet ou autres, vous pouvez vous rendre sur la page de <a href="/contact">Contact</a>.</p>
<p>Le <a href="/sitemap">Plan du Site</a> regroupe des liens vers toutes les pages disponibles sur mon site (en tout cas les pages principales).</p>
<p> Vous pouvez retrouver les <a href=/legal>Mentions Légales</a> sur <a href="/legal">cette page</a>.</p><br>
<p>Autres Sites (Sous Domaines de celui-ci):</p>
<ul>
<li><a href="//blog.gzod01.fr">blog.gzod01.fr</a> : Mon Blog principal sur lequel je poste des articles sur la programmation (et moins souvent sur les jeux vidéos).</li>
<li><a href="//blog2.gzod01.fr">blog2.gzod01.fr</a> : Mon Blog secondaire sur lequel je poste des articles sur des sujets plus globaux (un peu sur tout et n'importe quoi).</li>
<li><a href="//host.gzod01.fr">host.gzod01.fr</a> : Mon service d'hébérgement de page (explications sur le site).</li>
<li><a href="//api.gzod01.fr">api.gzod01.fr</a> : Les apis que j'ai créé pour mon site ou pour d'autres projets sont sur ce domaine (StyleSheet CSS, Script JS, Headers et Footers HTML, etc.)</li>
<li><a href="//auth.gzod01.fr">auth.gzod01.fr</a> : Mon service d'authentification</li>
</ul>
<br>
<p>
A propos de moi: Developpeur Français, j'ai des compétences en Python, HTML, JS, un peu de CSS, un peu de GDScript(le language de Godot). J'essaye d'apprendre des languages de programmation comme: PHP, C, C++, C#, Rust. J'utilise le pseudonyme de GZod01 car je préfère garder mon identité secrète pour le moment.</p>
<br><br><br><p>Au fait, petit easter egg, appuyez sur ce bouton pour activer le thème matrix sur ce site</p><button onclick="localStorage.setItem('colorscheme','matrix'); gettheme()">THEME MATRIX</button>
</div>
<div id="footer"></div>
</body>
</html>

278
main-site/bookmark.html Normal file
View file

@ -0,0 +1,278 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>Site Bookmarker</title>
<style>
*{
box-sizing: border-box;
font-family: sans-serif;
}
body{
margin: 0;
padding: 0;
background-color: #333333;
}
a{
text-decoration: none;
color: #fff;
}
/*Styling title*/
h1{
width: 100%;
height: 80px;
text-align: center;
line-height: 80px;
margin: 0;
padding: 0;
background-color: #47CF73;
letter-spacing: 2px;
word-spacing: 8px;
color: #000;
}
h2{
color: #47CF73;
}
.container{
width: 600px;
min-height: 150px;
background-color: #333333;
margin: 0 auto;
}
/*Styling form section*/
.form{
width: 100%;
height: auto;
background-color: #555555;
padding: 40px 50px;
margin: 20px 0;
}
.input-field{
display: flex;
flex-direction: column;
align-items: center;
margin-bottom: 15px;
}
.input-field input[type="text"]{
width: 250px;
height: 25px;
outline: none;
border: none;
background-color: transparent;
border-bottom: 2px solid #47CF73;
padding-left: 10px;
color: #fff;
}
.input-field label{
color: #47CF73;
font-weight: bold;
margin-bottom: 5px;
}
.save_button{
display: block;
margin: 0 auto;
border: none;
width: 70px;
height: 25px;
background-color: #47CF73;
color: #000;
cursor: pointer;
outline: none;
}
/*Styling Bookmarks section*/
.bookmarks{
width: 100%;
background-color: #555555;
padding: 20px;
}
.bookmark{
display: flex;
align-items: center;
width: 300px;
height: 40px;
padding: 5px 20px;
background-color: #FAFAFA;
margin-bottom: 10px;
background-color: #333333;
}
.bookmark span{
flex: 1;
font-weight: bold;
letter-spacing: 1.5px;
color: #fff;
}
.bookmark .visit{
width: 50px;
height: 25px;
line-height: 25px;
text-align: center;
background-color: #47CF73;
color: #000;
border-radius: 5px;
margin: 0 5px;
}
.bookmark .delete{
width: 60px;
height: 25px;
line-height: 25px;
text-align: center;
background-color: #F44336;
border-radius: 5px;
}
</style>
</head>
<body>
<h1>Site Bookmarker</h1>
<div class="container">
<!-- form to enter details of site -->
<form class="form" method=post action="#">
<div class="input-field">
<label for="site_name">Name</label>
<input name="site_name" type="text"
placeholder="site name">
</div>
<div class="input-field">
<label for="url">URL</label>
<input name="url" type="text"
placeholder="https://www.example.com">
</div>
<button class="save_button">Save</button>
</form>
<!-- section where bookmarks will be displayed -->
<h2>Saved Bookmarks</h2>
<div class="bookmarks"></div>
</div>
<!-- link the JavaScript file here -->
<script>
// Select the save button
var button = document.querySelector(".save_button");
// Select the input box
var siteName = document.querySelector("[name='site_name']");
var url = document.querySelector("[name='url']");
// Select the <div> with class="bookmarks"
var bookmarksSection = document.querySelector(".bookmarks");
// Hold bookmarks in local storage
if(typeof(localStorage.bookmark) == "undefined"){
localStorage.bookmark = "";
}
// listen for form submit
button.addEventListener("click", function(e){
// Prevent the page from reloading when submitting the form
e.preventDefault();
let patterURL = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;
let arrayItems, check = false, adr, itemAdr;
// Validation of form and URL
if(siteName.value === ""){
alert("you must fill the siteName input");
} else if(url.value === ""){
alert("you must fill the url input");
} else if(!patterURL.test(url.value)){
alert("you must enter a valid url");
} else{
arrayItems = localStorage.bookmark.split(";");
adr = url.value;
adr = adr.replace(/http:\/\/|https:\/\//i, "");
arrayItems.length--;
// Check if website is already bookmarked
for(item of arrayItems){
itemAdr = item.split(',')[1].replace(/http:\/\/|https:\/\//i,"");
if(itemAdr == adr){
check = true;
}
}
if(check == true){
alert("This website is already bookmarked");
}
else{
// If all checks are correct,add bookmark to local storage
localStorage.bookmark += `${siteName.value},${url.value};`;
addBookmark(siteName.value, url.value);
siteName.value = "";
url.value = "";
}
}
});
// Function to add the bookmark
function addBookmark(name, url){
let dataLink = url;
// After obtaining a bookmark, we display it in a div and add
// a button to visit the link or to delete it
if(!url.includes("http")){
url = "//" + url;
}
let item = `<div class="bookmark">
<span>${name}</span>
<a class="visit" href="${url}" target="_blank"
data-link='${dataLink}'>Visit</a>
<a onclick="removeBookmark(this)"
class="delete" href="#">delete</a>
</div>`;
bookmarksSection.innerHTML += item;
}
// function to render the saved bookmarks
(function fetchBoookmark(){
if(typeof(localStorage.bookmark) != "undefined" && localStorage.bookmark !== ""){
let arrayItems = localStorage.bookmark.split(";");
arrayItems.length--;
for(item of arrayItems){
let itemSpli = item.split(',');
addBookmark(itemSpli[0], itemSpli[1]);
}
}
})();
// Function to remove the bookmark
function removeBookmark(thisItem){
let arrayItems = [],
index,
item = thisItem.parentNode,
itemURL = item.querySelector(".visit").dataset.link,
itemName = item.querySelector("span").innerHTML;
arrayItems = localStorage.bookmark.split(";");
for(i in arrayItems){
if(arrayItems[i] == `${itemName},${itemURL}`){
index = i;
break;
}
}
//update the localStorage
index = arrayItems.indexOf(`${itemName},${itemURL}`);
arrayItems.splice(index,1);
localStorage.bookmark = arrayItems.join(";");
//update the bookmark Section
bookmarksSection.removeChild(item);
}
</script>
</body>
</html>

View file

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Chat App with Websocket</title>
<style>
.clientinfos{
background-color: darkgrey;
}
.clientmessages{
background-color: lightblue;
border: 1px;
}
</style>
</head>
<body>
<div class="clientinfos">
<button id="connect">connect</button>
</div>
<div class=clientmessages id="clientmessages"></div>
<div class="clientsend">
<input type="text" id="messageinput">
<button id="sendbutton">Send</button>
</div>
<script src="client.js"></script>
</body>
</html>

54
main-site/chat/client.js Normal file
View file

@ -0,0 +1,54 @@
if (sessionStorage.getItem('serveraddr')==null){
let addr = prompt('server address (ws or wss): ')
const socket = new WebSocket(addr);
sessionStorage.setItem('serveraddr',addr)
}
else if (sessionStorage.getItem('serveraddr')!=null){
const socket = new WebSocket(sessionStorage.getItem('serveraddr'))
}
else{alert('error')}
socket.addEventListener('message', function (event) {
e=JSON.parse(event)
for(let i = 0; i < length(e); i++){
let m= e[i]
let d = document.createElement('div')
d.className = 'message'
let u = document.createElement('div')
u.innerText = m["username"]
u.className= 'messageusername'
let c = document.createElement('div')
c.innerText = m["content"]
c.className = 'messagecontent'
let h = document.createElement('div')
h.innerText= m['date']
h.className = 'messagedate'
d.appendChild(u)
d.appendChild(c)
d.appendChild(h)
document.getElementById('clientmessages').appendChild(d)
}
});
function sendtoserver(){
let user = sessionStorage.getItem('username')
if(user == null){alert('you have to be connected for send message, click on the "connect" button')}
else{
let message = document.getElementById('messageinput')
let today = new Date();
let date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
let time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
let dateTime = date+' '+time;
let tosend={
'username': `${user}`,
'content':`${message}`,
'date': `${dateTime}`,
}
let strtosend = JSON.stringify(tosend)
socket.send(strtosend)
}
}
function toconnect(){
let usrname = prompt('your username: ')
sessionStorage.setItem('username',usrname)
}
document.getElementById('sendbutton').addEventListener('click',sendtoserver)
document.getElementById('connect').addEventListener('click',toconnect)

38
main-site/chat/server.py Normal file
View file

@ -0,0 +1,38 @@
"""
message templates:
{
"name":username,
"content":content,
"date":date,
}
"""
import asyncio;
import json;
import websockets;
dataslist = []
async def handler(websocket, path):
global dataslist
data = await websocket.recv()
try:
data = json.dumps(data)
except TypeError:
await websocket.send('TypeError')
await websocket.send(str(dataslist))
dataslist.append(data)
start_server = websockets.serve(handler, "0.0.0.0", 8000)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()

62
main-site/contact.html Normal file
View file

@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>Contact</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<b>Me contacter par mail grâce au formulaire de contact</b>
<form onsubmit="sendmail()">
<label for="name">Votre nom:</label><input type="text" name="name" id=name><br>
<label for="email">Votre Email:</label><input type="email" name="email" id="email"><br>
<label for="objet">Le sujet:</label><br>
<select name="objet" id="objet">
<option value="">--Choisissez une option--</option>
<option value="infos">Demande d'infos</option>
<option value="suggest">Suggestion</option>
<option value="join"><abbr title="Si vous avez des compétences dans n'importe quel domaine et que vous voulez m'aider pour le site ou pour d'autres projets">Rejoindre</abbr></option>
<option value="parrot"><abbr title="veuillez préciser au début du message">Autres</abbr></option>
</select><br>
<label for=messagecontent>Votre message:</label><div contenteditable style="color: black; border: solid black; background-color: white" id="messagecontent" name="messagecontent">Votre message ici</div><br>
<button type="submit">Envoyer</button>
</form>
<script>
function gid(id){
return document.getElementById(id)
}
function sendmail(){
let bodystr = `Nom: ${gid('name').value} \n Email: ${gid('email').value}\n------\n${gid('messagecontent').innerHTML}`
let body = bodystr.replace('\n','<br>')
open(`mailto:gzod01@gzod01.fr?subject=${encodeURIComponent(gid('objet').value)}&body=${encodeURIComponent(body)}`)
}
</script><br><br>
<div name=line style="width:100%; border-bottom:solid 5px var(\-\-main-txt-color)"></div>
Ou me contacter grâce à mes moyens de communication ou les plateformes sur lesquelles je suis:
<a href="javascript:void(0)"title="GZod01">Steam</a> <a href="javascript:void(0)"title="G_Zod#1311">Discord</a> <a href="//github.com/gzod01/" title="GZod01">Github</a> <a href="//dsc.gg/cgms"title="Serveur Discord">Mon serveur discord</a> <a href="mailto:gzod01@gzod01.fr" title="gzod01@gzod01.fr">Mail</a>
<!--<b>Ou me contacter grâce à cette boite de commentaire (les commentaires peuvent être laisser anonymement)</b>
<div id="cusdis_thread"
data-host="https://cusdis.com"
B
data-app-id="2197b528-be9f-462b-98dc-57ac47aef210"
data-page-id="contact-form-mainsite"
data-page-url="//gzod01.fr/contact"
data-page-title="Me Contacter(MainSite)"
data-theme='auto'
></div>
<script async defer src="https://cusdis.com/js/cusdis.es.js"></script>
<script>let clschm = localStorage.getItem('colorscheme');
if(clschm === 'light' || clschm ==='dark'){
document.getElementById('cusdis_thread').setAttribute('data-theme',clschm)
} else{
document.getElementById('cusdis_thread').setAttribute('data-theme','auto')}</script>-->
</div>
<div id="footer"></div>
</body>
</html>

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>easy-contact.html</title>
</head>
<body>
<div id="header"></div>
<div class=content>
Write your message here:
<div id="cusdis_thread"
data-host="https://cusdis.com"
data-app-id="2197b528-be9f-462b-98dc-57ac47aef210"
data-page-id="{{ PAGE_ID }}"
data-page-url="{{ PAGE_URL }}"
data-page-title="{{ PAGE_TITLE }}"
></div>
<script async defer src="https://cusdis.com/js/cusdis.es.js"></script>
</div>
<div id="footer"></div>
</body>
</html>

23
main-site/error404.html Normal file
View file

@ -0,0 +1,23 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>404 Bad Request</title>
</head>
<body>
<div id="header"></div>
<div style="height:100%"class=content>
<div class="fullcenteredparent">
<div class=fullcentered>
<h1>404 ERROR</h1>
<h2>LA PAGE DEMANDÉE N'EXISTE PAS!</h2>
</div></div>
</div>
<div id="footer"></div>
</body>
</html>

View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="fractaldashboard.css">
<script src="fractaldashboard.js"></script>
<title>Fractal Dashboard</title>
</head>
<body>
<header>
<div class=headerelement id=connectedas>Connected as
<span id=playername>MYNAME</span><img id=playerprofile/><br>
<span id="logout">logout</span>
</div>
</header>
<div id="dashboardcontent">
</div>
<br>
<footer>
<div class=footerleft>
<a href="//discord.gg/cnBCTZ37nP">Join the Discord Server</a>
<a href="javascript:void(0)" onclick="navigator.share({
title: 'FRACTAL',
text: 'Venez jouez avec moi à Fractal',
url: 'https:/\/gzod01.fr/fractal/',
})">Share the game</a>
<!--<button class=langchoose id="french"></button><button class="langchoose" id="english"></button>-->
</div>
<div class="footerright">
<a href="javascript:'Game In development'">Buy the game</a>
</div>
</footer>
</body>

View file

@ -0,0 +1,143 @@
body {
min-height: 100vh;
margin: 0;
word-break: break-word;
display: flex;
flex-direction: column;
background-color: darkslategrey;
}
.dash-full-box{
display: grid; /*or BLOCK BUT GRID IS BEST...*/
position: relative;
border-radius: 10px;
min-height: 50px;
height: max-content;
padding: 10px;
text-align: center;
}
#green{
background-color: limegreen;
}
#red{
background-color: rgb(197, 23, 23);
}
#blue{
background-color: slateblue;
}
#yellow{
background-color: rgb(191, 191, 19);
}
#orange{
background-color: darkorange;
}
#withdrawalbutton{
display:table-row;
height: 100px;
width: 50%;
color: white;
background: repeating-linear-gradient(
45deg,
darkorange,
darkorange 10px,
red 10px,
red 20px
);
}
#withdrawalbutton:hover{
background: repeating-linear-gradient(
45deg,
red,
red 10px,
darkorange 10px,
darkorange 20px
);
}
button{
border-radius: 5px;
padding: 5px;
min-height: 10px;
border: 0px;
}
.fullcentered{
text-align:center;
margin: 0;
position: relative;
top: 50%;
left: 50%;
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.dash-title{
text-decoration: underline;
font-size: large;
font-weight: bold;
}
header{
margin:0;
background-color: slateblue;
color: white;
padding-bottom: 2px;
overflow: hidden;
}
.headerelement{
text-decoration: none;
float:left;
display:block;
text-align:center;
padding:14px 16px;
font-size: 17px
}
#connectedas{
float: right;
}
footer{
padding-top: 5px;
padding-bottom: 5px;
margin-top: auto;
display: flex ;
text-align: center;
width: 100%;
left: 0;
background-color:slateblue ;
color: white;
}
footer *{
text-decoration: none;
display:block;
text-align:center;
padding:14px 16px;
font-size: 17px;
color: white;
}
footer a:hover{
color: darkgray;
}
.footerleft{
height: 100%;
left:0;
width:50%;
}
.footerright{
height: 100%;
right:0;
width:50%
}
table, th, td{
border:solid 2px black
}
table{
width:100%
}
.tablecontainer{
overflow: auto;
max-height: 200px;
}
#logindiv{
text-align:center;
margin: 0;
position: absolute;
top: 50%;
left: 50%;
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}

View file

@ -0,0 +1,197 @@
const logindb = {
loginplayer:[{username:'testuser',password:'testpwd'}]
}
var loginusername=''
var loginpassword=''
function addItemToMarketTable(item,price){
let table = document.getElementById('balanceitems')
let tr=document.createElement('tr')
let tditem=document.createElement('td')
tditem.innerHTML=item
let tdprice=document.createElement('td')
tdprice.innerHTML=price
tr.appendChild(tditem)
tr.appendChild(tdprice)
table.appendChild(tr)
}
function addPlayerToLBTable(player,index){
let table = document.getElementById('playerlb')
let tr=document.createElement('tr')
let tditem=document.createElement('td')
tditem.innerHTML=player
let tdindex=document.createElement('td')
tdindex.innerHTML=index
tr.appendChild(tditem)
tr.appendChild(tdindex)
table.appendChild(tr)
}
function addGuildToLBTable(guild,index){
let table = document.getElementById('guildlb')
let tr=document.createElement('tr')
let tditem=document.createElement('td')
tditem.innerHTML=guild
let tdindex=document.createElement('td')
tdindex.innerHTML=index
tr.appendChild(tditem)
tr.appendChild(tdindex)
table.appendChild(tr)
}
function createDashBox(color,title=null){
let dashBox = document.createElement('div')
dashBox.className='dash-full-box'
dashBox.id=color
if(title!=null){
let dashtitle = document.createElement('p')
dashtitle.className='dash-title'
dashtitle.innerText=title
dashBox.appendChild(dashtitle)
}
document.getElementById('dashboardcontent').appendChild(dashBox)
let br= document.createElement('br')
document.getElementById('dashboardcontent').appendChild(br)
return dashBox
}
function spawnBaseDashBox(){
let wdmbox = createDashBox('red')
wdmbox.innerHTML=`<div class=fullcentered>
<button id="withdrawalbutton" name="withdrawalbutton">Immediate Withdrawal</button>
</div>`
let mobox = createDashBox('green','MONEY INFOS:')
mobox.innerHTML = `
<p><b>Your Current balance: </b><span id="playermoney">NODATA</span>$</p>
<p><b>Current balance of your Guild: </b><span id=guildmoney>NODATA</span>$</p>`
let markbox = createDashBox('yellow','TRADE INFOS:')
markbox.innerHTML=`<b>Market price of items:</b>
<div class="tablecontainer">
<table >
<thead>
<th>
Items:
</th>
<th>
Price:
</th>
</thead>
<tbody id="balanceitems">
</tbody>
</table>
</div>`
let lbbox = createDashBox('orange','LEADERBOARD:')
lbbox.innerHTML=`<div class="tablecontainer">
<table>
<thead>
<th>
Player:
</th>
<th>
Place:
</th>
</thead>
<tbody id="playerlb">
</tbody>
</table>
</div>
<div class="tablecontainer">
<table>
<thead>
<th>
Guild:
</th>
<th>
Place:
</th>
</thead>
<tbody id="guildlb">
</tbody>
</table>
</div>
`
}
function loadscript(){
createauth()
}
window.onload=loadscript
function startscript(){
if(auth(loginusername,loginpassword)){
mainscript(loginusername,loginpassword)
}
}
function mainscript(username,password){
spawnBaseDashBox()
showGameDatas(username,password)
}
function createauth(){
document.getElementById('dashboardcontent').innerHTML=`<div id=logindiv id=logindiv><div id=loginindic style="background-color:red; color:white"></div><input type=text id=loginusername placeholder="Your UserName"><br><input type=password id=loginpassword placeholder="Your PassWord"><br><button onclick="loginsubmit()">Se connecter</button></div>`
}
function loginsubmit(){
loginusername = document.getElementById('loginusername').value
loginpassword = document.getElementById('loginpassword').value
startscript()
}
function auth(username,password){
if(checkauth(username,password)){
document.getElementById('logindiv').remove()
return true
}
else{
document.getElementById('loginindic').innerHTML='Bad Password or Username'
return false
}
}
function checkauth(username, password){
const [check, index] = checkusername(username)
if(check){
if(logindb.loginplayer[index].password===password){
return true
}
}
return false
}
function checkusername(username){
for(let i=0; i<logindb.loginplayer.length;i++){
if(username===logindb.loginplayer[i].username){
return [true , i]
}
}
return [false , null]
}
function fetchGameDatas(username,password){
//fetch: return this normally
let gamedatas = {
playermoney:999999,
guildmoney:999999999999,
itemprice:[['Uranium',299],['EpicRubadium',599],['SuperExoticalFractalium',99999],['Iron',50],['Wood',20],['Steak',10],['Apple',5]],
playerlb:['TheBestUser','TheSecondUser','ThethirdUser','hello','world','how','are','you','men'],
guildlb:['BestGuild','SecondGuild','ThirdGuild','vote','for','the','best','guild','that','is','adminGuild!!!'],
playerusername:'testuser',
playerpicture:'https://cdn.discordapp.com/avatars/917123777488384021/d3a5dbeb89d98da26f30b061156e6868.webp?size=128'
}
return gamedatas //else if error return null
}
function showGameDatas(username,password){
let gamedatas = fetchGameDatas(username,password)
if(gamedatas!=null){
gid('playermoney').innerHTML=gamedatas.playermoney
gid('guildmoney').innerHTML=gamedatas.guildmoney
for(let i =0; i< gamedatas.itemprice.length;i++){
addItemToMarketTable(gamedatas.itemprice[i][0],gamedatas.itemprice[i][1])
}
for(let i=0;i<gamedatas.guildlb.length;i++){
addGuildToLBTable(gamedatas.guildlb[i],i)
}
for(let i = 0; i<gamedatas.playerlb.length;i++){
addPlayerToLBTable(gamedatas.playerlb[i],i)
}
gid('playername').innerHTML=gamedatas.playerusername
gid('playerpicture').src=gamedatas.playerpicture
}
}
function gid(id){
return document.getElementById(id)
}
function withdrawal(){
alert('Order Send, you\'re troops back home to your base')
}
document.getElementById('withdrawalbutton').addEventListener('click',withdrawal)

View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>fractal/index.html</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<div class=fullcentered>
<a href="dashboard">Go to your dashboard (you need to create an account and a base in the game before)</a>
</div>
</div>
<div id="footer"></div>
</body>
</html>

View file

@ -0,0 +1,100 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Author" content="Made by 'tree'">
<meta name="GENERATOR" content="$Version: $ tree v1.8.0 (c) 1996 - 2018 by Steve Baker, Thomas Moore, Francesc Rocher, Florian Sesser, Kyosuke Tokoro $">
<title>GZOD01</title>
<style type="text/css">
<!--
BODY { font-family : ariel, monospace, sans-serif; }
P { font-weight: normal; font-family : ariel, monospace, sans-serif; color: black; background-color: transparent;}
B { font-weight: normal; color: black; background-color: transparent;}
A:visited { font-weight : normal; text-decoration : none; background-color : transparent; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
A:link { font-weight : normal; text-decoration : none; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
A:hover { color : #000000; font-weight : normal; text-decoration : underline; background-color : yellow; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
A:active { color : #000000; font-weight: normal; background-color : transparent; margin : 0px 0px 0px 0px; padding : 0px 0px 0px 0px; display: inline; }
.VERSION { font-size: small; font-family : arial, sans-serif; }
.NORM { color: black; background-color: transparent;}
.FIFO { color: purple; background-color: transparent;}
.CHAR { color: yellow; background-color: transparent;}
.DIR { color: blue; background-color: transparent;}
.BLOCK { color: yellow; background-color: transparent;}
.LINK { color: aqua; background-color: transparent;}
.SOCK { color: fuchsia;background-color: transparent;}
.EXEC { color: green; background-color: transparent;}
-->
</style>
</head>
<body>
<h1>GZOD01</h1><p>
<a href="//gzod01.fr/">//gzod01.fr/</a><br>
<a href="//gzod01.fr//about.html">about.html</a><br>
<a href="//gzod01.fr//bookmark.html">bookmark.html</a><br>
<a href="//gzod01.fr//chat/">chat</a><br>
<a href="//gzod01.fr//chat/client.html">client.html</a><br>
<a href="//gzod01.fr//chat/client.js">client.js</a><br>
<a href="//gzod01.fr//chat/server.py">server.py</a><br>
<a href="//gzod01.fr//contact.html">contact.html</a><br>
<a href="//gzod01.fr//CyberTermHack/">CyberTermHack</a><br>
<a href="//gzod01.fr//CyberTermHack/api.html">api.html</a><br>
<a href="//gzod01.fr//CyberTermHack/Commented_Code/">Commented_Code</a><br>
<a href="//gzod01.fr//CyberTermHack/Commented_Code/COMMENTED_CODE/">COMMENTED_CODE</a><br>
<a href="//gzod01.fr//CyberTermHack/Commented_Code/COMMENTED_CODE/CyberTermHackjsorganized2.js">CyberTermHackjsorganized2.js</a><br>
<a href="//gzod01.fr//CyberTermHack/Commented_Code/COMMENTED_CODE/CyberTermHackjsorganized.js">CyberTermHackjsorganized.js</a><br>
<a href="//gzod01.fr//CyberTermHack/CONSOLE/">CONSOLE</a><br>
<a href="//gzod01.fr//CyberTermHack/CONSOLE/console.html">console.html</a><br>
<a href="//gzod01.fr//CyberTermHack/CONSOLE/console.js">console.js</a><br>
<a href="//gzod01.fr//CyberTermHack/index.html">index.html</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1/">V0.1</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1/index.html">index.html</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1/jsversion.js">jsversion.js</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1/js-web-CyberTermHack.html">js-web-CyberTermHack.html</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1/otherjsversion.js">otherjsversion.js</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1/py-curses-CyberTermHack.py">py-curses-CyberTermHack.py</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1/py-term-CyberTermHack.py">py-term-CyberTermHack.py</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1.2:OPTIMIZED/">V0.1.2:OPTIMIZED</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1.2:OPTIMIZED/index.html">index.html</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.1.2:OPTIMIZED/maincode.js">maincode.js</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.2/">V0.2</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.2/devlog.txt">devlog.txt</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.2/index.html">index.html</a><br>
<a href="//gzod01.fr//CyberTermHack/V0.2/maincode.js">maincode.js</a><br>
<a href="//gzod01.fr//easy-contact.html">easy-contact.html</a><br>
<a href="//gzod01.fr//error404.html">error404.html</a><br>
<a href="//gzod01.fr//fullsitemap.html">fullsitemap.html</a><br>
<a href="//gzod01.fr//games.html">games.html</a><br>
<a href="//gzod01.fr//index.html">index.html</a><br>
<a href="//gzod01.fr//index-with-iframes.html">index-with-iframes.html</a><br>
<a href="//gzod01.fr//legal.html">legal.html</a><br>
<a href="//gzod01.fr//page-builder.html">page-builder.html</a><br>
<a href="//gzod01.fr//projects.html">projects.html</a><br>
<a href="//gzod01.fr//search.html">search.html</a><br>
<a href="//gzod01.fr//services.html">services.html</a><br>
<a href="//gzod01.fr//sitemap.html">sitemap.html</a><br>
<a href="//gzod01.fr//sitemap.json">sitemap.json</a><br>
<a href="//gzod01.fr//sitemap.xml">sitemap.xml</a><br>
<a href="//gzod01.fr//testofsitemap.html">testofsitemap.html</a><br>
<a href="//gzod01.fr//time.html">time.html</a><br>
<a href="//gzod01.fr//uscpm/">uscpm</a><br>
<a href="//gzod01.fr//uscpm/about.html">about.html</a><br>
<a href="//gzod01.fr//uscpm/alpha-neostyle-uscpm.html">alpha-neostyle-uscpm.html</a><br>
<a href="//gzod01.fr//uscpm/beta.html">beta.html</a><br>
<a href="//gzod01.fr//uscpm/hashchars.json">hashchars.json</a><br>
<a href="//gzod01.fr//uscpm/index.html">index.html</a><br>
<a href="//gzod01.fr//uscpm/play.bat">play.bat</a><br>
<a href="//gzod01.fr//uscpm/texttoshare.html">texttoshare.html</a><br>
<br><br>
</p>
<p>
<br><br>
</p>
<hr>
<p class="VERSION">
tree v1.8.0 © 1996 - 2018 by Steve Baker and Thomas Moore <br>
HTML output hacked and copyleft © 1998 by Francesc Rocher <br>
JSON output hacked and copyleft © 2014 by Florian Sesser <br>
Charsets / OS/2 support © 2001 by Kyosuke Tokoro
</p>
</body>
</html>

44
main-site/games.html Normal file
View file

@ -0,0 +1,44 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>Jeux</title>
</head>
<body>
<div id="header"></div>
<div class=content>
Dans la liste suivante de jeu, seule ceux pour lesquels je le précise n'ont pas été créé par moi (ex: USCPM) tous les autres ont été créé par moi... <br><br>
<a href="/uscpm">USCPM</a>: USCPM est une version améliorée du jeu SuperChronoPortalMaker (fait par Maxime Euzière et Anders Kaare pour les JS13K (deux personnes que je ne connais absolument pas mais leur jeu est sympa et, avec des compétences en JS, facile à modifier)), USCPM a quelques fonctionnalités qui le rendent différent du jeu original. (Par conséquent ce n'est pas moi qui ai créé l'original du jeu)
<br>
<a href="/CyberTermHack/">CyberTermHack</a> : CyberTermHack est un jeu que j'ai créé (contrairement à USCPM), l'interface
de ce jeu et de type terminal (meme la version WEB), vous jouez un hacker et... amusez vous a hacker (bien evidemment, ce jeu ne met pas en scène des vrais techniques de piratage... ce serait bien trop dangereux...)
<br>
<a href="//blog.gzod01.fr/posts/subaqualien-explorer-arrive">SubAquAlien Explorer (Article du Blog expliquant comment le télécharger)</a>: SubAquAlien Explorer est un jeu que j'ai créé dans lequel vous incarnez un alien explorant le monde subaquatique
d'une planète alien, faites attention aux ennemis...
<br>
<a href="https://github.com/GZod01/NoEndSpaceRunner/releases/">NoEnd Space Runner</a> A new endless runner in the space
</div>
<div id="remark42"></div>
<script>!function(e,n){for(var o=0;o<e.length;o++){var r=n.createElement("script"),c=".js",d=n.head||n.body;"noModule"in r?(r.type="module",c=".mjs"):r.async=!0,r.defer=!0,r.src=remark_config.host+"/web/"+e[o]+c,d.appendChild(r)}}(remark_config.components||["embed"],document);</script>
<script>
var remark_config = {
host: 'https://api.gzod01.fr/remark42',
site_id: 'GZod01-main-games',
components: ['embed', 'last-comments']
max_shown_comments: 100,
theme: 'dark',
page_title: 'Games',
locale: 'fr',
show_email_subscription: true,
simple_view: true,
no_footer: false
}
</script>
<div id="footer"></div>
</body>
</html>

29
main-site/games.html.save Normal file
View file

@ -0,0 +1,29 @@
CTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>Jeux</title>
</head>
<body>
<div id="header"></div>
<div class=content>
Dans la liste suivante de jeu, seule ceux pour lesquels je le précise n'ont pas été créé par moi (ex: USCPM) tous les autres ont été créé par moi... <br><br>
<a href="/uscpm">USCPM</a>: USCPM est une version améliorée du jeu SuperChronoPortalMaker (fait par Maxime Euzière et Anders Kaare pour les JS13K (deux personnes que je ne connais absolument pas mais leur jeu est sympa et, avec des compétences en JS, facile à modifier)), USCPM a quelques fonctionnalités qui le rendent différent du jeu original. (Par conséquent ce n'est pas moi qui ai créé l'original du jeu)
<br>
<a href="/CyberTermHack/">CyberTermHack</a> : CyberTermHack est un jeu que j'ai créé (contrairement à USCPM), l'interface
de ce jeu et de type terminal (meme la version WEB), vous jouez un hacker et... amusez vous a hacker (bien evidemment, ce jeu ne met pas en scène des vrais techniques de piratage... ce serait bien trop dangereux...)
<br>
<a href="//blog.gzod01.fr/posts/subaqualien-explorer-arrive">SubAquAlien Explorer (Article du Blog expliquant comment le télécharger)</a>: SubAquAlien Explorer est un jeu que j'ai créé dans lequel vous incarnez un alien explorant le monde subaquatique
d'une planète alien, faites attention aux ennemis...
<br>
<a href="https://github.com/GZod01/NoEndSpaceRunner/releases/">NoEnd Space Runner</a> A new endless runner in the space
</div>
<div id="footer"></div>
</body>
</html>

View file

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>GZod01</title>
</head>
<body>
<div id="header"></div>
<div class="content">
<script>
function changeframe(){
let framelist = document.querySelectorAll('iframe')
for(let i= 0; i<framelist.length; i++){
let cframe = framelist[i]
cframe.contentWindow.document.querySelector('header').remove()
cframe.contentWindow.document.querySelector('footer').remove()
cframe.width = innerWidth
}
}
</script>
<noscript>Si vous voyez ce message votre navigateur ne supporte pas JAVASCRIPT ou celui ci n'est pas installé sur votre ordinateur, veuillez installer Javascript (beaucoup de fonctionallitées de ce site nécessitent javascript)</noscript>
<h1><b>Bienvenue sur le site de GZod01!</b></h1>
<p>Sur ce site vous pouvez trouver (pages principales, memes liens que dans la barre de navigation dans les headers et footers):</p>
<div id=tellforframe><button onclick="document.getElementById('iframesdiv').hidden = !document.getElementById('iframesdiv').hidden">Afficher/Masquer les Iframes</button></div>
<div id=iframesdiv hidden>
<h2><a href="/games">Des Jeux</a></h2>
<iframe src="/games">si vous voyez ce message, votre navigateur ne supporte pas les frames... c'est triste</iframe>
<h2><a href="/services">Des Services</a></h2>
<iframe src="/services">si vous voyez ce message, votre navigateur ne supporte pas les frames... c'est triste</iframe>
<h2><a href="/projects">Mes Projets</a></h2>
<iframe src="/projects">si vous voyez ce message, votre navigateur ne supporte pas les frames... c'est triste</iframe>
<h2><a href="/contact">Me Contacter</a></h2>
<iframe src="/contact" height="300">si vous voyez ce message, votre navigateur ne supporte pas les frames... c'est triste</iframe>
<h2><a href="/sitemap">Le Plan Du Site</a></h2>
<iframe src="/sitemap">si vous voyez ce message, votre navigateur ne supporte pas les frames... c'est triste</iframe>
<h2><a href="/about">Des informations sur ce site et sur moi</a></h2>
<iframe src="/about">si vous voyez ce message, votre navigateur ne supporte pas les frames... c'est triste</iframe>
<h2><a href="/legal">Les Mentions Légales</a></h2>
<iframe src="/legal">si vous voyez ce message, votre navigateur ne supporte pas les frames... c'est triste</iframe>
</div>
<script>window.onload = function(){changeframe(); mainscript()}</script>
</div>
<div id="footer"></div>
</body>
</html>

31
main-site/index.html Normal file
View file

@ -0,0 +1,31 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="google-site-verification" content="M5WSsDz4u-8XDQV4EnuSIT0mZsqPIuwOmf5M-JglNTc" />
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>GZod01</title>
</head>
<body>
<div id="header"></div>
<div class="content">
<noscript>Si vous voyez ce message votre navigateur ne supporte pas JAVASCRIPT ou celui ci n'est pas installé sur votre ordinateur, veuillez installer Javascript (beaucoup de fonctionallitées de ce site nécessitent javascript)</noscript>
<h1><b>Bienvenue sur le site de GZod01!</b></h1>
<p>Sur ce site vous pouvez trouver (pages principales, memes liens que dans la barre de navigation dans les headers et footers):</p>
<h2><a href="/games">Des Jeux</a></h2>
<h2><a href="/services">Des Services</a></h2>
<h2><a href="/projects">Mes Projets</a></h2>
<h2><a href="/contact">Me Contacter</a></h2>
<h2><a href="/sitemap">Le Plan Du Site</a></h2>
<h2><a href="/about">Des informations sur ce site et sur moi</a></h2>
<h2><a href="/legal">Les Mentions Légales</a></h2>
<a href="/index-with-iframes">Page d'accueil avec Iframes (chargement plus long)</a>
<a href="/fullsitemaptree" hidden>FullSiteMap</a>
</div>
<div id="footer"></div>
</body>
</html>

41
main-site/legal.html Normal file
View file

@ -0,0 +1,41 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>Mentions Légales</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<h1>Mentions Légales</h1>
<h2>Responsable du Site</h2>
<p>Ce site appartient à GZod01, il est géré, créé, codé et hébérgé par GZod01</p>
<br>
<h1>Politique de Confidentialité</h1>
<h2>Utilisation des Cookies</h2>
<p>Les seuls cookies utilisés par ce site sont pour le bon fonctionnement de celui-ci (theme de couleur, données des jeux pour les sauvegardes)</p>
<button onclick="let x= prompt('êtes vous sure de vouloir effacer le localStorage de ce site? écrivez OUI (en majuscule) pour effacer'); if(x==='OUI'){localStorage.clear(); console.warn('localStorageCleared')}">Effacer les cookies</button><b> (attention dangereux si vous avez fait des sauvegardes dans un des jeux sur ce site vous risquez de les perdre pour toujours (ça fait beaucoup de temps))</b>
<p>Tous les cookies présent sur ce site restent sur votre ordinateur, aucun cookies n'est envoyé a des services tiers.</p>
<p>Les cookies ne sont donc a aucun moment récoltés par un quelconque serveur</p>
</div>
<div id="footer"></div>
</body>
</html>
<!--
just a function i want to keep to get my ip:
<script>
function text(url) {
return fetch(url).then(res => res.text());
}
text('https://www.cloudflare.com/cdn-cgi/trace').then(data => {
console.log(data)
});
</script>
-->

21
main-site/owner.html Normal file
View file

@ -0,0 +1,21 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>owner.html</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<p>Ce site est la propriété de GZod01</p>
<p>alias Aurélien Sézille</p>
<p>Copyright &copy 2023</p>
</div>
<div id="footer"></div>
</body>
</html>

View file

@ -0,0 +1,66 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>Host Your Pages</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<div class=fullcentered>Page déplacée vers <a href="//host.gzod01.fr">host.gzod01.fr</a></div>
<!--
<script>
function send(sendvalue){
document.body.innerHTML = `
<h1>You need to send this to mee: (copy and paste to mail or other)</h1>
<code style="border: 2px dotted;">
<p>Hello, my usrname is ${username.value}, i want to host html page, this is the code:</p>
<p>${sendvalue}</p>
</code>
If you want to learn html you can see the w3schools course about html or i maybe will create a page with course to learn html
`}
function send_to_gzod01(){
if(checkbegin.value){
let htmltosend = `
<head>
<title>${title.value}</title>
</head>
<h1>${h1.value}</h1>
<p>My name is ${user.value}</p>
<p>${content.value}</p>
`
send(htmltosend)
}
else if(checkdev.value){
send(JSON.stringify(html_content.innerHTML))
}
else{ indicator.innerHTML = 'SORRY, you don\'t have check any checkbox you need to check one checkbox'}
}
</script>
<h1>Host page on my site</h1>
<h1 id=indicator>INDICATOR</h1>
<p>You want to learn html, js etc., perform your skill in html or share page with the world? so you need an host... this is your index page builder (and message builder to ask me for creating your page... (TODO: FTP for pages or create php code that create files....)</p>
<label>SO if you are beginner in html you will need this form to create your page:</label>
<div>
<input type=checkbox id=checkbegin name=checkbegin><label for=checkbegin>I'm a beginner</label>
<input type=text id=title placeholder=title>
<input type=text id=user placeholder=user>
<input type=text id=h1 placeholder="title to show on your page">
<textarea id=content>Your text here...</textarea>
</div>
<label>Else if you have good skill in html you can create (or paste) your code in this textarea (this is no VSCODE or any other IDE so there is no color on keywords</label>
<div>
<input type=checkbox id=checkdev name=checkdev><label for=checkdev>I'm not a beginner</label>
<textarea id=html_content>YOUR HTML CODE</textarea>
</div>
<input type=text id=username placeholder="your username here please...">
<button onclick="send_to_gzod01()">Click here if you have finish</button>-->
</div>
<div id="footer"></div>
</body>
</html>

49
main-site/projects.html Normal file
View file

@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>Projets</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<h1>Mes Projets</h1>
<p>La plupart de mes projets sont disponibles sur <a href="//github.com/gzod01">mon gitub</a> en regardant la <a href="https://github.com/GZod01?tab=repositories">la liste de mes repositories</a></p>
<p>Tous les jeux ci dessous sont accessibles ou téléchargeables depuis l'onglet jeux (sauf jeux "EN DEVELOPPEMENT...")</p>
<h2>Vous avez un projet?</h2>
Vous avez un projet? N'hésitez pas à me contacter: <a href="/contact">ICI</a>
<h2>Mes Projets actuels</h2>
<dl>
<dt>Fractal:</dt><dd>Un jeu de stratégie économique en temps réel basé sur les joueurs.<b>EN DEVELOPPEMENT...</b></dd>
<dt>Spaconium:</dt><dd>Un mod minecraft multifonction rajoutant des minerais, des biomes, des dimensions, un système de magie et bien plus encore...</dd>
<dt>CyberTermHack:</dt><dd>Un jeu de "hacker"</dd>
<dt>Ce site:</dt><dd>Ce site est toujours en développement meme si la plupart des pages accessibles sont déjà finies</dd>
</dl>
<h2>Liste de tous mes projets</h2>
<dl>
<dt>Spaconium:</dt><dd>Mod minecraft</dd>
<dt>SubAquAlien Explorer:</dt><dd>Un jeu de type arcade</dd>
<dt>CyberTermHack:</dt><dd>Un jeu de "hacker"</dd>
</dl>
<!--
<br><br><br><br>
Juste un truc pour éditer du code :
<script>event.target.onjustchange = new Function(event.target.getAttribute('onjustchange'))
event.target.onkeydown = event.target.onkeyup = event.target.onkeypress = document.documentElement.onjustchange
function changetheframe(){
let x= document.getElementById('htmleditor').innerText; console.log(x); document.getElementById('iframeeditable').contentWindow.document.body.innerHTML = x
}</script>
<div id=htmleditor contenteditable onjustchange="changetheframe()">TYPE YOUR CODE HERE</div>
<iframe id=iframeeditable style='width:95%; height:50%'>
THE RESULT OF YOUR PAGe
</iframe>
-->
</div>
<div id="footer"></div>
</body>
</html>

104
main-site/search.html Normal file
View file

@ -0,0 +1,104 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>Page d'Accueil Navigateur</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<div style="position:absolute;right:0">
<label for=searchmotorselect>Choisissez votre moteur de recherche</label>
<select id=searchmotorselect name=searchmototselect>
<option value=duckduckgo>DuckDuckGo</option>
<option value=google>Google</option>
<option value=bing>Bing</option>
</select>
</div>
<div class=fullcentered name=searchbar>
<label for=q>Rechercher (Entrez un url ou un texte):</label><input type="text" id="q" name="q"><button id="search">GO</button>
</div>
<script>/*function isveryvalidurl(urlString){
try {
return Boolean(new URL(urlString));
}
catch(e){
console.warn(e)
return false;
}
}*/
function isveryvalidurl(urlString){
var urlPattern = new RegExp('^(https?:\\/\\/)?'+ // validate protocol
'((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // validate domain name
'((\\d{1,3}\\.){3}\\d{1,3}))'+ // validate OR ip (v4) address
'(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // validate port and path
'(\\?[;&a-z\\d%_.~+=-]*)?'+ // validate query string
'(\\#[-a-z\\d_]*)?$','i'); // validate fragment locator
return !!urlPattern.test(urlString);
}
document.getElementById('q').onkeydown = function(e){if(e.keyCode==13){functiontosearch()}}
function functiontosearch(){
let queryvalue = document.getElementById('q').value;
if(queryvalue.startsWith('http')){
if(isveryvalidurl(queryvalue)){
open(queryvalue)
}
else{
open('//duckduckgo.com/?q='+encodeURIComponent(queryvalue))
}
}
else if(queryvalue.startsWith('//')){
if(isveryvalidurl('http:'+queryvalue)){
open(queryvalue)
}
else{
open('//duckduckgo.com/?q='+encodeURIComponent(queryvalue))
}
}
else{
if(isveryvalidurl('http://'+queryvalue)){
open('//'+queryvalue)
}
else{
open('//duckduckgo.com/?q='+encodeURIComponent(queryvalue))
}
}
}
document.getElementById('search').addEventListener('click', functiontosearch)</script>
<!--<div id="f"></div>
<button id="addf">Ajouter un lien aux favoris</button>
<script>
function deletefromarray(mat,p){
let nmat = []
for(let i; i<length(mat)+1;i++){
if (i==p){}
else{
nmat.push(mat[i])
}
}
return nmat
}
let fav = JSON.parse(localStorage.getItem('favoris'))
for(let i; i<length(fav)+1; i++){
let cf = fav[i]
let fnode = document.createElement('div')
let furl= document.createElement('a')
furl.href=cf['url']
furl.innerText=cf['name']
fnode.appendChild('furl')
let delbutton = document.createElement('button')
delbutton.innerText= 'Supprimer'
delbutton.setAttribute('onclick',`function(){localStorage.setItem('favoris',JSON.stringify(deletefromarray(JSON.parse(localStorage.getItem('favoris')),${i})))}`)
document.getElementById('f').appendChild(fnode)
}
document.getElementById('')
</script>-->
</div>
<div id="footer"></div>
</body>
</html>

19
main-site/services.html Normal file
View file

@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>Services</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<a href=//host.gzod01.fr>Host your pages</a>
</div>
<div id="footer"></div>
</body>
</html>

36
main-site/sitemap.html Normal file
View file

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>Plan Du Site</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<div>
<ul>
<li><a href="//gzod01.fr">GZod01.fr</a><ul id=sitemap></ul></li>
<li><a href="//blog.gzod01.fr">Blog.gzod01.fr</a></li>
<li><a href="//blog2.gzod01.fr">Blog2.gzod01.fr</a></li>
<li><a href="//host.gzod01.fr">Host.gzod01.fr</a></li>
<li><a href="//api.gzod01.fr">Api.gzod01.fr</a></li>
</ul>
</div>
<script>
var x= "about;chat;contact;CyberTermHack/;easy-contact;error404;games;index;legal;page-builder;services;search;uscpm/;time"
var l = x.split(';')
for(let i = 0; i<l.length; i++){
let linode = document.createElement('li')
linode.innerHTML= '<a href="//gzod01.fr/'+l[i]+'">'+l[i]+'</a>'
document.getElementById('sitemap').appendChild(linode)
}
</script>
</div>
<div id="footer"></div>
</body>
</html>

40
main-site/sitemap.json Normal file
View file

@ -0,0 +1,40 @@
{
"site-gzod01.fr":{
"-url-":"//gzod01.fr",
"page-A Propos":"about",
"page-Contact":"contact",
"page-Jeux":"games",
"page-Mentions Légales":"legal",
"page-Créateur de Page":"page-builder",
"page-Projets":"projects",
"page-Accueil Navigateur": "search",
"page-Services":"services",
"page-Plan Du Site":"sitemap",
"page-Horloge":"time",
"dir-CyberTermHack":{
"-url-":"CyberTermHack",
"page-index":"index",
"page-Version JS Web": "js-web-CyberTermHack",
"file-Version Python Terminal": "py-term-CyberTermHack.py"
},
"dir-USCPM":{
"-url-":"uscpm",
"page-index":"index",
"page-A Propos": "about",
"page-Beta":"beta",
"file-HashChars.json":"hashchars.json"
}
},
"site-blog.gzod01.fr":{
"-url-":"//blog.gzod01.fr"
},
"site-blog2.gzod01.fr":{
"-url-":"//blog2.gzod01.fr"
},
"site-host.gzod01.fr":{
"-url-":"//host.gzod01.fr"
},
"site-api.gzod01.fr":{
"-url-":"//api.gzod01.fr"
}
}

253
main-site/sitemap.xml Normal file
View file

@ -0,0 +1,253 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>http://gzod01.fr/</loc>
<lastmod>2023-02-24T07:42:12+00:00</lastmod>
<priority>1.00</priority>
</url>
<url>
<loc>http://gzod01.fr/games</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>http://gzod01.fr/services</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>http://gzod01.fr/projects</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>http://gzod01.fr/contact</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>http://gzod01.fr/sitemap</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>http://gzod01.fr/about</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>http://gzod01.fr/legal</loc>
<lastmod>2023-02-21T16:51:31+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>http://gzod01.fr/index-with-iframes</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>http://gzod01.fr/fullsitemaptree</loc>
<lastmod>2023-02-24T07:41:28+00:00</lastmod>
<priority>0.80</priority>
</url>
<url>
<loc>http://gzod01.fr/uscpm</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/</loc>
<lastmod>2023-02-21T15:57:07+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/about.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/bookmark.html</loc>
<lastmod>2023-02-22T10:47:09+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/chat/client.html</loc>
<lastmod>2023-02-21T15:56:56+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/chat/server.py</loc>
<lastmod>2023-02-21T15:56:56+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/contact.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/api.html</loc>
<lastmod>2023-02-21T15:57:14+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/CONSOLE/console.html</loc>
<lastmod>2023-02-21T15:57:41+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/index.html</loc>
<lastmod>2023-02-21T15:57:07+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.1/</loc>
<lastmod>2023-02-21T15:58:12+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.1/index.html</loc>
<lastmod>2023-02-21T15:58:12+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.1/js-web-CyberTermHack.html</loc>
<lastmod>2023-02-21T15:58:12+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.1/py-curses-CyberTermHack.py</loc>
<lastmod>2023-02-21T15:58:12+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.1/py-term-CyberTermHack.py</loc>
<lastmod>2023-02-21T15:58:12+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.1.2:OPTIMIZED/</loc>
<lastmod>2023-02-21T15:58:34+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.1.2:OPTIMIZED/index.html</loc>
<lastmod>2023-02-21T15:58:34+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.2/</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.2/devlog.txt</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/CyberTermHack/V0.2/index.html</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/easy-contact.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/games.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/index.html</loc>
<lastmod>2023-02-24T07:42:12+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/index-with-iframes.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/legal.html</loc>
<lastmod>2023-02-21T16:51:31+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/page-builder.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/projects.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/search.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/services.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/sitemap.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/testofsitemap.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/time.html</loc>
<lastmod>2023-02-21T15:55:57+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/uscpm/</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/uscpm/about.html</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/uscpm/alpha-neostyle-uscpm.html</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/uscpm/beta.html</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/uscpm/index.html</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/uscpm/play.bat</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
<url>
<loc>http://gzod01.fr/uscpm/texttoshare.html</loc>
<lastmod>2023-02-21T15:58:54+00:00</lastmod>
<priority>0.64</priority>
</url>
</urlset>

View file

@ -0,0 +1,81 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="//api.gzod01.fr/pictures/gzod01.ico">
<link rel="stylesheet" href="//api.gzod01.fr/css/style.css">
<script src="//api.gzod01.fr/scripts/main.js"></script>
<title>sitemap.html</title>
</head>
<body>
<div id="header"></div>
<div class=content>
<h1>Plan Des Sites: </h1>
<ul id="sitemap"></ul>
<script>
function sleep(s) {
let ms = s*1000
return new Promise(resolve => setTimeout(resolve, ms));
}
async function fetchsitemap(){
const xhr = new XMLHttpRequest();
xhr.onreadystatechange = () => {
if (xhr.readyState === XMLHttpRequest.DONE) {
console.log(typeof xhr.responseText);
console.log(xhr.responseText);
}
};
xhr.open('GET', 'http://gzod01.fr/sitemap.json', true);
xhr.setRequestHeader('Accept', 'application/json');
xhr.send(null);
await sleep(2)
const res = JSON.parse(xhr.responseText);
return res
}
function createlinode(url, value, key, strtype, rootofnode){
if(key.startswith(strtype)){
let linknode = document.createelement('li')
linknode.innerhtml='<a href="'+url+value+'">'+key.substring(strtype.length)+'</a>'
rootofnode.appendchild(linknode)
}
}
function preparesitemap(data,rootnode,callurl="",name){
console.log(data, rootnode, callurl, name)
let url = callurl+data['-url-']
rootnode.innerHTML='<a href="'+url+'">'+name+'</a>'
let ulement = document.createElement('ul')
rootnode.appendChild('ul')
Object.entries(data).forEach((quer)=>{
let [rkey, rvalue] = quer
if(rkey.startsWith('dir-')){
let jsonv = JSON.parse(rvalue)
let newrootnode = document.createElement('li')
rootnode.appendChild(newrootnode)
preparesitemap(jsonv,newrootnode, url, rkey.substring('dir-'.length))
}
createlinode(url,rvalue,rkey,"page-",ulement)
createlinode(url,rvalue,rkey,"file-",ulement)
})
}
async function mainsitemap(){
let res = fetchsitemap()
await Object.entries(res).forEach((entry)=>{
console.log('helloworld')
let [rootkey, rootvalue] = entry
if(rootkey.startsWith('site-')){
let valuejsoned = JSON.parse(rootvalue)
let rootofallnode = document.getElementById('sitemap')
let rootofthenode = document.createElement('li')
rootofallnode.appendChild(rootofthenode)
preparesitemap(valuejsoned, rootofthenode, "", rootkey.substring('site-'.length))
}
})}
mainsitemap()
</script>
</div>
<div id="footer"></div>
</body>
</html>

97
main-site/time.html Normal file
View file

@ -0,0 +1,97 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fira+Code:wght@300;400;500&display=swap" rel="stylesheet">
<title>Clock</title>
<style>
body, html {
font-family: 'Fira Code', monospace;
}
body {
margin: 0;
background-color: #121869;
color: white;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.clock {
display: none;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
position: relative;
top: -4em;
}
.time {
display: flex;
font-size: 500%;
}
.date {
font-size: 200%;
display: flex;
justify-content: center;
margin-top: 1em;
}
</style>
</head>
<body>
<div id="clock" class="clock">
<div class="time">
<div id="hours"></div>
<div class="sep">:</div>
<div id="minutes"></div>
<div class="sep">:</div>
<div id="seconds"></div>
</div>
<div class="date">
<div id="date-formated"></div>
</div>
</div>
<div class="actions">
</div>
<script>
const hours = document.getElementById('hours')
const minutes = document.getElementById('minutes')
const seconds = document.getElementById('seconds')
const dateFormated = document.getElementById('date-formated')
const clock = document.getElementById('clock')
let addPaddings = val => {
let str = val.toString()
if (str.length === 1) {
return '0' + str
}
return str
}
let tick = () => {
clock.style.display = 'flex'
let date = new Date()
hours.innerHTML = addPaddings(date.getHours())
minutes.innerHTML = addPaddings(date.getMinutes())
seconds.innerHTML = addPaddings(date.getSeconds())
dateFormated.innerHTML = (new Date()).toLocaleString('en', {year: 'numeric', month: 'long', day: 'numeric', weekday: 'long'})
}
tick()
setInterval(() => {
tick()
}, 1000)
</script>
</body>
</html>

View file

@ -0,0 +1,24 @@
<h1>USCPM</h1>
An updated version of Super Chrono Portal Maker Original game by Maxime Euzi&egravere &amp Anders Kaare (see xem.github.io), Remake by GZod01 <br>
<a href="/uscpm/beta">VERSION BETA</a><br><a href="/uscpm">VERSION STABLE</a><br>
If you can't finish the level, press the WIN! button For saving maked levels in the "play" menu levels click the save button For sharing levels or importing click the corresponding buttons <br>
The hash characters: <br>
{<br>
"enable-yellow": "9",<br>
"disable-yellow": ":", <br>
"time-machhine-top": "F", <br>
"time-machine-bottom": "G", <br>
"brick": "3", <br>
"breakable-brick": "5", <br>
"cloud": "=", <br>
"yellow-button": ";", <br>
"box": "&lt", <br>
"steel-brick-for-portals": "4", <br>
"flag": "2", <br>
"coins": "6", <br>
"pics": "7", <br>
"moving-platform": "?", <br>
"ice": "8"<br>
} <br>

File diff suppressed because one or more lines are too long

2034
main-site/uscpm/beta.html Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,17 @@
{
"enable-yellow": "9",
"disable-yellow": ":",
"time-machhine-top": "F",
"time-machine-bottom": "G",
"brick": "3",
"breakable-brick": "5",
"cloud": "=",
"yellow-button": ";",
"box": "<",
"steel-brick-for-portals": "4",
"flag": "2",
"coins": "6",
"pics": "7",
"moving-platform": "?",
"ice": "8"
}

2030
main-site/uscpm/index.html Normal file

File diff suppressed because one or more lines are too long

21
main-site/uscpm/play.bat Normal file
View file

@ -0,0 +1,21 @@
echo checking internet connection
Ping www.google.fr -n 1 -w 1000
cls
if errorlevel 1 (set internet="Not connected to internet") else (set internet="Connected to internet")
echo %internet%
if %internet% == "Connected to internet" (
echo "<script>let url = 'http://gzod01.fr/uscpm/index.html'; fetch(url).then((response) => {if (!response.ok) {throw new Error(`HTTP error: ${response.status}`);};return response.text();}).then((text) => poemDisplay.textContent = text).catch((error) => poemDisplay.textContent = `Could not fetch verse: ${error}`);</script>" > ".\uscpm.html"
echo "do"
start "" ".\uscpm.html"
)
else (
if exist ".\uscpm.html" (
start "" ".\uscpm.html"
) else (
msg "%USERNAME%" "Sorry, your computer can't access to internet and the USCPM file doesn't exist, if the error persist create an issue in the github: https://github.com/gzod01/uscpm"
rem echo "x=msgbox("Sorry, your computer can't access to internet and the USCPM file doesn't exist, if the error persist create an issue in the github: https://github.com/gzod01/uscpm", Button+Icon, "ERROR USCPM")" > .\message.vbs
rem .\message.vbs
rem del .\message.vbs
)
)

View file

@ -0,0 +1,19 @@
<form>
<input type="text" name="text" id="text" onkeyup="showindiv()">
</form>
<div id="content"></div>
<script>
window.onload= function(){
if(document.getElementById('text').value ===''){}
else{
let text = document.getElementById('text').value
let ntext = text.replace('\n','<br>')
document.getElementById('content').innerHTML = ntext
}
}
function showindiv(){
let text = document.getElementById('text').value
let ntext = text.replace('\n','<br>')
document.getElementById('content').innerHTML = ntext
}
</script>