Compare commits

..

17 Commits

Author SHA1 Message Date
bd0455c413 0.9.26 2016-06-13 13:12:28 +00:00
97f3d937ee Client library 0.9 2016-06-13 12:26:32 +00:00
ff102bfe73 Update dependencies 2016-06-13 12:12:37 +00:00
e31a350398 Enable use of debug builds of I2P with release versions of helper library 2016-06-13 12:03:59 +00:00
43a8f29794 New translations 2016-06-13 11:59:59 +00:00
bbca783b20 Updated translations 2016-06-13 11:59:14 +00:00
6d4fe52f8e Fixed crash when adding tunnel to empty list 2016-06-13 09:57:58 +00:00
ecb08a54fb Upgrade Android support libraries 2016-06-13 09:56:41 +00:00
7bd4524fd8 Update README 2016-06-13 08:41:08 +00:00
40f08d56f6 Use uploaded I2P client libraries instead of locally-built 2016-06-13 08:38:43 +00:00
fe61e35146 Undo accidental checkin 2016-05-29 11:50:34 +00:00
be3f74d71f Fixed "I2CP already listening" bug 2016-05-29 05:09:51 +00:00
8dcfa816e3 Migrate to dynamically-loaded Android-specific classes
Requires i2p.i2p revision fc46f2d84625265a3899b5ad50af5e91d396ba01 or upcoming
release 0.9.26
2016-05-28 23:52:37 +00:00
ae05e22670 Fix legacy package name in helper lib 2016-05-28 23:50:46 +00:00
79a4fa0407 Upgrade Android Gradle plugin 2016-05-28 23:49:50 +00:00
bb958b969a Updated CHANGELOG 2016-04-17 14:05:34 +00:00
02030454d1 0.9.25 2016-04-17 14:00:47 +00:00
21 changed files with 177 additions and 131 deletions

View File

@ -1,4 +1,8 @@
0.9.25
0.9.26
* Fixed "I2CP already listening" bug
* Fixed crash when adding tunnel to empty list
0.9.25 / 2016-04-17 / 46d45a878a2b73394b26ca27dbe6c696dedcf1c3
* Fixed a bug on Samsung Android 4.2 devices
* Dependency improvements
* Translation updates

View File

@ -51,7 +51,6 @@ systemProp.socksProxyPort=9150
3. Create a `local.properties` file in `i2p.android.base/lib/client` containing:
```
i2psrc=/path/to/i2p.i2p
ndk.dir=/path/to/ndk
```

View File

@ -5,8 +5,8 @@ android {
compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION as String)
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION as String
defaultConfig {
versionCode 4745231
versionName '0.9.22'
versionCode 4745233
versionName '0.9.26'
minSdkVersion 9
targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION as String)
@ -56,7 +56,7 @@ dependencies {
compile project(':routerjars')
// Android Support Repository dependencies
def supportVersion = '23.2.1'
def supportVersion = '23.4.0'
compile "com.android.support:support-v4:$supportVersion"
compile "com.android.support:appcompat-v7:$supportVersion"
compile "com.android.support:preference-v7:$supportVersion"
@ -64,14 +64,14 @@ dependencies {
compile "com.android.support:recyclerview-v7:$supportVersion"
// Remote dependencies
compile 'com.androidplot:androidplot-core:0.9.6'
compile 'com.androidplot:androidplot-core:0.9.8'
compile 'com.eowise:recyclerview-stickyheaders:0.5.2@aar'
compile ('com.mcxiaoke.viewpagerindicator:library:2.4.1') {
exclude group: 'com.android.support', module: 'support-v4'
}
compile 'com.pnikosis:materialish-progress:1.7'
compile 'net.i2p.android.ext:floatingactionbutton:1.10.1'
compile 'org.sufficientlysecure:html-textview:1.3'
compile 'org.sufficientlysecure:html-textview:1.6'
// Testing-only dependencies
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
@ -80,17 +80,17 @@ dependencies {
dependencyVerification {
verify = [
'com.android.support:support-v4:81ce890f26d35c75ad17d0f998a7e3230330c3b41e0b629566bc744bee89e448',
'com.android.support:appcompat-v7:00f9d93acacd6731f309724054bf51492814b4b2869f16d7d5c0038dcb8c9a0d',
'com.android.support:preference-v7:775101bd07bd052e455761c5c5d9523d7ad59f2f320e3e8cbde241fd6b1d6025',
'com.android.support:preference-v14:44881bb46094e86d0bc2426f205419674a5b4eb514b44b5a4659b5de29f71eb7',
'com.android.support:recyclerview-v7:44040a888e23e0c93162a3377cfe06751080e3c22d369ab0d4301ef60d63b0fe',
'com.androidplot:androidplot-core:1aaa931974da9d351976ed3d4b67170ac2a78be6c6afd13559ded5534eefc264',
'com.android.support:support-v4:a0d002465c0f611eedaaef2b2530707d2e9fb3a5c7ed66f53c556a12f714f43a',
'com.android.support:appcompat-v7:d3d96637b0e8e61046567b8c87b667dcf3cd31c7447f651cb58d6e6e744adfba',
'com.android.support:preference-v7:b834787ee64db6c7c53ed7490537eeef52245b7862d4069c06e12b24b77ebbc4',
'com.android.support:preference-v14:21c55edf74928a96fa816e32c0c4d0c98e2280002e84d2b10b458b4a36be9615',
'com.android.support:recyclerview-v7:24465b2ba90dc5ed7e2c05f1c87fe4256c27df6d3cd69b6177f3cb447b05c021',
'com.androidplot:androidplot-core:e44d9e59e06f025330831f7d3c987d2778a3302025184cf0cef05714b5171212',
'com.eowise:recyclerview-stickyheaders:7b236da49b33b840e9ba6e7e4182218d1a2d9047236fdbc3ca947352f9b0883b',
'com.mcxiaoke.viewpagerindicator:library:1e8aad664137f68abdfee94889f6da3dc98be652a235176a403965a07a25de62',
'com.pnikosis:materialish-progress:da089a90d1dab61e9b50038c09081019398f81190d12b0b567ce94b83ef8cf93',
'net.i2p.android.ext:floatingactionbutton:09d43e2d4ac04a91bf7a37e1ec48a8d220204e3a55dca72cd36cd9fa27461ade',
'org.sufficientlysecure:html-textview:39048e35894e582adada388e6c00631803283f8defed8e07ad58a5f284f272ee',
'org.sufficientlysecure:html-textview:c409b471618b675e3d2a8588f883c5fe8f3369d00df61ec84b29f29c648370ae',
]
}

View File

@ -65,8 +65,13 @@ public class TunnelEntryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo
}
public void addTunnel(TunnelEntry tunnel) {
boolean wasEmpty = mTunnels.isEmpty();
mTunnels.add(tunnel);
notifyItemInserted(mTunnels.size()-1);
if (wasEmpty) {
notifyDataSetChanged();
} else {
notifyItemInserted(mTunnels.size() - 1);
}
}
public TunnelEntry getTunnel(int position) {

View File

@ -0,0 +1,50 @@
package net.i2p.router.client;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import net.i2p.client.DomainSocketFactory;
import net.i2p.router.RouterContext;
import net.i2p.util.Log;
/**
* Unix domain socket version of ClientListenerRunner.
*
* @author str4d
* @since 0.9.14
*/
public class DomainClientListenerRunner extends ClientListenerRunner {
private final DomainSocketFactory factory;
private final Log _log;
public DomainClientListenerRunner(RouterContext context, ClientManager manager) {
super(context, manager, -1);
factory = new DomainSocketFactory(_context);
_log = context.logManager().getLog(getClass());
}
/**
* @throws IOException
*/
@Override
protected ServerSocket getServerSocket() throws IOException {
return factory.createServerSocket(DomainSocketFactory.I2CP_SOCKET_ADDRESS);
}
@Override
public void stopListening() {
_running = false;
// LocalServerSocket.close() fails silently if the socket is blocking in accept(), so we
// trick the socket by opening a new connection and then immediately closing it.
// http://stackoverflow.com/questions/8007982/java-serversocket-and-android-localserversocket
try {
_log.debug("Connecting to domain socket to trigger close");
Socket s = factory.createSocket(DomainSocketFactory.I2CP_SOCKET_ADDRESS);
s.close();
} catch (IOException e) {
_log.error("Failed to connect to domain socket to trigger close", e);
}
// runServer() will close the LocalServerSocket.
}
}

View File

@ -76,7 +76,7 @@
<string name="action_reload_subscriptions">Volver a cargar suscripciones</string>
<string name="news_last_updated">Última actualización de las noticias hace %s</string>
<string name="news_last_checked">Última comprobación de las noticias hace %s</string>
<string name="news_updated">Noticias actualizadas</string>
<string name="news_updated">Se han actualizado las noticias</string>
<string name="view_news">Pulse para ver las últimas noticias de I2P</string>
<string name="router_not_running">El router I2P no está en marcha.</string>
<string name="router_shutting_down">El router I2P se está cerrando.</string>

View File

@ -3,7 +3,7 @@
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">I2P-logo</string>
<string name="choose_language">Valitse kieli</string>
<string name="welcome_new_install">Tervetuloa I2P-sovellukseen! Täsmä sovellus on ALFA-ohjelmisto ja se ei tarjoa vahvaa nimettömyyttä. Lue julkaisutiedot ja linsessitiedot.</string>
<string name="welcome_new_install">Tervetuloa I2P-sovellukseen! Tämä sovellus on ALFA-ohjelmisto ja se ei tarjoa vahvaa nimettömyyttä. Lue julkaisutiedot ja lisenssitiedot.</string>
<string name="welcome_new_version">Uusi versio asennettu. Lue julkaisutiedot. Versio:</string>
<string name="label_tunnels">Tunnelit</string>
<string name="label_status">Tila</string>
@ -24,16 +24,20 @@
<string name="button_router_graceful">I2P sulkeutuu %s</string>
<string name="button_shutdown_now">Pitkä painallus nyt pysäyttämiseksi</string>
<string name="button_cancel_graceful">Pitkä painallus sulkemisen perumiseksi</string>
<string name="no_internet">Internet-yhteys ei ole käytettävissä</string>
<string name="hidden">Piilotettu</string>
<string name="testing">Testataan</string>
<string name="firewalled">Palomuuritettu</string>
<string name="symmetric_nat">Symmetrinen NAT</string>
<string name="net_status_error_i2cp">Asiakasohjelmahallinnan I2CP-virhe - tarkista lokitiedostot</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_unresolved_tcp">Ratkaisematon TCP-osoite</string>
<string name="net_status_error_private_tcp">Ykstyinen TCP-osoite</string>
<string name="net_status_warn_firewalled_inbound_tcp">Palomuuritettu tuleva TCP otettu käyttöön</string>
<string name="net_status_info_disconnected">Yhteys poikki - tarkista verkkoyhteys</string>
<string name="net_status_error_udp_port">UDP-portti käytössä - vaihda asetukset ja käynnistä uudelleen</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP poissa käytöstä ja tuleva TCP-verkkotietokone/-portti ei ole asetettu</string>
<string name="net_status_warn_firewalled_udp_disabled">Palomuuritettu UDP-poiskytkettynä</string>
<string name="shared_clients">Jaetut asiakkaat</string>
<!--Character to indicate a client tunnel. Usually first letter of the word "client".-->
<string name="char_client_tunnel">A</string>
@ -65,6 +69,7 @@
<string name="news_updated">Uutiset päivitetty</string>
<string name="router_not_running">Reititin ei ole käynnissä.</string>
<string name="router_shutting_down">Reititin sulkeutuu.</string>
<string name="select_an_address">Valitse osoite.</string>
<string name="statistics">Tilastot</string>
<string name="routers">Reitittimet</string>
<string name="countries">Maat</string>

View File

@ -220,6 +220,7 @@
<string name="i2ptunnel_wizard_desc_target_host">Esse é o IP no qual o serviço está rodando, isto está geralmente na mesma maquina então 127.0.0.1 é autopreenchido.</string>
<string name="i2ptunnel_wizard_desc_target_port">Essa é a porta pela qual o serviço está aceitando conexões.</string>
<string name="i2ptunnel_wizard_desc_reachable_on">Isso limita quais computadores ou smartphones podem acessar esse túnel</string>
<string name="i2ptunnel_wizard_desc_binding_port">Esta é a porta para o túnel cliente ser acessado localmente. Esta também é a porta para o túnel servidor de HTTP.</string>
<string name="i2ptunnel_wizard_desc_auto_start">O túnel deve iniciar automaticamente quando o roteador iniciar?</string>
<string name="i2ptunnel_wizard_submit_confirm_message">Criar túnel?</string>
<string name="i2ptunnel_wizard_submit_confirm_button">Criar túnel</string>
@ -233,6 +234,7 @@
<string name="tunnel_summ_auto_start">Iniciar o túnel na inicialização do roteador.</string>
<string name="tunnel_cat_ports">Portas locais</string>
<string name="shared_client">Cliente compartilhado</string>
<string name="tunnel_summ_shared_client">Usar mesmo Destino e túneis para demais clientes compartilhados</string>
<string name="target_destination">Destino alvo</string>
<string name="persistent_key">Chave persistente</string>
<string name="persistent_key_conflict_title">Desativar novas chaves na reabertura?</string>
@ -240,6 +242,7 @@
<string name="tunnel_summ_persistent_key">Manter o destino desse túnel quando ele reiniciar</string>
<string name="reachable_on">Ao alcance em</string>
<string name="listen_port">Porta de escuta</string>
<string name="client_ssl">Cliente SSL</string>
<string name="tunnel_summ_client_ssl">Os clientes devem usar SSL para se conectar</string>
<string name="outproxies">Proxies de saída</string>
<string name="ssl_outproxies">Proxies de saida com SSL</string>
@ -255,6 +258,7 @@
<string name="profile">Perfil</string>
<string name="profile_bulk">Conexão em massa (downloads/websites/BT)</string>
<string name="profile_interactive">Conexão interativa</string>
<string name="delay_connect">Atrasar conexão</string>
<string name="tunnel_summ_delay_connect">Ativar para conexões de pedidos/respostas</string>
<string name="access_control">Controle de acesso</string>
<string name="restricted_access">Acesso restrito</string>
@ -268,9 +272,11 @@
<string name="tunnel_summ_unique_local">Usar IPs de host locais únicos para cada cliente</string>
<string name="multihome">Multihome</string>
<string name="tunnel_summ_multihome">Ativar otimizações de multihoming</string>
<string name="client_connection_limits">Limites de conexões de cliente</string>
<string name="connections_per_minute">Conexões por minuto</string>
<string name="connections_per_hour">Conexões por hora</string>
<string name="connections_per_day">Conexões por dia</string>
<string name="total_connection_limits">Limites totais de conexões</string>
<string name="total_connections_per_minute">Total de conexões por minuto</string>
<string name="total_connections_per_hour">Total de conexões por hora</string>
<string name="total_connections_per_day">Total de conexões por dia</string>
@ -280,6 +286,11 @@
<string name="num_per_day">%s por dia</string>
<string name="unlimited">Ilimitado</string>
<string name="set_zero_for_unlimited">Especifique 0 para ilimitado</string>
<string name="post_limits">Limites de POST</string>
<string name="limit_period">Período limite</string>
<string name="power_saving">Economia de energia</string>
<string name="delay_open">Atrasar a abertura</string>
<string name="tunnel_summ_delay_open">Atrasar a abertura do túnel até ser utilizado</string>
<string name="reduce_quantity">Reduzir quantidade</string>
<string name="tunnel_summ_reduce_quantity">Reduzir quantidade de túneis quando ocioso</string>
<string name="idle_time">Tempo ocioso</string>
@ -288,6 +299,11 @@
<string name="close_tunnels">Fechar túneis quando ociosos</string>
<string name="new_keys_on_reopen">Novas chaves na reabertura</string>
<string name="new_keys_on_reopen_conflict_title">Desativar chaves persistentes?</string>
<string name="new_keys_on_reopen_conflict_msg">Você não pode habilitar novas chaves enquanto o túnel estiver configurado para ter chaves permanentes. Deseja desabilitar as chaves permanentes?</string>
<string name="http_client">Cliente HTTP</string>
<string name="tunnel_summ_user_agent">Passar o cabeçalho original \'User-Agent\'</string>
<string name="tunnel_summ_referer">Passar o cabeçalho original \'Referer\'</string>
<string name="tunnel_summ_accept">Passar o cabeçalho original \'Accept-*\'</string>
<string name="tunnel_summ_allow_ssl">Permitir SSL para endereços I2P</string>
<string name="jump_url_list">Pular lista de URLs</string>
<string name="proxy_auth">Autorização de proxy</string>
@ -295,6 +311,7 @@
<string name="username">Nome de usuário</string>
<string name="password">Senha</string>
<string name="outproxy_auth">Autorização de proxy de saída</string>
<string name="tunnel_summ_outproxy_auth">Autenticação necessária para o proxy de saída</string>
<string name="other">Outros</string>
<string name="signature_type">Tipo de assinatura</string>
<string name="custom_options">Opções personalizadas</string>
@ -310,4 +327,5 @@
<string name="error_logs_copied_to_clipboard">Logs de erro copiados para a área de transferência</string>
<string name="logs_copied_to_clipboard">Logs copiados para a área de transferência</string>
<string name="label_browser_configuration">Configuração do navegador</string>
<string name="unset">Desligado</string>
</resources>

View File

@ -2,16 +2,16 @@
<resources>
<string name="app_name">I2P</string>
<string name="desc_i2p_logo">Logótipo I2P</string>
<string name="choose_language">Escolher língua</string>
<string name="welcome_new_install">Bem-vindo à I2P! Esta app é um programa ALPHA e não proporciona um anonimato forte. Por favor, leia as notas de lançamento e a informação da licença.</string>
<string name="choose_language">Escolha o idioma</string>
<string name="welcome_new_install">Bem-vindo à I2P! Esta aplicação é um software ALPHA e não proporciona um anonimato forte. Por favor, leia as notas de lançamento e a informação da licença.</string>
<string name="welcome_new_version">Nova versão instalada. Por favor, leia as notas de lançamento. Versão:</string>
<string name="label_tunnels">Tuneis</string>
<string name="label_status">Estado</string>
<string name="label_console">Consola</string>
<string name="label_addresses">Endereços</string>
<string name="label_addressbook">Livro de Endereços</string>
<string name="label_i2ptunnel_client">Tuneis cliente</string>
<string name="label_i2ptunnel_server">Tuneis servidor</string>
<string name="label_i2ptunnel_client">Túneis de cliente</string>
<string name="label_i2ptunnel_server">Tuneis de servidor</string>
<string name="label_logs">Registos</string>
<string name="label_error_logs">Registos de Erros</string>
<string name="label_news">Notícias</string>
@ -26,11 +26,11 @@
<string name="button_shutdown_now">Pressionar longo para parar imediatamente</string>
<string name="button_cancel_graceful">Pressionar longo para não desligar</string>
<string name="no_internet">Sem ligação à Internet</string>
<string name="hidden">Escondido</string>
<string name="testing">Em teste</string>
<string name="hidden">Oculto</string>
<string name="testing">A testar</string>
<string name="firewalled">Atrás de uma firewall</string>
<string name="symmetric_nat">NAT simétrico</string>
<string name="net_status_error_i2cp">Erro no gestor de cliente I2CP - veja os registos</string>
<string name="symmetric_nat">NAT Simétrico</string>
<string name="net_status_error_i2cp">Erro no gestor de cliente I2CP - consulte os registos</string>
<!--Parameter is a time, e.g. 32s or 2m-->
<string name="net_status_error_skew">Deriva de relógio de %s</string>
<string name="net_status_error_unresolved_tcp">Endereços TCP por resolver</string>
@ -40,8 +40,8 @@
<string name="net_status_info_disconnected">Desligado - verifique a sua ligação de rede</string>
<string name="net_status_error_udp_port">Porta UDP em uso - mude as configurações e reinicie</string>
<string name="net_status_error_no_active_peers">Não existem nós ativos - verifique a sua ligação de rede e firewall</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP desligado e máquina/porta TCP de entrada não definida</string>
<string name="net_status_warn_firewalled_udp_disabled">Atrás de firewall com UDP desligado</string>
<string name="net_status_error_udp_disabled_tcp_not_set">UDP desativado e hospedeiro/porta TCP de entrada não definida</string>
<string name="net_status_warn_firewalled_udp_disabled">Atrás de firewall com UDP desativado</string>
<string name="shared_clients">Cliente partilhados</string>
<string name="uptime">Tempo de atividade</string>
<string name="active_peers">Nós ativos</string>
@ -50,10 +50,10 @@
<string name="char_client_tunnel">C</string>
<!--Character to indicate a server tunnel. Usually first letter of the word "server".-->
<string name="char_server_tunnel">S</string>
<string name="no_tunnels_running">Ainda não tem túneis ativos.</string>
<string name="download">Download</string>
<string name="upload">Upload</string>
<string name="configure_browser_title">Configurar navegador?</string>
<string name="no_tunnels_running">Ainda não tem túneis em execução.</string>
<string name="download">Transferir</string>
<string name="upload">Enviar</string>
<string name="configure_browser_title">Configurar o navegador?</string>
<string name="configure_browser_for_i2p">Gostaria de configurar um navegador para ver sites I2P? (Pode fazê-lo mais tarde através do menu de ajuda.)</string>
<string name="first_start_title">Parabéns por ter instalado o I2P!</string>
<string name="first_start_welcome"><b>Bem vindo ao I2P!</b> Por favor <b>tenha paciência</b> enquanto o I2P arranca e encontra outros nós na rede.</string>
@ -64,12 +64,12 @@
<string name="action_search">Procurar</string>
<string name="action_add">Adicionar</string>
<string name="action_edit">Editar</string>
<string name="action_delete">Apagar</string>
<string name="action_i2ptunnel_start">Começar túneis</string>
<string name="action_delete">Eliminar</string>
<string name="action_i2ptunnel_start">Iniciar túneis</string>
<string name="action_i2ptunnel_stop">Parar túneis </string>
<string name="action_i2ptunnel_start_all">Começar todos os túneis </string>
<string name="action_i2ptunnel_start_all">Iniciar todos os túneis </string>
<string name="action_i2ptunnel_stop_all">Parar todos os túneis</string>
<string name="action_i2ptunnel_restart_all">Recomeçar todos os túneis </string>
<string name="action_i2ptunnel_restart_all">Reiniciar todos os túneis </string>
<string name="action_reload">Recarregar</string>
<string name="action_refresh">Atualizar</string>
<string name="hint_search_addressbook">Procurar no livro de endereços</string>
@ -81,6 +81,7 @@
<string name="router_not_running">O router não está em execução.</string>
<string name="router_shutting_down">O router está a desligar.</string>
<string name="stats_not_ready">O gestor de estatísticas ainda não está pronto. Tente de novo mais tarde.</string>
<string name="select_an_address">Escolha um endereço</string>
<string name="no_graphs_configured">Não foram configurados quaisquer gráficos. Pode escolher as estatísticas que deseja representar no menu de configuração. Qualquer mudança terá efeito após 60 segundos.</string>
<string name="configure_graphs">Configurar gráficos</string>
<string name="graphs_not_ready">Os gráficos não estão pronto. Tente de novo mais tarde.</string>
@ -93,25 +94,25 @@
<string name="versions">Versões</string>
<string name="version">Versão</string>
<string name="count">Contagem</string>
<string name="tname_0">Escondido ao iniciar</string>
<string name="tname_0">Oculto ou a iniciar</string>
<string name="netdb_routers_empty">Não tem router na sua NetDB.</string>
<string name="netdb_leases_empty">Não tem LeaseSets na sua NetDB.</string>
<string name="notification_status_starting">O I2P está a ligar</string>
<string name="notification_status_starting">O I2P está a iniciar</string>
<string name="notification_status_restarting">O I2P está a reiniciar</string>
<string name="notification_status_waiting">O I2P está à espera de uma ligação à rede</string>
<string name="notification_status_starting_after_waiting">Deteta ligação à rede, o I2P está a ligar</string>
<string name="notification_status_running">O I2P está ligado</string>
<string name="notification_status_client_ready">Os túneis cliente estão prontos</string>
<string name="notification_status_client_down">Os túneis clientes estão desligados</string>
<string name="notification_status_waiting">O I2P está a aguardar por uma ligação à rede</string>
<string name="notification_status_starting_after_waiting">Rede ligada, I2P está a iniciar</string>
<string name="notification_status_running">O I2P está em execução</string>
<string name="notification_status_client_ready">Os túneis de cliente estão prontos</string>
<string name="notification_status_client_down">Os túneis de clientes estão desligados</string>
<string name="notification_status_graceful">A parar I2P dentro de %s</string>
<string name="notification_status_stopping">A parar o I2P</string>
<string name="notification_status_stopping_after_net">Sem ligação à rede, a parar o I2P</string>
<string name="notification_status_shutdown_cancelled">Cancelada a ordem para desligar</string>
<string name="notification_status_shutting_down">O I2P está a desligar</string>
<string name="notification_status_stopping_after_net">Ligação desligada, a parar o I2P</string>
<string name="notification_status_shutdown_cancelled">Encerramento cancelado</string>
<string name="notification_status_shutting_down">O I2P está a encerrar</string>
<string name="notification_status_bw">Largura de banda: %1$sBps down / %2$sBps up</string>
<string name="notification_status_peers">Nós: %1$d ativos, %2$d conhecidos</string>
<string name="notification_status_expl">Túneis exploratórios: %1$d/%2$d</string>
<string name="notification_status_client">Túneis cliente: %1$d/%2$d</string>
<string name="notification_status_client">Túneis de cliente: %1$d/%2$d</string>
<string name="menu_settings">Configurações</string>
<string name="settings_enable">Ativar</string>
<string name="settings_desc_subscriptions">URLs de Subscrição</string>

View File

@ -3,7 +3,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
classpath 'com.android.tools.build:gradle:2.1.0'
classpath files('gradle/libs/gradle-witness.jar')
}
}

View File

@ -1,10 +1,10 @@
VERSION_NAME=0.8
VERSION_NAME=0.9
GROUP=net.i2p.android
POM_URL=https://github.com/i2p/i2p.android.base
POM_SCM_URL=https://github.com/i2p/i2p.android.base
POM_SCM_CONNECTION=scm:git@github.com:i2p/i2p.android.base.git
POM_SCM_DEV_CONNECTION=scm:git@github.com:i2p/i2p.android.base.git
POM_SCM_CONNECTION=scm:git:git@github.com:i2p/i2p.android.base.git
POM_SCM_DEV_CONNECTION=scm:git:git@github.com:i2p/i2p.android.base.git
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo

View File

@ -1,6 +1,6 @@
#Mon Mar 28 23:30:12 NZDT 2016
#Mon May 02 16:55:47 NZST 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-all.zip

View File

@ -24,24 +24,12 @@ android {
}
}
task buildClient(type: Exec) {
outputs.dir('libs')
commandLine 'ant', 'buildclient'
}
dependencies {
compile files('libs/i2p.jar') {
builtBy tasks.buildClient
}
compile files('libs/mstreaming.jar') {
builtBy tasks.buildClient
}
compile files('libs/streaming.jar') {
builtBy tasks.buildClient
}
compile 'net.i2p:i2p:0.9.26'
compile 'net.i2p.client:streaming:0.9.26'
// No direct dependencies on the helper lib, but this ensures consistent library behavior
compile project(':lib:helper')
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:support-v4:23.4.0'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.9.5'
@ -49,14 +37,11 @@ dependencies {
dependencyVerification {
verify = [
'com.android.support:support-v4:81ce890f26d35c75ad17d0f998a7e3230330c3b41e0b629566bc744bee89e448',
'com.android.support:support-v4:a0d002465c0f611eedaaef2b2530707d2e9fb3a5c7ed66f53c556a12f714f43a',
'net.i2p:i2p:5e0f5efa8849e2abe72efaf1530bdf4a090717d49acfdfbe92911a14d4b4e511',
'net.i2p.client:mstreaming:1f343a640f79707f6652bbf344f65b42215ae3f7a221a3ee8ddd70ff59e812ae',
'net.i2p.client:streaming:5add7390de089f3c3c4f4005f0daa83014418416e890ed6c475e15cef51ba3c7',
]
}
clean << {
exec {
commandLine 'ant', 'clean'
}
}
apply from: "${project.rootDir}/gradle/maven-push.gradle"

View File

@ -1,50 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="routerjars">
<property file="local.properties" />
<property name="jar.libs.dir" value="libs" />
<!-- override with i2psrc=path/to/source in local.properties -->
<property name="i2psrc" value="../../i2p.i2p" />
<property name="i2pbase" location="${i2psrc}" />
<available file="${i2pbase}" property="i2p.present" />
<fail message="I2P source directory ${i2pbase} was not found. Install it there or set i2psrc=/path/to/source in local.properties" >
<condition>
<not>
<isset property="i2p.present" />
</not>
</condition>
</fail>
<echo message="Using I2P source at ${i2pbase}" />
<property name="i2plib" location="${i2pbase}/build" />
<available property="have.streaming" file="${i2plib}/streaming.jar" />
<!-- builds core, ministreaming and streaming -->
<target name="buildStreaming" unless="have.streaming">
<ant dir="${i2pbase}" inheritall="false" useNativeBasedir="true" target="buildStreaming" />
</target>
<target name="buildclient" depends="buildStreaming">
<mkdir dir="${jar.libs.dir}" />
<!-- core -->
<!-- lots of unneeded stuff could be deleted here -->
<jar destfile="${jar.libs.dir}/i2p.jar" >
<zipfileset src="${i2plib}/i2p.jar" >
<exclude name="net/i2p/client/DomainSocketFactory.class" />
<exclude name="net/i2p/util/LogWriter.class" />
</zipfileset>
</jar>
<!-- streaming -->
<copy file="${i2plib}/mstreaming.jar" todir="${jar.libs.dir}" />
<copy file="${i2plib}/streaming.jar" todir="${jar.libs.dir}" />
</target>
<target name="clean">
<ant dir="${i2pbase}" target="distclean" />
<delete dir="${jar.libs.dir}" />
</target>
</project>

View File

@ -73,7 +73,9 @@ class DomainServerSocket extends ServerSocket {
*/
@Override
public void close() throws IOException {
mDomainSocketFactory._log.debug("Closing DomainServerSocket");
mLocalServerSocket.close();
mDomainSocketFactory._log.debug("DomainServerSocket closed");
mClosed = true;
}

View File

@ -3,6 +3,7 @@ package net.i2p.client;
import android.net.LocalSocket;
import net.i2p.I2PAppContext;
import net.i2p.util.Log;
import java.io.IOException;
import java.net.ServerSocket;
@ -17,10 +18,15 @@ import java.net.Socket;
public class DomainSocketFactory {
public static String I2CP_SOCKET_ADDRESS = "net.i2p.android.client.i2cp";
public final Log _log;
public DomainSocketFactory(I2PAppContext context) {
_log = context.logManager().getLog(getClass());
}
public Socket createSocket(String name) throws IOException {
if (_log.shouldDebug())
_log.debug("Connecting to domain socket " + name);
return new DomainSocket(name);
}
@ -29,6 +35,8 @@ public class DomainSocketFactory {
}
public ServerSocket createServerSocket(String name) throws IOException {
if (_log.shouldDebug())
_log.debug("Listening on domain socket " + name);
return new DomainServerSocket(name, this);
}
}

View File

@ -10,8 +10,8 @@ package net.i2p.util;
*
* @author zzz
*/
class LogWriter extends LogWriterBase {
public LogWriter(LogManager manager) {
class AndroidLogWriter extends LogWriter {
public AndroidLogWriter(LogManager manager) {
super(manager);
}

View File

@ -25,7 +25,7 @@ android {
}
dependencies {
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:support-v4:23.4.0'
testCompile 'junit:junit:4.12'
testCompile 'org.mockito:mockito-core:1.9.5'
@ -33,7 +33,7 @@ dependencies {
dependencyVerification {
verify = [
'com.android.support:support-v4:81ce890f26d35c75ad17d0f998a7e3230330c3b41e0b629566bc744bee89e448',
'com.android.support:support-v4:a0d002465c0f611eedaaef2b2530707d2e9fb3a5c7ed66f53c556a12f714f43a',
]
}

View File

@ -24,13 +24,14 @@ import net.i2p.android.router.service.State;
public class I2PAndroidHelper {
public static final String URI_I2P_ANDROID = "net.i2p.android";
public static final String URI_I2P_ANDROID_DONATE = "net.i2p.android.donate";
public static final String URI_I2P_ANDROID_LEGACY = "net.i2p.android.legacy";
public static final String URI_I2P_ANDROID_LEGACY = "net.i2p.android.router";
public static final String URI_I2P_ANDROID_DEBUG = "net.i2p.android.debug";
public static final int REQUEST_START_I2P = 9857;
private static final String ROUTER_SERVICE_CLASS = "net.i2p.android.router.service.RouterService";
private static final String LOG_TAG = "I2PClientLib";
private static final String LOG_TAG = "I2PHelperLib";
public interface Callback {
void onI2PAndroidBound();
@ -123,7 +124,10 @@ public class I2PAndroidHelper {
intent.setClassName(URI_I2P_ANDROID_DONATE, ROUTER_SERVICE_CLASS);
else if (isAppInstalled(URI_I2P_ANDROID_LEGACY))
intent.setClassName(URI_I2P_ANDROID_LEGACY, ROUTER_SERVICE_CLASS);
else
else if (isAppInstalled(URI_I2P_ANDROID_DEBUG)) {
Log.w(LOG_TAG, "Using debug build of I2P Android");
intent.setClassName(URI_I2P_ANDROID_DEBUG, ROUTER_SERVICE_CLASS);
} else
intent = null;
return intent;
}

View File

@ -0,0 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">بله</string>
<string name="no">خیر</string>
<string name="install_i2p_android">نصب I2P اندروید؟</string>
</resources>

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="yes">Si</string>
<string name="no">No</string>
<string name="install_i2p_android">Installare I2P Android?</string>
<string name="you_must_have_i2p_android">È necessario aver installato ed in esecuzione I2P Android. Vuoi installarlo?</string>
<string name="start_i2p_android">Avviare I2P Android?</string>
<string name="would_you_like_to_start_i2p_android">I2P Android non sembra essere in esecuzione. Vuoi lanciarlo?</string>
</resources>