Example #1
0
 def get_all_hosts_status(cls):
     hosts = cls.query.all()
     session.close()
     status_list = {
         host.id: json.loads(host.status) for host in hosts
     }
     return status_list
Example #2
0
 def check_password(cls, username, password):
     user_mata_info = cls.query.filter_by(username=username).first()
     session.close()
     if user_mata_info:
         return pbkdf2_sha256.verify(password, user_mata_info.password)
     else:
         return False
Example #3
0
    def post(self):
        taskname = self.get_argument("taskname")
        repo_uri = self.get_argument("repo_uri")
        entry_point = self.get_argument("entry_point")
        hosts = json.loads(self.get_argument("hosts"))

        username = self.get_secure_cookie("username")
        user_id = UserMeta.query.filter_by(username=username).first().id

        deploy_item = DeployMeta(taskname=taskname, user_id=user_id,
                                 repo_uri=repo_uri, entry_point=entry_point,
                                 hosts=hosts)
        session.add(deploy_item)
        session.commit()
        session.close()

        do_deploy(deploy_id=deploy_item.id,
                  entry_point=entry_point, user="******",
                  hosts=hosts, repo_uri=repo_uri)

        self.write({
            deploy_item.id: {
                "Taskname": deploy_item.taskname,
                "Status": deploy_item.status,
                "Created": created2str(created=deploy_item.created)
            }
        })
Example #4
0
 def get(self):
     username = self.get_secure_cookie("username")
     if username:
         query_data = UserMeta.query.filter_by(username=username).first()
         session.close()
         self.write({
             "id": query_data.id,
             "username": username,
             "type": query_data.user_type
         })
     else:
         self.write({})
Example #5
0
 def get_all_hosts_dockers_status(cls):
     hosts = cls.query.all()
     session.close()
     result = []
     for host in hosts:
         for docker_status in json.loads(host.dockers_status):
             _docker_status = dict(docker_status)
             _docker_status.update({
                 "Hostname": host.hostname,
                 "IP": host.ip
             })
             result.append(_docker_status)
     return result
Example #6
0
 def get_ssh_permission_by_user_id(cls, user_id):
     all_hosts_status = HostMeta.get_all_hosts_status()
     session.close()
     hosts_has_permission = set([
         item.host_id for item in cls.query.filter_by(user_id=user_id).all()
     ])
     result = {}
     for host_id in all_hosts_status.keys():
         result[host_id] = {
             "Hostname": all_hosts_status[host_id]["Hostname"],
             "IP": all_hosts_status[host_id]["IP"],
             "Has Permission": (
                 True if host_id in hosts_has_permission else False
             )
         }
     return result
Example #7
0
    def post(self):
        hostname = self.get_argument("hostname")
        ip = self.get_argument("ip")
        ssh_secret_key = self.get_argument("ssh_secret_key")

        new_host(ip=ip, ssh_secret_key=ssh_secret_key)

        _host_item = HostMeta(hostname=hostname, ip=ip)
        session.add(_host_item)
        session.commit()
        session.close()


        self.write({
            _host_item.id: json.loads(_host_item.status)
        })
Example #8
0
 def post(self):
     username, password = (
         self.get_argument("username"), self.get_argument("password")
     )
     if username and password and UserMeta.check_password(username=username,
                                                          password=password):
         self.set_secure_cookie("username", username)
         query_data = UserMeta.query.filter_by(username=username).first()
         session.close()
         self.write({
             "id": query_data.id,
             "username": username,
             "type": query_data.user_type
         })
     else:
         self.write({
             "msg": "Wrong username or password"
         })
Example #9
0
    def post(self):
        username = self.get_argument("username")
        password = self.get_argument("password")
        user_type = self.get_argument("type")
        public_key = self.get_argument("public_key")

        current_username = self.get_secure_cookie("username")
        query_data = UserMeta.query.filter_by(username=current_username).first()
        if query_data.user_type != 1:
            raise HTTPError(403)

        public_key_path = new_user_public_key(public_key)
        user = UserMeta(username=username, user_type=int(user_type),
                        password=password, public_key=public_key_path)
        session.add(user)
        session.commit()
        session.close()

        self.write({"msg": "success"})
Example #10
0
    def patch(self):
        username = self.get_secure_cookie("username")
        user_item = UserMeta.query.filter_by(username=username).first()
        user_id, public_key_path = user_item.id, user_item.public_key
        host_id, has_permission = (
            int(self.get_argument("host_id")),
            True if self.get_argument("has_permission") == "true" else False
        )
        if has_permission:
            host_ip = HostMeta.get_all_hosts_status()[host_id]["IP"]
            ssh_permission_item = SSHPermissionMeta(
                user_id=user_id, host_id=host_id
            )
            session.add(ssh_permission_item)
            session.commit()
            session.close()

            print public_key_path, user_id

            subprocess.call(
                "cat " + public_key_path + " | ssh root@" + host_ip +
                " \'cat >> ~/.ssh/authorized_keys\'", shell=True
            )
        self.write({"msg": "success"})
Example #11
0
 def change_password(cls, username, password):
     user_mata_info = cls.query.filter_by(username=username).first()
     user_mata_info.password = pbkdf2_sha256.encrypt(password)
     session.add(user_mata_info)
     session.commit()
     session.close()
Example #12
0
 def update_host_dockers_status(cls, ip, dockers_status):
     host = cls.query.filter_by(ip=ip).first()
     if host:
         host.dockers_status = json.dumps(dockers_status)
         session.commit()
     session.close()
Example #13
0
 def update_host_process_status(cls, ip, process_status):
     host = cls.query.filter_by(ip=ip).first()
     if host:
         host.process_status = json.dumps(process_status)
         session.commit()
     session.close()
Example #14
0
 def get_host_process_status(cls, host_id):
     host = cls.query.filter_by(id=host_id).first()
     session.close()
     return json.loads(host.process_status) if host else {}