remoteRF-server 0.1.90__tar.gz → 0.1.91__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/PKG-INFO +1 -1
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/pyproject.toml +1 -1
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/device_manager.py +13 -109
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server.egg-info/PKG-INFO +1 -1
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/README.md +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/setup.cfg +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/__init__.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/__init__.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/grpc/__init__.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/grpc/grpc_host_pb2.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/grpc/grpc_host_pb2_grpc.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/grpc/grpc_pb2.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/grpc/grpc_pb2_grpc.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/__init__.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/ansi_codes.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/api_token.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/db_connection.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/db_location.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/list_string.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/process_arg.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/drivers/__init__.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/drivers/adalm_pluto/__init__.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/drivers/adalm_pluto/pluto_remote_server.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/host/__init__.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/host/host_directory_store.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/host/host_tunnel_server.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/__init__.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/acc_perms.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/cert_provider.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/grpc_server.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/reservation.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/rpc_manager.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/user_group_cli.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/user_group_handler.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/serverrf_cli.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/tools/__init__.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/tools/gen_certs.py +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server.egg-info/SOURCES.txt +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server.egg-info/dependency_links.txt +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server.egg-info/entry_points.txt +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server.egg-info/requires.txt +0 -0
- {remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server.egg-info/top_level.txt +0 -0
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/device_manager.py
RENAMED
|
@@ -68,139 +68,47 @@ def _local_devices_str_snapshot() -> Dict[int, str]:
|
|
|
68
68
|
|
|
69
69
|
out[int(gid)] = f"{name} [{', '.join(meta_parts)}] ({status})"
|
|
70
70
|
return out
|
|
71
|
-
|
|
72
71
|
def _host_devices_str_snapshot() -> Dict[int, str]:
|
|
73
|
-
# DEBUG: print EVERYTHING we can without crashing the UI path.
|
|
74
|
-
def _dbg(msg: str) -> None:
|
|
75
|
-
try:
|
|
76
|
-
print(f"[host_devices_snapshot][DEBUG] {msg}", file=sys.stderr, flush=True)
|
|
77
|
-
except Exception:
|
|
78
|
-
pass
|
|
79
|
-
|
|
80
72
|
reg = _get_host_registry()
|
|
81
73
|
if reg is None:
|
|
82
|
-
_dbg("registry=None -> returning {}")
|
|
83
74
|
return {}
|
|
84
75
|
|
|
85
|
-
#
|
|
86
|
-
try:
|
|
87
|
-
snap = reg.device_directory_cached(ttl_ms=0) # device_id -> (host_id, info_obj, is_active)
|
|
88
|
-
_dbg(f"device_directory_cached(ttl_ms=0) returned {len(snap)} entries")
|
|
89
|
-
except Exception as e:
|
|
90
|
-
_dbg(f"device_directory_cached FAILED: {e!r}")
|
|
91
|
-
return {}
|
|
76
|
+
snap = reg.device_directory_cached(ttl_ms=0) # device_id -> (host_id, info_obj, is_active)
|
|
92
77
|
|
|
93
|
-
# optional: last-seen data (persisted in registry status)
|
|
94
78
|
try:
|
|
95
79
|
status_map = reg.list_devices() # device_id -> DeviceStatus
|
|
96
|
-
|
|
97
|
-
except Exception as e:
|
|
98
|
-
_dbg(f"list_devices() FAILED: {e!r}")
|
|
80
|
+
except Exception:
|
|
99
81
|
status_map = {}
|
|
100
82
|
|
|
101
83
|
now_ms = int(time.time() * 1000)
|
|
102
84
|
|
|
103
85
|
out: Dict[int, str] = {}
|
|
104
|
-
for device_id,
|
|
105
|
-
#
|
|
106
|
-
try:
|
|
107
|
-
host_id, info_obj, is_active = tup
|
|
108
|
-
except Exception as e:
|
|
109
|
-
_dbg(f"BAD SNAP TUPLE device_id={device_id!r} tup={tup!r} err={e!r}")
|
|
110
|
-
continue
|
|
111
|
-
|
|
112
|
-
_dbg(
|
|
113
|
-
f"ENTRY device_id(raw)={device_id!r} device_id(str)={str(device_id)!r} "
|
|
114
|
-
f"host_id={host_id!r} is_active={bool(is_active)} "
|
|
115
|
-
f"info_obj_type={type(info_obj).__name__}"
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
# Dump info_obj fields (best effort)
|
|
119
|
-
try:
|
|
120
|
-
local_id = int(getattr(info_obj, "local_id", 0) or 0)
|
|
121
|
-
except Exception as e:
|
|
122
|
-
local_id = 0
|
|
123
|
-
_dbg(f" info_obj.local_id read failed: {e!r}")
|
|
124
|
-
|
|
125
|
-
try:
|
|
126
|
-
label = str(getattr(info_obj, "label", "") or "").strip()
|
|
127
|
-
except Exception as e:
|
|
128
|
-
label = ""
|
|
129
|
-
_dbg(f" info_obj.label read failed: {e!r}")
|
|
130
|
-
|
|
131
|
-
try:
|
|
132
|
-
serial = str(getattr(info_obj, "serial", "") or "").strip()
|
|
133
|
-
except Exception as e:
|
|
134
|
-
serial = ""
|
|
135
|
-
_dbg(f" info_obj.serial read failed: {e!r}")
|
|
136
|
-
|
|
137
|
-
try:
|
|
138
|
-
kind = str(getattr(info_obj, "kind", "") or "").strip()
|
|
139
|
-
except Exception as e:
|
|
140
|
-
kind = ""
|
|
141
|
-
_dbg(f" info_obj.kind read failed: {e!r}")
|
|
142
|
-
|
|
143
|
-
# Extra: if it's a protobuf message, print its text format safely
|
|
86
|
+
for device_id, (host_id, info_obj, is_active) in snap.items():
|
|
87
|
+
# Canonical: treat device_id as numeric gid
|
|
144
88
|
try:
|
|
145
|
-
|
|
146
|
-
_dbg(f" info_obj(str)={str(info_obj)[:500]!r}")
|
|
89
|
+
gid = int(str(device_id))
|
|
147
90
|
except Exception:
|
|
148
|
-
pass
|
|
149
|
-
|
|
150
|
-
_dbg(
|
|
151
|
-
f" parsed info: local_id={local_id} label={label!r} kind={kind!r} serial={serial!r}"
|
|
152
|
-
)
|
|
153
|
-
|
|
154
|
-
# If you suspect server is setting label/kind to gid/local_id, explicitly flag it.
|
|
155
|
-
if label and (label == str(local_id) or label == str(device_id)):
|
|
156
|
-
_dbg(f" *** SUSPICIOUS label looks like an id: label={label!r} local_id={local_id} device_id={device_id!r}")
|
|
157
|
-
if kind and (kind == str(local_id) or kind == str(device_id)):
|
|
158
|
-
_dbg(f" *** SUSPICIOUS kind looks like an id: kind={kind!r} local_id={local_id} device_id={device_id!r}")
|
|
159
|
-
|
|
160
|
-
# Your old code assumed device_id is numeric gid. DEBUG: show both interpretations.
|
|
161
|
-
gid_from_device_id: Optional[int] = None
|
|
162
|
-
gid_from_local_id: Optional[int] = None
|
|
163
|
-
|
|
164
|
-
try:
|
|
165
|
-
gid_from_device_id = int(str(device_id))
|
|
166
|
-
_dbg(f" gid_from_device_id=int({str(device_id)!r}) -> {gid_from_device_id}")
|
|
167
|
-
except Exception as e:
|
|
168
|
-
_dbg(f" gid_from_device_id FAILED int({str(device_id)!r}): {e!r}")
|
|
169
|
-
|
|
170
|
-
try:
|
|
171
|
-
gid_from_local_id = int(local_id)
|
|
172
|
-
_dbg(f" gid_from_local_id=int(local_id={local_id}) -> {gid_from_local_id}")
|
|
173
|
-
except Exception as e:
|
|
174
|
-
_dbg(f" gid_from_local_id FAILED int(local_id={local_id}): {e!r}")
|
|
175
|
-
|
|
176
|
-
# Prefer gid derived from device_id if possible; else fall back to local_id
|
|
177
|
-
gid: Optional[int] = gid_from_device_id if gid_from_device_id is not None else gid_from_local_id
|
|
178
|
-
if gid is None:
|
|
179
|
-
_dbg(" SKIP: cannot derive gid from device_id or local_id")
|
|
180
91
|
continue
|
|
181
92
|
|
|
93
|
+
local_id = int(getattr(info_obj, "local_id", 0) or 0)
|
|
94
|
+
label = str(getattr(info_obj, "label", "") or "").strip()
|
|
95
|
+
serial = str(getattr(info_obj, "serial", "") or "").strip()
|
|
96
|
+
kind = str(getattr(info_obj, "kind", "") or "").strip()
|
|
97
|
+
|
|
182
98
|
status = "online" if bool(is_active) else "offline"
|
|
183
99
|
name = label or f"host-device-{gid}"
|
|
184
100
|
|
|
185
|
-
# last-seen
|
|
186
101
|
last_seen = ""
|
|
187
102
|
ds = status_map.get(str(device_id))
|
|
188
|
-
if ds is None:
|
|
189
|
-
_dbg(f" status_map: no entry for device_id={str(device_id)!r}")
|
|
190
|
-
else:
|
|
103
|
+
if ds is not None:
|
|
191
104
|
try:
|
|
192
105
|
ls = int(getattr(ds, "last_seen_ms", 0) or 0)
|
|
193
|
-
hid2 = str(getattr(ds, "host_id", "") or "")
|
|
194
|
-
# if server still stores host_local_id, print it too (best-effort)
|
|
195
|
-
hloc = getattr(ds, "host_local_id", None)
|
|
196
|
-
_dbg(f" status: host_id={hid2!r} last_seen_ms={ls} host_local_id={hloc!r}")
|
|
197
106
|
if ls > 0:
|
|
198
107
|
age_s = max(0, (now_ms - ls) // 1000)
|
|
199
108
|
last_seen = f", seen={age_s}s ago"
|
|
200
|
-
except Exception
|
|
201
|
-
|
|
109
|
+
except Exception:
|
|
110
|
+
pass
|
|
202
111
|
|
|
203
|
-
# Final formatted string (same output contract as before)
|
|
204
112
|
out[gid] = (
|
|
205
113
|
f"{name} "
|
|
206
114
|
f"[host={host_id}, local_id={local_id}"
|
|
@@ -210,10 +118,6 @@ def _host_devices_str_snapshot() -> Dict[int, str]:
|
|
|
210
118
|
f"] ({status})"
|
|
211
119
|
)
|
|
212
120
|
|
|
213
|
-
_dbg(f" OUT[{gid}]={out[gid]!r}")
|
|
214
|
-
|
|
215
|
-
_dbg(f"returning out size={len(out)} gids={sorted(out.keys())[:50]!r}{'...' if len(out) > 50 else ''}")
|
|
216
|
-
|
|
217
121
|
return out
|
|
218
122
|
|
|
219
123
|
# -----------------------------
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/grpc/__init__.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/grpc/grpc_host_pb2.py
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/grpc/grpc_pb2.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/grpc/grpc_pb2_grpc.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/__init__.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/ansi_codes.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/api_token.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/db_connection.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/db_location.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/list_string.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/common/utils/process_arg.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/host/host_directory_store.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/host/host_tunnel_server.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/cert_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/user_group_cli.py
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server/server/user_group_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{remoterf_server-0.1.90 → remoterf_server-0.1.91}/src/remoteRF_server.egg-info/top_level.txt
RENAMED
|
File without changes
|