treewide: remove shinobi
flake.lock: Update Flake lock file updates: • Removed input 'shinobi'
This commit is contained in:
parent
a506f427c8
commit
16a469a993
21 changed files with 2 additions and 22904 deletions
20
flake.lock
20
flake.lock
|
@ -596,8 +596,7 @@
|
|||
"nix-crx": "nix-crx",
|
||||
"nix-super": "nix-super",
|
||||
"nixos-hardware": "nixos-hardware",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"shinobi": "shinobi"
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"rust-overlay": {
|
||||
|
@ -622,23 +621,6 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"shinobi": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1649801039,
|
||||
"narHash": "sha256-iIlG/OSV/vR8g2G0e0/zEOoOKGl0I2WQ8N5OwpeAhoc=",
|
||||
"owner": "Shinobi-Systems",
|
||||
"repo": "Shinobi",
|
||||
"rev": "a0050e2eeee00c24de91d62e47b66d64efd90712",
|
||||
"type": "gitlab"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Shinobi-Systems",
|
||||
"ref": "dashboard-v3",
|
||||
"repo": "Shinobi",
|
||||
"type": "gitlab"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1648297722,
|
||||
|
|
|
@ -33,8 +33,6 @@
|
|||
|
||||
dream2nix.url = "github:nix-community/dream2nix";
|
||||
dream2nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||
|
||||
shinobi = { url = "gitlab:Shinobi-Systems/Shinobi/dashboard-v3"; flake = false; };
|
||||
};
|
||||
outputs = { self, nixpkgs, home-manager, nixos-hardware, ... }@inputs:
|
||||
let
|
||||
|
|
|
@ -1,64 +0,0 @@
|
|||
{ config, inputs, pkgs, ... }:
|
||||
let
|
||||
dataDir = "/srv/data/SHINOBI/shinobi";
|
||||
|
||||
shinobiConfigJson = builtins.toJSON {
|
||||
ffmpegBinary = "${pkgs.ffmpeg}/bin/ffmpeg";
|
||||
port = 38080;
|
||||
db = {
|
||||
host = "127.0.0.1";
|
||||
port = 3306;
|
||||
user = "majesticflame";
|
||||
database = "ccio";
|
||||
};
|
||||
};
|
||||
|
||||
configFile = pkgs.writeText "shinobi-conf.json" shinobiConfigJson;
|
||||
|
||||
secretFile = config.age.secrets.shinobi-secrets.path;
|
||||
|
||||
inherit (inputs.self.packages.${pkgs.system}) shinobi;
|
||||
in
|
||||
{
|
||||
age.secrets.shinobi-secrets = {
|
||||
file = ../../../secrets/shinobi-secrets.age;
|
||||
owner = "shinobi";
|
||||
group = "shinobi";
|
||||
mode = "0400";
|
||||
};
|
||||
services.mysql = {
|
||||
enable = true;
|
||||
settings.mysqld.bind-address = "127.0.0.1";
|
||||
package = pkgs.mariadb;
|
||||
dataDir = "/srv/data/DB/mariadb";
|
||||
};
|
||||
|
||||
users.users.shinobi = {
|
||||
isSystemUser = true;
|
||||
group = "shinobi";
|
||||
};
|
||||
|
||||
users.groups.shinobi = {};
|
||||
|
||||
systemd.tmpfiles.rules = [ "d '${dataDir}' 0750 shinobi shinobi - -" ];
|
||||
|
||||
systemd.services.shinobi = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ pkgs.bash pkgs.nodejs-14_x ];
|
||||
preStart = ''
|
||||
${pkgs.jq}/bin/jq --slurp '.[0] * .[1]' ${configFile} ${secretFile} | install -Dm600 -o shinobi -g shinobi /dev/stdin ${dataDir}/conf.json
|
||||
'';
|
||||
serviceConfig = {
|
||||
WorkingDirectory = dataDir;
|
||||
User = "shinobi";
|
||||
ExecStart = "${pkgs.nodejs-14_x}/bin/node ${shinobi}/bin/shinobi";
|
||||
KillSignal = "HUP";
|
||||
OOMPolicy = "continue";
|
||||
Restart = "on-abnormal";
|
||||
RestartSec = "5s";
|
||||
};
|
||||
environment.NODE_PATH = "${shinobi}/lib/node_modules/shinobi/node_modules";
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = [ 38080 ];
|
||||
}
|
|
@ -7,7 +7,6 @@
|
|||
./extras/cachix-upload-daemon.nix
|
||||
./extras/ddcci-backlight.nix
|
||||
./extras/fbi-downloader.nix
|
||||
./extras/shinobi.nix
|
||||
(import ../../users "desktop").users.max
|
||||
inputs.agenix.nixosModules.age
|
||||
]
|
||||
|
|
|
@ -8,17 +8,5 @@
|
|||
}:
|
||||
|
||||
{
|
||||
shinobi.directory-patches = {
|
||||
patches = [
|
||||
./shinobi/0001-packageDirectory.patch
|
||||
./shinobi/0002-use-packageDirectory-for-languages.patch
|
||||
./shinobi/0003-use-s.location.languages.patch
|
||||
./shinobi/0004-use-packageDirectory-for-folders.patch
|
||||
./shinobi/0005-use-packageDirectory-for-definitions.patch
|
||||
./shinobi/0006-use-packageDirectory-for-web-server-paths.patch
|
||||
./shinobi/0007-remove-terminalCommands.patch
|
||||
./shinobi/0008-disable-subscription-bullshit.patch
|
||||
./shinobi/0009-remove-updater-logic.patch
|
||||
];
|
||||
};
|
||||
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
From 033c0a2889ec62ffbb3c489676fb315b3780ba60 Mon Sep 17 00:00:00 2001
|
||||
From: Max <max@privatevoid.net>
|
||||
Date: Tue, 15 Mar 2022 18:15:23 +0100
|
||||
Subject: [PATCH 1/9] packageDirectory
|
||||
|
||||
---
|
||||
libs/process.js | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libs/process.js b/libs/process.js
|
||||
index 9f3852e..b19384a 100644
|
||||
--- a/libs/process.js
|
||||
+++ b/libs/process.js
|
||||
@@ -30,8 +30,10 @@ module.exports = function(process,__dirname){
|
||||
isWin : (process.platform === 'win32' || process.platform === 'win64'),
|
||||
//UTC Offset
|
||||
utcOffset : require('moment')().utcOffset(),
|
||||
- //directory path for this file
|
||||
+ //directory path for cwd
|
||||
mainDirectory : process.cwd(),
|
||||
+ //directory path for this file
|
||||
+ packageDirectory : require('path').resolve(__dirname),
|
||||
//time start
|
||||
timeStarted : new Date()
|
||||
|
||||
--
|
||||
2.35.1
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
From 955e63a2f2cd13b84fb8de1c379b5a7dc98c3dc4 Mon Sep 17 00:00:00 2001
|
||||
From: Max <max@privatevoid.net>
|
||||
Date: Tue, 15 Mar 2022 18:19:58 +0100
|
||||
Subject: [PATCH 2/9] use packageDirectory for languages
|
||||
|
||||
---
|
||||
libs/config.js | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libs/config.js b/libs/config.js
|
||||
index 27dae08..e2c8dae 100644
|
||||
--- a/libs/config.js
|
||||
+++ b/libs/config.js
|
||||
@@ -2,7 +2,7 @@ module.exports = function(s){
|
||||
s.location = {
|
||||
super : s.mainDirectory+'/super.json',
|
||||
config : s.mainDirectory+'/conf.json',
|
||||
- languages : s.mainDirectory+'/languages'
|
||||
+ languages : s.packageDirectory+'/languages'
|
||||
}
|
||||
try{
|
||||
var config = require(s.location.config)
|
||||
--
|
||||
2.35.1
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
From 585c3b05855e4bf3e2bf059d0fda0a893700d3a0 Mon Sep 17 00:00:00 2001
|
||||
From: Max <max@privatevoid.net>
|
||||
Date: Tue, 15 Mar 2022 18:26:44 +0100
|
||||
Subject: [PATCH 3/9] use s.location.languages
|
||||
|
||||
---
|
||||
libs/language.js | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libs/language.js b/libs/language.js
|
||||
index 285d514..3f964b6 100644
|
||||
--- a/libs/language.js
|
||||
+++ b/libs/language.js
|
||||
@@ -16,7 +16,7 @@ module.exports = function(s,config){
|
||||
return Object.assign({},lang)
|
||||
}
|
||||
s.listOfPossibleLanguages = []
|
||||
- fs.readdirSync(s.mainDirectory + '/languages').forEach(function(filename){
|
||||
+ fs.readdirSync(s.location.languages).forEach(function(filename){
|
||||
var name = filename.replace('.json','')
|
||||
s.listOfPossibleLanguages.push({
|
||||
"name": name,
|
||||
--
|
||||
2.35.1
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
From 1f2260eae4be7084e209f07c2316328ed221433e Mon Sep 17 00:00:00 2001
|
||||
From: Max <max@privatevoid.net>
|
||||
Date: Tue, 15 Mar 2022 18:28:48 +0100
|
||||
Subject: [PATCH 4/9] use packageDirectory for folders
|
||||
|
||||
---
|
||||
libs/folders.js | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libs/folders.js b/libs/folders.js
|
||||
index 54f9acc..d35d337 100644
|
||||
--- a/libs/folders.js
|
||||
+++ b/libs/folders.js
|
||||
@@ -3,7 +3,7 @@ module.exports = function(s,config,lang){
|
||||
//directories
|
||||
s.group = {}
|
||||
if(!config.windowsTempDir&&s.isWin===true){config.windowsTempDir='C:/Windows/Temp'}
|
||||
- if(!config.defaultMjpeg){config.defaultMjpeg=s.mainDirectory+'/web/libs/img/bg.jpg'}
|
||||
+ if(!config.defaultMjpeg){config.defaultMjpeg=s.packageDirectory+'/web/libs/img/bg.jpg'}
|
||||
//default stream folder check
|
||||
if(!config.streamDir){
|
||||
if(s.isWin === false){
|
||||
@@ -62,7 +62,7 @@ module.exports = function(s,config,lang){
|
||||
value:""
|
||||
}
|
||||
]
|
||||
- fs.readdirSync(s.mainDirectory + '/web/libs/audio').forEach(function(file){
|
||||
+ fs.readdirSync(s.packageDirectory + '/web/libs/audio').forEach(function(file){
|
||||
s.listOfAudioFiles.push({
|
||||
name: file,
|
||||
value: file
|
||||
@@ -75,7 +75,7 @@ module.exports = function(s,config,lang){
|
||||
value:""
|
||||
}
|
||||
]
|
||||
- fs.readdirSync(s.mainDirectory + '/web/libs/themes').forEach(function(folder){
|
||||
+ fs.readdirSync(s.packageDirectory + '/web/libs/themes').forEach(function(folder){
|
||||
s.listOfThemes.push({
|
||||
name: folder,
|
||||
value: folder
|
||||
--
|
||||
2.35.1
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
From 48b276736cf7fbd721dad40b5cabca1fb094b5d9 Mon Sep 17 00:00:00 2001
|
||||
From: Max <max@privatevoid.net>
|
||||
Date: Tue, 15 Mar 2022 18:35:04 +0100
|
||||
Subject: [PATCH 5/9] use packageDirectory for definitions
|
||||
|
||||
---
|
||||
libs/definitions.js | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libs/definitions.js b/libs/definitions.js
|
||||
index a58a6e2..d60cad9 100644
|
||||
--- a/libs/definitions.js
|
||||
+++ b/libs/definitions.js
|
||||
@@ -1,7 +1,7 @@
|
||||
var fs = require('fs')
|
||||
var express = require('express')
|
||||
module.exports = function(s,config,lang,app,io){
|
||||
- s.location.definitions = s.mainDirectory+'/definitions'
|
||||
+ s.location.definitions = s.packageDirectory+'/definitions'
|
||||
try{
|
||||
var definitions = require(s.location.definitions+'/'+config.language+'.js')(s,config,lang)
|
||||
}catch(er){
|
||||
--
|
||||
2.35.1
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
From c700ec6a01cfc99a639484e9045fc4492466c6ee Mon Sep 17 00:00:00 2001
|
||||
From: Max <max@privatevoid.net>
|
||||
Date: Tue, 15 Mar 2022 18:48:34 +0100
|
||||
Subject: [PATCH 6/9] use packageDirectory for web server paths
|
||||
|
||||
---
|
||||
libs/webServerPaths.js | 12 ++++++------
|
||||
1 file changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/libs/webServerPaths.js b/libs/webServerPaths.js
|
||||
index fba78ba..b72aff6 100644
|
||||
--- a/libs/webServerPaths.js
|
||||
+++ b/libs/webServerPaths.js
|
||||
@@ -77,7 +77,7 @@ module.exports = function(s,config,lang,app,io){
|
||||
////Pages
|
||||
app.enable('trust proxy');
|
||||
if(config.webPaths.home !== '/'){
|
||||
- app.use('/libs',express.static(s.mainDirectory + '/web/libs'))
|
||||
+ app.use('/libs',express.static(s.packageDirectory + '/web/libs'))
|
||||
}
|
||||
[
|
||||
[config.webPaths.home,'libs','/web/libs'],
|
||||
@@ -87,7 +87,7 @@ module.exports = function(s,config,lang,app,io){
|
||||
[config.webPaths.admin,'assets','/web/assets'],
|
||||
[config.webPaths.super,'assets','/web/assets'],
|
||||
].forEach((piece) => {
|
||||
- app.use(s.checkCorrectPathEnding(piece[0])+piece[1],express.static(s.mainDirectory + piece[2]))
|
||||
+ app.use(s.checkCorrectPathEnding(piece[0])+piece[1],express.static(s.packageDirectory + piece[2]))
|
||||
})
|
||||
app.use(bodyParser.json());
|
||||
app.use(bodyParser.urlencoded({extended: true}));
|
||||
@@ -95,10 +95,10 @@ module.exports = function(s,config,lang,app,io){
|
||||
res.header("Access-Control-Allow-Origin",'*');
|
||||
next()
|
||||
})
|
||||
- app.set('views', s.mainDirectory + '/web');
|
||||
+ app.set('views', s.packageDirectory + '/web');
|
||||
app.set('view engine','ejs');
|
||||
//add template handler
|
||||
- if(config.renderPaths.handler!==undefined){require(s.mainDirectory+'/web/'+config.renderPaths.handler+'.js').addHandlers(s,app,io,config)}
|
||||
+ if(config.renderPaths.handler!==undefined){require(s.packageDirectory+'/web/'+config.renderPaths.handler+'.js').addHandlers(s,app,io,config)}
|
||||
|
||||
/**
|
||||
* API : Logout
|
||||
@@ -339,7 +339,7 @@ module.exports = function(s,config,lang,app,io){
|
||||
define: s.getDefinitonFile(userInfo.details.lang),
|
||||
addStorage: s.dir.addStorage,
|
||||
fs: fs,
|
||||
- __dirname: s.mainDirectory,
|
||||
+ __dirname: s.packageDirectory,
|
||||
customAutoLoad: s.customAutoLoadTree
|
||||
})
|
||||
break;
|
||||
@@ -1850,6 +1850,6 @@ module.exports = function(s,config,lang,app,io){
|
||||
res.on('finish',function(){
|
||||
res.end()
|
||||
})
|
||||
- fs.createReadStream(s.mainDirectory + '/web/pages/robots.txt').pipe(res)
|
||||
+ fs.createReadStream(s.packageDirectory + '/web/pages/robots.txt').pipe(res)
|
||||
})
|
||||
}
|
||||
--
|
||||
2.35.1
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
From a2a0608c4844520b0660bdf48b5376ed0a42e7af Mon Sep 17 00:00:00 2001
|
||||
From: Max <max@privatevoid.net>
|
||||
Date: Tue, 15 Mar 2022 18:51:47 +0100
|
||||
Subject: [PATCH 7/9] remove terminalCommands
|
||||
|
||||
---
|
||||
libs/startup.js | 14 +-------------
|
||||
1 file changed, 1 insertion(+), 13 deletions(-)
|
||||
|
||||
diff --git a/libs/startup.js b/libs/startup.js
|
||||
index b1c8e56..247eeee 100644
|
||||
--- a/libs/startup.js
|
||||
+++ b/libs/startup.js
|
||||
@@ -32,19 +32,7 @@ module.exports = function(s,config,lang,io){
|
||||
var next = function(){
|
||||
if(callback)callback()
|
||||
}
|
||||
- if(!s.isWin && s.packageJson.mainDirectory !== '.'){
|
||||
- var etcPath = '/etc/shinobisystems/cctv.txt'
|
||||
- fs.stat(etcPath,function(err,stat){
|
||||
- if(err || !stat){
|
||||
- exec('node '+ s.mainDirectory + '/INSTALL/terminalCommands.js',function(err){
|
||||
- if(err)console.log(err)
|
||||
- })
|
||||
- }
|
||||
- next()
|
||||
- })
|
||||
- }else{
|
||||
- next()
|
||||
- }
|
||||
+ next()
|
||||
}
|
||||
var loadedAccounts = []
|
||||
var foundMonitors = []
|
||||
--
|
||||
2.35.1
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
From adb23ffced5408cc010b3863ba88fe81e39f17ce Mon Sep 17 00:00:00 2001
|
||||
From: Max <max@privatevoid.net>
|
||||
Date: Tue, 15 Mar 2022 21:38:42 +0100
|
||||
Subject: [PATCH 8/9] disable subscription bullshit
|
||||
|
||||
---
|
||||
libs/startup.js | 4 ++--
|
||||
libs/webServerSuperPaths.js | 2 +-
|
||||
2 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libs/startup.js b/libs/startup.js
|
||||
index 247eeee..a810171 100644
|
||||
--- a/libs/startup.js
|
||||
+++ b/libs/startup.js
|
||||
@@ -383,7 +383,7 @@ module.exports = function(s,config,lang,io){
|
||||
}
|
||||
})
|
||||
}
|
||||
- config.userHasSubscribed = false
|
||||
+ config.userHasSubscribed = true
|
||||
//check disk space every 20 minutes
|
||||
if(config.autoDropCache===true){
|
||||
setInterval(function(){
|
||||
@@ -404,7 +404,7 @@ module.exports = function(s,config,lang,io){
|
||||
await checkForStaticUsers()
|
||||
//check for subscription
|
||||
checkSubscription(config.subscriptionId,function(hasSubcribed){
|
||||
- config.userHasSubscribed = hasSubcribed
|
||||
+ config.userHasSubscribed = true
|
||||
//check terminal commander
|
||||
checkForTerminalCommands(function(){
|
||||
//load administrators (groups)
|
||||
diff --git a/libs/webServerSuperPaths.js b/libs/webServerSuperPaths.js
|
||||
index bfbccf9..1d1bf3b 100644
|
||||
--- a/libs/webServerSuperPaths.js
|
||||
+++ b/libs/webServerSuperPaths.js
|
||||
@@ -167,7 +167,7 @@ module.exports = function(s,config,lang,app){
|
||||
}
|
||||
checkSubscription(subscriptionId,function(hasSubcribed){
|
||||
endData.ok = hasSubcribed
|
||||
- config.userHasSubscribed = hasSubcribed
|
||||
+ config.userHasSubscribed = true
|
||||
s.closeJsonResponse(res,endData)
|
||||
})
|
||||
},res,req)
|
||||
--
|
||||
2.35.1
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
From 78e72ba70ddbe690720fd7351934481534fed6c2 Mon Sep 17 00:00:00 2001
|
||||
From: Max <max@privatevoid.net>
|
||||
Date: Thu, 17 Mar 2022 23:28:40 +0100
|
||||
Subject: [PATCH 9/9] remove updater logic
|
||||
|
||||
---
|
||||
libs/system/utils.js | 21 +--------------------
|
||||
1 file changed, 1 insertion(+), 20 deletions(-)
|
||||
|
||||
diff --git a/libs/system/utils.js b/libs/system/utils.js
|
||||
index c41c4f6..d045bac 100644
|
||||
--- a/libs/system/utils.js
|
||||
+++ b/libs/system/utils.js
|
||||
@@ -46,26 +46,7 @@ module.exports = (config) => {
|
||||
},
|
||||
updateSystem: () => {
|
||||
return new Promise((resolve,reject) => {
|
||||
- if(!config.thisIsDocker){
|
||||
- if(currentlyUpdating){
|
||||
- resolve(true)
|
||||
- return
|
||||
- };
|
||||
- currentlyUpdating = true
|
||||
- const updateProcess = spawn('sh',[s.mainDirectory + '/UPDATE.sh'])
|
||||
- updateProcess.stderr.on('data',(data) => {
|
||||
- s.systemLog('UPDATE.sh',data.toString())
|
||||
- })
|
||||
- updateProcess.stdout.on('data',(data) => {
|
||||
- s.systemLog('UPDATE.sh',data.toString())
|
||||
- })
|
||||
- updateProcess.on('exit',(data) => {
|
||||
- resolve(true)
|
||||
- currentlyUpdating = false
|
||||
- })
|
||||
- }else{
|
||||
- resolve(false)
|
||||
- }
|
||||
+ resolve(false)
|
||||
})
|
||||
}
|
||||
}
|
||||
--
|
||||
2.35.1
|
||||
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -23,14 +23,5 @@ in
|
|||
|
||||
neovim-gtk = pkgs.callPackage ./apps/neovim-gtk { };
|
||||
|
||||
shinobi = let
|
||||
dream = dream2nix.makeFlakeOutputs {
|
||||
source = inputs.shinobi;
|
||||
settings = [
|
||||
{ translator = "package-lock"; }
|
||||
];
|
||||
};
|
||||
in dream.packages.${pkgs.system}.shinobi // { inherit (dream.apps.${pkgs.system}) resolveImpure; };
|
||||
|
||||
steam-metro-skin = import ./data/misc/steam-metro-skin { inherit (pkgs) fetchzip; };
|
||||
}
|
||||
|
|
|
@ -12,5 +12,4 @@ in with hosts;
|
|||
"transmission-rpc-password.age".publicKeys = max ++ map systemKeys [ TITAN ];
|
||||
"wireguard-key-upload.age".publicKeys = max ++ map systemKeys [ TITAN ];
|
||||
"shadow-max.age".publicKeys = max ++ map systemKeys [ TITAN jericho ];
|
||||
"shinobi-secrets.age".publicKeys = max ++ map systemKeys [ TITAN ];
|
||||
}
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
age-encryption.org/v1
|
||||
-> ssh-ed25519 NO562A hiAC2AAphXRWW35HBHSREoncYBWCkI0Z8cANU/rVJxA
|
||||
1k2mhBAb1ouUBVr873dWkQqhG7iF4h0isksHS/d43h8
|
||||
-> ssh-ed25519 5/zT0w FUssFl0eWdJ0bdU2tMHKGLZ+hEt37YuiR/GkMvXQryM
|
||||
Pxq9ImZShXX6ehqhOXp2EgnWVPmZ0m0kQoKKiJuG6jM
|
||||
-> ssh-ed25519 OxDh5w vtUjeVCgKhdWywJfLij2UbDdgQXdUADnRrVmZHGQz1Y
|
||||
DO39ddAIY93G1j09MCGQzH30WhBC1SQISAVEUwOqorg
|
||||
-> )zyQ:-grease 5|^w (<I
|
||||
52tCw96M9yWTix4pLJQ
|
||||
--- I3aDCmK5N4V0lLGmsP4QQwNJ2RP/TiavQO+s/Csqy/M
|
||||
—
_ßðËRÁù^ìÚ´Œu€•´óŠ†ìwV<77>Ù[Õ\NÂqÒóÆcʪ¶t„v›‡¼G/-bZ<62>ð¡X·ccñh
|
||||
s3R¥®—·9MœBk`àN"E7ÌŽ™ÖÍA MPÚã{©<>¿¡KÄ€E5§â&ÌÞì
|
Loading…
Reference in a new issue