1pub const DEFAULT_RSHIP_PORT_BASE: u16 = 5155;
13
14pub const DEFAULT_ASSET_STORE_REST_PORT: u16 = 5153;
16
17pub const DEFAULT_ASSET_STORE_WS_PORT: u16 = 5154;
19
20pub const DEFAULT_SYNC_SERVER_PORT: u16 = 5150;
22
23pub const DEFAULT_LINK_FILE_SERVER_PORT: u16 = 5152;
25
26pub const DEFAULT_LINK_LOCAL_MYKO_PORT: u16 = 5151;
28
29fn env_var(name: &str) -> Option<String> {
30 #[cfg(target_arch = "wasm32")]
31 {
32 let _ = name;
33 None
34 }
35
36 #[cfg(not(target_arch = "wasm32"))]
37 {
38 std::env::var(name).ok()
39 }
40}
41
42fn env_port(name: &str) -> Option<u16> {
43 env_var(name)?.parse::<u16>().ok()
44}
45
46fn parse_port_from_addr(value: &str) -> Option<u16> {
47 let no_scheme = value
48 .split_once("://")
49 .map(|(_, rest)| rest)
50 .unwrap_or(value);
51 let host_port = no_scheme.split('/').next().unwrap_or(no_scheme);
52 host_port.rsplit(':').next()?.parse::<u16>().ok()
53}
54
55pub fn rship_port_base() -> u16 {
57 env_port("RSHIP_PORT_BASE").unwrap_or(DEFAULT_RSHIP_PORT_BASE)
58}
59
60pub fn rship_node_port(node_index: u16) -> u16 {
62 rship_port_base().saturating_add(node_index)
63}
64
65pub fn default_rship_ws_myko_url() -> String {
67 format!("ws://localhost:{}/myko", rship_node_port(0))
68}
69
70pub fn default_rship_ws_url() -> String {
72 format!("ws://localhost:{}", rship_node_port(0))
73}
74
75pub fn asset_store_rest_port() -> u16 {
83 env_port("ASSET_STORE_REST_PORT")
84 .or_else(|| env_var("ASSET_STORE_PUBLIC_ADDRESS").and_then(|v| parse_port_from_addr(&v)))
85 .or_else(|| env_var("ASSET_STORE_REST_ADDR").and_then(|v| parse_port_from_addr(&v)))
86 .unwrap_or(DEFAULT_ASSET_STORE_REST_PORT)
87}
88
89pub fn asset_store_ws_port() -> u16 {
91 env_port("ASSET_STORE_WS_PORT").unwrap_or(DEFAULT_ASSET_STORE_WS_PORT)
92}
93
94pub fn sync_server_port() -> u16 {
102 env_port("SYNC_SERVER_PORT")
103 .or_else(|| env_var("SYNC_SERVER_ADDR").and_then(|v| parse_port_from_addr(&v)))
104 .or_else(|| env_var("RSHIP_SYNC_SERVER").and_then(|v| parse_port_from_addr(&v)))
105 .unwrap_or(DEFAULT_SYNC_SERVER_PORT)
106}
107
108pub fn default_sync_server_ws_url() -> String {
110 format!("ws://localhost:{}", sync_server_port())
111}
112
113pub fn default_sync_server_addr() -> String {
115 format!("localhost:{}", sync_server_port())
116}
117
118pub fn link_file_server_port() -> u16 {
120 env_port("LINK_FILE_SERVER_PORT").unwrap_or(DEFAULT_LINK_FILE_SERVER_PORT)
121}
122
123pub fn link_local_myko_port() -> u16 {
125 env_port("LINK_LOCAL_MYKO_PORT").unwrap_or(DEFAULT_LINK_LOCAL_MYKO_PORT)
126}