Skip to content

Commit

Permalink
Fix stat -> state
Browse files Browse the repository at this point in the history
  • Loading branch information
the2pizza committed Dec 9, 2024
1 parent 05704fb commit 352f534
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 45 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ query2.txt
node_modules
users.json
xray-config-mk2nl.json
connection-lines.txt
13 changes: 13 additions & 0 deletions docs/vmess-tcp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

### Vmess TCP


```connections string
'{"add": "194.54.156.00", "aid": "0", "host": "google.com", "id": "dc79e5c9-4b10-48b3-b7b8-534821ceAAAA", "net": "tcp", "path": "/", "port": 8081, "ps": "VmessTCP Test", "scy": "auto", "tls": "none", "type": "http", "v": "2"}'
base64:
vmess://eyJhZGQiOiAiMTk0LjU0LjE1Ni4wMCIsICJhaWQiOiAiMCIsICJob3N0IjogImdvb2dsZS5jb20iLCAiaWQiOiAiZGM3OWU1YzktNGIxMC00OGIzLWI3YjgtNTM0ODIxY2VBQUFBIiwgIm5ldCI6ICJ0Y3AiLCAicGF0aCI6ICIvIiwgInBvcnQiOiA4MDgxLCAicHMiOiAiVm1lc3NUQ1AgVGVzdCIsICJzY3kiOiAiYXV0byIsICJ0bHMiOiAibm9uZSIsICJ0eXBlIjogImh0dHAiLCAidiI6ICIyIn0K
```
60 changes: 23 additions & 37 deletions docs/xray-reality-xtls-rprx-vision-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,44 +4,30 @@

```
{
"tag": "Vless",
"listen": "0.0.0.0",
"port": 2053,
"protocol": "vless",
"settings": {
"clients": [
],
"decryption": "none"
},
"streamSettings": {
"network": "grpc",
"grpcSettings": {
"serviceName": "xyz"
},
"security": "reality",
"realitySettings": {
"show": false,
"dest": "discordapp.com:443",
"xver": 0,
"serverNames": [
"cdn.discordapp.com",
"discordapp.com"
],
"privateKey": "PRIVATE_KEY",
"shortIds": [
"SHORTID1",
"SHORTID2"
]
"tag": "VlessXtls",
"listen": "0.0.0.0",
"port": 8433,
"protocol": "vless",
"settings": {
"clients": [],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"serverNames": [
"cdn.discordapp.com",
"discordapp.com"
],
"privateKey": "4AQgu1qeCaGT8nnZTOnKLSOudSp_Z_AAAAAAAAA",
"shortIds": [
"e5c4d84fb3AAAAAAA"
],
"dest": "discordapp.com:443"
}
}
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
}
}
```

2. Short_id 8-16 chars [a-f0-9]
Expand Down
9 changes: 7 additions & 2 deletions src/xray_op/stats.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,16 @@ pub async fn get_stats_task(clients: XrayClients, state: Arc<Mutex<UserState>>)
let mut user_state = state.lock().await;

if let Some(downlink) = response.0.stat {
user_state.update_user_downlink(&user.user_id, downlink.value);
let _ = user_state
.update_user_downlink(&user.user_id, downlink.value)
.await;
}
if let Some(uplink) = response.1.stat {
user_state.update_user_uplink(&user.user_id, uplink.value);
let _ = user_state
.update_user_uplink(&user.user_id, uplink.value)
.await;
}
let _ = user_state.save_to_file_async().await;
}
Err(e) => {
warn!("Failed to get stats: {}", e);
Expand Down
30 changes: 24 additions & 6 deletions src/xray_op/user_state.rs
Original file line number Diff line number Diff line change
Expand Up @@ -102,23 +102,41 @@ impl UserState {
Ok(())
}

pub fn update_user_stat(&mut self, user_id: &str, stat: StatType, new_value: Option<i64>) {
pub async fn update_user_stat(
&mut self,
user_id: &str,
stat: StatType,
new_value: Option<i64>,
) -> Result<(), Box<dyn Error>> {
if let Some(user) = self.users.iter_mut().find(|user| user.user_id == user_id) {
match stat {
StatType::Uplink => user.uplink = new_value,
StatType::Downlink => user.downlink = new_value,
}
Ok(())
} else {
error!("User not found: {}", user_id);
let err_msg = format!("User not found: {}", user_id);
error!("{}", err_msg);
Err(err_msg.into())
}
}

pub fn update_user_uplink(&mut self, user_id: &str, new_uplink: i64) {
self.update_user_stat(user_id, StatType::Uplink, Some(new_uplink));
pub async fn update_user_uplink(
&mut self,
user_id: &str,
new_uplink: i64,
) -> Result<(), Box<dyn Error>> {
self.update_user_stat(user_id, StatType::Uplink, Some(new_uplink))
.await
}

pub fn update_user_downlink(&mut self, user_id: &str, new_downlink: i64) {
self.update_user_stat(user_id, StatType::Downlink, Some(new_downlink));
pub async fn update_user_downlink(
&mut self,
user_id: &str,
new_downlink: i64,
) -> Result<(), Box<dyn Error>> {
self.update_user_stat(user_id, StatType::Downlink, Some(new_downlink))
.await
}

pub fn get_all_trial_users(&self, status: UserStatus) -> Vec<User> {
Expand Down

0 comments on commit 352f534

Please sign in to comment.