/// <summary>
        /// 将 Qiniu 标识与 AccessKey、encodedSign 拼接得到管理凭证
        /// </summary>
        /// <returns></returns>
        public static string GetQiniuToken(string data)
        {
            QiniuConfig config      = QiniuConfigManager.Current.GetConfig();
            string      encodedSign = GetSign(data);

            return("Qiniu " + config.AK + ":" + encodedSign);
        }
예제 #2
0
        /// <summary>
        /// 字节流上传
        /// </summary>
        /// <param name="data">上传文件字节流</param>
        /// <param name="suffix">文件后缀名(.jpg)</param>
        /// <param name="bucket"></param>
        /// <returns></returns>
        public string UploadByByte(byte[] data, string suffix)
        {
            QiniuConfig config = QiniuConfigManager.Current.GetConfig();

            // 七牛安全
            QiNiuSecurity security = new QiNiuSecurity(config.AK, config.SK);
            string        MD5      = DataEncrypt.GetMD5HashByByte(data);
            string        saveKey  = MD5;

            if (!string.IsNullOrWhiteSpace(suffix))
            {
                saveKey += suffix;
            }
            // 生成(上传)凭证时需要使用此Mac
            Mac mac = security.Mac;

            ZoneID zoneId = ZoneID.CN_South;

            Qiniu.Common.Config.SetZone(zoneId, false);
            // 上传策略
            var          putPolicy = security.CreatePutPolicy(config.Bucket, saveKey);
            string       jstr      = putPolicy.ToJsonString();
            string       token     = Auth.CreateUploadToken(mac, jstr);
            FormUploader fu        = new FormUploader();
            var          result    = fu.UploadData(data, saveKey, token);

            string fileUrl = config.Domain + saveKey;

            return(fileUrl);
        }
예제 #3
0
 public ValuesController(IOptions <QiniuConfig> qiniuOption
                         , ILogger <ValuesController> logger
                         )
 {
     this.qiniuOption = qiniuOption.Value;
     this.logger      = logger;
 }
        /// <summary>
        /// 计算 HMAC-SHA1 签名,并对签名结果做 URL 安全的 Base64 编码
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static string GetSign(string data)
        {
            QiniuConfig config = QiniuConfigManager.Current.GetConfig();
            //HMACSHA1加密
            HMACSHA1 hmacsha1 = new HMACSHA1 {
                Key = Encoding.UTF8.GetBytes(config.SK)
            };

            byte[] dataBuffer = Encoding.UTF8.GetBytes(data);
            byte[] hashBytes  = hmacsha1.ComputeHash(dataBuffer);
            return(ToBase64StringForUrl(hashBytes));
        }
예제 #5
0
 public QiniuTokenManager(OSSConfig config)
 {
     _config = config.Qiniu;
     RefreshTimer();
 }
예제 #6
0
 public QiniuFileStorageProvider(QiniuHelper helper, OSSConfig config)
 {
     _helper = helper;
     _config = config.Qiniu;
 }
예제 #7
0
        /// <summary>
        /// 初始化config
        /// </summary>
        private void initAppConfig()
        {
            #region aliyun

            var aliyun = new AliyunConfig()
            {
                App = new AliyunApp()
                {
                    Id        = AppConfig.ALI_CLOUD_KEY,
                    Sercet    = AppConfig.ALI_CLOUD_SECRET,
                    Signature = AppConfig.ALI_CLOUD_SIGNATURE
                },
                Apis = new List <Api>()
                {
                    new Api()
                    {
                        Name        = "server-rest",
                        Url         = "https://eco.taobao.com/router/rest",
                        Description = "淘宝 RESTful API"
                    }
                }
            };
            this.Save <AliyunConfig>("aliyun.config", aliyun);

            #endregion

            #region wechat

            var wechat = new WeChatConfig()
            {
                App = new AppInfo()
                {
                    Id     = AppConfig.WX_KEY,
                    Sercet = AppConfig.WX_SECRET
                },
                Apis = new List <Api>()
                {
                    new Api()
                    {
                        Name        = "token",
                        Url         = "https://api.weixin.qq.com/sns/oauth2/access_token",
                        Description = "授权请求地址"
                    },
                    new Api()
                    {
                        Name        = "user",
                        Url         = "https://api.weixin.qq.com/sns/userinfo",
                        Description = "用户信息请求地址"
                    }
                }
            };
            this.Save <WeChatConfig>("wechat.config", wechat);

            #endregion

            #region mongodb

            var mongo = new MongoDbConfig()
            {
                Connection = new MongoConnection()
                {
                    Value = AppConfig.MONGO_CONNECTION_STRING
                },
                DefaultDb = new MongoDb()
                {
                    Name = "DefaultDb"
                },
                StatisticsDb = new MongoDb()
                {
                    Name = "StatisticDb"
                },
                MongoCache = new MongoCacheDb()
                {
                    Name = $"{AppConfig.PREFIX}Caching", CollectionName = "CacheCollection"
                }
            };

            this.Save <MongoDbConfig>("mongodb.config", mongo);

            #endregion

            #region getui

            var getui = new GetuiConfig()
            {
                Host         = "http://sdk.open.api.igexin.com/apiex.htm",
                AppId        = AppConfig.GT_ID,
                AppKey       = AppConfig.GT_KEY,
                MasterSecret = AppConfig.GT_MASTER_SECRET
            };

            this.Save <GetuiConfig>("getui.config", getui);

            #endregion

            #region qiniu

            var qiniu = new QiniuConfig()
            {
                AccessKey = AppConfig.QINIU_ACCOUNT,
                SecretKey = AppConfig.QINIU_SECRET,
                Bucket    = "bucket"
            };

            this.Save <GetuiConfig>("qiniu.config", getui);

            #endregion

            #region site

            var site = new SiteConfig()
            {
                MessageInterval = 10,
                MaxFileSize     = 2,
                DefaultPic      = "/Content/img/avatars/male.png",
                SHA1Salt        = AppConfig.SHA1_SALT,
                Version         = "1.0.141027 内测版",

                #region Domain

                Domains = new List <Domain>()
                {
                    new Domain()
                    {
                        Name = "fileserver", Url = "http://files.test.gu.com/"
                    },
                    new Domain()
                    {
                        Name = "webserver", Url = "http://www.test.gu.com/"
                    },
                    new Domain()
                    {
                        Name = "homepage", Url = "http://www.test.gu.com/"
                    },
                    new Domain()
                    {
                        Name = "webapi", Url = "http://open.gu.com/"
                    }
                },

                #endregion

                #region Email

                Email = new EmailConfig()
                {
                    From     = AppConfig.EMAIL_ACCOUNT,
                    UserName = AppConfig.APP,
                    SMTP     = "smtp.163.com",
                    Port     = 25,
                    NickName = AppConfig.APP,
                    Password = AppConfig.EMAIL_PWD,
                    SSL      = false,
                },

                #endregion

                #region MSMQ

                MSMQ = $@"FormatName:Direct=TCP:{AppConfig.DB_IP}\private$\",

                #endregion

                #region IM

                IM = new IMConfig()
                {
                    Host = $"imhost.test.{AppConfig.DOMAIN_SUFFIX}",
                    Port = 5222
                }

                #endregion
            };

            this.Save <SiteConfig>("site.config", site);

            #endregion
        }
예제 #8
0
 public QiniuHelper(QiniuTokenManager tokenManager, ILogger <QiniuHelper> logger, OSSConfig config)
 {
     _tokenManager = tokenManager;
     _logger       = logger;
     _config       = config.Qiniu;
 }
예제 #9
0
 public AccountService(IOptions <QiniuConfig> qiniuconfig)
 {
     this.qiniuconfig = qiniuconfig.Value;
 }