Exemplo n.º 1
0
        public static void HandleUpdate(HttpRequest Request, HttpResponse Response)
        {
            ClientControlsReader r	= new ClientControlsReader(Request.InputStream);
            byte[] buffer;
            FileStream inFile = null;
            try
            {
                Response.ClearContent();
                ClientControlsWriter w		= new ClientControlsWriter(Response.OutputStream);

                int updateManagerVersion	= int.Parse(Request["updateManagerVersion"]);
                int controlReleaseVersion	= int.Parse(Request["controlReleaseVersion"]);
                int processorArchitecture	= int.Parse(Request["processorArchitecture"]);
                bool win95					= Request["platform"] == "95";
                int winMajor				= int.Parse(Request["winmajor"]);
                int winMinor				= int.Parse(Request["winminor"]);
                string winCsd				= Request["winCsd"];
                string gdiplusVerString		= Request["gdiplusver"].Trim();
                bool hasGdiplus				= gdiplusVerString != "0.0";
                bool adminInstall			= bool.Parse(Request["admin"]);
                bool hasMfc71				= bool.Parse(Request["mfc71"]);

                string[] files;
                if(!hasGdiplus)
                    files = new string[] { "gdiplus", "minakortcontrols" };
                else
                    files = new string[] { "minakortcontrols" };

                //Write version
                w.Write(updateManagerVersion);
                //Write response code
                w.Write(1);
                //Write response message
                string message = "";
                w.WriteString(message);

                //Write file count
                w.Write(files.Length);

                //Write total file size
                int totalSize=0;
                foreach(string file in files)
                {
                    string filePath = HttpContext.Current.Server.MapPath(Configuration.RootPath+ "public/" + file + ".dll");
                    totalSize += (int)new FileInfo(filePath).Length;
                }
                w.Write(totalSize);

                //Write files
                foreach(string file in files)
                {
                    string clientFileName;
                    if(file == "minakortcontrols")
                    {
                        w.Write((byte)(1));
                        clientFileName = "minakortcontrols.2.dll";
                    }
                    else
                    {
                        w.Write((byte)(0));
                        clientFileName = "gdiplus.dll";
                    }

                    //Write client file name
                    w.WriteString(clientFileName);

                    string filePath = HttpContext.Current.Server.MapPath(Configuration.RootPath+ "public/" + file + ".dll");

                    inFile = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                    w.Write((int)inFile.Length);
                    buffer = new byte[inFile.Length];
                    inFile.Read(buffer,0,buffer.Length);
                    w.Write(buffer);
                    inFile.Close();
                    inFile = null;
                }
            }
            finally
            {
                if(inFile != null)
                    inFile.Close();
                Response.Flush();
                Response.Close();
                Response.End();
            }
        }
Exemplo n.º 2
0
        static void HandleCategoryLookup(HttpRequest Request, HttpResponse Response, Guid userId)
        {
            try
            {
                Response.ClearContent();
                ClientControlsWriter w = new ClientControlsWriter(Response.OutputStream);

                //Version
                w.Write((int)1);

                //ResultCode
                if(userId == Guid.Empty)
                {
                    w.Write((int)-1);
                    return;
                }

                string categoryName = Request["categoryName"];
                if(categoryName == null)
                    categoryName = string.Empty;
                categoryName = categoryName.Trim();
                if(!Validation.ValidateCategoryName(categoryName))
                {
                    w.Write((int)-2);
                    return;
                }

                w.Write((int)0);
                // } result code.

                Database.MemberDetails details = Database.GetMemberDetails(null, userId);
                Guid existingId = Database.GetSubCategory(userId, details.HomeCategoryId, categoryName);
                Database.Category cat = null;
                if(existingId != Guid.Empty)
                    cat = Database.GetCategoryInfo(userId, existingId);

                w.Write(existingId != Guid.Empty);
                w.Write(existingId.ToByteArray());
                //canAddPermission
                w.Write(cat != null && cat.CurrentPermission >= Permission.Add);
                //securityPermission
                w.Write(cat != null && cat.CurrentPermission >= Permission.Owner); //TODO: shold be securitypermission.
                w.WriteString(cat != null?cat.Name:categoryName);

                //can't send email
                w.Write((byte)0x00);
                //can't share to friends
                w.Write((byte)0x00);

                //Write the permission entries on the category.
                if(existingId == Guid.Empty)
                    w.Write(0);
                else
                {
                    Guid groupId = Database.GetMemberGroup(userId, "$"+existingId);
                    Database.GroupMember[] members = Database.EnumGroupMembers(userId, groupId);
                    w.Write((uint)(members.Length-1)); //minus self
                    foreach(Database.GroupMember member in members)
                    {
                        if(member.MemberId == userId)
                            continue;
                        Database.MemberDetails md = Database.GetMemberDetails(null, member.MemberId);
                        w.Write((byte)0);
                        w.Write(md.Id.ToByteArray());
                        w.WriteString(md.admin_username);
                        w.WriteString(md.admin_email);
                        w.WriteString(md.Name);

                        w.Write((uint)0);
                        w.Write((uint)0);
                        w.Write((uint)0);
                        w.Write((uint)0);
                    }
                }
            }
            finally
            {
                Response.Flush();
                Response.Close();
                Response.End();
            }
        }
Exemplo n.º 3
0
        static void HandleCreateCategory(HttpRequest Request, HttpResponse Response, Guid userId)
        {
            ClientControlsWriter w = new ClientControlsWriter(Response.OutputStream);
            //-1 = fail, 0=ok, 1=usersFailedAdding
            int result		= -1;
            uint version	= 1;
            Guid id			= Guid.Empty;
            try
            {
                ClientControlsReader r = new ClientControlsReader(Request.InputStream);
                r.ReadTag();

                version					= r.ReadUInt32();
                string name				= r.ReadString();
                string comment			= null;
                id						= new Guid(r.ReadBytes(16));
                bool letFriendsAdd		= r.ReadBoolean();
                bool shareToFriends		= r.ReadBoolean();
                bool sendEmail			= r.ReadBoolean();

                ArrayList members		= new ArrayList();
                uint shareCount			= r.ReadUInt32();
                while(shareCount-- > 0)
                {
                    Guid shareId		= new Guid(r.ReadBytes(16));
                    members.Add(shareId);
                }

                if(id == Guid.Empty)
                {
                    Guid homeCat = Database.GetMemberDetails(null, userId).HomeCategoryId;
                    id = Database.GetSubCategory(userId, homeCat, name);
                    if(id == Guid.Empty)
                        Database.CreatePhotoCategory(userId, homeCat, name, comment, out id);
                }

                if(shareCount==0)
                    result = 0;
                else
                {
                    Guid groupId = Guid.Empty;
                    Database.SetCategoryInheritPermissions(userId, id, false);
                    groupId = Database.GetMemberGroup(userId, "$"+id.ToString());
                    if(groupId == Guid.Empty)
                        //TODO: delete this group when we delete the category.
                        Database.CreateMemberGroup(userId, Guid.Empty, "$"+id.ToString(), out groupId);

                    try
                    {
                        Database.ClearGroupMembers(new GuidId(userId), groupId);
                        foreach(Guid member in members)
                            try
                            {
                                if(member == userId)
                                    continue;
                                Database.AddUserToMemberGroup(userId, member, groupId, false, GroupMembershipLevel.Default, -1);
                            }
                            catch
                            {
                                int a = 3;
                            }
                        Database.SetGroupPermission(userId, groupId, id, letFriendsAdd?Permission.Add:Permission.Read,-1);

                        result = 0;
                    }
                    catch
                    {
                        result = 1;
                    }
                }

            }
            catch(Exception e)
            {
                string a = e.ToString();
            }
            finally
            {
                w.Write(version);
                w.Write(result);
                w.Write(id.ToByteArray());
            }
        }
Exemplo n.º 4
0
        public static void HandleUserLookup(HttpRequest Request, HttpResponse Response, Guid userId)
        {
            try
            {
                ClientControlsReader r	= new ClientControlsReader(Request.InputStream);
                Response.ClearContent();
                ClientControlsWriter w = new ClientControlsWriter(Response.OutputStream);

                w.Write(1);

                string query = Request["userquery"];

                //Write result code
                if(query == null || query.Length == 0)
                {
                    w.Write(-1);
                    return;
                }
                else
                    w.Write(0);

                query = "%"+query+"%";
                ArrayList data = new ArrayList();
                using(Db db = new Db())
                {
                    db.CommandText = @"
                            SELECT id, fullNameClean as fullName, username, email
                            FROM tMember
                            WHERE fullName LIKE @q OR email LIKE @q OR username LIKE @q
                            ORDER BY fullNameClean ASC
                            ";
                    db.AddParameter("@q", query);
                    while(db.Read())
                    {
                        UserInfo user	= new UserInfo();
                        user.username	= (string)db["username"];
                        user.id			= (Guid)db["id"];
                        user.email		= db["email"] as string;
                        user.name		= (string)db["fullName"];
                        data.Add(user);
                    }
                }

                w.Write((int)data.Count);
                foreach(object o in data)
                {
                    if(o is UserInfo)
                    {
                        w.Write((byte)0);
                        UserInfo user = (UserInfo)o;
                        w.Write(user.id.ToByteArray());
                        w.WriteString(user.username);
                        w.WriteString(user.email);
                        w.WriteString(user.name);
                    }
                }

                int a = 3;
            }
            finally
            {
                Response.Flush();
                Response.Close();
                Response.End();
            }
        }
Exemplo n.º 5
0
        static void HandleCreateCategory(HttpRequest Request, HttpResponse Response, Guid userId)
        {
            ClientControlsWriter w = new ClientControlsWriter(Response.OutputStream);
            //-1 = fail, 0=ok, 1=usersFailedAdding
            int  result  = -1;
            uint version = 1;
            Guid id      = Guid.Empty;

            try
            {
                ClientControlsReader r = new ClientControlsReader(Request.InputStream);
                r.ReadTag();

                version = r.ReadUInt32();
                string name    = r.ReadString();
                string comment = null;
                id = new Guid(r.ReadBytes(16));
                bool letFriendsAdd  = r.ReadBoolean();
                bool shareToFriends = r.ReadBoolean();
                bool sendEmail      = r.ReadBoolean();

                ArrayList members    = new ArrayList();
                uint      shareCount = r.ReadUInt32();
                while (shareCount-- > 0)
                {
                    Guid shareId = new Guid(r.ReadBytes(16));
                    members.Add(shareId);
                }

                if (id == Guid.Empty)
                {
                    Guid homeCat = Database.GetMemberDetails(null, userId).HomeCategoryId;
                    id = Database.GetSubCategory(userId, homeCat, name);
                    if (id == Guid.Empty)
                    {
                        Database.CreatePhotoCategory(userId, homeCat, name, comment, out id);
                    }
                }

                if (shareCount == 0)
                {
                    result = 0;
                }
                else
                {
                    Guid groupId = Guid.Empty;
                    Database.SetCategoryInheritPermissions(userId, id, false);
                    groupId = Database.GetMemberGroup(userId, "$" + id.ToString());
                    if (groupId == Guid.Empty)
                    {
                        //TODO: delete this group when we delete the category.
                        Database.CreateMemberGroup(userId, Guid.Empty, "$" + id.ToString(), out groupId);
                    }

                    try
                    {
                        Database.ClearGroupMembers(new GuidId(userId), groupId);
                        foreach (Guid member in members)
                        {
                            try
                            {
                                if (member == userId)
                                {
                                    continue;
                                }
                                Database.AddUserToMemberGroup(userId, member, groupId, false, GroupMembershipLevel.Default, -1);
                            }
                            catch
                            {
                                int a = 3;
                            }
                        }
                        Database.SetGroupPermission(userId, groupId, id, letFriendsAdd?Permission.Add:Permission.Read, -1);

                        result = 0;
                    }
                    catch
                    {
                        result = 1;
                    }
                }
            }
            catch (Exception e)
            {
                string a = e.ToString();
            }
            finally
            {
                w.Write(version);
                w.Write(result);
                w.Write(id.ToByteArray());
            }
        }
Exemplo n.º 6
0
        static void HandleCategoryLookup(HttpRequest Request, HttpResponse Response, Guid userId)
        {
            try
            {
                Response.ClearContent();
                ClientControlsWriter w = new ClientControlsWriter(Response.OutputStream);

                //Version
                w.Write((int)1);

                //ResultCode
                if (userId == Guid.Empty)
                {
                    w.Write((int)-1);
                    return;
                }

                string categoryName = Request["categoryName"];
                if (categoryName == null)
                {
                    categoryName = string.Empty;
                }
                categoryName = categoryName.Trim();
                if (!Validation.ValidateCategoryName(categoryName))
                {
                    w.Write((int)-2);
                    return;
                }

                w.Write((int)0);
                // } result code.

                Database.MemberDetails details = Database.GetMemberDetails(null, userId);
                Guid existingId       = Database.GetSubCategory(userId, details.HomeCategoryId, categoryName);
                Database.Category cat = null;
                if (existingId != Guid.Empty)
                {
                    cat = Database.GetCategoryInfo(userId, existingId);
                }

                w.Write(existingId != Guid.Empty);
                w.Write(existingId.ToByteArray());
                //canAddPermission
                w.Write(cat != null && cat.CurrentPermission >= Permission.Add);
                //securityPermission
                w.Write(cat != null && cat.CurrentPermission >= Permission.Owner);                 //TODO: shold be securitypermission.
                w.WriteString(cat != null?cat.Name:categoryName);

                //can't send email
                w.Write((byte)0x00);
                //can't share to friends
                w.Write((byte)0x00);

                //Write the permission entries on the category.
                if (existingId == Guid.Empty)
                {
                    w.Write(0);
                }
                else
                {
                    Guid groupId = Database.GetMemberGroup(userId, "$" + existingId);
                    Database.GroupMember[] members = Database.EnumGroupMembers(userId, groupId);
                    w.Write((uint)(members.Length - 1));                   //minus self
                    foreach (Database.GroupMember member in members)
                    {
                        if (member.MemberId == userId)
                        {
                            continue;
                        }
                        Database.MemberDetails md = Database.GetMemberDetails(null, member.MemberId);
                        w.Write((byte)0);
                        w.Write(md.Id.ToByteArray());
                        w.WriteString(md.admin_username);
                        w.WriteString(md.admin_email);
                        w.WriteString(md.Name);

                        w.Write((uint)0);
                        w.Write((uint)0);
                        w.Write((uint)0);
                        w.Write((uint)0);
                    }
                }
            }
            finally
            {
                Response.Flush();
                Response.Close();
                Response.End();
            }
        }
Exemplo n.º 7
0
        public static void HandleUserLookup(HttpRequest Request, HttpResponse Response, Guid userId)
        {
            try
            {
                ClientControlsReader r = new ClientControlsReader(Request.InputStream);
                Response.ClearContent();
                ClientControlsWriter w = new ClientControlsWriter(Response.OutputStream);

                w.Write(1);

                string query = Request["userquery"];

                //Write result code
                if (query == null || query.Length == 0)
                {
                    w.Write(-1);
                    return;
                }
                else
                {
                    w.Write(0);
                }

                query = "%" + query + "%";
                ArrayList data = new ArrayList();
                using (Db db = new Db())
                {
                    db.CommandText = @"
							SELECT id, fullNameClean as fullName, username, email 
							FROM tMember 
							WHERE fullName LIKE @q OR email LIKE @q OR username LIKE @q
							ORDER BY fullNameClean ASC	
							"                            ;
                    db.AddParameter("@q", query);
                    while (db.Read())
                    {
                        UserInfo user = new UserInfo();
                        user.username = (string)db["username"];
                        user.id       = (Guid)db["id"];
                        user.email    = db["email"] as string;
                        user.name     = (string)db["fullName"];
                        data.Add(user);
                    }
                }

                w.Write((int)data.Count);
                foreach (object o in data)
                {
                    if (o is UserInfo)
                    {
                        w.Write((byte)0);
                        UserInfo user = (UserInfo)o;
                        w.Write(user.id.ToByteArray());
                        w.WriteString(user.username);
                        w.WriteString(user.email);
                        w.WriteString(user.name);
                    }
                }

                int a = 3;
            }
            finally
            {
                Response.Flush();
                Response.Close();
                Response.End();
            }
        }
Exemplo n.º 8
0
        public static void HandleUpdate(HttpRequest Request, HttpResponse Response)
        {
            ClientControlsReader r = new ClientControlsReader(Request.InputStream);

            byte[]     buffer;
            FileStream inFile = null;

            try
            {
                Response.ClearContent();
                ClientControlsWriter w = new ClientControlsWriter(Response.OutputStream);

                int    updateManagerVersion  = int.Parse(Request["updateManagerVersion"]);
                int    controlReleaseVersion = int.Parse(Request["controlReleaseVersion"]);
                int    processorArchitecture = int.Parse(Request["processorArchitecture"]);
                bool   win95            = Request["platform"] == "95";
                int    winMajor         = int.Parse(Request["winmajor"]);
                int    winMinor         = int.Parse(Request["winminor"]);
                string winCsd           = Request["winCsd"];
                string gdiplusVerString = Request["gdiplusver"].Trim();
                bool   hasGdiplus       = gdiplusVerString != "0.0";
                bool   adminInstall     = bool.Parse(Request["admin"]);
                bool   hasMfc71         = bool.Parse(Request["mfc71"]);


                string[] files;
                if (!hasGdiplus)
                {
                    files = new string[] { "gdiplus", "minakortcontrols" }
                }
                ;
                else
                {
                    files = new string[] { "minakortcontrols" }
                };


                //Write version
                w.Write(updateManagerVersion);
                //Write response code
                w.Write(1);
                //Write response message
                string message = "";
                w.WriteString(message);

                //Write file count
                w.Write(files.Length);

                //Write total file size
                int totalSize = 0;
                foreach (string file in files)
                {
                    string filePath = HttpContext.Current.Server.MapPath(Configuration.RootPath + "public/" + file + ".dll");
                    totalSize += (int)new FileInfo(filePath).Length;
                }
                w.Write(totalSize);

                //Write files
                foreach (string file in files)
                {
                    string clientFileName;
                    if (file == "minakortcontrols")
                    {
                        w.Write((byte)(1));
                        clientFileName = "minakortcontrols.2.dll";
                    }
                    else
                    {
                        w.Write((byte)(0));
                        clientFileName = "gdiplus.dll";
                    }

                    //Write client file name
                    w.WriteString(clientFileName);


                    string filePath = HttpContext.Current.Server.MapPath(Configuration.RootPath + "public/" + file + ".dll");

                    inFile = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                    w.Write((int)inFile.Length);
                    buffer = new byte[inFile.Length];
                    inFile.Read(buffer, 0, buffer.Length);
                    w.Write(buffer);
                    inFile.Close();
                    inFile = null;
                }
            }
            finally
            {
                if (inFile != null)
                {
                    inFile.Close();
                }
                Response.Flush();
                Response.Close();
                Response.End();
            }
        }