Beispiel #1
0
 async def getKeyToCreds(self, keyfile, basePath=".ssh"):
     if basePath != ".":
         keyfile = os.path.join(basePath, keyfile)
     from baboossh.params import Extensions
     keysFolder = os.path.join(self.wspaceFolder, "keys")
     filename = str(self.connection.getEndpoint()).replace(
         ":", "-") + "_" + str(
             self.connection.getUser()) + "_" + keyfile.replace("/", "_")
     filepath = os.path.join(keysFolder, filename)
     try:
         await asyncssh.scp((self.socket, keyfile), filepath)
     except Exception as e:
         print(e)
         return None
     subprocess.run(["chmod", "600", filepath])
     p = subprocess.run(["sha1sum", filepath], stdout=subprocess.PIPE)
     output = p.stdout.decode("utf-8")
     output = output.split(" ", 1)[0]
     if output in self.keysHash.keys():
         if filepath != self.keysHash[output]:
             os.remove(filepath)
         return None
     valid, haspass = Extensions.getAuthMethod("privkey").checkKeyfile(
         filepath)
     if valid:
         self.keysHash[output] = filepath
         c = {"passphrase": "", "keypath": filepath, "haspass": haspass}
         cred = Creds("privkey", json.dumps(c))
         if not self.connection.inScope():
             cred.unscope()
         if cred.getId() is None:
             cred.setFound(self.connection.getEndpoint())
             cred.save()
             self.newCreds.append(cred)
         return cred
     else:
         os.remove(filepath)
     return None
Beispiel #2
0
 def getKeyToCreds(self, keyfile, basePath=".ssh"):
     if basePath != ".":
         keyfile = os.path.join(basePath, keyfile)
     from baboossh.extensions import Extensions
     keysFolder = os.path.join(self.wspaceFolder, "keys")
     filename = str(self.connection.endpoint).replace(":", "-") + "_" + str(
         self.connection.user) + "_" + keyfile.replace("/", "_")
     filepath = os.path.join(keysFolder, filename)
     try:
         self.sftp.get(keyfile, filepath)
     except Exception as e:
         print(e)
         return None
     subprocess.run(["chmod", "600", filepath])
     p = subprocess.run(["sha1sum", filepath], stdout=subprocess.PIPE)
     output = p.stdout.decode("utf-8")
     output = output.split(" ", 1)[0]
     if output in self.keysHash.keys():
         if filepath != self.keysHash[output]:
             os.remove(filepath)
         return None
     valid, haspass = Extensions.auths["privkey"].checkKeyfile(filepath)
     if valid:
         self.keysHash[output] = filepath
         c = {"passphrase": "", "keypath": filepath, "haspass": haspass}
         cred = Creds("privkey", json.dumps(c))
         if not self.connection.scope:
             cred.scope = False
         if cred.id is None:
             cred.found = self.connection.endpoint
             cred.save()
             self.newCreds.append(cred)
         return cred
     else:
         os.remove(filepath)
     return None
Beispiel #3
0
 def addCreds(self,credsType,stmt):
     credsContent = Extensions.getAuthMethod(credsType).fromStatement(stmt)
     newCreds = Creds(credsType,credsContent)
     newCreds.save()
     return newCreds.getId()