From 40f6d425a4429b16936cc8bb4900a23c3362a123 Mon Sep 17 00:00:00 2001 From: Xavier Del Campo Romero Date: Sun, 7 Jan 2024 23:49:03 +0100 Subject: WIP --- .gitignore | 1 + AndroidManifest.xml | 31 +++++++- HelloWorld.java | 34 --------- Makefile | 48 +++++++----- res/layout/activity_directory.xml | 45 +++++++++++ res/layout/activity_login.xml | 93 +++++++++++++++++++++++ res/layout/activity_main.xml | 22 +++++- src/org/slcl/Directory.java | 48 ++++++++++++ src/org/slcl/InternalFile.java | 38 ++++++++++ src/org/slcl/LoginActivity.java | 146 +++++++++++++++++++++++++++++++++++ src/org/slcl/Main.java | 93 +++++++++++++++++++++++ src/org/slcl/core/Cookie.java | 156 ++++++++++++++++++++++++++++++++++++++ src/org/slcl/core/Login.java | 93 +++++++++++++++++++++++ 13 files changed, 791 insertions(+), 57 deletions(-) delete mode 100644 HelloWorld.java create mode 100644 res/layout/activity_directory.xml create mode 100644 res/layout/activity_login.xml create mode 100644 src/org/slcl/Directory.java create mode 100644 src/org/slcl/InternalFile.java create mode 100644 src/org/slcl/LoginActivity.java create mode 100644 src/org/slcl/Main.java create mode 100644 src/org/slcl/core/Cookie.java create mode 100644 src/org/slcl/core/Login.java diff --git a/.gitignore b/.gitignore index 49a5af1..b7e7bd2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ *.unsigned *.aligned R.java +password.secret diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 242f46d..51c6197 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,15 +1,38 @@ + + + - - - + + + + + + + diff --git a/HelloWorld.java b/HelloWorld.java deleted file mode 100644 index 4f93a65..0000000 --- a/HelloWorld.java +++ /dev/null @@ -1,34 +0,0 @@ -import helloworld.R; -import android.app.Activity; -import android.os.Bundle; -import android.widget.TextView; -import java.io.OutputStream; -import java.net.URL; -import javax.net.ssl.HttpsURLConnection; - -public class HelloWorld extends Activity { - @Override - protected void onCreate(Bundle savedInstanceState) { - - try { - Test t = new Test(); - URL url = new URL("https://slcl.privatedns.org"); - HttpsURLConnection c = (HttpsURLConnection) url.openConnection(); - - t.f(); - - c.setFollowRedirects(true); - - OutputStream os = c.getOutputStream(); - System.out.println("Response code:" + c.getResponseCode()); - } catch (Exception e) { - System.out.println("Exception: " + e.getMessage()); - } - - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - TextView text = (TextView)findViewById(R.id.my_text); - text.setText("Hello, world!"); - } -} diff --git a/Makefile b/Makefile index 76f8162..471ca21 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,28 @@ .POSIX: .SUFFIXES: .apk .unsigned .aligned -PROJECT = helloworld +PROJECT = org.slcl ANDROIDSDK = /usr/lib/android-sdk DX = $(ANDROIDSDK)/build-tools/debian/dx MANIFEST = AndroidManifest.xml PLATFORM = $(ANDROIDSDK)/platforms/android-23/android.jar OBJECTS = \ - HelloWorld.class \ - Test.class + src/org/slcl/core/Cookie.class \ + src/org/slcl/core/Login.class \ + src/org/slcl/Directory.class \ + src/org/slcl/InternalFile.class \ + src/org/slcl/Main.class RESOURCES = \ + res/layout/activity_directory.xml \ res/layout/activity_main.xml -R = helloworld/R.java +R = src/org/slcl/R.java +PASS = password.secret +DNAME = "cn=slcl, ou=slcl, o=slcl, c=ES" # Resources: # https://www.hanshq.net/command-line-android.html +# https://unix.stackexchange.com/questions/230673/how-to-generate-a-random-string +# https://stuff.mit.edu/afs/sipb/project/android/docs/guide/topics/resources/layout-resource.html#layoutvalues all: $(PROJECT).apk @@ -24,20 +32,23 @@ $(PROJECT).apk: keystore.jks apksigner sign \ --ks keystore.jks \ --ks-key-alias androidkey \ - --ks-pass pass:android \ - --key-pass pass:android \ + --ks-pass file:$(PASS) \ --out $@ $< -keystore.jks: - keytool \ +keystore.jks: $(PASS) + (for i in 1 2; do cat $(PASS); done; echo) \ + | keytool \ -genkeypair \ + -dname $(DNAME) \ -keystore $@ \ -alias androidkey \ - -validity 10000 \ -keyalg RSA \ - -keysize 4096 \ - -storepass android \ - -keypass android + -keysize 4096 + +$(PASS): + (LC_ALL=C \ + tr -dc 'A-Za-z0-9!"#$$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' \ + < /dev/urandom | head -c 100; echo) > $(PASS) .unsigned.aligned: zipalign -f -p 4 $< $@ @@ -45,19 +56,20 @@ keystore.jks: $(PROJECT).unsigned: dex/classes.dex $(MANIFEST) aapt package -f -F $@ -I $(PLATFORM) -M $(MANIFEST) -S res dex -dex/classes.dex: $(OBJECTS) $(MANIFEST) +dex/classes.dex: .build $(MANIFEST) mkdir -p dex - $(DX) --dex --output=$@ $(OBJECTS) + $(DX) --dex --min-sdk-version=9 --output=$@ src -$(OBJECTS): $(OBJECTS:.class=.java) $(R) - javac -bootclasspath $(PLATFORM) -source 1.7 $(OBJECTS:.class=.java) +.build: $(OBJECTS:.class=.java) $(R) + javac -bootclasspath $(PLATFORM) -source 1.7 -sourcepath src $(OBJECTS:.class=.java) + touch $@ $(R): $(MANIFEST) $(RESOURCES) - aapt package -f -m -S res -M $(MANIFEST) -I $(PLATFORM) -J . + aapt package -f -m -S res -M $(MANIFEST) -I $(PLATFORM) -J src clean: rm -f $(R) $(OBJECTS) $(PROJECT).unsigned \ $(PROJECT).aligned $(PROJECT).apk.idsig dex/classes.dex distclean: clean - rm -rf dex/ *.apk keystore.jks + rm -rf dex/ *.apk keystore.jks $(PASS) diff --git a/res/layout/activity_directory.xml b/res/layout/activity_directory.xml new file mode 100644 index 0000000..cd6db5b --- /dev/null +++ b/res/layout/activity_directory.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + diff --git a/res/layout/activity_login.xml b/res/layout/activity_login.xml new file mode 100644 index 0000000..835a828 --- /dev/null +++ b/res/layout/activity_login.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +