Beispiel #1
0
        private async Task <UpdateDomainRecordRequest> CheckIP()
        {
            //string ip = await IPHelper.GetIP_Amazon(logger);
            string ip = "";
            UpdateDomainRecordRequest updateRequest = null;

            if (string.IsNullOrEmpty(ip))
            {
                return(updateRequest);
            }

            try
            {
                //IAcsClient提供了两种类型的调用结果返回, 一种方式是通过调用doAction方法获取取得原始的api 调用结果, 即返回HttpResponse类型的结果. 示例代码如下:
                //HttpResponse httpResponse = client.doAction(describeCdnServiceRequest);
                //System.out.println(httpResponse.getUrl());
                //System.out.println(new String(httpResponse.getContent()));
                //另一种方式, 通过调用 getAcsResponse 方法, 获取反序列化后的对象, 示例代码如下:
                var response   = client.GetAcsResponse(request);
                var domainList = response.DomainRecords;

                if (domainList.Count == 2)
                {
                    var domainRecord = domainList[0];
                    //logger.LogInformation("domain name:" + domainRecord.DomainName);
                    //logger.LogInformation("domain type:" + domainRecord.Type + "\r\n" + "domain value:" + domainRecord.Value);
                    if (domainRecord.Value != ip)
                    {
                        //logger.LogInformation("当前外网IP:" + ip + "\r\n" + "解析IP:" + domainRecord.Value);
                        //logger.LogInformation("IP发生变化,开始修改域名解析..." + domainRecord.DomainName);

                        updateRequest          = new UpdateDomainRecordRequest();
                        updateRequest.RecordId = domainList[0].RecordId;
                        updateRequest.RR       = domainList[0].RR;
                        updateRequest.Type     = domainList[0].Type;
                        updateRequest.Value    = ip;
                    }
                }
                else
                {
                    throw new Exception($"域名数:{domainList.Count}");
                }
            }
            catch (ServerException e)
            {
                //logger.LogError(e, e.Message);
            }
            catch (ClientException e)
            {
                //logger.LogError(e, e.Message);
            }

            return(updateRequest);
        }
Beispiel #2
0
        /// <summary>
        /// 禁止某条流的推送,可以预设某个时刻将流恢复
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="minutes"></param>
        public string Forbid(string userID, int minutes)
        {
            ForbidLiveStreamRequest request = new ForbidLiveStreamRequest();

            request.AppName        = ConfigSetting.AppName;
            request.Product        = _ProductName;
            request.DomainName     = ConfigSetting.DomainName;
            request.AcceptFormat   = Aliyun.Acs.Core.Http.FormatType.JSON;
            request.LiveStreamType = _LiveStreamType;
            request.StreamName     = userID;
            request.ResumeTime     = DateTime.UtcNow.AddMinutes(minutes).ToString(_UtcFormat);
            ForbidLiveStreamResponse response = _AcsClient.GetAcsResponse(request);

            return(GetString(response));
        }
Beispiel #3
0
    public bool sendMail(string emailaddress, string code)
    {
        SingleSendMailRequest request = new SingleSendMailRequest();

        try
        {
            request.AccountName    = myemail;
            request.FromAlias      = "campustalk官方团队";
            request.AddressType    = 1;
            request.TagName        = "Regesiter";
            request.ReplyToAddress = true;
            request.ToAddress      = emailaddress;
            request.Subject        = "[campustalk]验证码消息";
            request.HtmlBody       = "欢迎注册campustalk,您的验证码为:" + code + "。验证码有效期为:" + GlobalVar.CODE_VAL_TIME + "分钟";
            SingleSendMailResponse httpResponse = client.GetAcsResponse(request);
        }
        catch (ServerException e)
        {
            return(false);
        }
        catch (ClientException e)
        {
            return(false);
        }
        return(true);
    }
Beispiel #4
0
 public void Send(string to, string templateParam, string templateCode)
 {
     try
     {
         var request = new SendSmsRequest()
         {
             PhoneNumbers  = to,
             SignName      = AliyunSmsSettingConfigs.SignName,
             TemplateCode  = templateCode,
             TemplateParam = templateParam,
             OutId         = "Clmeng"
         };
         var result = _acsClient.GetAcsResponse(request);
         if (result.Code == "")
         {
         }
     }
     catch (ServerException e)
     {
         throw new LotteryException("短信服务端异常", e);
     }
     catch (ClientException e)
     {
         throw new LotteryException("短信客户端异常", e);
     }
 }
        public NormalResult Send(string signName, string templateCode, string recNum, string paramString)
        {
            NormalResult result = new NormalResult();

            SingleSendSmsRequest request = new SingleSendSmsRequest();

            try
            {
                request.SignName     = signName;
                request.TemplateCode = templateCode;
                request.RecNum       = recNum;
                request.ParamString  = paramString;
                SingleSendSmsResponse httpResponse = _client.GetAcsResponse(request);
            }
            catch (ServerException ex)
            {
                _log.Write("短信发送失败 ServerException", ex.Message + "\r\n" + ex.StackTrace, TraceEventType.Warning);
                result.Success = false;
                result.Message = ex.Message;
            }
            catch (ClientException ex)
            {
                _log.Write("短信发送失败 ClientException", ex.Message + "\r\n" + ex.StackTrace, TraceEventType.Warning);
                result.Success = false;
                result.Message = ex.Message;
            }

            return(result);
        }
Beispiel #6
0
        public async Task CheckAndModify()
        {
            string ip = await IPHelper.GetIP_Amazon();

            if (string.IsNullOrEmpty(ip))
            {
                throw new Exception("Get Local IP error:GetIP_Amazon()");
            }
            foreach (var item in describeDomainRecords_Records)
            {
                if (Options.MonitorHosts.Contains(item.RR) && item._Value != ip)
                {
                    //比对不相同的时候更新本地ip到服务器
                    var updateRequest = new UpdateDomainRecordRequest();
                    updateRequest.RecordId = item.RecordId;
                    updateRequest.RR       = item.RR;
                    updateRequest.Type     = item.Type;
                    updateRequest._Value   = ip;
                    var updateResponse = client.GetAcsResponse(updateRequest);
                    if (!updateResponse.HttpResponse.isSuccess())
                    {
                        Log.Logger.Error($"主机记录:{item.RR},IP:{ip},更新ip失败");
                    }
                    else
                    {
                        //更新本地存储的dns,方便下次对比,保证和服务端一致
                        item._Value = ip;
                        Log.Logger.Information($"更新主机记录:{item.RR},更新前IP:{item._Value},更新后IP:{ip},");
                    }
                }
            }
        }
Beispiel #7
0
        public QueryTokenForMnsQueueResponse.QueryTokenForMnsQueue_MessageTokenDTO GetTokenByMessageType(IAcsClient acsClient, String messageType)
        {
            QueryTokenForMnsQueueRequest request = new QueryTokenForMnsQueueRequest();

            request.MessageType = messageType;
            QueryTokenForMnsQueueResponse queryTokenForMnsQueueResponse = acsClient.GetAcsResponse(request);

            QueryTokenForMnsQueueResponse.QueryTokenForMnsQueue_MessageTokenDTO token = queryTokenForMnsQueueResponse.MessageTokenDTO;
            return(token);
        }
Beispiel #8
0
        /// <summary>
        /// 获取某域名的解析记录列表
        /// </summary>
        /// <param name="Domain"></param>
        /// <returns></returns>
        public List <DescribeDomainRecordsResponse.Record> GetDomainRecords(string Domain)
        {
            var request = new DescribeDomainRecordsRequest()
            {
                DomainName = Domain,
                PageNumber = 1,
                PageSize   = 500
            };

            try
            {
                var response = client.GetAcsResponse(request);
                return(response.DomainRecords);
            }
            catch
            {
                return(new List <DescribeDomainRecordsResponse.Record>());
            }
        }
Beispiel #9
0
        /// <exception cref="AliyunException"></exception>
        public AliyunStsToken?RequestOssStsToken(long userId, string bucketName, string directory, bool readOnly)
        {
            if (bucketName.IsNullOrEmpty() || userId < 0 || directory.IsNullOrEmpty())
            {
                return(null);
            }

            directory = directory.TrimEnd('/');

            string ossResourceName = $"acs:oss:*:*:{bucketName}";

            if (!_resourceAssumedRoleDict.TryGetValue(ossResourceName, out AssumedRole assumedRole))
            {
                return(null);
            }

            string policy = string.Format(GlobalSettings.Culture, readOnly ? OSS_READ_POLICY_TEMPLATE : OSS_WRITE_POLICY_TEMPLATE, bucketName, directory.IsNullOrEmpty() ? "*" : directory + "/*");

            AssumeRoleRequest request = new AssumeRoleRequest
            {
                AcceptFormat    = FormatType.JSON,
                RoleArn         = assumedRole.Arn,
                RoleSessionName = GetRoleSessionName(userId),
                DurationSeconds = assumedRole.ExpireSeconds,
                Policy          = policy
            };

            try
            {
                AssumeRoleResponse assumedRoleResponse = _acsClient.GetAcsResponse(request);

                AliyunStsToken stsToken = new AliyunStsToken
                {
                    RequestId       = assumedRoleResponse.RequestId,
                    SecurityToken   = assumedRoleResponse.Credentials.SecurityToken,
                    AccessKeyId     = assumedRoleResponse.Credentials.AccessKeyId,
                    AccessKeySecret = assumedRoleResponse.Credentials.AccessKeySecret,
                    ExpirationAt    = DateTimeOffset.Parse(assumedRoleResponse.Credentials.Expiration, GlobalSettings.Culture),
                    ArId            = assumedRoleResponse.AssumedRoleUser.AssumedRoleId,
                    Arn             = assumedRoleResponse.AssumedRoleUser.Arn,
                    ReadOnly        = readOnly
                };

                return(stsToken);
            }
            catch (Exception ex)
            {
                //TODO: 处理报错
                throw Exceptions.StsError(userId: userId, bucketname: bucketName, direcotry: directory, readOnly: readOnly, ex);
            }
        }
        private BasicSessionCredentials GetNewSessionCredentials()
        {
            var request = new GetSessionAccessKeyRequest
            {
                PublicKeyId     = rsaKeyPairCredential.GetAccessKeyId(),
                DurationSeconds = (int)sessionDurationSeconds,
                Protocol        = ProtocolType.HTTPS
            };

            var response = stsClient.GetAcsResponse(request);

            return(new BasicSessionCredentials(
                       response.SessionAccesskey.SessionAccessKeyId,
                       response.SessionAccesskey.SessionAccessKeySecert,
                       null, sessionDurationSeconds
                       ));
        }
Beispiel #11
0
        public DomainRecord(DomainRecordOptions options)
        {
            Options = options;
            var profile = DefaultProfile.GetProfile(Options.RegionId, Options.AccessKeyId, Options.AccessKeySecret);

            client  = new DefaultAcsClient(profile);
            request = new DescribeDomainRecordsRequest();

            //request.Url = "http://domain.aliyuncs.com/";
            request.DomainName  = Options.DomainName;
            request.TypeKeyWord = Options.DomainType;
            //request.ActionName = "DescribeDomainRecords";

            var response = client.GetAcsResponse(request);

            describeDomainRecords_Records = response.DomainRecords;
        }
        private BasicSessionCredentials GetNewSessionCredentials()
        {
            assumeRoleRound += 1;

            AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest
            {
                RoleArn         = roleArn,
                RoleSessionName = roleSessionName,
                DurationSeconds = roleSessionDurationSeconds
            };
            AssumeRoleResponse response = stsClient.GetAcsResponse(assumeRoleRequest);

            return(new BasicSessionCredentials(
                       response.Credentials.AccessKeyId,
                       response.Credentials.AccessKeySecret,
                       response.Credentials.SecurityToken,
                       roleSessionDurationSeconds
                       ));
        }
        private BasicSessionCredentials GetNewSessionCredentials()
        {
            var assumeRoleRequest = new AssumeRoleRequest
            {
                RoleArn         = roleArn,
                RoleSessionName = roleSessionName,
                DurationSeconds = roleSessionDurationSeconds
            };

            if (!string.IsNullOrEmpty(policy))
            {
                assumeRoleRequest.Policy = policy;
            }

            var response = stsClient.GetAcsResponse(assumeRoleRequest);

            return(new BasicSessionCredentials(
                       response.Credentials.AccessKeyId,
                       response.Credentials.AccessKeySecret,
                       response.Credentials.SecurityToken, roleSessionDurationSeconds
                       ));
        }
Beispiel #14
0
 public virtual AssumeRoleResponse GetResponse(AssumeRoleRequest assumeRoleRequest)
 {
     return(stsClient.GetAcsResponse(assumeRoleRequest));
 }