Ejemplo n.º 1
0
        protected override void OnOpen()
        {
            NameValueCollection yquery = this.Context.QueryString;
            String ytoken = yquery.Get("ytoken");
            String yhash  = yquery.Get("yhash");

            try
            {
                if (String.IsNullOrWhiteSpace(ytoken) || String.IsNullOrWhiteSpace(yhash) || ytoken != "zyy20020604")
                {
                    throw YingException.Ying(YingExceptionTypes.YingInvalidToken);
                }
            }
            catch (YingAuthenticationException yexception)
            {
            }
            getYConsole().sendYMessage($"Ying: {ytoken} | {yhash}");
        }
Ejemplo n.º 2
0
        public static void Ying()
        {
            yrouter.yget("/yingyggdrasil/", (yrequest) => new YingResponse(".json", JsonMapper.ToJson(new iYing
            {
                meta = new iYingMeta
                {
                    serverName            = "Ying Sakura City",
                    implementationName    = "Ying Yggdrasil Server",
                    implementationVersion = "6.0.4.0"
                },
                skinDomains = new List <String> {
                    "zyy.com:6040", "iying.top:6040"
                },
                signaturePublickey = "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwg1953V0NHFuE+vClZPp\nmFerk/xmF5ZvnctBQG9wbchhHHHPAiReBpeAmlLXF3nO8NEWyO9fXcUObv4/n8xi\n+QGE0DWwP6h+e/26A68bJsYBbYcxCEBAM7AxKEXyu++EVt3z5VltvDwT9j5V1RzE\neymeyobeJuOpygYMqTu90H4SwVIDJ5Pojjqq0XHrD76X5A0wkoyacXQ0stjNrOtU\nUAOKs4um7+7vLSCrN0ZrnXyBfMxCphyRxcnjLC+NMud68pyx2AiyaVwvPMTfPXt/\noT5VmLDNqzwCaL+uaQFsGmwcwUU3z5DmOp0hNKPop5YedGlD9H4ntNpjk15L7p/g\n9m9UELN63k95VpFCRxt6LaoQ3yd+crbdpoydtlM2JII7f/fBnhvbMzlVmR4qBcDs\nocxVjTd/iNwseGVK9SnN82fFSmKIDScJw8jkmh6St5VTNACxcw+oNQfppfP1YSTm\nIbQlMyGLCaUNwKkHorCoS/paRa9fYi3cuO3PhIdeaOqcSlQHXlle+3dh46rL84LU\nMUcmQv8BO6X9AU5nXrxbOTXn9ezzEbMJW+BQ6+Ureyp/KtJwQQFTZa/Rx/vdNgIJ\nMnCPUod0GT042lA0gICirgy1oPFGwjZpIMmumprJSwUApIjebvtq5jqwEaX9gdZU\nPQsuIGAvhszLY073Ix8W+akCAwEAAQ==\n-----END PUBLIC KEY-----\n"
            }
                                                                                                      ))).ypost("/yingyggdrasil/authserver/authenticate", (yrequest) =>
            {
                YingAuthenticateRequest yauthinfo = JsonConvert.DeserializeObject <YingAuthenticateRequest>(new StreamReader(yrequest.InputStream).ReadToEnd());
                YingAuthenticateResult yresult    = YingAuthenticate.yauthenticate(yauthinfo.username, yauthinfo.password);
                if (!yresult.ysuccess)
                {
                    throw YingException.Ying(yresult.ytype);
                }

                String yaccessToken = Guid.NewGuid().ToString("N");
                if (yauthinfo.clientToken == null)
                {
                    yauthinfo.clientToken = Guid.NewGuid().ToString("N");
                }

                getYDataBaseManager().getYConnection().Insert(new zyy_yggdrasil_tokens
                {
                    yemail = yauthinfo.username,

                    yclientToken = yauthinfo.clientToken,
                    yaccessToken = yaccessToken,

                    ytime = getYTimeStamp().TotalMilliseconds
                });

                String[] yprofiles = JsonConvert.DeserializeObject <String[]>(yresult.yuser.yprofiles);
                String yprofileId  = yprofiles.FirstOrDefault();

                zyy_yggdrasil_profile yprofile = (from y in getYDataBaseManager().getYConnection().Table <zyy_yggdrasil_profile>()
                                                  where y.yyid == yprofileId
                                                  select y).FirstOrDefault();

                zyy_yggdrasil_texture ytexture = (from y in getYDataBaseManager().getYConnection().Table <zyy_yggdrasil_texture>()
                                                  where y.ytextureid == yprofile.ytextureid
                                                  select y).FirstOrDefault();

                YingProfile yyy = new YingProfile
                {
                    id         = yprofile.yyid,
                    name       = yprofile.yname,
                    properties = new List <YingPropertie> {
                        new YingPropertie
                        {
                            name  = "textures",
                            value = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonMapper.ToJson(new YingTexture
                            {
                                timestamp   = ytexture.ytimestamp,
                                profileId   = yprofile.yyid,
                                profileName = yprofile.yname,
                                textures    = new Dictionary <String, YingTextureInfo> {
                                    { "SKIN", new YingTextureInfo()
                                      {
                                          url = ytexture.yskin, metadata = new Dictionary <String, String> {
                                              { "model", ytexture.yskinmetadata }
                                          }
                                      } }
                                }
                            }))),
                            signature = null
                        }
                    }
                };

                return(new YingResponse(".json", JsonConvert.SerializeObject(new iYingAuthenticate
                {
                    accessToken = yaccessToken,
                    clientToken = yauthinfo.clientToken,

                    availableProfiles = new List <YingProfile> {
                        yyy
                    },
                    selectedProfile = yyy,

                    user = new YingUser
                    {
                        id = yresult.yuser.yopenid,
                        properties = new List <YingPropertie>
                        {
                            new YingPropertie {
                                name = "preferredLanguage",
                                value = "zh_CN"
                            }
                        }
                    }
                })));
            }).ypost("/yingyggdrasil/authserver/refresh", (yrequest) =>
            {
                YingRefresh yinfo = JsonMapper.ToObject <YingRefresh>(new StreamReader(yrequest.InputStream).ReadToEnd());
                YingAuthenticateResult yresult = YingAuthenticate.yrefresh(yinfo.accessToken, yinfo.clientToken);
                if (yresult.ysuccess)
                {
                    throw new YingHttpException((int)HttpStatusCode.NoContent, $"Ying {HttpStatusCode.NoContent.GetDescription()}");
                }
                else
                {
                    String[] yprofiles = JsonConvert.DeserializeObject <String[]>(yresult.yuser.yprofiles);
                    String yprofileId  = yprofiles.FirstOrDefault();

                    zyy_yggdrasil_profile yprofile = (from y in getYDataBaseManager().getYConnection().Table <zyy_yggdrasil_profile>()
                                                      where y.yyid == yprofileId
                                                      select y).FirstOrDefault();

                    zyy_yggdrasil_texture ytexture = (from y in getYDataBaseManager().getYConnection().Table <zyy_yggdrasil_texture>()
                                                      where y.ytextureid == yprofile.ytextureid
                                                      select y).FirstOrDefault();



                    return(new YingResponse(".json", JsonConvert.SerializeObject(new YingRefreshResponse
                    {
                        accessToken = yresult.ytoken.yaccessToken,
                        clientToken = yresult.ytoken.yclientToken,

                        selectedProfile = new YingProfile
                        {
                            id = yprofile.yyid,
                            name = yprofile.yname,
                            properties = new List <YingPropertie> {
                                new YingPropertie
                                {
                                    name = "textures",
                                    value = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonMapper.ToJson(new YingTexture
                                    {
                                        timestamp = ytexture.ytimestamp,
                                        profileId = yprofile.yyid,
                                        profileName = yprofile.yname,
                                        textures = new Dictionary <String, YingTextureInfo> {
                                            { "SKIN", new YingTextureInfo()
                                              {
                                                  url = ytexture.yskin, metadata = new Dictionary <String, String> {
                                                      { "model", ytexture.yskinmetadata }
                                                  }
                                              } }
                                        }
                                    }))),
                                    signature = null
                                }
                            }
                        },

                        user = new YingUser
                        {
                            id = yresult.yuser.yopenid,
                            properties = new List <YingPropertie>
                            {
                                new YingPropertie {
                                    name = "preferredLanguage",
                                    value = "zh_CN"
                                }
                            }
                        }
                    })));
                }
            }).ypost("/yingyggdrasil/authserver/validate", (yrequest) =>
            {
                YingValidate yinfo = JsonMapper.ToObject <YingValidate>(new StreamReader(yrequest.InputStream).ReadToEnd());

                YingAuthenticateResult yresult = YingAuthenticate.yvalidate(yinfo.accessToken, yinfo.clientToken);
                if (yresult.ysuccess)
                {
                    throw new YingHttpException((int)HttpStatusCode.NoContent, $"Ying {HttpStatusCode.NoContent.GetDescription()}");
                }
                throw YingException.Ying(YingExceptionTypes.YingInvalidToken);

                /*
                 * HttpListenerRequest yrequest = y.Request;
                 * HttpListenerResponse yresponse = y.Response;
                 * YingValidate yinfo = JsonMapper.ToObject<YingValidate>(new StreamReader(yrequest.InputStream).ReadToEnd());
                 * if(yinfo.clientToken == null)
                 * {
                 *  if (getYDataBaseManager().getYConnection().Find<zyy_yggdrasil_tokens>(1).yaccessToken == yinfo.accessToken) ;
                 *
                 * }
                 *
                 * YingRouter.YResponseBuilder(y.Response, new YingResponseInfo
                 * {
                 *  YStatusCode = HttpStatusCode.Forbidden,
                 *  YStatusDescription = "Ying Forbidden",
                 *
                 *  YContentType = YingMimeMapping.YGetMimeType(".json"),
                 *  YContentEncoding = Encoding.UTF8
                 * });
                 *
                 * yresponse.WriteContent(Encoding.UTF8.GetBytes(JsonMapper.ToJson(new YingError
                 * {
                 *  error = "Ying Error",
                 *  errorMessage = "Ying Invaild Token",
                 *  cause = "Ying Test Error"
                 * })));
                 */
            }).ypost("/yingyggdrasil/authserver/signout", (yrequest) => {
                YingSignout yinfo = JsonMapper.ToObject <YingSignout>(new StreamReader(yrequest.InputStream).ReadToEnd());

                if (YingAuthenticate.ysignout(yinfo.username, yinfo.password))
                {
                    throw new YingHttpException((int)HttpStatusCode.NoContent, $"Ying {HttpStatusCode.NoContent.GetDescription()}");
                }
                else
                {
                    throw YingException.Ying(YingExceptionTypes.YingInvalidUsernameOrPassword);
                }
            }).ypost("/yingyggdrasil/authserver/invalidate", (yrequest) => {
                YingValidate yinfo = JsonMapper.ToObject <YingValidate>(new StreamReader(yrequest.InputStream).ReadToEnd());

                YingAuthenticate.yinvalidate(yinfo.accessToken, yinfo.clientToken);
                throw new YingHttpException((int)HttpStatusCode.NoContent, $"Ying {HttpStatusCode.NoContent.GetDescription()}");
            }).ypost("/yingyggdrasil/sessionserver/session/minecraft/join", (yrequest) => {
                YingJoin yyjoin = JsonMapper.ToObject <YingJoin>(new StreamReader(yrequest.InputStream).ReadToEnd());
                yyjoin.yip      = yrequest.UserHostAddress;
                yyjoin.ytime    = getYTimeStamp();
                yjoin.Add(yyjoin.serverId, yyjoin);
                throw new YingHttpException((int)HttpStatusCode.NoContent, $"Ying {HttpStatusCode.NoContent.GetDescription()}");
            }).yget("/yingyggdrasil/sessionserver/session/minecraft/hasJoined*", (yrequest) => {
                NameValueCollection yquery = yrequest.QueryString;
                String yusername           = yquery.Get("username");
                String yserverId           = yquery.Get("serverId");
                String yip = yquery.Get("ip");
                if (yjoin.ContainsKey(yserverId))
                {
                    String yselectedProfile        = yjoin[yserverId].selectedProfile;
                    zyy_yggdrasil_profile yprofile = (from y in getYDataBaseManager().getYConnection().Table <zyy_yggdrasil_profile>()
                                                      where y.yyid == yselectedProfile
                                                      select y).FirstOrDefault();

                    zyy_yggdrasil_texture ytexture = (from y in getYDataBaseManager().getYConnection().Table <zyy_yggdrasil_texture>()
                                                      where y.ytextureid == yprofile.ytextureid
                                                      select y).FirstOrDefault();

                    String yvalue = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonMapper.ToJson(new YingTexture
                    {
                        timestamp   = ytexture.ytimestamp,
                        profileId   = yprofile.yyid,
                        profileName = yprofile.yname,
                        textures    = new Dictionary <String, YingTextureInfo> {
                            { "SKIN", new YingTextureInfo()
                              {
                                  url = ytexture.yskin, metadata = new Dictionary <String, String> {
                                      { "model", ytexture.yskinmetadata }
                                  }
                              } }
                        }
                    })));
                    return(new YingResponse(".json", JsonConvert.SerializeObject(new YingProfile
                    {
                        id = yprofile.yyid,
                        name = yprofile.yname,
                        properties = new List <YingPropertie> {
                            new YingPropertie
                            {
                                name = "textures",
                                value = yvalue,
                                signature = YingRSA.EncryptString(yvalue, "-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----\n")
                            }
                        }
                    })));
                }
                else
                {
                    throw new YingHttpException((int)HttpStatusCode.NoContent, $"Ying {HttpStatusCode.NoContent.GetDescription()}");
                }
            }, true).yget("/yingyggdrasil/sessionserver/session/minecraft/profile/([a-zA-Z0-9]+)", (yrequest) =>
            {
                String yuuid = yrequest.RawUrl.Replace("/yingyggdrasil/sessionserver/session/minecraft/profile/", "");

                zyy_yggdrasil_profile yprofile = (from y in getYDataBaseManager().getYConnection().Table <zyy_yggdrasil_profile>()
                                                  where y.yyid == yuuid
                                                  select y).FirstOrDefault();

                zyy_yggdrasil_texture ytexture = (from y in getYDataBaseManager().getYConnection().Table <zyy_yggdrasil_texture>()
                                                  where y.ytextureid == yprofile.ytextureid
                                                  select y).FirstOrDefault();
                return(new YingResponse(".json", JsonConvert.SerializeObject(new YingProfile
                {
                    id = yprofile.yyid,
                    name = yprofile.yname,
                    properties = new List <YingPropertie> {
                        new YingPropertie
                        {
                            name = "textures",
                            value = Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonMapper.ToJson(new YingTexture
                            {
                                timestamp = ytexture.ytimestamp,
                                profileId = yprofile.yyid,
                                profileName = yprofile.yname,
                                textures = new Dictionary <String, YingTextureInfo> {
                                    { "SKIN", new YingTextureInfo()
                                      {
                                          url = ytexture.yskin, metadata = new Dictionary <String, String> {
                                              { "model", ytexture.yskinmetadata }
                                          }
                                      } }
                                }
                            }))),
                            signature = null
                        }
                    }
                })));
            }, true).yget("/yingyggdrasil/ytextures/([a-zA-Z0-9]+)", (yrequest) =>
            {
                String yuuid    = yrequest.RawUrl.Replace("/yingyggdrasil/ytextures/", "");
                Byte[] ytexture = null;
                try {
                    ytexture = File.ReadAllBytes(Path.Combine(getYFiles().getYTextures().FullName, $"{yuuid}.png"));
                } catch (Exception yexception) {
                    throw new YingHttpException(404, "Ying Textures Not Found");
                }

                return(new YingResponse(".png", ytexture));
            }, true);


            /*yrouter.ypost("/yingyggdrasil/authserver/refresh", (yrequest, yresponse) =>
             * {
             *
             *  YingRefresh yinfo = JsonMapper.ToObject<YingRefresh>(new StreamReader(yrequest.InputStream).ReadToEnd());
             *
             *
             *  YingResult yresult = YingAuthenticate.yrefresh(yinfo.accessToken, yinfo.clientToken);
             *  if (yresult.ysuccess)
             *  {
             *
             *      String yaccessToken = Guid.NewGuid().ToString("N");
             *
             *      getYDataBaseManager().getYConnection().Insert(new zyy_yggdrasil_tokens
             *      {
             *          yusername = yresult.ytoken.yusername,
             *
             *          yclientToken = yresult.ytoken.yclientToken,
             *          yaccessToken = yaccessToken,
             *
             *          ytime = getYTimeStamp()
             *      });
             *
             *      YingRouter.YResponseBuilder(yresponse, new YingResponseInfo
             *      {
             *          YStatusCode = HttpStatusCode.NoContent,
             *          YStatusDescription = $"Ying {HttpStatusCode.NoContent.GetDescription()}",
             *
             *          YContentType = YingMimeMapping.YGetMimeType(".json"),
             *          YContentEncoding = Encoding.UTF8
             *      });
             *
             *
             *      yresponse.WriteContent(Encoding.UTF8.GetBytes(JsonMapper.ToJson(new YingRefreshResponse
             *      {
             *          accessToken = yaccessToken,
             *          clientToken = yresult.ytoken.yclientToken,
             *
             *          selectedProfile = yyy,
             *
             *          user = new YingUser
             *          {
             *              id = Guid.NewGuid().ToString("N"),
             *              properties = new List<YingPropertie>
             *                  {
             *                      new YingPropertie {
             *                          name = "preferredLanguage",
             *                          value = "zh_CN"
             *                      }
             *                  }
             *          }
             *      })));
             *
             *
             *
             *  }
             *
             *
             *
             *
             * });
             *
             * yrouter.ypost("/yingyggdrasil/authserver/validate", (yrequest, yresponse) =>
             * {
             *  YingValidate yinfo = JsonMapper.ToObject<YingValidate>(new StreamReader(yrequest.InputStream).ReadToEnd());
             *
             *  YingResult yresult = YingAuthenticate.yvalidate(yinfo.accessToken, yinfo.clientToken);
             *  if (yresult.ysuccess)
             *  {
             *      YingRouter.YResponseBuilder(yresponse, new YingResponseInfo
             *      {
             *          YStatusCode = HttpStatusCode.NoContent,
             *          YStatusDescription = $"Ying {HttpStatusCode.NoContent.GetDescription()}",
             *
             *          YContentType = YingMimeMapping.YGetMimeType(".json"),
             *          YContentEncoding = Encoding.UTF8
             *      });
             *  }
             *
             *  /*
             *  HttpListenerRequest yrequest = y.Request;
             *  HttpListenerResponse yresponse = y.Response;
             *  YingValidate yinfo = JsonMapper.ToObject<YingValidate>(new StreamReader(yrequest.InputStream).ReadToEnd());
             *  if(yinfo.clientToken == null)
             *  {
             *      if (getYDataBaseManager().getYConnection().Find<zyy_yggdrasil_tokens>(1).yaccessToken == yinfo.accessToken) ;
             *
             *  }
             *
             *  YingRouter.YResponseBuilder(y.Response, new YingResponseInfo
             *  {
             *      YStatusCode = HttpStatusCode.Forbidden,
             *      YStatusDescription = "Ying Forbidden",
             *
             *      YContentType = YingMimeMapping.YGetMimeType(".json"),
             *      YContentEncoding = Encoding.UTF8
             *  });
             *
             *  yresponse.WriteContent(Encoding.UTF8.GetBytes(JsonMapper.ToJson(new YingError
             *  {
             *      error = "Ying Error",
             *      errorMessage = "Ying Invaild Token",
             *      cause = "Ying Test Error"
             *  })));
             *//*
             *
             *
             * });
             *
             * yrouter.ypost("/yingyggdrasil/authserver/invalidate", (yrequest, yresponse) => { });
             * yrouter.ypost("/yingyggdrasil/authserver/signout", (yrequest, yresponse) => { });
             *
             * yrouter.ypost("/yingyggdrasil/sessionserver/session/minecraft/join", (yrequest, yresponse) => { });
             * yrouter.yget("/yingyggdrasil/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}&ip={ip}", (yrequest, yresponse) => { });
             * yrouter.yget("/yingyggdrasil/sessionserver/session/minecraft/profile/{uuid}?unsigned={unsigned}", (yrequest, yresponse) => { });
             *
             * yrouter.ypost("/yingyggdrasil/api/profiles/minecraft", (yrequest, yresponse) => { });*/

            //Guid.NewGuid().ToString("N");


            ytimer.Tick += (ysender, yevent) =>
            {
                //if(getYDataBaseManager().getYConnection().)
                TableQuery <zyy_yggdrasil_tokens> yquery = getYDataBaseManager().getYConnection().Table <zyy_yggdrasil_tokens>();
                yquery.ToList().ForEach((y) =>
                {
                    if (y.ytime < getYTimeStamp().TotalMilliseconds - new TimeSpan(14, 6, 0, 4).TotalMilliseconds)
                    {
                        getYDataBaseManager().getYConnection().Delete <zyy_yggdrasil_tokens>(y.yid);
                    }
                });
            };
            ytimer.Start();
        }