Skip to content

Conversation

@spongebob888
Copy link
Contributor

@spongebob888 spongebob888 commented Apr 30, 2025

🤔 This is a ...

  • New feature
  • Bug fix
  • Performance optimization
  • Enhancement feature
  • Refactoring
  • Code style optimization
  • Test Case
  • Branch merge
  • Workflow
  • Other (about what?)

🔗 Related issue link

💡 Background and solution

Hello, this PR implements shadowquic protocol which works similarly to shadowtls but more suitable for QUIC.

I tested personally with socks inbound and TCP/UDP seems to work. Test and doc are not added yet.

TODO

  • doc
  • testcase

📝 Changelog

☑️ Self-Check before Merge

⚠️ Please check all items below before requesting a reviewing. ⚠️

  • Doc is updated/provided or not needed
  • Changelog is provided or not needed

@codecov
Copy link

codecov bot commented Apr 30, 2025

@ibigbug ibigbug changed the title Shadowquic feat(proxy): add shadowquic protocol May 1, 2025
use crate::{Error, common::utils::default_bool_true, config::utils};
use serde::{Deserialize, de::value::MapDeserializer};
use serde_yaml::Value;
use shadowquic::config::CongestionControl as SQCongestionControl;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you may need to gate the feature here to pass the build

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in latest commit

) -> io::Result<&ShadowQuicClient> {
self.ep
.get_or_try_init(|| async {
let iter: Vec<&str> = self.opts.addr.split(":").collect();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it an issue if opts.addr is an ipv6 address?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, this is a true bug. solved in latest commit

impl DialWithConnector for Handler {}

#[async_trait]
impl OutboundHandler for Handler {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mind adding a test like other outbounds did?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in latest commit

@Itsusinn
Copy link
Member

Itsusinn commented May 2, 2025

Whats wrong with those failed targets?

@ibigbug
Copy link
Member

ibigbug commented May 2, 2025

I think it's the missing feature gate

Copy link
Member

@ibigbug ibigbug left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm. thanks!

@ibigbug ibigbug merged commit a1e13ce into Watfaq:master May 2, 2025
32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants