self.get_server_info = function(session_id, server, callback) {

        session_id = sanitize.simple_string(session_id);
        server = sanitize.simple_string(server);

        helper.get_user_data(session_id, function(d_error, user, groups, permissions, session) {

            if (d_error) {
                callback(new Error("Invalid session"), null);
                return;
            }

            if (permissions.can_admin_servers() || permissions.is_superuser()) {
                server_manager.get_server(server, function(g_error, server_obj) {
                    if (g_error) {
                        callback(g_error, null);
                        return;
                    }
                    server_obj.get_info(function(s_error, status) {
                        if (s_error) {
                            callback(s_error, null);
                            return;
                        }
                        
                        callback(null, status);
                    });
                });
            } else {
                callback(new Error("Permission denied"), null);
            }

        });
    };
    new_password_session: function(username, password, callback) {

        username = sanitize.simple_string(username);

        database.findOne('users', {username: username}, function(error, result) {
            if (result !== null) {
                var salt = result.salt;
                common_crypto.pbkdf2(password, salt, function(error, hash) {
                    if (!error) {
                        if (hash === null || result.password === null) {
                            callback(new Error("Login error"), null);
                        } else if (hash == result.password) {

                            create_new_session(username, callback);

                        } else {
                            callback(new Error("Invalid username/password"), null);
                        }
                    } else {
                        callback(error, null);
                    }
                });
            } else {
                callback(new Error("Invalid username/password"), null);
            }
        });
    },
Ejemplo n.º 3
0
	new_lab: function(lab_name, username, callback){
			
			var new_uuid = uuid.v1();
		
			var current_time = new Date().getTime();

			lab_name = sanitize.simple_string(lab_name);
			username = sanitize.simple_string(username);

			var new_lab_object = {
				lab_id: new_uuid,
				name: lab_name,
				status: "open",
				description: "",
				current_topology: {
						devices: [],
						connections: [],
				},
				saves: {},
				shares: {},
				last_accessed: current_time,
				last_modified: current_time,
				creation_date: current_time,
				last_touch: current_time,
				owner: username,
				extra: {}
			};
			
			// Attempt to insert the device
			database.insert('labs',new_lab_object,function(result){
				if (result.ERROR)
					{ 
						// If there is an error, check if it is indicating that the uuid already exists
						if (result.Error.error_message.name == "MongoError" && result.Error.error_message.code == 11000)
							{
								lab_util.new_lab(lab_name,username,callback);
							}else{
								logging.log(logging.TYPES.CODE_ERROR, result.Error);
								callback(result);
								return;
							}
					}else{
						// If clear, return new lab object
						lab_util.get_lab(new_uuid,callback);
					}
			});	
	},
    list_my_permissions: function(session_id, callback) {
        session_id = sanitize.simple_string(session_id);
        helper.get_user_data(session_id, function(d_error, user, groups, permissions, session) {

            if (d_error) {
                callback(new Error("Invalid session"), null);
                return;
            }

            callback(null, user_data.permissions.list_permissions());
        });
    },
    app.post('/login', function (req, res) {

        var username = sanitize.simple_string(req.body.username);
        var password = req.body.password;

        session_controller.password_login(username, password, function(error, session_id) {
            if (error) {
                res.render('login', { error: error.message });
            } else {
                res.cookie('session_id', session_id, { signed: true });
                res.redirect('/main');
            }
        });
    });
    self.list_servers = function(session_id, callback) {

        session_id = sanitize.simple_string(session_id);

        helper.get_user_data(session_id, function(d_error, user, groups, permissions, session) {
            if (d_error) {
                console.log(d_error)
                callback(new Error("Invalid session"), null);
                return;
            }

            if (permissions.can_admin_servers() || permissions.is_superuser()) {
                server_manager.list_servers(function(error, result) {
                    console.log(error, result);
                    callback(error, result);
                });
            } else {
                callback(new Error("Permission denied"), null);
            }

        });
    };
 self.set_owner = function(username) {
     username = sanitize.simple_string(username);
     Private.owner = username;
 };
 self.set_vm_server = function(vm_server) {
     vm_server = sanitize.simple_string(vm_server);
     Private.vm_server = vm_server;
 };
Ejemplo n.º 9
0
	self.set_name = function(name){
		Private.name = sanitize.simple_string(name);
	};
Ejemplo n.º 10
0
	self.set_owner = function(new_owner, callback){
		Private.owner = sanitize.simple_string(new_owner);
	};
 self.set_user = function(user) {
     Private.user = sanitize.simple_string(user);
 };
 self.set_session_data = function(key, value) {
     key = sanitize.simple_string(key);
     Private.session_data[key] = value;
 };