Esempio n. 1
0
        public ActionResult PayReturn(int type, string appId, string sign, string data)
        {
            var checkResult = SignManager.CheckSign(appId, sign, data);

            if (checkResult.Status != ResultStatus.Success || !checkResult.Data)
            {
                return(Json(new { status = 0, msg = "签名验证未通过", type = type }));
            }

            var notifyInfo = JsonHelper.Deserialize <PayNotifyInfo>(data);

            if (string.IsNullOrWhiteSpace(notifyInfo.OrderId))
            {
                return(Json(new { status = 0, msg = "订单编码为空", data = data, type = type }));
            }

            if (string.IsNullOrWhiteSpace(notifyInfo.PaymentAmt))
            {
                return(Json(new { status = 0, msg = "支付金额为空", data = data, type = type }));
            }

            if (string.IsNullOrWhiteSpace(notifyInfo.Result))
            {
                return(Json(new { status = 0, msg = "支付结果为空", data = data, type = type }));
            }

            return(Json(new { status = 1, data = data, type = type }));
        }
Esempio n. 2
0
        //签到功能
        private void button5_Click(object sender, EventArgs e)
        {
            if (dataGridView4.CurrentRow == null)
            {
                return;
            }
            int    clsid  = Convert.ToInt32(dataGridView4.CurrentRow.Cells[0].Value);
            string ip     = GetLocalIPAddress();
            string time   = DateTime.Now.ToString();
            string status = "成功";

            if ((int)SignManager.CheckSignUp(student.Id, clsid) == 0)
            {
                if (SignManager.SignUp(student, student.Name, clsid, ip, time, status))
                {
                    MessageBox.Show(
                        "签到成功!",
                        "成功",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                    Fill();
                }
                else
                {
                    MessageBox.Show("签到失败!请重新选择!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("该节课已签到!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Esempio n. 3
0
    public GameConfig()
    {
        kill_point_30_60    = new IntArray();
        kill_point_60       = new IntArray();
        delta_level_exp     = new IntArray();
        carriage_list       = new IntArray();
        best_carriage_list  = new IntArray();
        clear_cd_skill_list = new IntArray();
        pickup_item_notice  = new IntArray();

        learn_skill          = new LearnSkillConfig();
        equip_endure_cost    = new EquipEndureCost();
        strings              = new ConstString();
        battlefield          = new BattlefieldConfig();
        jizhou_battlefield   = new JiZhouBattlefieldConfig();
        huangjin_battlefield = new HuangJinBattlefieldConfig();
        card_mgr             = new CardMgr();
        group_setting        = new GroupSetting();
        store_setting        = new IBStoreSettings();
        relationship         = new RelationshipConfig();

        OfflineExpItems     = new OfflineExpItemCfgArray();
        OfflineExpPerLevels = new OfflineExpPerLevelArray();

        group_league = new GroupLeagueConfig();
        country      = new CountryConfig();

        auto_equip_when_enter_map_config = new AutoEquipWhenEnterMapConfig();
        sign_manager = new SignManager();
    }
Esempio n. 4
0
        //删除学生签到记录
        private void toolStripButton8_Click(object sender, EventArgs e)
        {
            int id;

            try
            {
                id = Convert.ToInt32(dataGridView3.CurrentRow.Cells[0].Value);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
            if (MessageBox.Show("确定要删除吗?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
            {
                return;
            }

            if (SignManager.DeleteSignUpRecord(id))
            {
                MessageBox.Show("删除成功!");
            }
            else
            {
                MessageBox.Show("删除失败!");
            }
            RefreshClassTable();
        }
 public BuddyRequest(FetchData fetch, SignManager sign, int seq, string sender, string rece)
 {
     _fetch = fetch;
     _sign = sign;
     Sequence = seq;
     Sender = sender;
     Receiver = rece;
 }
Esempio n. 6
0
        /// <summary>
        /// 验证签名
        /// </summary>
        private async Task <bool> VerifySign()
        {
            var config = await _configProvider.GetConfigAsync();

            var signManager = new SignManager(new SignKey(config.PrivateKey, config.PublicKey), CreateVerifyBuilder());

            return(signManager.Verify(Sign));
        }
Esempio n. 7
0
        public async Task <object> Decrypt(string key, string signature)
        {
            var token = SignManager.Decrypt(key, signature);

            return(new
            {
            });
        }
Esempio n. 8
0
 public BuddyRequest(FetchData fetch, SignManager sign, int seq, string sender, string rece)
 {
     _fetch   = fetch;
     _sign    = sign;
     Sequence = seq;
     Sender   = sender;
     Receiver = rece;
 }
Esempio n. 9
0
        public override async Task <ClaimsIdentity> CreateIdentityByPassword(string username, string password)
        {
            var r = await SignManager.UserLogin(username, password);

            if (r != null)
            {
                return(new ClaimsIdentity(new GenericIdentity(r.NickName, "Token"), new Claim[] { }));
            }
            return(null);
        }
Esempio n. 10
0
 private void Awake()
 {
     if (instance != null && instance != this && this.gameObject != null)
     {
         Destroy(this.gameObject);
     }
     else
     {
         instance = this;
     }
 }
Esempio n. 11
0
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
     else
     {
         Destroy(gameObject);
     }
 }
        public static void VerifyTransaction(Transaction tx, DateTime timestamp, ulong coinbase = 0)
        {
            if (tx.TimeStamp > timestamp ||
                !(coinbase == 0 ^ tx.Inputs.Count == 0))
            {
                throw new ArgumentException();
            }

            var hash = HashUtil.ComputeTransactionSignHash(JsonSerializer.Serialize(tx));
            //Input check
            var inSum = coinbase;

            foreach (var input in tx.Inputs)
            {
                var chainTxs = Chain.SelectMany(x => x.Transactions);
                //Input Verify
                var transactions = chainTxs as Transaction[] ?? chainTxs.ToArray();
                var prevOutTx    = transactions
                                   .First(x => x.Id.Bytes == input.TransactionId.Bytes)?
                                   .Outputs[input.OutputIndex];
                var verified = prevOutTx != null && SignManager.Verify(hash, input.Signature, input.PublicKey, prevOutTx.PublicKeyHash);

                //utxo check ブロックの長さに比例してコストが上がってしまう問題アリ
                var utxoUsed = transactions.SelectMany(x => x.Inputs).Any(ipt => ipt.TransactionId.Bytes != input.TransactionId.Bytes);

                var redeemable = prevOutTx.PublicKeyHash.IsEqual(HashUtil.RIPEMD_SHA256(input.PublicKey));

                inSum = checked (inSum + prevOutTx.Amount);

                if (!verified || utxoUsed || !redeemable)
                {
                    throw new ArgumentException();
                }
            }

            ulong outSum = 0;

            foreach (var output in tx.Outputs)
            {
                if (output.PublicKeyHash is null || output.Amount <= 0)
                {
                    throw new ArgumentException();
                }
                outSum = checked (outSum + output.Amount);
            }

            if (outSum > inSum)
            {
                throw new ArgumentException();
            }

            tx.TransactionFee = inSum - outSum;
        }
Esempio n. 13
0
        /// <summary>
        /// 校验数据签名
        /// </summary>
        /// <param name="appId">业务系统ID</param>
        /// <param name="sign">数据签名</param>
        /// <param name="data">业务数据报文</param>
        /// <param name="requestInfo">退款请求记录</param>
        /// <returns></returns>
        public virtual ExecuteResult CheckSign(string appId, string sign, string data, RefundRequestInfo requestInfo)
        {
            var result = SignManager.CheckSign(appId, sign, data);

            if (result.Status != ResultStatus.Success || !result.Data)
            {
                requestInfo.ExecuteResult = (int)ResultStatus.Failure;
                requestInfo.ResultDesc    = string.IsNullOrWhiteSpace(result.Message) ? "签名校验未通过" : result.Message;
                RefundRequestDAL.Update(requestInfo);
                result.Status = ResultStatus.Failure;
            }
            return(result);
        }
Esempio n. 14
0
 /// <summary>
 /// 获取返回链接
 /// </summary>
 /// <param name="requestInfo">支付请求记录</param>
 /// <param name="notifyInfo">支付结果通知</param>
 /// <returns></returns>
 public virtual string GetReturnUrl(PayRequestInfo requestInfo, PayNotifyInfo notifyInfo)
 {
     if (requestInfo != null && !string.IsNullOrWhiteSpace(requestInfo.ReturnUrl))
     {
         var setting = JsonHelper.GetDefaultSettings();
         setting.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
         string data      = JsonHelper.Serialize(notifyInfo, setting);
         string sign      = SignManager.CreateSign(requestInfo.AppId, data).Data;
         string returnUrl = requestInfo.ReturnUrl + (requestInfo.ReturnUrl.IndexOf("?") > 0 ? "&" : "?");
         returnUrl += string.Format("appId={0}&sign={1}&data={2}", requestInfo.AppId, sign, data);
         return(returnUrl);
     }
     return(null);
 }
Esempio n. 15
0
        public async Task <IActionResult> Login(LoginViewModel model)
        {
            string        apiStatus  = "successful_login";
            string        apiMessage = "Successful logged into CardCraft";
            CardCraftUser data       = null;

            //Add service code to login in and authenticate against database

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, set lockoutOnFailure: true
            var result = await SignManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure : false);

            if (result.Succeeded)
            {
                data = await UserManager.FindByEmailAsync(model.Email);

                Logger.LogInformation(1, APILog(endPoint: "Login", statusCode: "200", apiStatus: apiStatus, apiMessage: apiMessage, data: data));
                return(SuccessfulAPIResult(apiStatus, apiMessage, data));
            }
            if (result.RequiresTwoFactor)
            {
                apiStatus  = "user_requires_2FA";
                apiMessage = "Please complete sign up process by checking link in email: " + model.Email;
                return(SuccessfulAPIResult(apiStatus, apiMessage));
                //return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            }
            if (result.IsLockedOut)
            {
                apiStatus  = "user_account_locked";
                apiMessage = "Your user account is locked please check " + model.Email + "for details.";
                Logger.LogWarning(2, "User account locked out.");
                return(SuccessfulAPIResult(apiStatus, apiMessage));
            }
            else
            {
                apiStatus  = "invalid_login_attempt";
                apiMessage = "Error logging you in. Please check email address or password.";
                ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                return(ErrorAPIResult(apiStatus, apiMessage));
            }

            //apiStatus = "invalid_login_attempt";
            //apiMessage = "There was an issue logging you in. Please try again later or email [email protected]";
            //ModelState.AddModelError(string.Empty, "Invalid login attempt.");
            //return ErrorAPIResult(apiStatus, apiMessage, model);
        }
Esempio n. 16
0
        public async Task <IActionResult> Login(string returnUrl, LoginViewModel model)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Profile"));
            }

            if (ModelState.IsValid)
            {
                UserModel user = await ManageUser.FindByEmailAsync(model.Email);

                if (user != null && await ManageUser.CheckPasswordAsync(user, model.Password))
                {
                    if (await ManageUser.IsEmailConfirmedAsync(user))
                    {
                        var result = await SignManager.PasswordSignInAsync(user, model.Password, true, false);

                        if (result.Succeeded)
                        {
                            if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl))
                            {
                                return(LocalRedirect(returnUrl));
                            }
                            else
                            {
                                return(RedirectToAction("Index", "Home"));
                            }
                        }
                        else
                        {
                            ModelState.AddModelError("Error", result.ToString());
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("Error", "Email is not verified.");
                    }
                }
                else
                {
                    ModelState.AddModelError("Error", "Failed : Invalid Login Attempt");
                }
            }

            return(View(model));
        }
Esempio n. 17
0
 /// <summary>
 /// 校验签名是否正确
 /// </summary>
 /// <param name="appId"></param>
 /// <param name="sign"></param>
 /// <param name="data"></param>
 /// <returns></returns>
 public JsonResult Check(string appId, string sign, string data)
 {
     try
     {
         var result = SignManager.CheckSign(appId, sign, data);
         if (result.Status == ResultStatus.Success)
         {
             return(Json(new { status = 1, data = result.Data }));
         }
         else
         {
             return(Json(new { status = 0, msg = result.Message }));
         }
     }
     catch (Exception ex)
     {
         return(Json(new { status = -1, msg = ex.Message }));
     }
 }
Esempio n. 18
0
        //退课功能
        private void button1_Click(object sender, EventArgs e)
        {
            int Cla;

            try
            {
                Cla = Convert.ToInt32(dataGridView2.CurrentRow.Cells[0].Value);
                Console.WriteLine(Cla);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
            if (MessageBox.Show("确定要退课吗?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes)
            {
                return;
            }

            if ((int)SignManager.CheckSignUp(student.Id, Cla) == 0)
            {
                if (CourseManager.DropCourse(Cla))
                {
                    MessageBox.Show(
                        "退课成功!",
                        "成功",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                    int num = Convert.ToInt32(dataGridView2.CurrentRow.Cells[7].Value) + 1;
                    CourseManager.UpdateCourse(num, Cla);
                    Fill();
                }
                else
                {
                    MessageBox.Show("该课程已有成绩,退课失败!请重新选择!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("已有签到记录,退课失败!请重新选择!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Esempio n. 19
0
        private void Init()
        {
            Console.WriteLine("Init data");

            _config = new ConfigInfo();
            Console.WriteLine("> Read config file sucessful.");

            _menu = new Menu();
            Console.WriteLine("> Read Menu info sucessful.");

            _pluginContainer = new Dictionary <string, IPlugin>();

            _fetchData = new FetchData(_config.Username,
                                       _config.Password,
                                       _config.ConsummerKey,
                                       _config.ConsummerSecret);

            _signManager = new SignManager(_fetchData);
            _messManager = new MessageManager(_fetchData, _signManager);
        }
Esempio n. 20
0
        //筛选学生签到记录
        private void toolStripButton7_Click(object sender, EventArgs e)
        {
            string option = "";

            if (toolStripComboBox4.Text.Trim() != "")
            {
                option = " AND Sign.classId = " + Convert.ToInt32(toolStripComboBox4.Text.Trim()) +
                         "AND ChooseCls.classId = " + Convert.ToInt32(toolStripComboBox4.Text.Trim());
                DataTable dt = SignManager.DisplayDifferentSignUp(teacher.Id, option);
                dt.Columns[0].ColumnName = "签到编号";
                dt.Columns[1].ColumnName = "学生学号";
                dt.Columns[2].ColumnName = "学生姓名";
                dt.Columns[3].ColumnName = "IP地址";
                dt.Columns[4].ColumnName = "签到时间";
                dt.Columns[5].ColumnName = "签到状态";
                dataGridView3.DataSource = dt;
            }
            else
            {
                RefreshClassTable();
            }
        }
Esempio n. 21
0
        public ActionResult WeChatBarcodePay(string orderId, string paymentAmt, string barcode)
        {
            PayOrderInfo info = new PayOrderInfo()
            {
                OrderId    = orderId,
                PaymentAmt = paymentAmt,
                NotifyUrl  = string.Format("http://{0}/Test/PayNotify?type=0", AppConfig.Global.Domain),
                Barcode    = barcode,
            };
            var setting = JsonHelper.GetDefaultSettings();

            setting.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
            string data = JsonHelper.Serialize(info, setting);
            string sign = SignManager.CreateSign(_appId, data).Data;

            ViewBag.AppId = _appId;
            ViewBag.Sign  = sign;
            ViewBag.Data  = data;
            ViewBag.Title = "微信支付(测试)";
            ViewBag.Url   = "/wechatpay/barcodepay";
            return(View("Pay"));
        }
Esempio n. 22
0
        public ActionResult AllinpayRefund(string appId, string appSecret, string orderId)
        {
            if (appSecret != AppCache.GetAppSecret(appId))
            {
                return(Json(new { msg = "非法appSecret" }));
            }

            var resultInfo = PayResultDAL.GetValidPayResult(orderId, AppEnum.PayType.Allinpay);

            if (resultInfo == null || resultInfo.SysNo <= 0)
            {
                return(Json(new { msg = "订单无支付记录" }));
            }

            var             requestInfo = PayRequestDAL.GetPayRequest(resultInfo.RequestSysNo);
            var             orderTime   = JsonHelper.Deserialize <PayOrderInfo>(requestInfo.RequestData).OrderTime;
            RefundOrderInfo info        = new RefundOrderInfo()
            {
                OrderId       = orderId,
                OrderTime     = orderTime ?? DateTime.Now.ToString("yyyyMMddHHmmss"),
                TradeNo       = resultInfo.TradeNo,
                PaymentAmt    = resultInfo.PaymentAmt.ToString(),
                RefundOrderId = DateTime.Now.ToString("yyyyMMddHHmmssfff"),
                RefundAmt     = resultInfo.PaymentAmt.ToString(),
                NotifyUrl     = string.Format("http://{0}/Test/RefundNotify?type=0", AppConfig.Global.Domain),
            };
            var setting = JsonHelper.GetDefaultSettings();

            setting.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
            string data = JsonHelper.Serialize(info, setting);
            string sign = SignManager.CreateSign(appId, data).Data;

            ViewBag.AppId = appId;
            ViewBag.Sign  = sign;
            ViewBag.Data  = data;
            ViewBag.Title = "通联支付退款(测试)";
            ViewBag.Url   = "/allinpay/syncrefund";
            return(View("Pay"));
        }
Esempio n. 23
0
        public JsonResult RefundNotify(int type, string appId, string sign, string data)
        {
            var checkResult = SignManager.CheckSign(appId, sign, data);

            if (checkResult.Status != ResultStatus.Success || !checkResult.Data)
            {
                return(Json(new { status = 0, msg = "签名验证未通过", data = data, type = type }));
            }

            var notifyInfo = JsonHelper.Deserialize <RefundNotifyInfo>(data);

            if (string.IsNullOrWhiteSpace(notifyInfo.OrderId))
            {
                return(Json(new { status = 0, msg = "订单编码为空", data = data, type = type }));
            }

            if (string.IsNullOrWhiteSpace(notifyInfo.TradeNo))
            {
                return(Json(new { status = 0, msg = "支付交易流水号为空", data = data, type = type }));
            }

            if (string.IsNullOrWhiteSpace(notifyInfo.RefundOrderId))
            {
                return(Json(new { status = 0, msg = "退款单编号为空", data = data, type = type }));
            }

            if (string.IsNullOrWhiteSpace(notifyInfo.RefundAmt))
            {
                return(Json(new { status = 0, msg = "退款金额为空", data = data, type = type }));
            }

            if (string.IsNullOrWhiteSpace(notifyInfo.Result))
            {
                return(Json(new { status = 0, msg = "退款结果为空", data = data, type = type }));
            }

            return(Json(new { status = 1, data = data, type = type }));
        }
        public Transaction ToSignedTransaction(byte[] privateKey, byte[] publicKey)
        {
            _transaction.TimeStamp = DateTime.UtcNow;
            _transaction.Id        = null;
            foreach (var inEntry in Inputs)
            {
                inEntry.PublicKey = null;
                inEntry.Signature = null;
            }
            var hash      = HashUtil.ComputeTransactionSignHash(JsonSerializer.Serialize(_transaction));
            var signature = SignManager.Signature(hash, privateKey, publicKey);

            foreach (var inEntry in Inputs)
            {
                inEntry.PublicKey = publicKey;
                inEntry.Signature = signature;
            }
            var txData = JsonSerializer.Serialize(_transaction);
            var txHash = HashUtil.DoubleSHA256(txData);

            _transaction.Id = new HexString(txHash);
            return(_transaction);
        }
Esempio n. 25
0
        public ActionResult SwiftPassWeChatPay(string orderId, string paymentAmt)
        {
            PayOrderInfo info = new PayOrderInfo()
            {
                OrderId    = orderId,
                PaymentAmt = paymentAmt,
                OrderTime  = DateTime.Now.ToString("yyyyMMddHHmmss"),
                NotifyUrl  = string.Format("http://{0}/Test/PayNotify?type=0", AppConfig.Global.Domain),
                ReturnUrl  = string.Format("http://{0}/Test/PayReturn?type=0", AppConfig.Global.Domain),
            };
            var setting = JsonHelper.GetDefaultSettings();

            setting.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
            string data = JsonHelper.Serialize(info, setting);
            string sign = SignManager.CreateSign(_appId, data).Data;

            ViewBag.AppId = _appId;
            ViewBag.Sign  = sign;
            ViewBag.Data  = data;
            ViewBag.Title = "微信支付(测试)";
            ViewBag.Url   = "/swiftpasswechatpay/onlinepay";
            return(View("Pay"));
        }
 public MessageManager(FetchData fetch, SignManager sign)
 {
     FetchReqData = fetch;
     SignMan = sign;
 }
Esempio n. 27
0
 void Start()
 {
     mSignmanager = GameObject.Find("SignManager").GetComponent<SignManager>();
 }
Esempio n. 28
0
        /// <summary>
        /// 通知业务系统支付结果
        /// </summary>
        /// <param name="resultInfo">支付结果记录</param>
        /// <param name="requestInfo">支付请求记录</param>
        /// <returns></returns>
        public virtual ExecuteResult NotifyBack(PayResultInfo resultInfo, PayRequestInfo requestInfo)
        {
            var result = new ExecuteResult()
            {
                Status = ResultStatus.Failure
            };

            //支付结果记录对象无效,则不执行
            if (resultInfo == null || resultInfo.SysNo <= 0)
            {
                result.Message = "支付结果记录对象无效";
                return(result);
            }

            //支付请求记录对象无效,则不执行
            if (requestInfo == null || requestInfo.SysNo <= 0)
            {
                result.Message = "支付请求记录对象无效";
                return(result);
            }

            //支付结果记录与支付请求记录不对应,则不执行
            if (requestInfo.SysNo != resultInfo.RequestSysNo)
            {
                result.Message = "支付结果记录与支付请求记录不对应";
                return(result);
            }

            //支付结果记录未成功执行,或者已通知,则不执行
            if (resultInfo.ExecuteResult != (int)ResultStatus.Success || resultInfo.NotifyStatus == (int)AppEnum.NotifyStatus.Finished)
            {
                result.Message = "支付结果记录未成功执行或已通知成功";
                return(result);
            }

            //支付请求记录中不存在有效的通知地址,则不执行
            if (!requestInfo.NotifyUrl.IsUrl())
            {
                result.Message = "支付请求记录中不存在有效的通知地址";
                return(result);
            }

            var notifyInfo = this.GetPayNotifyInfo(resultInfo);
            var setting    = JsonHelper.GetDefaultSettings();

            setting.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
            string data     = JsonHelper.Serialize(notifyInfo, setting);
            string sign     = SignManager.CreateSign(requestInfo.AppId, data).Data;
            string param    = string.Format("appId={0}&sign={1}&data={2}", requestInfo.AppId, sign, data);
            var    response = HttpHelper.HttpRequest("POST", requestInfo.NotifyUrl, param, 10000);
            string status   = JsonHelper.GetJsonNode(response, "status");
            string msg      = JsonHelper.GetJsonNode(response, "msg");

            result.Message = msg;

            var backInfo = new NotifyBackInfo()
            {
                ResultSysNo  = resultInfo.SysNo,
                Status       = (int)AppEnum.GlobalStatus.Invalid,
                Msg          = msg,
                CreateTime   = DateTime.Now,
                ResponseData = response,
            };

            if (status == "1")
            {
                backInfo.Status         = (int)AppEnum.GlobalStatus.Valid;
                resultInfo.NotifyStatus = (int)AppEnum.NotifyStatus.Finished;
                PayResultDAL.Update(resultInfo);
                result.Status = ResultStatus.Success;
            }
            PayResultDAL.InsertNotifyBack(backInfo);
            return(result);
        }
Esempio n. 29
0
        /// <summary>
        /// 获取签名
        /// </summary>
        /// <param name="builder">Url参数生成器</param>
        /// <returns></returns>
        private string GetSign(UrlParameterBuilder builder)
        {
            var signManager = new SignManager(new SignKey(Config.PrivateKey), builder);

            return(signManager.Sign());
        }
        private void Init()
        {
            Console.WriteLine("Init data");

            _config = new ConfigInfo();
            Console.WriteLine("> Read config file sucessful.");

            _menu = new Menu();
            Console.WriteLine("> Read Menu info sucessful.");

            _pluginContainer = new Dictionary<string,IPlugin>();

            _fetchData = new FetchData(_config.Username,
                                       _config.Password,
                                       _config.ConsummerKey,
                                       _config.ConsummerSecret);

            _signManager = new SignManager(_fetchData);
            _messManager = new MessageManager(_fetchData, _signManager);
        }
Esempio n. 31
0
 /// <summary>
 /// 初始化一个<see cref="SignManagerTest"/>类型的实例
 /// </summary>
 public SignManagerTest(ITestOutputHelper output) : base(output)
 {
     _manager = new SignManager(new SignKey(EncryptTest.RsaKey));
 }
Esempio n. 32
0
 public void Initialize(SignManager signManager)
 {
     CreationTimestamp = Time.time;
     this.signManager = signManager;
 }
Esempio n. 33
0
 public void Initialize(SignManager signManager)
 {
     CreationTimestamp = Time.time;
     this.signManager  = signManager;
 }
        public void Mining()
        {
            var(privateKey, publicKey) = SignManager.GenerateKeys();
            var publickKeyHash = new HexString(HashUtil.RIPEMD_SHA256(publicKey));
            //Genesis Mining
            var genesis = BlockchainManager.CreateGenesis();
            var miner   = new Miner
            {
                MinerKeyHash = publickKeyHash
            };

            Console.WriteLine("Mining");
            miner.Mining(genesis, Context.CancellationToken);
            BlockchainManager.Chain.Add(genesis);


            for (var i = 0; i < 10; i++)
            {
                var gg = BlockchainManager.CreateCoinBaseTransaction(i + 1, publickKeyHash.Bytes, $"まかろに{i}");
                gg.TimeStamp = DateTime.UtcNow;
                var txs = new List <Transaction>()
                {
                    gg
                };
                var rootHash = HashUtil.ComputeMerkleRootHash(txs.Select(x => x.Id).ToList());

                var b = new Block()
                {
                    PreviousBlockHash = BlockchainManager.Chain.Last().Id,
                    Transactions      = txs,
                    MerkleRootHash    = rootHash,
                    Timestamp         = DateTime.UtcNow,
                    Bits = 1
                };
                miner.Mining(b, Context.CancellationToken);
                BlockchainManager.Chain.Add(b);
                Task.Delay(10).GetAwaiter().GetResult();
            }

            //Second Block Mining
            Console.WriteLine($"{genesis.Transactions.Count}");
            var tb  = new TransactionBuilder();
            var ttx = BlockchainManager.Chain.SelectMany(x => x.Transactions).First(x => x.Engraving == "まかろに0");

            var input = new Input()
            {
                TransactionId = ttx.Id,
                OutputIndex   = 0,
            };
            var output = new Output()
            {
                Amount        = 10,
                PublicKeyHash = publickKeyHash.Bytes
            };

            tb.Inputs.Add(input);
            tb.Outputs.Add(output);
            var tx = tb.ToSignedTransaction(privateKey, publicKey);

            BlockchainManager.TransactionPool.Add(tx);
            miner.Start();

            Console.WriteLine($"{BlockchainManager.VerifyBlockchain()} : OK");
            Console.ReadLine();
        }
Esempio n. 35
0
        #pragma warning disable 1998
        public async override global::System.Threading.Tasks.Task ExecuteAsync()
        {
            BeginContext(158, 27, true);
            WriteLiteral("<!DOCTYPE html>\r\n\r\n<html>\r\n");
            EndContext();
            BeginContext(185, 171, false);
            __tagHelperExecutionContext = __tagHelperScopeManager.Begin("head", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "a3fc832772af4b84978ae50037afa8ab", async() => {
                BeginContext(191, 6, true);
                WriteLiteral("\r\n    ");
                EndContext();
                BeginContext(197, 56, false);
                __tagHelperExecutionContext = __tagHelperScopeManager.Begin("link", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.SelfClosing, "1b3c3c6bcaf643d2ba02c7b12ee1a3bc", async() => {
                }
                                                                            );
                __Microsoft_AspNetCore_Mvc_Razor_TagHelpers_UrlResolutionTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.Razor.TagHelpers.UrlResolutionTagHelper>();
                __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_Razor_TagHelpers_UrlResolutionTagHelper);
                __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_0);
                __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_1);
                await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
                if (!__tagHelperExecutionContext.Output.IsContentModified)
                {
                    await __tagHelperExecutionContext.SetOutputContentAsync();
                }
                Write(__tagHelperExecutionContext.Output);
                __tagHelperExecutionContext = __tagHelperScopeManager.End();
                EndContext();
                BeginContext(253, 72, true);
                WriteLiteral("\r\n    <meta name=\"viewport\" content=\"width=device-width\" />\r\n    <title>");
                EndContext();
                BeginContext(326, 13, false);
#line 9 "C:\git\MTTSK\MyTeamTasksRecom\Views\Shared\LayoutAdm.cshtml"
                Write(ViewBag.Title);

#line default
#line hidden
                EndContext();
                BeginContext(339, 10, true);
                WriteLiteral("</title>\r\n");
                EndContext();
            }
                                                                        );
            __Microsoft_AspNetCore_Mvc_Razor_TagHelpers_HeadTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.Razor.TagHelpers.HeadTagHelper>();
            __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_Razor_TagHelpers_HeadTagHelper);
            await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);

            if (!__tagHelperExecutionContext.Output.IsContentModified)
            {
                await __tagHelperExecutionContext.SetOutputContentAsync();
            }
            Write(__tagHelperExecutionContext.Output);
            __tagHelperExecutionContext = __tagHelperScopeManager.End();
            EndContext();
            BeginContext(356, 2, true);
            WriteLiteral("\r\n");
            EndContext();
            BeginContext(358, 2548, false);
            __tagHelperExecutionContext = __tagHelperScopeManager.Begin("body", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "442550699d4f48659747803f3e079077", async() => {
                BeginContext(364, 275, true);
                WriteLiteral(@"
    <nav class=""navbar navbar-expand-lg navbar-dark bg-primary"">
        <a class=""navbar-brand"" href=""#"">MyTeamTasks Recomeço</a>

        <div class=""collapse navbar-collapse"" id=""navbarColor01"" style=""text-align:center"">
            <ul class=""navbar-nav mr-auto"">
");
                EndContext();
                BeginContext(838, 66, true);
                WriteLiteral("                <li class=\"nav-item active\">\r\n                    ");
                EndContext();
                BeginContext(904, 117, false);
                __tagHelperExecutionContext = __tagHelperScopeManager.Begin("a", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "37f175ac622841eab248b4a5366d3a37", async() => {
                    BeginContext(974, 43, true);
                    WriteLiteral("Menu <span class=\"sr-only\">(current)</span>");
                    EndContext();
                }
                                                                            );
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper>();
                __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Controller = (string)__tagHelperAttribute_2.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_2);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Action = (string)__tagHelperAttribute_3.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_3);
                __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_4);
                await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
                if (!__tagHelperExecutionContext.Output.IsContentModified)
                {
                    await __tagHelperExecutionContext.SetOutputContentAsync();
                }
                Write(__tagHelperExecutionContext.Output);
                __tagHelperExecutionContext = __tagHelperScopeManager.End();
                EndContext();
                BeginContext(1021, 91, true);
                WriteLiteral("\r\n                </li>\r\n                <li class=\"nav-item active\">\r\n                    ");
                EndContext();
                BeginContext(1112, 145, false);
                __tagHelperExecutionContext = __tagHelperScopeManager.Begin("a", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "e4b6175f2ace4ef59eee245c45fdc3f3", async() => {
                    BeginContext(1194, 59, true);
                    WriteLiteral("Listagem Funcionário <span class=\"sr-only\">(current)</span>");
                    EndContext();
                }
                                                                            );
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper>();
                __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Controller = (string)__tagHelperAttribute_2.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_2);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Action = (string)__tagHelperAttribute_5.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_5);
                __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_4);
                await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
                if (!__tagHelperExecutionContext.Output.IsContentModified)
                {
                    await __tagHelperExecutionContext.SetOutputContentAsync();
                }
                Write(__tagHelperExecutionContext.Output);
                __tagHelperExecutionContext = __tagHelperScopeManager.End();
                EndContext();
                BeginContext(1257, 91, true);
                WriteLiteral("\r\n                </li>\r\n                <li class=\"nav-item active\">\r\n                    ");
                EndContext();
                BeginContext(1348, 135, false);
                __tagHelperExecutionContext = __tagHelperScopeManager.Begin("a", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "5fe4e462fd2b4a72aadf5923adbf173c", async() => {
                    BeginContext(1420, 59, true);
                    WriteLiteral("Cadastrar Funcionário<span class=\"sr-only\">(current)</span>");
                    EndContext();
                }
                                                                            );
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper>();
                __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Controller = (string)__tagHelperAttribute_2.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_2);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Action = (string)__tagHelperAttribute_6.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_6);
                __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_4);
                await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
                if (!__tagHelperExecutionContext.Output.IsContentModified)
                {
                    await __tagHelperExecutionContext.SetOutputContentAsync();
                }
                Write(__tagHelperExecutionContext.Output);
                __tagHelperExecutionContext = __tagHelperScopeManager.End();
                EndContext();
                BeginContext(1483, 91, true);
                WriteLiteral("\r\n                </li>\r\n                <li class=\"nav-item active\">\r\n                    ");
                EndContext();
                BeginContext(1574, 127, false);
                __tagHelperExecutionContext = __tagHelperScopeManager.Begin("a", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "b9fc3182234645a19734f1ea4f7ca8dc", async() => {
                    BeginContext(1642, 55, true);
                    WriteLiteral("Cadastrar Cliente<span class=\"sr-only\">(current)</span>");
                    EndContext();
                }
                                                                            );
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper>();
                __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Controller = (string)__tagHelperAttribute_7.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_7);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Action = (string)__tagHelperAttribute_6.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_6);
                __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_4);
                await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
                if (!__tagHelperExecutionContext.Output.IsContentModified)
                {
                    await __tagHelperExecutionContext.SetOutputContentAsync();
                }
                Write(__tagHelperExecutionContext.Output);
                __tagHelperExecutionContext = __tagHelperScopeManager.End();
                EndContext();
                BeginContext(1701, 91, true);
                WriteLiteral("\r\n                </li>\r\n                <li class=\"nav-item active\">\r\n                    ");
                EndContext();
                BeginContext(1792, 132, false);
                __tagHelperExecutionContext = __tagHelperScopeManager.Begin("a", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "8320b7e4b49545c39c20061b1cc56ec5", async() => {
                    BeginContext(1866, 54, true);
                    WriteLiteral("Listagem Cliente<span class=\"sr-only\">(current)</span>");
                    EndContext();
                }
                                                                            );
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper>();
                __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Controller = (string)__tagHelperAttribute_7.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_7);
                __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Action = (string)__tagHelperAttribute_8.Value;
                __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_8);
                __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_4);
                await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
                if (!__tagHelperExecutionContext.Output.IsContentModified)
                {
                    await __tagHelperExecutionContext.SetOutputContentAsync();
                }
                Write(__tagHelperExecutionContext.Output);
                __tagHelperExecutionContext = __tagHelperScopeManager.End();
                EndContext();
                BeginContext(1924, 89, true);
                WriteLiteral("\r\n                </li>\r\n            </ul>\r\n            <ul class=\"navbar-nav mr-auto\">\r\n");
                EndContext();
#line 37 "C:\git\MTTSK\MyTeamTasksRecom\Views\Shared\LayoutAdm.cshtml"
                if (SignManager.IsSignedIn(User))
                {
#line default
#line hidden
                    BeginContext(2084, 66, true);
                    WriteLiteral("                <li class=\"nav-item active\">\r\n                    ");
                    EndContext();
                    BeginContext(2150, 141, false);
                    __tagHelperExecutionContext = __tagHelperScopeManager.Begin("a", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "c940e7bad9cc445d8785149cdafc0632", async() => {
                        BeginContext(2243, 44, true);
                        WriteLiteral("Logout<span class=\"sr-only\">(current)</span>");
                        EndContext();
                    }
                                                                                );
                    __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper>();
                    __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper);
                    __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Controller = (string)__tagHelperAttribute_2.Value;
                    __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_2);
                    __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Action = (string)__tagHelperAttribute_9.Value;
                    __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_9);
                    __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_4);
                    await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
                    if (!__tagHelperExecutionContext.Output.IsContentModified)
                    {
                        await __tagHelperExecutionContext.SetOutputContentAsync();
                    }
                    Write(__tagHelperExecutionContext.Output);
                    __tagHelperExecutionContext = __tagHelperScopeManager.End();
                    EndContext();
                    BeginContext(2291, 25, true);
                    WriteLiteral("\r\n                </li>\r\n");
                    EndContext();
#line 43 "C:\git\MTTSK\MyTeamTasksRecom\Views\Shared\LayoutAdm.cshtml"
                }
                else
                {
#line default
#line hidden
                    BeginContext(2376, 66, true);
                    WriteLiteral("                <li class=\"nav-item active\">\r\n                    ");
                    EndContext();
                    BeginContext(2442, 139, false);
                    __tagHelperExecutionContext = __tagHelperScopeManager.Begin("a", global::Microsoft.AspNetCore.Razor.TagHelpers.TagMode.StartTagAndEndTag, "1e4b824757b64eb8a8a23d3aab1b43fc", async() => {
                        BeginContext(2534, 43, true);
                        WriteLiteral("Login<span class=\"sr-only\">(current)</span>");
                        EndContext();
                    }
                                                                                );
                    __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.TagHelpers.AnchorTagHelper>();
                    __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper);
                    __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Controller = (string)__tagHelperAttribute_2.Value;
                    __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_2);
                    __Microsoft_AspNetCore_Mvc_TagHelpers_AnchorTagHelper.Action = (string)__tagHelperAttribute_10.Value;
                    __tagHelperExecutionContext.AddTagHelperAttribute(__tagHelperAttribute_10);
                    __tagHelperExecutionContext.AddHtmlAttribute(__tagHelperAttribute_4);
                    await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);
                    if (!__tagHelperExecutionContext.Output.IsContentModified)
                    {
                        await __tagHelperExecutionContext.SetOutputContentAsync();
                    }
                    Write(__tagHelperExecutionContext.Output);
                    __tagHelperExecutionContext = __tagHelperScopeManager.End();
                    EndContext();
                    BeginContext(2581, 25, true);
                    WriteLiteral("\r\n                </li>\r\n");
                    EndContext();
#line 50 "C:\git\MTTSK\MyTeamTasksRecom\Views\Shared\LayoutAdm.cshtml"
                }

#line default
#line hidden
                BeginContext(2625, 78, true);
                WriteLiteral("            </ul>\r\n        </div>\r\n    </nav>\r\n    <div class=\"m-5\">\r\n        ");
                EndContext();
                BeginContext(2704, 12, false);
#line 55 "C:\git\MTTSK\MyTeamTasksRecom\Views\Shared\LayoutAdm.cshtml"
                Write(RenderBody());

#line default
#line hidden
                EndContext();
                BeginContext(2716, 85, true);
                WriteLiteral("\r\n    </div>\r\n    <footer>\r\n        <p style=\"text-align:center\">\r\n            &copy;");
                EndContext();
                BeginContext(2802, 17, false);
#line 59 "C:\git\MTTSK\MyTeamTasksRecom\Views\Shared\LayoutAdm.cshtml"
                Write(DateTime.Now.Year);

#line default
#line hidden
                EndContext();
                BeginContext(2819, 80, true);
                WriteLiteral(" - Desenvolvido por Pedro Augusto e Ronaldo Gomes\r\n        </p>\r\n    </footer>\r\n");
                EndContext();
            }
                                                                        );
            __Microsoft_AspNetCore_Mvc_Razor_TagHelpers_BodyTagHelper = CreateTagHelper <global::Microsoft.AspNetCore.Mvc.Razor.TagHelpers.BodyTagHelper>();
            __tagHelperExecutionContext.Add(__Microsoft_AspNetCore_Mvc_Razor_TagHelpers_BodyTagHelper);
            await __tagHelperRunner.RunAsync(__tagHelperExecutionContext);

            if (!__tagHelperExecutionContext.Output.IsContentModified)
            {
                await __tagHelperExecutionContext.SetOutputContentAsync();
            }
            Write(__tagHelperExecutionContext.Output);
            __tagHelperExecutionContext = __tagHelperScopeManager.End();
            EndContext();
            BeginContext(2906, 11, true);
            WriteLiteral("\r\n</html>\r\n");
            EndContext();
        }
Esempio n. 36
0
 void Start()
 {
     mScorecontrol = GameObject.Find("ScoreManager").GetComponent<ScoreManager>();
     mSignmanager = GameObject.Find("SignManager").GetComponent<SignManager>();
 }
Esempio n. 37
0
    /// <summary>
    /// Initializes the clearer by getting the associated block, emptier, and stats tracker
    /// </summary>
    void Awake()
    {
        block = GetComponent<Block>();
        emptier = GetComponent<BlockEmptier>();
		signManager = GameObject.Find ("Sign Canvas").GetComponent<SignManager> ();
    }